def promote_to_member(user: User, source: str) -> None: """ Promote a user do member. Raises exception in case user is a member :param user: """ if has_role(user, 'member'): raise UserRoleException('User is already a member') UserInteraction(category=UserInteraction.BECOME_MEMBER, source=source, user=user).save() assign_role(user, 'member') remove_role(user, 'lead') remove_role(user, 'client')
def promote_to_webdev(user: User, source: str) -> None: """ Promote a user do webdev. Raises exception in case user is a member :param user: """ if has_role(user, 'member'): raise UserRoleException('User is already a member') elif has_role(user, 'bootcamper'): raise UserRoleException('User is already a bootcamper') elif has_role(user, 'webdev'): raise UserRoleException('User is already a webdev') UserInteraction(category=UserInteraction.BECOME_WEBDEV, source=source, user=user).save() assign_role(user, 'webdev') remove_role(user, 'lead') remove_role(user, 'client')
def register_lead(first_name: str, email: str, source: str) -> User: """ Create a new user on the system generating a random password. :param first_name: User's first name :param email: User's email :param source: source of User traffic :return: User """ try: user = User.objects.filter(email=email).get() except User.DoesNotExist: user = save_and_sent_password_email(first_name, email, source) UserInteraction(category=UserInteraction.BECOME_LEAD, source=source, user=user).save() assign_role(user, 'lead') return user
def member_checkout(user: User, source='unknown'): return UserInteraction(category=UserInteraction.MEMBER_CHECKOUT, source=source, user=user).save()
def webdev_checkout_form(user: User, source='unknown'): return UserInteraction(category=UserInteraction.WEBDEV_CHECKOUT_FORM, source=source, user=user).save()
def activate_user(user: User, source: str): return UserInteraction(category=UserInteraction.ACTIVATED, source=source, user=user).save()
def visit_member_landing_page(user: User, source: str): return UserInteraction(category=UserInteraction.MEMBER_LP, source=source, user=user).save()
def visit_cpl3(user: User, source: str): return UserInteraction(category=UserInteraction.CPL3, source=source, user=user).save()
def subscribe_to_launch(user: User, source: str): return UserInteraction(category=UserInteraction.LAUNCH_SUBSCRIPTION, source=source, user=user).save()
def promote_to_data_scientist(user, source): UserInteraction(category=UserInteraction.BECOME_DATA_SCIENTIST, source=source, user=user).save() assign_role(user, 'data_scientist')
def client_generated_boleto(user: User, source: str): return UserInteraction(category=UserInteraction.CLIENT_BOLETO, source=source, user=user).save()
def client_checkout(user: User, source: str) -> None: return UserInteraction(category=UserInteraction.CLIENT_CHECKOUT, source=source, user=user).save()
def visit_client_landing_page(user: User, source: str): return UserInteraction(category=UserInteraction.CLIENT_LP, source=source, user=user).save()
def promote_to_pythonista(user, source): UserInteraction(category=UserInteraction.BECOME_PYTHONISTA, source=source, user=user).save() assign_role(user, 'pythonista')
def member_generated_boleto(user, source='unknow'): return UserInteraction(category=UserInteraction.MEMBER_BOLETO, source=source, user=user).save()
def subscribe_to_waiting_list(user: User, source: str): return UserInteraction(category=UserInteraction.WAITING_LIST, source=source, user=user).save()
def visit_launch_landing_page(user: User, source: str): return UserInteraction(category=UserInteraction.LAUNCH_LP, source=source, user=user).save()