@@ -60,13 +60,40 @@ class PartnerProgramCreateUserAndRegister(generics.GenericAPIView):
6060 serializer_class = PartnerProgramNewUserSerializer
6161
6262 def post (self , request , * args , ** kwargs ):
63- # todo
64- # register new user
65- # create PartnerProgram m2m table if not created
66- # add user to m2m
67- # program = PartnerProgram.objects.get(pk=kwargs["pk"])
68- # user = User()
69- return Response (status = status .HTTP_201_CREATED )
63+ try :
64+ program = PartnerProgram .objects .get (pk = kwargs ["pk" ])
65+ data = request .data
66+ user_fields = (
67+ "email" ,
68+ "password" ,
69+ "first_name" ,
70+ "last_name" ,
71+ "patronymic" ,
72+ "birthday" ,
73+ "city" ,
74+ )
75+ # fixme: should we set verification_date?, if no then we need to ad them to ClickUp list
76+ user = User (
77+ ** {field_name : data [field_name ] for field_name in user_fields },
78+ is_active = True , # bypass email verification
79+ onboarding_stage = None , # bypass onboarding
80+ )
81+ user .save ()
82+
83+ user_profile_program_data = {
84+ field_name : data .get (field_name )
85+ for field_name in data
86+ if field_name not in user_fields
87+ }
88+ added_user_profile = PartnerProgramUserProfile (
89+ partner_program_data = user_profile_program_data ,
90+ user = user ,
91+ partner_program = program ,
92+ )
93+ added_user_profile .save ()
94+ return Response (status = status .HTTP_201_CREATED )
95+ except PartnerProgram .DoesNotExist :
96+ return Response (status = status .HTTP_404_NOT_FOUND )
7097
7198
7299class PartnerProgramRegister (generics .GenericAPIView ):
@@ -100,7 +127,8 @@ def post(self, request, *args, **kwargs):
100127 )
101128
102129
103- class PartnerProgramSetViewed (generics .CreateAPIView ):
130+ class PartnerProgramSetViewed (generics .GenericAPIView ):
131+ # fixme
104132 # serializer_class = SetViewedSerializer
105133 permission_classes = [IsAuthenticated ]
106134
0 commit comments