mirror of
https://github.com/OpenBankProject/API-Manager.git
synced 2026-02-06 14:46:45 +00:00
bugfix/webui: fix messages display error
This commit is contained in:
parent
e5cc78d32a
commit
534fd0ebe8
@ -136,7 +136,7 @@ class API(object):
|
||||
return response.text
|
||||
else:
|
||||
data = response.json()
|
||||
if 'error' in data:
|
||||
if isinstance(data,dict) and 'error' in data:
|
||||
self.handle_response_error(prefix, data['error'])
|
||||
return data
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@ from django.contrib import messages
|
||||
import functools
|
||||
from obp.api import API, APIError
|
||||
from django.http import JsonResponse
|
||||
import traceback
|
||||
|
||||
def error_once_only(request, err):
|
||||
"""
|
||||
@ -19,7 +20,7 @@ def exception_handle(fn):
|
||||
def wrapper(request, *args, **kwargs):
|
||||
try:
|
||||
result = fn(request, *args, **kwargs)
|
||||
if 'code' in result and result['code'] >= 400:
|
||||
if isinstance(result,dict) and 'code' in result and result['code'] >= 400:
|
||||
error_once_only(request, result['message'])
|
||||
else:
|
||||
msg = 'Submit successfully!'
|
||||
|
||||
@ -5,9 +5,7 @@ $(document).ready(function($) {
|
||||
var runner = t.parent().parent().parent();
|
||||
var web_ui_props_name = $(runner).find('.web_ui_props_name').text();
|
||||
var web_ui_props_value = $(runner).find('.web_ui_props_value').val();
|
||||
$('.dynamic-message').each(function(i, d_msg){
|
||||
$(d_msg).remove();
|
||||
});
|
||||
|
||||
var webui = $('#webui');
|
||||
if(web_ui_props_value.trim() === '') {
|
||||
$('<div class="alert alert-dismissible alert-danger dynamic-message" role="alert">\n' +
|
||||
@ -17,6 +15,7 @@ $(document).ready(function($) {
|
||||
).insertBefore(webui);
|
||||
return;
|
||||
}
|
||||
/*
|
||||
t.attr("disabled","disabled").toggleClass("disabled");
|
||||
t.next().attr("disabled","disabled").toggleClass("disabled");
|
||||
$.ajax({
|
||||
@ -48,22 +47,30 @@ $(document).ready(function($) {
|
||||
t.next().removeAttr("disabled").toggleClass("disabled")
|
||||
}
|
||||
});
|
||||
*/
|
||||
$('.runner button.forSave').attr("disabled","disabled");
|
||||
$('.runner button.forDelete').attr("disabled","disabled");
|
||||
$.post('/webui/save/method', {
|
||||
'web_ui_props_name': web_ui_props_name,
|
||||
'web_ui_props_value': web_ui_props_value,
|
||||
}, function (response) {
|
||||
location.reload();
|
||||
});
|
||||
});
|
||||
|
||||
$('.runner button.forDelete').click(function() {
|
||||
$('.runner button.forDelete').click(function(e) {
|
||||
e.preventDefault();
|
||||
var t = $(this);
|
||||
var runner = t.parent().parent().parent();
|
||||
var web_ui_props_name = $(runner).find('.web_ui_props_name').text();
|
||||
var textArea = runner.find('.web_ui_props_value');
|
||||
var props_id = $(runner).find('.web_ui_props_id');
|
||||
var web_ui_props_id = props_id.val();
|
||||
$('.dynamic-message').each(function(i, d_msg){
|
||||
$(d_msg).remove();
|
||||
});
|
||||
var webui = $('#webui');
|
||||
/*
|
||||
t.attr("disabled","disabled").toggleClass("disabled");
|
||||
t.next().attr("disabled","disabled").toggleClass("disabled");
|
||||
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '/webui/delete/method',
|
||||
@ -93,5 +100,13 @@ $(document).ready(function($) {
|
||||
t.next().removeAttr("disabled").toggleClass("disabled")
|
||||
}
|
||||
});
|
||||
*/
|
||||
$('.runner button.forSave').attr("disabled","disabled");
|
||||
$('.runner button.forDelete').attr("disabled","disabled");
|
||||
$.post('/webui/delete/method', {
|
||||
'web_ui_props_id': web_ui_props_id
|
||||
}, function (response) {
|
||||
location.reload();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@ -8,13 +8,16 @@
|
||||
<div id="webui_list">
|
||||
<h1>WEBUI</h1>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<div class="col-xs-12 col-sm-3">
|
||||
<label class="form-group">Web UI Props Name:</label> <br>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<div class="col-xs-12 col-sm-3">
|
||||
<label class="form-group">Web UI Props Value:</label> <br>
|
||||
</div>
|
||||
<div class="col-sm-12 col-sm-4">
|
||||
<div class="col-xs-12 col-sm-3">
|
||||
<label class="form-group">Web UI Props Id:</label> <br>
|
||||
</div>
|
||||
<div class="col-sm-12 col-sm-3">
|
||||
<label class="form-group">Save Value:</label> <br>
|
||||
</div>
|
||||
</div>
|
||||
@ -24,18 +27,22 @@
|
||||
<div class="runner">
|
||||
<div class="row">
|
||||
<input type="hidden" class="web_ui_props_id" value="{{ webui_prop.web_ui_props_id }}"/>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<div class="col-xs-12 col-sm-3">
|
||||
<div class="form-group" cols="20" rows="1">
|
||||
<div class="web_ui_props_name">{{ webui_prop.name }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<div class="col-xs-12 col-sm-3">
|
||||
<div class="form-group">
|
||||
<textarea class="form-control required web_ui_props_value" cols="40"
|
||||
rows="1">{{ webui_prop.value }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 col-sm-4">
|
||||
<div class="col-xs-12 col-sm-3">
|
||||
<div class="form-group" cols="1" rows="1"><div
|
||||
class="">{{ webui_prop.web_ui_props_id }}</div></div>
|
||||
</div>
|
||||
<div class="col-sm-12 col-sm-3">
|
||||
<div class="form-group">
|
||||
<button class="btn btn-primary btn-green forSave">Save</button>
|
||||
<button class="btn btn-primary btn-red forDelete">Delete</button>
|
||||
@ -54,7 +61,6 @@
|
||||
|
||||
{% endblock extrajs %}
|
||||
|
||||
|
||||
{% block extracss %}
|
||||
<link href="{% static 'webui/css/webui.css' %}" rel="stylesheet">
|
||||
{% endblock extracss %}
|
||||
|
||||
@ -13,19 +13,7 @@ from django.http import JsonResponse
|
||||
from .forms import WebuiForm
|
||||
from django.urls import reverse_lazy
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
|
||||
|
||||
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)
|
||||
|
||||
from utils.ErrorHandler import exception_handle, error_once_only
|
||||
|
||||
class IndexView(LoginRequiredMixin, FormView):
|
||||
"""Index view for config"""
|
||||
@ -58,6 +46,7 @@ class IndexView(LoginRequiredMixin, FormView):
|
||||
# }
|
||||
# ]
|
||||
# }
|
||||
#print(response)
|
||||
context.update(response)
|
||||
except APIError as err:
|
||||
messages.error(self.request, Exception("The OBP-API server is not running or does not respond properly."
|
||||
@ -71,7 +60,7 @@ class IndexView(LoginRequiredMixin, FormView):
|
||||
form = super(IndexView, self).get_form(*args, **kwargs)
|
||||
return form
|
||||
|
||||
|
||||
@exception_handle
|
||||
@csrf_exempt
|
||||
def webui_save(request):
|
||||
web_ui_props_name = request.POST.get('web_ui_props_name')
|
||||
@ -81,58 +70,22 @@ def webui_save(request):
|
||||
'name': web_ui_props_name,
|
||||
'value': web_ui_props_value
|
||||
}
|
||||
|
||||
response = __send_request(request, '/management/webui_props', 'post', payload)
|
||||
status_code = response['code']
|
||||
|
||||
errors = [str(m.message) for m in messages.get_messages(request)]
|
||||
response = JsonResponse(
|
||||
{'code': status_code, 'errors': errors, 'web_ui_props_id': response['result'].get('web_ui_props_id')})
|
||||
response.status_code = status_code
|
||||
api = API(request.session.get('obp'))
|
||||
urlpath = '/management/webui_props'
|
||||
response = api.post(urlpath, payload=payload)
|
||||
|
||||
return response
|
||||
|
||||
|
||||
@exception_handle
|
||||
@csrf_exempt
|
||||
def webui_delete(request):
|
||||
web_ui_props_id = request.POST.get('web_ui_props_id')
|
||||
web_ui_props_name = request.POST.get('web_ui_props_name')
|
||||
if web_ui_props_id == 'default' or web_ui_props_id == '' or web_ui_props_id is None:
|
||||
status_code = 200
|
||||
return {'code':403,'message':'Cann\'t delete web_ui_props_id default'}
|
||||
else:
|
||||
status_code = __send_request(request, '/management/webui_props/' + web_ui_props_id, 'delete')['code']
|
||||
default_value = ''
|
||||
if 200 <= status_code <= 299:
|
||||
all_webui = __send_request(request, '/management/webui_props?active=true', 'get')
|
||||
status_code = all_webui['code']
|
||||
for v in all_webui['result']['webui_props']:
|
||||
if v['name'] == web_ui_props_name:
|
||||
default_value = v['value']
|
||||
break
|
||||
|
||||
errors = [str(m.message) for m in messages.get_messages(request)]
|
||||
response = JsonResponse({'code': status_code, 'errors': errors, 'default_value': default_value})
|
||||
response.status_code = status_code
|
||||
return response
|
||||
|
||||
|
||||
def __send_request(request, url, method_name, payload=None):
|
||||
api = API(request.session.get('obp'))
|
||||
code = 200
|
||||
try:
|
||||
if payload:
|
||||
result = getattr(api, method_name)(url, payload=payload)
|
||||
else:
|
||||
result = getattr(api, method_name)(url)
|
||||
except APIError as err:
|
||||
code = 500
|
||||
error_once_only(request, APIError(Exception("The OBP-API server is not running or does not respond properly."
|
||||
"Please check OBP-API server. Details: " + str(err))))
|
||||
except Exception as err:
|
||||
code = 500
|
||||
error_once_only(request, "Unknown Error. Details: " + str(err))
|
||||
|
||||
if 'code' in result and result['code'] >= 400:
|
||||
code = int(result['code'])
|
||||
error_once_only(request, result['message'])
|
||||
|
||||
return {'code': code, 'result': result}
|
||||
api = API(request.session.get('obp'))
|
||||
urlpath = '/management/webui_props/{}'.format(web_ui_props_id)
|
||||
result = api.delete(urlpath)
|
||||
print(result)
|
||||
return result
|
||||
|
||||
Loading…
Reference in New Issue
Block a user