@@ -67,30 +67,32 @@ class PartnerProgramCreateUserAndRegister(generics.GenericAPIView):
6767 serializer_class = PartnerProgramNewUserSerializer
6868
6969 def post (self , request , * args , ** kwargs ):
70+ data = request .data
71+ # tilda cringe
72+ if data .get ("test" ) == "test" :
73+ return Response (status = status .HTTP_200_OK )
74+
7075 try :
7176 program = PartnerProgram .objects .get (pk = kwargs ["pk" ])
72- data = request .data
73- # tilda cringe
74- if data .get ("test" ) == "test" :
75- return Response (status = status .HTTP_200_OK )
76- user_fields = (
77- # "email",
78- # "password",
79- "first_name" ,
80- "last_name" ,
81- "patronymic" ,
82- "city" ,
83- )
84- # cringe tilda
85- email = data .get ("email" )
86- if not email :
87- email = data .get ("email_" )
88- if not email :
89- return Response (
90- data = {"detail" : "You need to pass an email address." },
91- status = status .HTTP_400_BAD_REQUEST ,
92- )
77+ except PartnerProgram .DoesNotExist :
78+ return Response (status = status .HTTP_404_NOT_FOUND )
9379
80+
81+ # tilda cringe
82+ email = data .get ("email" ) if data .get ("email" ) else data .get ("email_" )
83+ if not email :
84+ return Response (
85+ data = {"detail" : "You need to pass an email address." },
86+ status = status .HTTP_400_BAD_REQUEST ,
87+ )
88+
89+ user_fields = (
90+ "first_name" ,
91+ "last_name" ,
92+ "patronymic" ,
93+ "city" ,
94+ )
95+ try :
9496 user = User .objects .create (
9597 ** {field_name : data .get (field_name , "" ) for field_name in user_fields },
9698 birthday = date_to_iso (data .get ("birthday" , "01-01-1900" )),
@@ -99,34 +101,35 @@ def post(self, request, *args, **kwargs):
99101 verification_date = timezone .now (), # bypass ClickUp verification
100102 email = email ,
101103 )
102- # fixme: какое же дерьмо в этой вьюшке творится, извините я поправлю после дедлайна
103- password = data .get ("password" )
104- if not password :
105- return Response (
106- data = {"detail" : "You need to pass a password." },
107- status = status .HTTP_400_BAD_REQUEST ,
108- )
109- user .set_password (password )
110- user .save ()
111-
112- user_profile_program_data = {
113- field_name : data .get (field_name )
114- for field_name in data
115- if field_name not in user_fields
116- }
117- PartnerProgramUserProfile .objects .create (
118- partner_program_data = user_profile_program_data ,
119- user = user ,
120- partner_program = program ,
121- )
122- return Response (status = status .HTTP_201_CREATED )
123- except PartnerProgram .DoesNotExist :
124- return Response (status = status .HTTP_404_NOT_FOUND )
125104 except IntegrityError :
126105 return Response (
127106 data = {"detail" : "User with this email already exists." },
128107 status = status .HTTP_400_BAD_REQUEST ,
129108 )
109+
110+ password = data .get ("password" )
111+ del data ["password" ]
112+ if not password :
113+ return Response (
114+ data = {"detail" : "You need to pass a password." },
115+ status = status .HTTP_400_BAD_REQUEST ,
116+ )
117+ user .set_password (password )
118+ user .save ()
119+
120+ user_profile_program_data = {
121+ k : v
122+ for k , v in data .items ()
123+ if k not in user_fields
124+ }
125+ PartnerProgramUserProfile .objects .create (
126+ partner_program_data = user_profile_program_data ,
127+ user = user ,
128+ partner_program = program ,
129+ )
130+ return Response (status = status .HTTP_201_CREATED )
131+
132+
130133
131134 def get (self , request , * args , ** kwargs ):
132135 return Response (status = status .HTTP_200_OK )
0 commit comments