kopia lustrzana https://github.com/OpenDroneMap/WebODM
69 wiersze
2.4 KiB
Python
69 wiersze
2.4 KiB
Python
import json
|
|
from django.http import Http404
|
|
from django.http import JsonResponse
|
|
from django.shortcuts import get_object_or_404
|
|
from django.utils.translation import ugettext as _
|
|
from django.shortcuts import render
|
|
|
|
from app.api.tasks import TaskSerializer
|
|
from app.models import Task
|
|
from app.views.utils import get_permissions
|
|
from django.views.decorators.csrf import ensure_csrf_cookie
|
|
from webodm import settings
|
|
|
|
def get_public_task(task_pk):
|
|
"""
|
|
Get a task and raise a 404 if it's not public
|
|
"""
|
|
task = get_object_or_404(Task, pk=task_pk)
|
|
if not task.public:
|
|
raise Http404()
|
|
return task
|
|
|
|
@ensure_csrf_cookie
|
|
def handle_map(request, template, task_pk=None, hide_title=False):
|
|
task = get_public_task(task_pk)
|
|
|
|
return render(request, template, {
|
|
'title': _("Map"),
|
|
'params': {
|
|
'map-items': json.dumps([task.get_map_items()]),
|
|
'title': task.name if not hide_title else '',
|
|
'public': 'true',
|
|
'public-edit': str(task.public_edit).lower(),
|
|
'share-buttons': 'false' if settings.DESKTOP_MODE else 'true',
|
|
'selected-map-type': request.GET.get('t', 'auto'),
|
|
'permissions': json.dumps(get_permissions(request.user, task.project))
|
|
}.items()
|
|
})
|
|
|
|
def map(request, task_pk=None):
|
|
return handle_map(request, 'app/public/map.html', task_pk, False)
|
|
|
|
def map_iframe(request, task_pk=None):
|
|
return handle_map(request, 'app/public/map_iframe.html', task_pk, True)
|
|
|
|
@ensure_csrf_cookie
|
|
def handle_model_display(request, template, task_pk=None):
|
|
task = get_public_task(task_pk)
|
|
|
|
return render(request, template, {
|
|
'title': task.name,
|
|
'params': {
|
|
'task': json.dumps(task.get_model_display_params()),
|
|
'public': 'true',
|
|
'public-edit': str(task.public_edit).lower(),
|
|
'share-buttons': 'false' if settings.DESKTOP_MODE else 'true'
|
|
}.items()
|
|
})
|
|
|
|
def model_display(request, task_pk=None):
|
|
return handle_model_display(request, 'app/public/3d_model_display.html', task_pk)
|
|
|
|
def model_display_iframe(request, task_pk=None):
|
|
return handle_model_display(request, 'app/public/3d_model_display_iframe.html', task_pk)
|
|
|
|
def task_json(request, task_pk=None):
|
|
task = get_public_task(task_pk)
|
|
serializer = TaskSerializer(task)
|
|
return JsonResponse(serializer.data) |