mirror of
https://github.com/OpenBankProject/API-Manager.git
synced 2026-02-06 15:46:44 +00:00
77 lines
2.5 KiB
Python
77 lines
2.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
Views of config app
|
|
"""
|
|
|
|
import json
|
|
|
|
from django.contrib import messages
|
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
|
from django.views.generic import FormView
|
|
from obp.api import API, APIError
|
|
from .forms import WebuiForm
|
|
from django.urls import reverse_lazy
|
|
|
|
def error_once_only(request, err):
|
|
"""
|
|
Just add the error once
|
|
:param request:
|
|
:param err:
|
|
:return:
|
|
"""
|
|
storage = messages.get_messages(request)
|
|
if str(err) not in [str(m.message) for m in storage]:
|
|
messages.error(request, err)
|
|
|
|
class IndexView(LoginRequiredMixin, FormView):
|
|
"""Index view for config"""
|
|
template_name = "webui/index.html"
|
|
form_class = WebuiForm
|
|
success_url = reverse_lazy('webui-index')
|
|
|
|
def dispatch(self, request, *args, **kwargs):
|
|
self.api = API(request.session.get('obp'))
|
|
return super(IndexView, self).dispatch(request, *args, **kwargs)
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super(IndexView, self).get_context_data(**kwargs)
|
|
|
|
return context
|
|
|
|
def get_form(self, *args, **kwargs):
|
|
form = super(IndexView, self).get_form(*args, **kwargs)
|
|
# Cannot add api in constructor: super complains about unknown kwarg
|
|
fields = form.fields
|
|
form.api = self.api
|
|
try:
|
|
fields['webui_props_name'].initial = ""
|
|
fields['webui_props'].initial = ""
|
|
|
|
except APIError as err:
|
|
messages.error(self.request, err)
|
|
except:
|
|
messages.error(self.request, "Unknown Error")
|
|
|
|
return form
|
|
|
|
def form_valid(self, form):
|
|
try:
|
|
data = form.cleaned_data
|
|
urlpath = '/management/webui_props'
|
|
payload = {
|
|
"name" : data["webui_props_name"],
|
|
"value" : data["webui_props"]
|
|
}
|
|
result = self.api.post(urlpath, payload=payload)
|
|
except APIError as err:
|
|
error_once_only(self.request, err)
|
|
return super(IndexView, self).form_invalid(form)
|
|
except Exception as err:
|
|
error_once_only(self.request, "Unknown Error")
|
|
return super(IndexView, self).form_invalid(form)
|
|
if 'code' in result and result['code']>=400:
|
|
error_once_only(self.request, result['message'])
|
|
return super(IndexView, self).form_valid(form)
|
|
msg = 'Submission successfully!'
|
|
messages.success(self.request, msg)
|
|
return super(IndexView, self).form_valid(form) |