This commit is contained in:
PengfeiLi0218 2019-02-05 21:25:49 +08:00
parent b11b85a9f1
commit 331fcf74d5
7 changed files with 132 additions and 66 deletions

View File

@ -51,6 +51,7 @@ INSTALLED_APPS = [
'obp',
'consumers',
'users',
'branches',
'entitlementrequests',
'customers',
'metrics',

View File

@ -31,6 +31,7 @@ urlpatterns = [
url(r'^consumers/', include('consumers.urls')),
url(r'^entitlementrequests/', include('entitlementrequests.urls')),
url(r'^users/', include('users.urls')),
url(r'^branches/', include('branches.urls')),
url(r'^customers/', include('customers.urls')),
url(r'^metrics/', include('metrics.urls')),
url(r'^config/', include('config.urls')),

View File

@ -24,6 +24,8 @@ def api_username(request):
username = data['username']
except APIError as err:
messages.error(request, err)
except Exception as err:
messages.error(request, err)
return {'API_USERNAME': username}
@ -37,6 +39,8 @@ def api_user_id(request):
user_id = data['user_id']
except APIError as err:
messages.error(request, err)
except Exception as err:
messages.error(request, err)
return {'API_USER_ID': user_id}

View File

@ -69,28 +69,31 @@ class IndexView(LoginRequiredMixin, TemplateView):
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
consumers = []
sorted_consumers=[]
api = API(self.request.session.get('obp'))
try:
urlpath = '/management/consumers'
consumers = api.get(urlpath)
consumers = FilterEnabled(context, self.request.GET)\
.apply(consumers['list'])
consumers = FilterAppType(context, self.request.GET)\
.apply(consumers)
consumers = FilterTime(context, self.request.GET, 'created')\
.apply(consumers)
consumers = self.scrub(consumers)
if 'code' in consumers and consumers['code']==403:
messages.error(self.request, consumers['message'])
else:
consumers = FilterEnabled(context, self.request.GET)\
.apply(consumers['list'])
consumers = FilterAppType(context, self.request.GET)\
.apply(consumers)
consumers = FilterTime(context, self.request.GET, 'created')\
.apply(consumers)
consumers = self.scrub(consumers)
sorted_consumers = sorted(
consumers, key=lambda consumer: consumer['created'], reverse=True)
context.update({
'consumers': sorted_consumers,
'statistics': self.compile_statistics(consumers),
})
except APIError as err:
messages.error(self.request, err)
except:
messages.error(self.request, "Unknown")
sorted_consumers = sorted(
consumers, key=lambda consumer: consumer['created'], reverse=True)
context.update({
'consumers': sorted_consumers,
'statistics': self.compile_statistics(consumers),
})
return context

View File

@ -33,10 +33,14 @@ class IndexView(LoginRequiredMixin, TemplateView):
try:
urlpath = '/entitlement-requests'
entitlement_requests = api.get(urlpath)
entitlement_requests = entitlement_requests['entitlement_requests']
entitlement_requests = FilterTime(context, self.request.GET, 'created') \
.apply(entitlement_requests)
entitlement_requests = self.scrub(entitlement_requests)
if 'code' in entitlement_requests and entitlement_requests['code']==403:
messages.error(self.request, entitlement_requests['message'])
entitlement_requests=[]
else:
entitlement_requests = entitlement_requests['entitlement_requests']
entitlement_requests = FilterTime(context, self.request.GET, 'created') \
.apply(entitlement_requests)
entitlement_requests = self.scrub(entitlement_requests)
except APIError as err:
messages.error(self.request, err)
except:

View File

@ -259,9 +259,12 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
api = API(self.request.session.get('obp'))
try:
metrics = api.get(urlpath)
if metrics is not None and 'code' in metrics and metrics['code']==403:
error_once_only(self.request, metrics['message'])
# metrics = self.to_django(metrics)
api_calls_total = metrics[0]["count"]
average_response_time = metrics[0]["average_response_time"]
else:
api_calls_total = metrics[0]["count"]
average_response_time = metrics[0]["average_response_time"]
except APIError as err:
error_once_only(self.request, err)
except Exception as err:
@ -274,9 +277,12 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
api = API(self.request.session.get('obp'))
try:
metrics = api.get(urlpath)
if metrics is not None and 'code' in metrics and metrics['code']==403:
error_once_only(self.request, metrics['message'])
# metrics = self.to_django(metrics)
api_calls_total = metrics[0]["count"]
average_response_time = metrics[0]["average_response_time"]
else:
api_calls_total = metrics[0]["count"]
average_response_time = metrics[0]["average_response_time"]
except APIError as err:
error_once_only(self.request, err)
except Exception as err:
@ -303,8 +309,11 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
api = API(self.request.session.get('obp'))
try:
metrics = api.get(urlpath)
api_calls_total = metrics[0]["count"]
average_response_time = metrics[0]["average_response_time"]
if metrics is not None and 'code' in metrics and metrics['code']==403:
error_once_only(self.request, metrics['message'])
else:
api_calls_total = metrics[0]["count"]
average_response_time = metrics[0]["average_response_time"]
except APIError as err:
error_once_only(self.request, err)
except Exception as err:
@ -326,7 +335,10 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
api = API(self.request.session.get('obp'))
try:
apps = api.get(urlpath)
active_apps_list = list(apps)
if apps is not None and 'code' in apps and apps['code']==403:
error_once_only(self.request, apps['message'])
else:
active_apps_list = list(apps)
except APIError as err:
error_once_only(self.request, err)
except Exception as err:
@ -337,7 +349,10 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
api = API(self.request.session.get('obp'))
try:
apps = api.get(urlpath)
active_apps_list = list(apps)
if apps is not None and 'code' in apps and apps['code']==403:
error_once_only(self.request, apps['message'])
else:
active_apps_list = list(apps)
except APIError as err:
error_once_only(self.request, err)
except Exception as err:
@ -355,7 +370,10 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
api = API(self.request.session.get('obp'))
try:
apps = api.get(urlpath)
apps_list = apps["list"]
if apps is not None and 'code' in apps and apps['code'] == 403:
error_once_only(self.request, apps['message'])
else:
apps_list = apps["list"]
except APIError as err:
error_once_only(self.request, err)
except Exception as err:
@ -423,10 +441,13 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
api = API(self.request.session.get('obp'))
try:
metrics = api.get(urlpath)
result = metrics[0]["count"]
result_list_pure.append(result)
result_list.append('{} - {} # {}'.format(date_from, date_to, result))
sum += result
if metrics is not None and 'code' in metrics and metrics['code'] == 403:
error_once_only(self.request, metrics['message'])
else:
result = metrics[0]["count"]
result_list_pure.append(result)
result_list.append('{} - {} # {}'.format(date_from, date_to, result))
sum += result
except APIError as err:
error_once_only(self.request, err)
except Exception as err:
@ -442,10 +463,13 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
api = API(self.request.session.get('obp'))
try:
metrics = api.get(urlpath)
result = metrics[0]["count"]
result_list_pure.append(result)
result_list.append('{} - {} # {}'.format(date_from, date_to, result))
sum += result
if metrics is not None and 'code' in metrics and metrics['code'] == 403:
error_once_only(self.request, metrics['message'])
else:
result = metrics[0]["count"]
result_list_pure.append(result)
result_list.append('{} - {} # {}'.format(date_from, date_to, result))
sum += result
except APIError as err:
error_once_only(self.request, err)
except Exception as err:
@ -588,6 +612,10 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
try:
urlpath = '/users'
users = api.get(urlpath)
if users is not None and 'code' in users and users['code'] == 403:
error_once_only(self.request, users['message'])
if 'users' not in users:
users['users']=[]
except APIError as err:
error_once_only(self.request, err)
except Exception as err:
@ -617,7 +645,12 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
urlpath = '/management/metrics/top-apis?from_date={}&to_date={}'.format(from_date, to_date)
api = API(self.request.session.get('obp'))
try:
top_apis = api.get(urlpath)['top_apis']
top_apis = api.get(urlpath)
if top_apis is not None and 'code' in top_apis and top_apis['code']==403:
error_once_only(self.request, top_apis['message'])
top_apis=[]
else:
top_apis = top_apis['top_apis']
except APIError as err:
error_once_only(self.request, err)
except Exception as err:
@ -627,7 +660,12 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
from_date, to_date, ",".join(EXCLUDE_APPS), ",".join(EXCLUDE_FUNCTIONS), ",".join(EXCLUDE_URL_PATTERN))
api = API(self.request.session.get('obp'))
try:
top_apis = api.get(urlpath)['top_apis']
top_apis = api.get(urlpath)
if top_apis is not None and 'code' in top_apis and top_apis['code']==403:
error_once_only(self.request, top_apis['message'])
top_apis=[]
else:
top_apis = top_apis['top_apis']
except APIError as err:
error_once_only(self.request, err)
except Exception as err:
@ -666,7 +704,11 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
api = API(self.request.session.get('obp'))
try:
top_apps_using_warehouse = api.get(urlpath)
top_apps_using_warehouse = top_apps_using_warehouse["top_consumers"][:2]
if top_apps_using_warehouse is not None and 'code' in top_apps_using_warehouse and top_apps_using_warehouse['code']==403:
error_once_only(self.request, top_apps_using_warehouse['message'])
top_apps_using_warehouse = []
else:
top_apps_using_warehouse = top_apps_using_warehouse["top_consumers"][:2]
except APIError as err:
error_once_only(self.request, err)
except Exception as err:
@ -684,7 +726,10 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
api = API(self.request.session.get('obp'))
try:
apps = api.get(urlpath_consumers)
apps_list = apps["list"]
if apps is not None and 'code' in apps and apps['code']==403:
error_once_only(self.request, apps['message'])
else:
apps_list = apps["list"]
except APIError as err:
error_once_only(self.request, err)
except Exception as err:
@ -705,7 +750,11 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
api = API(self.request.session.get('obp'))
try:
metrics = api.get(urlpath_metrics)
metrics = list(metrics['metrics'])
if metrics is not None and 'code' in metrics and metrics['code'] == 403:
error_once_only(self.request, metrics['message'])
metrics = []
else:
metrics = list(metrics['metrics'])
if metrics:
time_difference = datetime.datetime.strptime(metrics[0]['date'], '%Y-%m-%dT%H:%M:%S.%fZ') - datetime.datetime.strptime(app['created'], '%Y-%m-%dT%H:%M:%SZ')
times_to_first_call.append(time_difference.total_seconds())

View File

@ -51,27 +51,23 @@ class IndexView(LoginRequiredMixin, TemplateView):
def get_users_rolenames(self, context):
api = API(self.request.session.get('obp'))
try:
urlpath = '/entitlements'
entitlements = api.get(urlpath)
except APIError as err:
messages.error(self.request, err)
return [], []
except Exception as inst:
messages.error(self.request, "Unknown Error {}".format(type(inst).__name__))
return [], []
role_names = []
try:
for entitlement in entitlements['list']:
role_names.append(entitlement['role_name'])
urlpath = '/entitlements'
entitlements = api.get(urlpath)
if 'code' in entitlements and entitlements['code']==400:
messages.error(self.request, entitlements['message'])
else:
for entitlement in entitlements['list']:
role_names.append(entitlement['role_name'])
except APIError as err:
messages.error(self.request, err)
return [], []
# fail gracefully in case API provides new structure
except KeyError as err:
messages.error(self.request, 'KeyError: {}'.format(err))
return [], []
except Exception as inst:
messages.error(self.request, "Unknown Error {}".format(type(inst).__name__))
return [], []
role_names = list(set(role_names))
role_names.sort()
@ -170,7 +166,10 @@ class DetailView(LoginRequiredMixin, FormView):
try:
urlpath = '/users/user_id/{}'.format(self.kwargs['user_id'])
user = self.api.get(urlpath)
context['form'].fields['user_id'].initial = user['user_id']
if 'code' in user and user['code']==403:
messages.error(self.request, user['message'])
else:
context['form'].fields['user_id'].initial = user['user_id']
except APIError as err:
messages.error(self.request, err)
except:
@ -211,18 +210,20 @@ class MyDetailView(LoginRequiredMixin, FormView):
'role_name': data['role_name'],
}
entitlement = self.api.post(urlpath, payload=payload)
if entitlement['code']==201:
msg = 'Entitlement with role {} has been added.'.format(entitlement['role_name'])
messages.success(self.request, msg)
else:
messages.error(self.request, entitlement['message'])
self.success_url = self.request.path
except APIError as err:
messages.error(self.request, err)
return super(MyDetailView, self).form_invalid(form)
except:
messages.error(self.request, 'Unknown Error')
return super(MyDetailView, self).form_invalid(form)
msg = 'Entitlement with role {} has been added.'.format(
entitlement['role_name'])
messages.success(self.request, msg)
self.success_url = self.request.path
return super(MyDetailView, self).form_valid(form)
else:
return super(MyDetailView, self).form_valid(form)
def get_context_data(self, **kwargs):
context = super(MyDetailView, self).get_context_data(**kwargs)
@ -253,10 +254,13 @@ class DeleteEntitlementView(LoginRequiredMixin, View):
try:
urlpath = '/users/{}/entitlement/{}'.format(
kwargs['user_id'], kwargs['entitlement_id'])
api.delete(urlpath)
msg = 'Entitlement with role {} has been deleted.'.format(
request.POST.get('role_name', '<undefined>'))
messages.success(request, msg)
result = api.delete(urlpath)
if result is not None and 'code' in result and result['code']==400:
messages.error(request, result['message'])
else:
msg = 'Entitlement with role {} has been deleted.'.format(
request.POST.get('role_name', '<undefined>'))
messages.success(request, msg)
except APIError as err:
messages.error(request, err)
except: