@@ -67,30 +67,31 @@ 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" ,
77+ except PartnerProgram .DoesNotExist :
78+ return Response (status = status .HTTP_404_NOT_FOUND )
79+
80+ # tilda cringe
81+ email = data .get ("email" ) if data .get ("email" ) else data .get ("email_" )
82+ if not email :
83+ return Response (
84+ data = {"detail" : "You need to pass an email address." },
85+ status = status .HTTP_400_BAD_REQUEST ,
8386 )
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- )
9387
88+ user_fields = (
89+ "first_name" ,
90+ "last_name" ,
91+ "patronymic" ,
92+ "city" ,
93+ )
94+ try :
9495 user = User .objects .create (
9596 ** {field_name : data .get (field_name , "" ) for field_name in user_fields },
9697 birthday = date_to_iso (data .get ("birthday" , "01-01-1900" )),
@@ -99,35 +100,32 @@ def post(self, request, *args, **kwargs):
99100 verification_date = timezone .now (), # bypass ClickUp verification
100101 email = email ,
101102 )
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 )
125103 except IntegrityError :
126104 return Response (
127105 data = {"detail" : "User with this email already exists." },
128106 status = status .HTTP_400_BAD_REQUEST ,
129107 )
130108
109+ password = data .get ("password" )
110+ del data ["password" ]
111+ if not password :
112+ return Response (
113+ data = {"detail" : "You need to pass a password." },
114+ status = status .HTTP_400_BAD_REQUEST ,
115+ )
116+ user .set_password (password )
117+ user .save ()
118+
119+ user_profile_program_data = {
120+ k : v for k , v in data .items () if k not in user_fields
121+ }
122+ PartnerProgramUserProfile .objects .create (
123+ partner_program_data = user_profile_program_data ,
124+ user = user ,
125+ partner_program = program ,
126+ )
127+ return Response (status = status .HTTP_201_CREATED )
128+
131129 def get (self , request , * args , ** kwargs ):
132130 return Response (status = status .HTTP_200_OK )
133131
0 commit comments