-
Notifications
You must be signed in to change notification settings - Fork 0
/
rest.py
70 lines (54 loc) · 2.26 KB
/
rest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# -*- coding: utf-8 -*-
import json
from django.shortcuts import get_object_or_404
from geonode.api.resourcebase_api import LayerResource, CommonMetaApi
from geonode.layers.models import Layer
from tastypie import fields
from tastypie.authorization import Authorization
from tastypie.constants import ALL, ALL_WITH_RELATIONS
from tastypie.resources import ModelResource
from .models import UserHistory
class CollectorHistoryResource(ModelResource):
user = fields.DictField(null=False, blank=False)
layer = fields.ForeignKey(LayerResource, 'layer',
null=False, blank=False, full=True)
def dehydrate_user(self, bundle):
return {'username': bundle.obj.user.username, 'id': bundle.obj.user.id}
def dehydrate_layer(self, bundle):
return {'title': bundle.obj.layer.title,
'typename': bundle.obj.layer.typename}
def dehydrate_data(self, bundle):
return json.loads(bundle.obj.data, None)
def hydrate_user(self, bundle):
bundle.obj.user = bundle.request.user
return bundle
def hydrate_data(self, bundle):
bundle.data["data"] = json.dumps(bundle.data.get('data', None))
return bundle
def hydrate_layer(self, bundle):
layer = get_object_or_404(
Layer, typename=bundle.data.pop('layer', None))
bundle.obj.layer = layer
return bundle
# def build_filters(self, filters=None):
# if filters is None:
# filters = {}
# orm_filters = super(CollectorHistoryResource,
# self).build_filters(filters)
# # Your filtering
# if 'layer__typename' in filters:
# orm_filters['layer__typename'] = filters.get(
# 'layer__typename')
# return orm_filters
class Meta:
queryset = UserHistory.objects.all()
LayerResource.Meta.filtering.update({'typename': ALL})
authorization = Authorization()
allowed_methods = ['get', 'post', 'put']
filtering = {'user': ALL_WITH_RELATIONS,
'layer': ALL_WITH_RELATIONS,
'created_at': ALL,
'updated': ALL
}
resource_name = 'collector_history'
ordering = ['created_at', ]