Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class SignUpMixin(object):
- """
- Mixin for the common SignUp methods
- """
- permissions = []
- profile_serializer = None
- group_name = None
- def create_token(self, user):
- return Token.objects.create(user=user)
- def get_profile_data(self, profile):
- serializer = self.profile_serializer(profile)
- return serializer.data
- def assign_group(self, user):
- group = Group.objects.get(name=self.group_name)
- user.groups.add(group)
- def assign_permissions(self, user, profile):
- for permission in self.permissions:
- assign_perm(permission, user, profile)
- class SignUpStudentView(SignUpMixin, GenericAPIView):
- """
- Class to register students
- """
- serializer_class = SignUpStudentSerializer
- permissions = ['students.change_student']
- profile_serializer = StudentsSerializer
- group_name = 'Students'
- def post(self, request, *args, **kwargs):
- serializer = self.get_serializer(data=request.data)
- serializer.is_valid(raise_exception=True)
- user = self.create_user(serializer)
- profile = self.create_profile(user=user)
- profile_data = self.get_profile_data(profile)
- self.assign_group(user)
- self.assign_permissions(user, profile)
- self.confirm_email_handler(user)
- token = self.create_token(user)
- #self.referral_handler(referred_id=profile.id)
- task = SendEmailSignUpCouponTask()
- task.delay(student_id=profile.id)
- return Response({'user': profile_data, 'token': token.key})
- def create_user(self, serializer):
- return User.objects.create_user(
- username=serializer.validated_data['username'],
- email=serializer.validated_data['email'],
- password=serializer.validated_data['password1'],
- first_name=serializer.validated_data['first_name'],
- last_name=serializer.validated_data['last_name'],
- )
- def create_profile(self, user):
- return Student.objects.create(user=user)
- def confirm_email_handler(self, user):
- confirm_email_token = ConfirmEmailToken.objects.create(user=user, email=user.email)
- task = SendEmailConfirmEmailTask()
- task.delay(confirm_email_token.id)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement