kopia lustrzana https://github.com/OpenDroneMap/WebODM
Added validation to configuration
rodzic
93d362fca4
commit
aa48f8996c
|
@ -38,7 +38,7 @@ def HomeView(plugin):
|
||||||
form_field.save_value(ds, form)
|
form_field.save_value(ds, form)
|
||||||
|
|
||||||
messages.success(request, "Configuration updated successfuly!")
|
messages.success(request, "Configuration updated successfuly!")
|
||||||
|
else:
|
||||||
form = DynamicForm(data_store = ds)
|
form = DynamicForm(data_store = ds)
|
||||||
|
|
||||||
return render(
|
return render(
|
||||||
|
|
|
@ -2,7 +2,7 @@ from abc import abstractmethod
|
||||||
from django import forms
|
from django import forms
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from app.plugins import get_current_plugin
|
from app.plugins import get_current_plugin, logger
|
||||||
from app.plugins.views import TaskView
|
from app.plugins.views import TaskView
|
||||||
from ..platform_helper import get_platform_by_name
|
from ..platform_helper import get_platform_by_name
|
||||||
from ..platform_extension import PlatformExtension, StringField
|
from ..platform_extension import PlatformExtension, StringField
|
||||||
|
@ -40,6 +40,20 @@ class CloudLibrary(PlatformExtension):
|
||||||
def get_server_url_field(self):
|
def get_server_url_field(self):
|
||||||
return ServerURLField(self.name)
|
return ServerURLField(self.name)
|
||||||
|
|
||||||
|
def verify_server_url(self, server_url):
|
||||||
|
try:
|
||||||
|
# Define the API url we will call to get all the folders in the server
|
||||||
|
folder_list_api_url = self.build_folder_list_api_url(server_url)
|
||||||
|
# Call the API
|
||||||
|
payload = self.call_api(folder_list_api_url)
|
||||||
|
# Parse the payload into File instances
|
||||||
|
self.parse_payload_into_folders(payload)
|
||||||
|
# If I could parse it, then everything is ok
|
||||||
|
return "OK"
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(str(e))
|
||||||
|
return "Error. Invalid server URL."
|
||||||
|
|
||||||
def list_folders_in_server(self, server_url):
|
def list_folders_in_server(self, server_url):
|
||||||
# Define the API url we will call to get all the folders in the server
|
# Define the API url we will call to get all the folders in the server
|
||||||
folder_list_api_url = self.build_folder_list_api_url(server_url)
|
folder_list_api_url = self.build_folder_list_api_url(server_url)
|
||||||
|
@ -67,6 +81,7 @@ class CloudLibrary(PlatformExtension):
|
||||||
class ServerURLField(StringField):
|
class ServerURLField(StringField):
|
||||||
def __init__(self, platform_name):
|
def __init__(self, platform_name):
|
||||||
super().__init__('server_url', platform_name, '')
|
super().__init__('server_url', platform_name, '')
|
||||||
|
self.platform_name = platform_name
|
||||||
|
|
||||||
def get_django_field(self, user_data_store):
|
def get_django_field(self, user_data_store):
|
||||||
return forms.URLField(
|
return forms.URLField(
|
||||||
|
@ -75,7 +90,13 @@ class ServerURLField(StringField):
|
||||||
required=False,
|
required=False,
|
||||||
max_length=1024,
|
max_length=1024,
|
||||||
widget=forms.URLInput(attrs={"placeholder": "http://piwigo-server.com"}),
|
widget=forms.URLInput(attrs={"placeholder": "http://piwigo-server.com"}),
|
||||||
initial=self.get_stored_value(user_data_store))
|
initial=self.get_stored_value(user_data_store),
|
||||||
|
validators=[self.validate_server_url])
|
||||||
|
|
||||||
|
def validate_server_url(self, server_url_to_validate):
|
||||||
|
result = get_platform_by_name(self.platform_name).verify_server_url(server_url_to_validate)
|
||||||
|
if result != "OK":
|
||||||
|
raise forms.ValidationError(result)
|
||||||
|
|
||||||
class GetAllFoldersTaskView(TaskView):
|
class GetAllFoldersTaskView(TaskView):
|
||||||
def get(self, request, platform_name):
|
def get(self, request, platform_name):
|
||||||
|
|
|
@ -19,8 +19,7 @@ You might need to set up a server URL, an authentication token or something else
|
||||||
{{ field|with_class:'form-control' }}
|
{{ field|with_class:'form-control' }}
|
||||||
{% if field.errors %}
|
{% if field.errors %}
|
||||||
<span class='text-danger'>{{ field.errors|join:'<br />' }}</span>
|
<span class='text-danger'>{{ field.errors|join:'<br />' }}</span>
|
||||||
{% endif %}
|
{% elif field.help_text %}
|
||||||
{% if field.help_text %}
|
|
||||||
<span class="help-block ">{{ field.help_text }}</span>
|
<span class="help-block ">{{ field.help_text }}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
Ładowanie…
Reference in New Issue