editor list_objects api
This commit is contained in:
parent
a9438be2f3
commit
75125ceecb
3 changed files with 12 additions and 8 deletions
|
@ -294,6 +294,8 @@ class EditorViewSet(ViewSet):
|
||||||
except Resolver404:
|
except Resolver404:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
self.request.sub_resolver_match = resolved
|
||||||
|
|
||||||
return resolved
|
return resolved
|
||||||
|
|
||||||
def retrieve(self, request, *args, **kwargs):
|
def retrieve(self, request, *args, **kwargs):
|
||||||
|
|
|
@ -202,9 +202,9 @@ class APIHybridTemplateContextResponse(APIHybridResponse):
|
||||||
|
|
||||||
def _maybe_serialize_value(self, value):
|
def _maybe_serialize_value(self, value):
|
||||||
if isinstance(value, SerializableMixin):
|
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):
|
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
|
return value
|
||||||
|
|
||||||
def get_api_response(self, request):
|
def get_api_response(self, request):
|
||||||
|
|
|
@ -406,10 +406,11 @@ def get_visible_spaces_kwargs(model, request):
|
||||||
return kwargs
|
return kwargs
|
||||||
|
|
||||||
|
|
||||||
@sidebar_view
|
@sidebar_view(api_hybrid=True)
|
||||||
@etag(etag_func)
|
@etag(etag_func)
|
||||||
def list_objects(request, model=None, level=None, space=None, explicit_edit=False):
|
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')
|
raise ValueError('url_name does not end with .list')
|
||||||
|
|
||||||
model = request.changeset.wrap_model(model)
|
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'),
|
'back_title': _('back to level'),
|
||||||
'levels': Level.objects.filter(Level.q_for_request(request), on_top_of__isnull=True),
|
'levels': Level.objects.filter(Level.q_for_request(request), on_top_of__isnull=True),
|
||||||
'level': level,
|
'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)
|
'geometry_url': ('/api/editor/geometries/?level='+str(level.primary_level_pk)
|
||||||
if request.user_permissions.can_access_base_mapdata else None),
|
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'),
|
'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:
|
for obj in queryset:
|
||||||
reverse_kwargs['pk'] = obj.pk
|
reverse_kwargs['pk'] = obj.pk
|
||||||
obj.edit_url = reverse(edit_url_name, kwargs=reverse_kwargs)
|
obj.edit_url = reverse(edit_url_name, kwargs=reverse_kwargs)
|
||||||
reverse_kwargs.pop('pk', None)
|
reverse_kwargs.pop('pk', None)
|
||||||
|
|
||||||
ctx.update({
|
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,
|
'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):
|
def connect_nodes(request, active_node, clicked_node, edge_settings_form):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue