Skip to content

Commit a7c56f2

Browse files
armanddidierjeanRotheemmaximeroucherfoucblg
authored
MyECLPay (#611)
### Description MyECLPay allow to make internal payment by qr code. This PR will be followed by additional work, see #699 --------- Co-authored-by: Thonyk <[email protected]> Co-authored-by: Maxime Roucher <[email protected]> Co-authored-by: Timothée Robert <[email protected]> Co-authored-by: Foucauld Bellanger <[email protected]>
1 parent 60bc8e1 commit a7c56f2

33 files changed

+7029
-197
lines changed

.env.template

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,15 @@ USE_FIREBASE=false
5656
#HELLOASSO_API_BASE = ""
5757
#HELLOASSO_CLIENT_ID = ""
5858
#HELLOASSO_CLIENT_SECRET = ""
59+
# Main slug of the HelloAsso account
60+
#HELLOASSO_SLUG = ""
61+
#HELLOASSO_MYECLPAY_SLUG = ""
5962

60-
CDR_PAYMENT_REDIRECTION_URL: str | None = None
63+
TRUSTED_PAYMENT_REDIRECT_URLS = []
64+
65+
CDR_PAYMENT_REDIRECTION_URL: str | None
66+
MYECLPAY_MAXIMUM_WALLET_BALANCE: int | None
67+
#MYECLPAY_DATA_VERIFIER_ACCESS_TOKEN = ""
6168

6269
# Redis configuration #
6370
REDIS_HOST = "hyperion-redis" #May be left at "" during dev if you don't have a redis server running, in production it should be set to the name of the redis container

.env.test

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,13 @@ CORS_ORIGINS=["https://test-authorized-origin.com"]
2727
# Token to use the TMDB API
2828
#THE_MOVIE_DB_API = ""
2929

30+
TRUSTED_PAYMENT_REDIRECT_URLS = ["http://localhost:3000/payment_callback"]
31+
32+
HELLOASSO_SLUG = ""
33+
HELLOASSO_MYECLPAY_SLUG = ""
34+
35+
MYECLPAY_MAXIMUM_WALLET_BALANCE = 5000
36+
3037
# SMTP configuration using starttls #
3138
SMTP_ACTIVE = False
3239
SMTP_PORT = 587

app/core/memberships/endpoints_memberships.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from app.core.groups import cruds_groups
99
from app.core.groups.groups_type import GroupType
1010
from app.core.memberships import cruds_memberships, schemas_memberships
11-
from app.core.memberships.utils_memberships import validate_user_membership
11+
from app.core.memberships.utils_memberships import validate_user_new_membership
1212
from app.core.users import cruds_users, models_users, schemas_users
1313
from app.dependencies import (
1414
get_db,
@@ -328,7 +328,7 @@ async def create_user_membership(
328328
start_date=user_membership.start_date,
329329
end_date=user_membership.end_date,
330330
)
331-
await validate_user_membership(db_user_membership, db)
331+
await validate_user_new_membership(db_user_membership, db)
332332

333333
cruds_memberships.create_user_membership(db=db, user_membership=db_user_membership)
334334
try:
@@ -447,7 +447,7 @@ async def update_user_membership(
447447
end_date=user_membership.end_date or db_user_membership.end_date,
448448
)
449449

450-
await validate_user_membership(new_membership, db)
450+
await validate_user_new_membership(new_membership, db)
451451

452452
await cruds_memberships.update_user_membership(
453453
db=db,

app/core/memberships/utils_memberships.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1+
from datetime import UTC, datetime
2+
from uuid import UUID
3+
14
from fastapi import HTTPException
25
from sqlalchemy.ext.asyncio import AsyncSession
36

47
from app.core.memberships import cruds_memberships, schemas_memberships
58

69

7-
async def validate_user_membership(
10+
async def validate_user_new_membership(
811
user_membership: schemas_memberships.UserMembershipSimple,
912
db: AsyncSession,
1013
) -> schemas_memberships.UserMembershipSimple:
@@ -48,3 +51,27 @@ async def validate_user_membership(
4851
)
4952

5053
return user_membership
54+
55+
56+
async def get_user_active_membership_to_association_membership(
57+
association_membership_id: UUID,
58+
user_id: str,
59+
db: AsyncSession,
60+
) -> schemas_memberships.UserMembershipSimple | None:
61+
"""
62+
Check if the user has an active membership to the association membership.
63+
:param membership_id: The ID of the membership to check.
64+
:param user_id: The ID of the user to check.
65+
:param db: The database session.
66+
:return: The active membership if found.
67+
"""
68+
memberships = await cruds_memberships.get_user_memberships_by_user_id_and_association_membership_id(
69+
db,
70+
user_id,
71+
association_membership_id,
72+
)
73+
for membership in memberships:
74+
if membership.start_date <= datetime.now(UTC).date() <= membership.end_date:
75+
return membership
76+
77+
return None

app/core/myeclpay/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)