Commit fbe3335a05ad5f9ca747b7fe9deb62f89b8075ce

Authored by Luan
1 parent e1124f56

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):