Commit fbe3335a05ad5f9ca747b7fe9deb62f89b8075ce
1 parent
e1124f56
Exists in
master
and in
39 other branches
Removing build_filters and adding dehydrate methods to be able of filtering by email
Showing
1 changed file
with
9 additions
and
32 deletions
Show diff stats
src/api/models.py
| @@ -13,32 +13,19 @@ class UserResource(ModelResource): | @@ -13,32 +13,19 @@ class UserResource(ModelResource): | ||
| 13 | class Meta: | 13 | class Meta: |
| 14 | queryset = User.objects.filter(is_active=True) | 14 | queryset = User.objects.filter(is_active=True) |
| 15 | resource_name = 'user' | 15 | resource_name = 'user' |
| 16 | - excludes = ['email', 'password', 'is_active', 'is_staff', | ||
| 17 | - 'is_superuser', 'verification_hash'] | 16 | + fields = ['username', 'institution', 'role', 'bio', 'first_name', |
| 17 | + 'last_name', 'email'] | ||
| 18 | allowed_methods = ['get', ] | 18 | allowed_methods = ['get', ] |
| 19 | filtering = { | 19 | filtering = { |
| 20 | + 'email': ('exact', ), | ||
| 20 | 'username': ALL, | 21 | 'username': ALL, |
| 21 | 'institution': ALL, | 22 | 'institution': ALL, |
| 22 | 'role': ALL, | 23 | 'role': ALL, |
| 23 | - 'twitter': ALL, | ||
| 24 | - 'facebook': ALL, | ||
| 25 | - 'google_talk': ALL, | ||
| 26 | - 'github': ALL, | ||
| 27 | - 'webpage': ALL, | ||
| 28 | 'bio': ALL, | 24 | 'bio': ALL, |
| 29 | } | 25 | } |
| 30 | 26 | ||
| 31 | - def build_filters(self, filters=None): | ||
| 32 | - if filters is None: | ||
| 33 | - filters = {} | ||
| 34 | - | ||
| 35 | - orm_filters = super(UserResource, self).build_filters(filters) | ||
| 36 | - | ||
| 37 | - if 'email' in filters: | ||
| 38 | - qs = User.objects.filter(email=filters['email']) | ||
| 39 | - orm_filters['pk__in'] = [i.pk for i in qs] | ||
| 40 | - | ||
| 41 | - return orm_filters | 27 | + def dehydrate_email(self, bundle): |
| 28 | + return '' | ||
| 42 | 29 | ||
| 43 | 30 | ||
| 44 | class EmailAddressResource(ModelResource): | 31 | class EmailAddressResource(ModelResource): |
| @@ -47,26 +34,16 @@ class EmailAddressResource(ModelResource): | @@ -47,26 +34,16 @@ class EmailAddressResource(ModelResource): | ||
| 47 | class Meta: | 34 | class Meta: |
| 48 | queryset = EmailAddress.objects.all() | 35 | queryset = EmailAddress.objects.all() |
| 49 | resource_name = 'emailaddress' | 36 | resource_name = 'emailaddress' |
| 50 | - excludes = ['address', 'md5'] | 37 | + excludes = ['md5', ] |
| 51 | allowed_methods = ['get', ] | 38 | allowed_methods = ['get', ] |
| 52 | filtering = { | 39 | filtering = { |
| 40 | + 'address': ('exact', ), | ||
| 53 | 'user': ALL_WITH_RELATIONS, | 41 | 'user': ALL_WITH_RELATIONS, |
| 54 | 'real_name': ALL, | 42 | 'real_name': ALL, |
| 55 | } | 43 | } |
| 56 | 44 | ||
| 57 | - def build_filters(self, filters=None): | ||
| 58 | - if filters is None: | ||
| 59 | - filters = {} | ||
| 60 | - | ||
| 61 | - orm_filters = super(EmailAddressResource, self).build_filters(filters) | ||
| 62 | - | ||
| 63 | - if 'email' in filters or 'address' in filters: | ||
| 64 | - address = filters.get('email') if filters.get('email') else \ | ||
| 65 | - filters.get('address') | ||
| 66 | - qs = EmailAddress.objects.filter(address=address) | ||
| 67 | - orm_filters['pk__in'] = [i.pk for i in qs] | ||
| 68 | - | ||
| 69 | - return orm_filters | 45 | + def dehydrate_address(self, bundle): |
| 46 | + return '' | ||
| 70 | 47 | ||
| 71 | 48 | ||
| 72 | class MessageResource(ModelResource): | 49 | class MessageResource(ModelResource): |