Guest User

Untitled

a guest
Jan 23rd, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. from django.contrib.auth.models import AbstractUser
  2. from django.db import models
  3.  
  4. import ldapdb.models
  5.  
  6.  
  7. class User(AbstractUser):
  8. cotisant = models.BooleanField(default=False)
  9. nbSessions = models.IntegerField(default=0)
  10. tel = models.CharField(max_length=20, default="")
  11.  
  12. from rest_framework import serializers
  13. from django.contrib.auth.hashers import make_password
  14. from coreapp.models import User
  15.  
  16.  
  17. class UserSerializer(serializers.ModelSerializer):
  18. class Meta:
  19. model = User
  20. fields = ('username', 'first_name', 'last_name', 'email', 'password', 'cotisant', 'tel')
  21. extra_kwargs = {
  22. # Allow to set pwd, but disallow getting the hash from BDD
  23. 'password': {'write_only': True}
  24. }
  25.  
  26. def validate_password(self, value: str):
  27. return make_password(value)
  28.  
  29. class UserViewSet(viewsets.ModelViewSet):
  30. serializer_class = UserSerializer
  31. permission_classes = (IsSelfOrStaffPermission, TokenHasReadWriteScopeOrCreate,)
  32. lookup_field = 'username'
  33.  
  34. def get_queryset(self):
  35. current_user = self.request.user
  36. if current_user.is_staff:
  37. user_set = User.objects.all()
  38. else:
  39. user_set = User.objects.filter(username=current_user.username)
  40.  
  41. query = self.request.query_params.get('q', None)
  42.  
  43. if not query:
  44. return user_set
  45.  
  46. return user_set.filter(
  47. Q(username__icontains=query) |
  48. Q(first_name__icontains=query) |
  49. Q(last_name__icontains=query)
  50. )
Add Comment
Please, Sign In to add comment