editor list_objects api

This commit is contained in:
Laura Klünder 2018-11-21 22:21:44 +01:00
parent a9438be2f3
commit 75125ceecb
3 changed files with 12 additions and 8 deletions

View file

@ -294,6 +294,8 @@ class EditorViewSet(ViewSet):
except Resolver404:
pass
self.request.sub_resolver_match = resolved
return resolved
def retrieve(self, request, *args, **kwargs):

View file

@ -202,9 +202,9 @@ class APIHybridTemplateContextResponse(APIHybridResponse):
def _maybe_serialize_value(self, value):
if isinstance(value, SerializableMixin):
value = value.serialize(geometry=False)
value = value.serialize(geometry=False, detailed=False)
elif isinstance(value, QuerySet) and issubclass(value.model, SerializableMixin):
value = [item.serialize(geometry=False) for item in value]
value = [item.serialize(geometry=False, detailed=False) for item in value]
return value
def get_api_response(self, request):

View file

@ -406,10 +406,11 @@ def get_visible_spaces_kwargs(model, request):
return kwargs
@sidebar_view
@sidebar_view(api_hybrid=True)
@etag(etag_func)
def list_objects(request, model=None, level=None, space=None, explicit_edit=False):
if not request.resolver_match.url_name.endswith('.list'):
resolver_match = getattr(request, 'sub_resolver_match', request.resolver_match)
if not resolver_match.url_name.endswith('.list'):
raise ValueError('url_name does not end with .list')
model = request.changeset.wrap_model(model)
@ -443,7 +444,7 @@ def list_objects(request, model=None, level=None, space=None, explicit_edit=Fals
'back_title': _('back to level'),
'levels': Level.objects.filter(Level.q_for_request(request), on_top_of__isnull=True),
'level': level,
'level_url': request.resolver_match.url_name,
'level_url': resolver_match.url_name,
'geometry_url': ('/api/editor/geometries/?level='+str(level.primary_level_pk)
if request.user_permissions.can_access_base_mapdata else None),
})
@ -490,18 +491,19 @@ def list_objects(request, model=None, level=None, space=None, explicit_edit=Fals
'back_title': _('back to overview'),
})
edit_url_name = request.resolver_match.url_name[:-4]+('detail' if explicit_edit else 'edit')
edit_url_name = resolver_match.url_name[:-4]+('detail' if explicit_edit else 'edit')
for obj in queryset:
reverse_kwargs['pk'] = obj.pk
obj.edit_url = reverse(edit_url_name, kwargs=reverse_kwargs)
reverse_kwargs.pop('pk', None)
ctx.update({
'create_url': reverse(request.resolver_match.url_name[:-4] + 'create', kwargs=reverse_kwargs),
'create_url': reverse(resolver_match.url_name[:-4] + 'create', kwargs=reverse_kwargs),
'objects': queryset,
})
return render(request, 'editor/list.html', ctx)
return APIHybridTemplateContextResponse('editor/list.html', ctx,
fields=('can_create', 'create_url', 'objects'))
def connect_nodes(request, active_node, clicked_node, edge_settings_form):