@@ -83,14 +83,19 @@ class Meta:
83
83
84
84
85
85
class PersonResource (ModelResource ):
86
- user = fields .ForeignKey (UserResource , 'user' )
86
+ user = fields .ForeignKey (UserResource , 'user' , blank = True , null = True )
87
87
# teams = fields.ManyToManyField(TeamResource, 'teams')
88
88
89
89
class Meta :
90
90
queryset = Person .objects .all ()
91
91
authorization = Authorization ()
92
- authentication = ApiKeyAuthentication ()
92
+ authentication = Authentication ()
93
93
excludes = ['activation_key' , 'key_expires' ]
94
+ filtering = {
95
+ 'user' : ALL_WITH_RELATIONS ,
96
+ 'first_name' : ['exact' ],
97
+ 'last_name' : ['exact' ]
98
+ }
94
99
95
100
96
101
class GameTypeResource (ModelResource ):
@@ -155,6 +160,58 @@ class Meta:
155
160
"""
156
161
157
162
163
+ def sign_up (request ):
164
+ form = SignUpForm (request .POST )
165
+ if form .is_valid ():
166
+ username = form .cleaned_data ['username' ]
167
+ password = form .cleaned_data ['password' ]
168
+ email = form .cleaned_data ['email' ]
169
+ gender = form .cleaned_data ['gender' ]
170
+ first_name = form .cleaned_data ['first_name' ]
171
+ last_name = form .cleaned_data ['last_name' ]
172
+ pass_number = form .cleaned_data ['pass_number' ]
173
+ address = form .cleaned_data ['address' ]
174
+ city = form .cleaned_data ['city' ]
175
+ zip_code = form .cleaned_data ['zip_code' ]
176
+ mobile_number = form .cleaned_data ['mobile_number' ]
177
+
178
+ user = User .objects .create (username = username , password = password , email = email )
179
+
180
+ profile = form .cleaned_data ['profile' ] or Person .objects .create (user = user )
181
+ profile .first_name = first_name
182
+ profile .last_name = last_name
183
+ profile .gender = gender
184
+ profile .pass_number = pass_number
185
+ profile .address = address
186
+ profile .city = city
187
+ profile .zip_code = zip_code
188
+ profile .mobile_number = mobile_number
189
+ profile .save ()
190
+
191
+ # Build the activation key
192
+ salt = sha .new (str (random ())).hexdigest ()[:5 ]
193
+ activation_key = sha .new (salt + user .username ).hexdigest ()
194
+ key_expires = datetime .datetime .now (pytz .utc ) + datetime .timedelta (2 )
195
+
196
+ # User is unactive until visiting activation link
197
+ user .is_active = False
198
+ user_profile .activation_key = activation_key
199
+ user_profile .key_expires = key_expires
200
+ activation_link = 'http://127.0.0.1/activate/' + activation_key
201
+
202
+ user .save ()
203
+ user_profile .save ()
204
+
205
+ from django .core .mail import send_mail
206
+ subject = _ ('Welcome to ScoreIt!' )
207
+ message = _ ('To activate, please click the following link:\n ' + activation_link )
208
+ sender = _ ('noreply@score-it.de' )
209
+ recipients = [email ]
210
+ send_mail (subject , message , sender , recipients )
211
+
212
+ return HttpResponse ()
213
+
214
+
158
215
def validate_user (request ):
159
216
"""
160
217
Checks a user's basic auth credentials and, if valid, returns the users data
@@ -199,30 +256,47 @@ def validate_user(request):
199
256
return HttpResponse (person_resource .serialize (None , bundle , 'application/json' ))
200
257
201
258
202
- def user_exists (request ):
203
- username = request .GET ['username' ]
204
- email = request .GET ['email' ]
205
- username_exists = True
206
- email_exists = True
207
-
208
- try :
209
- User .objects .get (username = username )
210
- except User .DoesNotExist :
211
- username_exists = False
212
- except User .MultipleObjectsReturned :
213
- email_exists = True
214
-
215
- try :
216
- User .objects .get (email = email )
217
- except User .DoesNotExist :
218
- email_exists = False
219
- except User .MultipleObjectsReturned :
220
- email_exists = True
221
-
222
- data = {
223
- 'username' : username_exists ,
224
- 'email' : email_exists
225
- }
259
+ def is_unique (request ):
260
+ data = {}
261
+
262
+ if 'user_name' in request .GET :
263
+ user_name = request .GET ['user_name' ]
264
+
265
+ try :
266
+ User .objects .get (username = user_name )
267
+ unique = False
268
+ except User .DoesNotExist :
269
+ unique = True
270
+ except User .MultipleObjectsReturned :
271
+ unique = False
272
+
273
+ data ['user_name' ] = unique
274
+
275
+ if 'email' in request .GET :
276
+ email = request .GET ['email' ]
277
+
278
+ try :
279
+ User .objects .get (email = email )
280
+ unique = False
281
+ except User .DoesNotExist :
282
+ unique = True
283
+ except User .MultipleObjectsReturned :
284
+ unique = False
285
+
286
+ data ['email' ] = unique
287
+
288
+ if 'pass_number' in request .GET :
289
+ pass_number = request .GET ['pass_number' ]
290
+
291
+ try :
292
+ Person .objects .get (pass_number = pass_number )
293
+ unique = False
294
+ except Person .DoesNotExist :
295
+ unique = True
296
+ except Person .MultipleObjectsReturned :
297
+ unique = False
298
+
299
+ data ['pass_number' ] = unique
226
300
227
301
serializer = Serializer ()
228
302
0 commit comments