editor main_index api
This commit is contained in:
parent
daf037d136
commit
5c87cb9592
2 changed files with 21 additions and 4 deletions
|
@ -192,6 +192,22 @@ class APIHybridFormTemplateResponse(APIHybridResponse):
|
|||
return render(request, self.template, self.ctx)
|
||||
|
||||
|
||||
class APIHybridTemplateContextResponse(APIHybridResponse):
|
||||
def __init__(self, template: str, ctx: dict, fields=None):
|
||||
self.template = template
|
||||
self.ctx = ctx
|
||||
self.fields = fields
|
||||
|
||||
def get_api_response(self, request):
|
||||
result = self.ctx
|
||||
if self.fields:
|
||||
result = {name: value for name, value in result.items() if name in self.fields}
|
||||
return result
|
||||
|
||||
def get_html_response(self, request):
|
||||
return render(request, self.template, self.ctx)
|
||||
|
||||
|
||||
class NoAPIHybridResponse(Exception):
|
||||
pass
|
||||
|
||||
|
|
|
@ -17,7 +17,8 @@ from django.views.decorators.http import etag
|
|||
|
||||
from c3nav.editor.forms import GraphEdgeSettingsForm, GraphEditorActionForm
|
||||
from c3nav.editor.views.base import (APIHybridError, APIHybridFormTemplateResponse, APIHybridLoginRequiredResponse,
|
||||
APIHybridMessageRedirectResponse, etag_func, sidebar_view)
|
||||
APIHybridMessageRedirectResponse, APIHybridTemplateContextResponse, etag_func,
|
||||
sidebar_view)
|
||||
from c3nav.mapdata.models.access import AccessPermission
|
||||
from c3nav.mapdata.utils.user import can_access_editor
|
||||
|
||||
|
@ -39,11 +40,11 @@ def child_model(request, model: typing.Union[str, models.Model], kwargs=None, pa
|
|||
}
|
||||
|
||||
|
||||
@sidebar_view
|
||||
@sidebar_view(api_hybrid=True)
|
||||
@etag(etag_func)
|
||||
def main_index(request):
|
||||
Level = request.changeset.wrap_model('Level')
|
||||
return render(request, 'editor/index.html', {
|
||||
return APIHybridTemplateContextResponse('editor/index.html', {
|
||||
'levels': Level.objects.filter(Level.q_for_request(request), on_top_of__isnull=True),
|
||||
'can_create_level': (request.user_permissions.can_access_base_mapdata and
|
||||
request.changeset.can_edit(request)),
|
||||
|
@ -55,7 +56,7 @@ def main_index(request):
|
|||
child_model(request, 'AccessRestrictionGroup'),
|
||||
child_model(request, 'Source'),
|
||||
],
|
||||
})
|
||||
}, fields=('can_create_level', 'child_models'))
|
||||
|
||||
|
||||
@sidebar_view
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue