Advertisement
Guest User

Untitled

a guest
Jun 30th, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.60 KB | None | 0 0
  1. class Account(AbstractBaseUser):
  2. username = models.CharField(_('username'), max_length=30, unique=True)
  3. first_name = models.CharField(_('first name'), max_length=30, blank=True)
  4. last_name = models.CharField(_('last name'), max_length=30, blank=True)
  5. email = models.EmailField(verbose_name='email address', max_length=255, unique=True)
  6. profile = models.CharField(_('profile'), max_length=255, blank=True)
  7. is_active = models.BooleanField(default=True)
  8. is_staff = models.BooleanField(default=False)
  9. is_admin = models.BooleanField(default=False)
  10. date_joined = models.DateTimeField(_('date joined'), default=timezone.now)
  11.  
  12. objects = AccountManager()
  13. USERNAME_FIELD = 'email'
  14. REQUIRED_FIELDS = ['username']
  15.  
  16. def user_has_perm(user, perm, obj):
  17. return _user_has_perm(user, perm, obj)
  18.  
  19. def has_perm(self, perm, obj=None):
  20. return _user_has_perm(self, perm, obj=obj)
  21.  
  22. def has_module_perms(self, app_label):
  23. return self.is_admin
  24.  
  25. def get_short_name(self):
  26. return self.first_name
  27.  
  28. @property
  29. def is_superuser(self):
  30. return self.is_admin
  31.  
  32. class Meta:
  33. db_table = 'api_user'
  34. swappable = 'AUTH_USER_MODEL'
  35.  
  36. updateUserInfo() {
  37. this.authService.updateUserInfo({
  38. email: this.editUserEmail,
  39. username: this.editUserName,
  40. profile: this.edtiUserProfile
  41. })
  42. .subscribe(
  43. data => {
  44. this.updateSuccessMessage = "success userinfo update";
  45. this.updateErrorMessage = null;
  46. this.authService.userInfo;
  47. },
  48. error => {
  49. this.updateErrorMessage = "failed userinfo update";
  50. this.updateSuccessMessage = null;
  51. }
  52. );
  53. }
  54.  
  55. updateUserInfo(userUpdateInfo) {
  56. return this.http
  57. .put(this.UpdateUserUrl,
  58. userUpdateInfo,
  59. this.jwt()
  60. );
  61. }
  62.  
  63. jwt() {
  64. if (this.LoginToken) {
  65. let headers = new Headers({ 'Content-Type': 'application/json', 'Authorization': 'JWT ' + this.LoginToken.token });
  66. return new RequestOptions({ headers: headers });
  67. }
  68. }
  69.  
  70. class AuthInfoUpdateView(generics.UpdateAPIView):
  71. permission_classes = (permissions.IsAuthenticated,)
  72. serializer_class = AccountSerializer
  73. lookup_field = 'email'
  74. queryset = Account.objects.all()
  75.  
  76. def get_object(self):
  77. try:
  78. instance = self.queryset.get(email=self.request.user)
  79. return instance
  80. except Account.DoesNotExist:
  81. raise Http404
  82.  
  83. class AccountSerializer(serializers.ModelSerializer):
  84. password = serializers.CharField(write_only=True, required=False)
  85.  
  86. class Meta:
  87. model = Account
  88. fields = ('id', 'username', 'email', 'profile', 'password')
  89.  
  90. def create(self, validated_data):
  91. return Account.objects.create_user(request_data=validated_data)
  92.  
  93. def update(self, instance, validated_data):
  94. if 'password' in validated_data:
  95. instance.set_password(validated_data['password'])
  96. else:
  97. instance = super().update(instance, validated_data)
  98. instance.save()
  99. return instance
  100.  
  101. def put(self, request, *args, **kwargs):
  102. serializer = self.serializer_class(self.get_object(), data=request.data, partial=True)
  103.  
  104. if serializer.is_valid():
  105. instance = serializer.save()
  106. # Generate a new token
  107. payload = jwt_payload_handler(instance)
  108. token = jwt.encode(payload, settings.SECRET_KEY)
  109. response = JsonResponse({'token': token.decode('unicode_escape')})
  110. response.status = 200
  111. return response
  112. else:
  113. response = JsonResponse({'errors': serializer.errors})
  114. response.status = 500
  115. return response
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement