137
# Добавляем информацию о правах на добавление объекта в JSON
def alter_list_data_to_serialize(self, request, data):
user = request.user
if user.has_perm('map_viewer.add_project'):
data['can_add'] = True
else:
data['can_add'] = False
return data
class LayerTreeResource(ModelResource):
id = IntegerField(attribute='id')
title = CharField(attribute='title', null=True)
visible = BooleanField(attribute='visible', null=True)
object_id = IntegerField(attribute='object_id', null=True)
parameters = CharField(attribute='parameters', null=True)
name = CharField(attribute='name', null=True)
wms_title = CharField(attribute='wms_title', null=True)
is_group = BooleanField(attribute='is_group', null=True)
order = IntegerField(attribute='order', null=True)
editable = BooleanField(attribute='editable', null=True)
searchable = BooleanField(attribute='searchable', null=True)
popup_image = BooleanField(attribute='popup_image', null=True)
crowdsource = BooleanField(attribute='crowdsource', null=True)
popup_chart = BooleanField(attribute='popup_chart', null=True)
crowdsource_btn_text = CharField(attribute='crowdsource_btn_text', null=True)
project = fields.ForeignKey(ProjectResource, 'project', null=True, blank=True)
parent = fields.ForeignKey('self', 'parent', full=True, null=True, blank=True)
content_object = GenericForeignKeyField({
GeoJsonService: GeoJsonResource,
WMSService: WMSResource,
WFSService: WFSResource,
TMSService: TMSResource,
Wmsservice: WmsserviceResource,
Wmtsservice: WmtsserviceResource,
Arcgisservice: ArcgisserviceResource,
Geoserverservice: GeoserverserviceResource,
Folder: FolderResource,
Database: DatabaseResource,
Saikuservice: SaikuserviceResource
}, 'content_object', null=True, blank=True, full=False)
service_editable = fields.BooleanField('self', 'service_editable', use_in='all')
attributes = fields.ListField('self', 'attributes', use_in='detail')
class Meta(GeoanalitikaBaseModelResource.Meta):
object_class = Layer
serializer = PrettyJSONSerializer()
collection_name = 'groups'
queryset = Layer.objects.all().select_related('parent')
fields = ['id', 'object_id', 'visible', 'title', 'parent', 'name',
'attributes',
'is_group', 'order', 'wms_title', 'editable', 'popup_image',
'crowdsource', 'crowdsource_btn_text',
'searchable', 'parameters', 'popup_chart']
filtering = {
'project': ALL_WITH_RELATIONS,
'title': ('exact'),
}
allowed_methods = ['patch', 'delete', 'post', 'get', 'put']