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)
|
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):
|
class NoAPIHybridResponse(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,8 @@ from django.views.decorators.http import etag
|
||||||
|
|
||||||
from c3nav.editor.forms import GraphEdgeSettingsForm, GraphEditorActionForm
|
from c3nav.editor.forms import GraphEdgeSettingsForm, GraphEditorActionForm
|
||||||
from c3nav.editor.views.base import (APIHybridError, APIHybridFormTemplateResponse, APIHybridLoginRequiredResponse,
|
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.models.access import AccessPermission
|
||||||
from c3nav.mapdata.utils.user import can_access_editor
|
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)
|
@etag(etag_func)
|
||||||
def main_index(request):
|
def main_index(request):
|
||||||
Level = request.changeset.wrap_model('Level')
|
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),
|
'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
|
'can_create_level': (request.user_permissions.can_access_base_mapdata and
|
||||||
request.changeset.can_edit(request)),
|
request.changeset.can_edit(request)),
|
||||||
|
@ -55,7 +56,7 @@ def main_index(request):
|
||||||
child_model(request, 'AccessRestrictionGroup'),
|
child_model(request, 'AccessRestrictionGroup'),
|
||||||
child_model(request, 'Source'),
|
child_model(request, 'Source'),
|
||||||
],
|
],
|
||||||
})
|
}, fields=('can_create_level', 'child_models'))
|
||||||
|
|
||||||
|
|
||||||
@sidebar_view
|
@sidebar_view
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue