kopia lustrzana https://github.com/OpenDroneMap/WebODM
66 wiersze
2.1 KiB
Python
66 wiersze
2.1 KiB
Python
import requests
|
|
|
|
from django import forms
|
|
from django.contrib import messages
|
|
from django.http import HttpResponse
|
|
from django.shortcuts import render
|
|
from django.contrib.auth.decorators import login_required
|
|
|
|
from app.plugins import logger
|
|
|
|
from .platform_helper import get_all_extended_platforms
|
|
|
|
class DynamicForm(forms.Form):
|
|
"""This dynamic form will go through all the extended platforms, and retrieve their fields"""
|
|
def __init__(self, *args, **kwargs):
|
|
ds = kwargs.pop('data_store')
|
|
super(DynamicForm, self).__init__(*args, **kwargs)
|
|
extended_platforms = get_all_extended_platforms()
|
|
|
|
for platform in extended_platforms:
|
|
for form_field in platform.get_form_fields():
|
|
django_field = form_field.get_django_field(ds)
|
|
django_field.group = platform.name
|
|
self.fields[form_field.field_id] = django_field
|
|
|
|
def HomeView(plugin):
|
|
@login_required
|
|
def view(request):
|
|
ds = plugin.get_user_data_store(request.user)
|
|
|
|
# if this is a POST request we need to process the form data
|
|
if request.method == "POST":
|
|
form = DynamicForm(request.POST, data_store = ds)
|
|
if form.is_valid():
|
|
extended_platforms = get_all_extended_platforms()
|
|
for platform in extended_platforms:
|
|
for form_field in platform.get_form_fields():
|
|
form_field.save_value(ds, form)
|
|
|
|
messages.success(request, "Configuration updated successfuly!")
|
|
else:
|
|
form = DynamicForm(data_store = ds)
|
|
|
|
return render(
|
|
request,
|
|
plugin.template_path("app.html"),
|
|
{"title": "Cloud Import", "form": form},
|
|
)
|
|
|
|
return view
|
|
|
|
|
|
def LoadButtonsView(plugin):
|
|
def view(request):
|
|
|
|
return render(
|
|
request,
|
|
plugin.template_path("load_buttons.js"),
|
|
{
|
|
"api_url": "/api" + plugin.public_url("").rstrip("/"),
|
|
},
|
|
content_type="text/javascript",
|
|
)
|
|
|
|
return view
|