Advertisement
Guest User

Untitled

a guest
Nov 6th, 2016
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. class SignUpMixin(object):
  2. """
  3. Mixin for the common SignUp methods
  4. """
  5. permissions = []
  6. profile_serializer = None
  7. group_name = None
  8.  
  9. def create_token(self, user):
  10. return Token.objects.create(user=user)
  11.  
  12. def get_profile_data(self, profile):
  13. serializer = self.profile_serializer(profile)
  14. return serializer.data
  15.  
  16. def assign_group(self, user):
  17. group = Group.objects.get(name=self.group_name)
  18. user.groups.add(group)
  19.  
  20. def assign_permissions(self, user, profile):
  21. for permission in self.permissions:
  22. assign_perm(permission, user, profile)
  23.  
  24.  
  25.  
  26.  
  27.  
  28. class SignUpStudentView(SignUpMixin, GenericAPIView):
  29. """
  30. Class to register students
  31. """
  32. serializer_class = SignUpStudentSerializer
  33. permissions = ['students.change_student']
  34. profile_serializer = StudentsSerializer
  35. group_name = 'Students'
  36.  
  37. def post(self, request, *args, **kwargs):
  38. serializer = self.get_serializer(data=request.data)
  39.  
  40. serializer.is_valid(raise_exception=True)
  41. user = self.create_user(serializer)
  42. profile = self.create_profile(user=user)
  43. profile_data = self.get_profile_data(profile)
  44. self.assign_group(user)
  45. self.assign_permissions(user, profile)
  46. self.confirm_email_handler(user)
  47. token = self.create_token(user)
  48.  
  49. #self.referral_handler(referred_id=profile.id)
  50. task = SendEmailSignUpCouponTask()
  51. task.delay(student_id=profile.id)
  52.  
  53. return Response({'user': profile_data, 'token': token.key})
  54.  
  55. def create_user(self, serializer):
  56. return User.objects.create_user(
  57. username=serializer.validated_data['username'],
  58. email=serializer.validated_data['email'],
  59. password=serializer.validated_data['password1'],
  60. first_name=serializer.validated_data['first_name'],
  61. last_name=serializer.validated_data['last_name'],
  62. )
  63.  
  64. def create_profile(self, user):
  65. return Student.objects.create(user=user)
  66.  
  67. def confirm_email_handler(self, user):
  68. confirm_email_token = ConfirmEmailToken.objects.create(user=user, email=user.email)
  69. task = SendEmailConfirmEmailTask()
  70. task.delay(confirm_email_token.id)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement