@@ -52,6 +52,23 @@ def register_lead(first_name: str, email: str, source: str) -> User:
5252 return user
5353
5454
55+ def register_member (first_name , email , source ):
56+ """
57+ Create a new user on the system generation a random password or update existing on based on email.
58+ :param first_name: User's first name
59+ :param email: User's email
60+ :param source: source of User traffic
61+ :return: User
62+ """
63+ try :
64+ user = User .objects .filter (email = email ).get ()
65+ except User .DoesNotExist :
66+ form = validate_user (first_name , email , source )
67+ user = form .save ()
68+ promote_to_member (user , source )
69+ return user
70+
71+
5572def register_client (first_name : str , email : str , source : str ) -> User :
5673 """
5774 Create a new user on the system generation a random password or update existing on based on email.
@@ -69,6 +86,19 @@ def register_client(first_name: str, email: str, source: str) -> User:
6986 return user
7087
7188
89+ def promote_to_member (user : User , source : str ) -> None :
90+ """
91+ Promote a user do member. Raises exception in case user is a member
92+ :param user:
93+ """
94+ if has_role (user , 'member' ):
95+ raise UserRoleException ('User is already a member' )
96+ UserInteraction (category = UserInteraction .BECOME_MEMBER , source = source , user = user ).save ()
97+ assign_role (user , 'member' )
98+ remove_role (user , 'lead' )
99+ remove_role (user , 'client' )
100+
101+
72102def promote_to_client (user : User , source : str ) -> None :
73103 """
74104 Promote a lead to user. Raises exception in case user is a member
@@ -121,9 +151,21 @@ def client_checkout(user: User, source: str) -> None:
121151 return UserInteraction (category = UserInteraction .CLIENT_CHECKOUT , source = source , user = user ).save ()
122152
123153
154+ def member_checkout (user : User , source = 'unknown' ):
155+ return UserInteraction (category = UserInteraction .MEMBER_CHECKOUT , source = source , user = user ).save ()
156+
157+
124158def client_generated_boleto (user : User , source : str ):
125159 return UserInteraction (category = UserInteraction .CLIENT_BOLETO , source = source , user = user ).save ()
126160
127161
162+ def member_generated_boleto (user , source = 'unknow' ):
163+ return UserInteraction (category = UserInteraction .MEMBER_BOLETO , source = source , user = user ).save ()
164+
165+
128166def subscribe_to_waiting_list (user : User , source : str ):
129167 return UserInteraction (category = UserInteraction .WAITING_LIST , source = source , user = user ).save ()
168+
169+
170+ def is_client (user : User ):
171+ return has_role (user , 'client' )
0 commit comments