mirror of
https://github.com/OpenBankProject/API-Manager.git
synced 2026-02-06 13:46:45 +00:00
Merge pull request #304 from Reena-cell/develop
Refactor variable date/time variable names and add time field in metric
This commit is contained in:
commit
0cef8e98f2
@ -227,9 +227,9 @@ EXCLUDE_URL_PATTERN = []
|
|||||||
API_EXPLORER_APP_NAME = 'xxx'
|
API_EXPLORER_APP_NAME = 'xxx'
|
||||||
|
|
||||||
#Map Java: yyyy-MM-dd'T'HH:mm'Z'
|
#Map Java: yyyy-MM-dd'T'HH:mm'Z'
|
||||||
API_DATE_TIME_FORMAT = '%Y-%m-%dT%H:%M:%SZ'
|
API_DATE_FORMAT_WITH_SECONDS = '%Y-%m-%dT%H:%M:%SZ'
|
||||||
#Map Java: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
|
#Map Java: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
|
||||||
API_DATE_FORMAT = '%Y-%m-%dT%H:%M:%S.000Z'
|
API_DATE_FORMAT_WITH_MILLISECONDS = '%Y-%m-%dT%H:%M:%S.000Z'
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@ -244,9 +244,9 @@ LOGGING = {
|
|||||||
LOGIN_URL = reverse_lazy('home')
|
LOGIN_URL = reverse_lazy('home')
|
||||||
|
|
||||||
#Map Java: yyyy-MM-dd'T'HH:mm'Z'
|
#Map Java: yyyy-MM-dd'T'HH:mm'Z'
|
||||||
API_DATE_TIME_FORMAT = '%Y-%m-%dT%H:%M:%SZ'
|
API_DATE_FORMAT_WITH_SECONDS = '%Y-%m-%dT%H:%M:%SZ'
|
||||||
#Map Java: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
|
#Map Java: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
|
||||||
API_DATE_FORMAT = '%Y-%m-%dT%H:%M:%S.%fZ'
|
API_DATE_FORMAT_WITH_MILLISECONDS = '%Y-%m-%dT%H:%M:%S.%fZ'
|
||||||
|
|
||||||
# the API_Manager the web form date format, eg: 2020-10-11
|
# the API_Manager the web form date format, eg: 2020-10-11
|
||||||
API_MANAGER_DATE_FORMAT= '%Y-%m-%d'
|
API_MANAGER_DATE_FORMAT= '%Y-%m-%d'
|
||||||
|
|||||||
@ -77,7 +77,7 @@ class FilterTime(BaseFilter):
|
|||||||
print(filtered)
|
print(filtered)
|
||||||
for item in data:
|
for item in data:
|
||||||
item_date = datetime.strptime(
|
item_date = datetime.strptime(
|
||||||
item[self.time_fieldname], settings.API_DATE_TIME_FORMAT)
|
item[self.time_fieldname], settings.API_DATE_FORMAT_WITH_SECONDS )
|
||||||
if now - item_date <= delta:
|
if now - item_date <= delta:
|
||||||
filtered.append(item)
|
filtered.append(item)
|
||||||
return filtered
|
return filtered
|
||||||
|
|||||||
@ -4,7 +4,7 @@ Base utilities
|
|||||||
"""
|
"""
|
||||||
from django.contrib.humanize.templatetags.humanize import naturaltime
|
from django.contrib.humanize.templatetags.humanize import naturaltime
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from apimanager.settings import API_DATE_FORMAT, API_MANAGER_DATE_FORMAT
|
from apimanager.settings import API_DATE_FORMAT_WITH_MILLISECONDS, API_MANAGER_DATE_FORMAT
|
||||||
from base import context_processors
|
from base import context_processors
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
import functools
|
import functools
|
||||||
@ -61,7 +61,7 @@ def convert_form_date_to_obpapi_datetime_format(form_to_date_string):
|
|||||||
"""
|
"""
|
||||||
convert the String 2020-10-22 to 2020-10-22T00:00:00.000000Z
|
convert the String 2020-10-22 to 2020-10-22T00:00:00.000000Z
|
||||||
"""
|
"""
|
||||||
return datetime.strptime(form_to_date_string, API_MANAGER_DATE_FORMAT).strftime(API_DATE_FORMAT)
|
return datetime.strptime(form_to_date_string, API_MANAGER_DATE_FORMAT).strftime(API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
|
|
||||||
def return_to_days_ago(date, days):
|
def return_to_days_ago(date, days):
|
||||||
"""
|
"""
|
||||||
@ -70,4 +70,4 @@ def return_to_days_ago(date, days):
|
|||||||
days =1
|
days =1
|
||||||
return 2020-10-21T00:00:00.000000Z
|
return 2020-10-21T00:00:00.000000Z
|
||||||
"""
|
"""
|
||||||
return (datetime.strptime(date, API_DATE_FORMAT) - timedelta(days)).strftime(API_DATE_FORMAT)
|
return (datetime.strptime(date, API_DATE_FORMAT_WITH_MILLISECONDS) - timedelta(days)).strftime(API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
@ -44,7 +44,7 @@ class IndexView(LoginRequiredMixin, TemplateView):
|
|||||||
"""Scrubs data in the given consumers to adher to certain formats"""
|
"""Scrubs data in the given consumers to adher to certain formats"""
|
||||||
for consumer in consumers:
|
for consumer in consumers:
|
||||||
consumer['created'] = datetime.strptime(
|
consumer['created'] = datetime.strptime(
|
||||||
consumer['created'], settings.API_DATE_TIME_FORMAT)
|
consumer['created'], settings.API_DATE_FORMAT_WITH_SECONDS )
|
||||||
return consumers
|
return consumers
|
||||||
|
|
||||||
def compile_statistics(self, consumers):
|
def compile_statistics(self, consumers):
|
||||||
@ -146,7 +146,7 @@ class DetailView(LoginRequiredMixin, FormView):
|
|||||||
urlpath = '/management/consumers/{}'.format(self.kwargs['consumer_id'])
|
urlpath = '/management/consumers/{}'.format(self.kwargs['consumer_id'])
|
||||||
consumer = api.get(urlpath)
|
consumer = api.get(urlpath)
|
||||||
consumer['created'] = datetime.strptime(
|
consumer['created'] = datetime.strptime(
|
||||||
consumer['created'], settings.API_DATE_TIME_FORMAT)
|
consumer['created'], settings.API_DATE_FORMAT_WITH_SECONDS )
|
||||||
|
|
||||||
call_limits_urlpath = '/management/consumers/{}/consumer/call-limits'.format(self.kwargs['consumer_id'])
|
call_limits_urlpath = '/management/consumers/{}/consumer/call-limits'.format(self.kwargs['consumer_id'])
|
||||||
consumer_call_limtis = api.get(call_limits_urlpath)
|
consumer_call_limtis = api.get(call_limits_urlpath)
|
||||||
|
|||||||
@ -85,7 +85,7 @@ class CreateCustomerForm(forms.Form):
|
|||||||
)
|
)
|
||||||
face_image_date = forms.DateTimeField(
|
face_image_date = forms.DateTimeField(
|
||||||
label=_('Face Image Date'),
|
label=_('Face Image Date'),
|
||||||
input_formats=[settings.API_DATE_TIME_FORMAT],
|
input_formats=[settings.API_DATE_FORMAT_WITH_SECONDS ],
|
||||||
widget=forms.DateTimeInput(
|
widget=forms.DateTimeInput(
|
||||||
attrs={
|
attrs={
|
||||||
'placeholder': PLACEHOLDER,
|
'placeholder': PLACEHOLDER,
|
||||||
@ -214,7 +214,7 @@ class CreateCustomerForm(forms.Form):
|
|||||||
)
|
)
|
||||||
last_ok_date = forms.DateTimeField(
|
last_ok_date = forms.DateTimeField(
|
||||||
label=_('Last OK Date'),
|
label=_('Last OK Date'),
|
||||||
input_formats=[settings.API_DATE_TIME_FORMAT],
|
input_formats=[settings.API_DATE_FORMAT_WITH_SECONDS ],
|
||||||
widget=forms.DateTimeInput(
|
widget=forms.DateTimeInput(
|
||||||
attrs={
|
attrs={
|
||||||
'placeholder': PLACEHOLDER,
|
'placeholder': PLACEHOLDER,
|
||||||
@ -231,7 +231,7 @@ class CreateCustomerForm(forms.Form):
|
|||||||
def clean_face_image_date(self):
|
def clean_face_image_date(self):
|
||||||
data = self.cleaned_data['face_image_date']
|
data = self.cleaned_data['face_image_date']
|
||||||
if data:
|
if data:
|
||||||
return data.strftime(settings.API_DATE_TIME_FORMAT)
|
return data.strftime(settings.API_DATE_FORMAT_WITH_SECONDS )
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|||||||
@ -38,7 +38,7 @@ class CreateView(LoginRequiredMixin, FormView):
|
|||||||
except Exception as err:
|
except Exception as err:
|
||||||
messages.error(self.request, err)
|
messages.error(self.request, err)
|
||||||
fields['last_ok_date'].initial =\
|
fields['last_ok_date'].initial =\
|
||||||
datetime.datetime.now().strftime(settings.API_DATE_TIME_FORMAT)
|
datetime.datetime.now().strftime(settings.API_DATE_FORMAT_WITH_SECONDS )
|
||||||
return form
|
return form
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
@ -75,7 +75,7 @@ class CreateView(LoginRequiredMixin, FormView):
|
|||||||
'employment_status': data['employment_status'],
|
'employment_status': data['employment_status'],
|
||||||
'kyc_status': data['kyc_status'],
|
'kyc_status': data['kyc_status'],
|
||||||
'last_ok_date':
|
'last_ok_date':
|
||||||
data['last_ok_date'].strftime(settings.API_DATE_TIME_FORMAT),
|
data['last_ok_date'].strftime(settings.API_DATE_FORMAT_WITH_SECONDS ),
|
||||||
}
|
}
|
||||||
try:
|
try:
|
||||||
result = self.api.post(urlpath, payload=payload)
|
result = self.api.post(urlpath, payload=payload)
|
||||||
|
|||||||
@ -24,7 +24,7 @@ class IndexView(LoginRequiredMixin, TemplateView):
|
|||||||
"""Scrubs data in the given entitlement requests to adher to certain formats"""
|
"""Scrubs data in the given entitlement requests to adher to certain formats"""
|
||||||
for entitlement_request in entitlement_requests:
|
for entitlement_request in entitlement_requests:
|
||||||
entitlement_request['created'] = datetime.strptime(
|
entitlement_request['created'] = datetime.strptime(
|
||||||
entitlement_request['created'], settings.API_DATE_TIME_FORMAT)
|
entitlement_request['created'], settings.API_DATE_FORMAT_WITH_SECONDS )
|
||||||
return entitlement_requests
|
return entitlement_requests
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
|
|||||||
@ -11,36 +11,40 @@ from datetime import datetime, timedelta
|
|||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from bootstrap_datepicker_plus import DatePickerInput, DateTimePickerInput
|
from bootstrap_datepicker_plus import DatePickerInput, DateTimePickerInput
|
||||||
from apimanager.settings import API_MANAGER_DATE_FORMAT, API_DATE_FORMAT
|
from apimanager.settings import API_MANAGER_DATE_FORMAT, API_DATE_FORMAT_WITH_MILLISECONDS
|
||||||
|
from apimanager.settings import API_FIELD_DATE_FORMAT, API_FIELD_TIME_FORMAT
|
||||||
|
|
||||||
API_DATE_FORMAT_PLACEHOLDER = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
|
API_DATE_FORMAT_WITH_MILLISECONDS_PLACEHOLDER = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
|
||||||
FORM_CONTROL = 'form-control'
|
FORM_CONTROL = 'form-control'
|
||||||
FROM_DATE = 'From Date'
|
FROM_DATE = 'From Date'
|
||||||
TO_DATE = 'To Date'
|
TO_DATE = 'To Date'
|
||||||
|
PLACEHOLDER = "2013-01-22"
|
||||||
|
PLACEHOLDER1 = "23:59:59"
|
||||||
|
PLACEHOLDER2 = "00:00:00"
|
||||||
|
|
||||||
class MetricsForm(forms.Form):
|
class MetricsForm(forms.Form):
|
||||||
from_date = forms.DateTimeField(
|
from_date = forms.DateTimeField(
|
||||||
label=_(FROM_DATE),
|
label=_(FROM_DATE),
|
||||||
input_formats=[settings.API_DATE_FORMAT],
|
input_formats=[settings.API_DATE_FORMAT_WITH_MILLISECONDS],
|
||||||
widget=forms.DateTimeInput(
|
widget=forms.DateTimeInput(
|
||||||
attrs={
|
attrs={
|
||||||
'placeholder': API_DATE_FORMAT,
|
'placeholder': API_DATE_FORMAT_WITH_MILLISECONDS,
|
||||||
'class': FORM_CONTROL,
|
'class': FORM_CONTROL,
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
initial=(datetime.now() - timedelta(30)).strftime(settings.API_DATE_FORMAT),
|
initial=(datetime.now() - timedelta(30)).strftime(settings.API_DATE_FORMAT_WITH_MILLISECONDS),
|
||||||
required=False,
|
required=False,
|
||||||
)
|
)
|
||||||
to_date = forms.DateTimeField(
|
to_date = forms.DateTimeField(
|
||||||
label=_(TO_DATE),
|
label=_(TO_DATE),
|
||||||
input_formats=[settings.API_DATE_FORMAT],
|
input_formats=[settings.API_DATE_FORMAT_WITH_MILLISECONDS],
|
||||||
widget=forms.DateTimeInput(
|
widget=forms.DateTimeInput(
|
||||||
attrs={
|
attrs={
|
||||||
'placeholder': API_DATE_FORMAT,
|
'placeholder': API_DATE_FORMAT_WITH_MILLISECONDS,
|
||||||
'class': FORM_CONTROL,
|
'class': FORM_CONTROL,
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
initial=str(datetime.now().strftime(settings.API_DATE_FORMAT)),
|
initial=str(datetime.now().strftime(settings.API_DATE_FORMAT_WITH_MILLISECONDS)),
|
||||||
required=False,
|
required=False,
|
||||||
)
|
)
|
||||||
limit = forms.IntegerField(
|
limit = forms.IntegerField(
|
||||||
@ -89,7 +93,6 @@ class APIMetricsForm(MetricsForm):
|
|||||||
'class': FORM_CONTROL,
|
'class': FORM_CONTROL,
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
choices=[],
|
|
||||||
required=False,
|
required=False,
|
||||||
)
|
)
|
||||||
user_id = forms.CharField(
|
user_id = forms.CharField(
|
||||||
@ -109,7 +112,7 @@ class APIMetricsForm(MetricsForm):
|
|||||||
'class': FORM_CONTROL,
|
'class': FORM_CONTROL,
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
initial='false',
|
initial='',
|
||||||
required=False,
|
required=False,
|
||||||
)
|
)
|
||||||
app_name = forms.CharField(
|
app_name = forms.CharField(
|
||||||
@ -152,14 +155,12 @@ class APIMetricsForm(MetricsForm):
|
|||||||
)
|
)
|
||||||
implemented_in_version = forms.ChoiceField(
|
implemented_in_version = forms.ChoiceField(
|
||||||
label=_('Implemented In Version'),
|
label=_('Implemented In Version'),
|
||||||
#choices=VERSION,
|
|
||||||
widget=forms.Select(
|
widget=forms.Select(
|
||||||
attrs={
|
attrs={
|
||||||
'class': FORM_CONTROL,
|
'class': FORM_CONTROL,
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
choices=[],
|
choices=[],
|
||||||
#initial='',
|
|
||||||
required=False,
|
required=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -201,18 +202,48 @@ class ConnectorMetricsForm(MetricsForm):
|
|||||||
|
|
||||||
|
|
||||||
class CustomSummaryForm(forms.Form):
|
class CustomSummaryForm(forms.Form):
|
||||||
to_date = forms.DateField(
|
""" to_date = forms.DateField(
|
||||||
label=_(TO_DATE),
|
label=_(TO_DATE),
|
||||||
widget=DatePickerInput(format=API_MANAGER_DATE_FORMAT),
|
widget=DatePickerInput(format=API_MANAGER_DATE_FORMAT),
|
||||||
required=True,
|
required=True,
|
||||||
initial=str(datetime.now().strftime(API_MANAGER_DATE_FORMAT)),
|
initial=str(datetime.now().strftime(API_MANAGER_DATE_FORMAT)),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
"""
|
||||||
|
to_date = forms.DateField(
|
||||||
|
label=_("Date"),
|
||||||
|
widget=DatePickerInput(format=API_FIELD_DATE_FORMAT),
|
||||||
|
required=True,
|
||||||
|
initial=str(datetime.now().strftime(API_FIELD_DATE_FORMAT)),
|
||||||
|
)
|
||||||
|
to_date_time = forms.TimeField(
|
||||||
|
label=_('Time'),
|
||||||
|
widget=forms.TimeInput(
|
||||||
|
format='%H:%M:%S',
|
||||||
|
attrs={
|
||||||
|
'placeholder': PLACEHOLDER2,
|
||||||
|
'class': 'form-control',
|
||||||
|
}
|
||||||
|
),
|
||||||
|
required=False,
|
||||||
|
)
|
||||||
from_date_custom = forms.DateField(
|
from_date_custom = forms.DateField(
|
||||||
label=_(FROM_DATE),
|
label=_(FROM_DATE),
|
||||||
widget=DatePickerInput(format=API_MANAGER_DATE_FORMAT),
|
#widget=DatePickerInput(format=API_MANAGER_DATE_FORMAT),
|
||||||
|
widget=DatePickerInput(format=API_FIELD_DATE_FORMAT),
|
||||||
required=True,
|
required=True,
|
||||||
initial=(datetime.now() - timedelta(6)).strftime(API_MANAGER_DATE_FORMAT),
|
initial=(datetime.now() - timedelta(6)).strftime(API_FIELD_DATE_FORMAT),
|
||||||
|
)
|
||||||
|
from_time_custom = forms.TimeField(
|
||||||
|
label=_('Time'),
|
||||||
|
widget=forms.TimeInput(
|
||||||
|
format='%H:%M:%S',
|
||||||
|
attrs={
|
||||||
|
'placeholder': PLACEHOLDER1,
|
||||||
|
'class': 'form-control',
|
||||||
|
}
|
||||||
|
),
|
||||||
|
required=False,
|
||||||
)
|
)
|
||||||
include_app_names = forms.CharField(
|
include_app_names = forms.CharField(
|
||||||
label=_('Include App Names'),
|
label=_('Include App Names'),
|
||||||
@ -230,12 +261,29 @@ class CustomSummaryForm(forms.Form):
|
|||||||
super(CustomSummaryForm, self).__init__(*args, **kwargs)
|
super(CustomSummaryForm, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
class MonthlyMetricsSummaryForm(forms.Form):
|
class MonthlyMetricsSummaryForm(forms.Form):
|
||||||
to_date = forms.DateField(
|
""" to_date = forms.DateField(
|
||||||
label=_(TO_DATE),
|
label=_(TO_DATE),
|
||||||
widget=DatePickerInput(format=API_MANAGER_DATE_FORMAT),
|
widget=DatePickerInput(format=API_MANAGER_DATE_FORMAT),
|
||||||
required=True,
|
required=True,
|
||||||
#initial=str(datetime.now().strftime('%Y-%m-%dT%H:%M:%S.%fZ')),
|
#initial=str(datetime.now().strftime('%Y-%m-%dT%H:%M:%S.%fZ')),
|
||||||
initial=str(datetime.now().strftime(API_MANAGER_DATE_FORMAT)),
|
initial=str(datetime.now().strftime(API_MANAGER_DATE_FORMAT)),
|
||||||
|
) """
|
||||||
|
to_date = forms.DateField(
|
||||||
|
label=_("Date"),
|
||||||
|
widget=DatePickerInput(format=API_FIELD_DATE_FORMAT),
|
||||||
|
required=True,
|
||||||
|
initial=str(datetime.now().strftime(API_FIELD_DATE_FORMAT)),
|
||||||
|
)
|
||||||
|
to_date_time = forms.TimeField(
|
||||||
|
label=_('Time'),
|
||||||
|
widget=forms.TimeInput(
|
||||||
|
format='%H:%M:%S',
|
||||||
|
attrs={
|
||||||
|
'placeholder': PLACEHOLDER1,
|
||||||
|
'class': 'form-control',
|
||||||
|
}
|
||||||
|
),
|
||||||
|
required=False,
|
||||||
)
|
)
|
||||||
include_app_names = forms.CharField(
|
include_app_names = forms.CharField(
|
||||||
label=_('Include App Names'),
|
label=_('Include App Names'),
|
||||||
|
|||||||
@ -4,8 +4,13 @@
|
|||||||
|
|
||||||
{% block page_title %}{{ block.super }} / API Metrics{% endblock page_title %}
|
{% block page_title %}{{ block.super }} / API Metrics{% endblock page_title %}
|
||||||
|
|
||||||
|
{% load bootstrap3 %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div id="metrics">
|
<div id="metrics">
|
||||||
|
{% bootstrap_javascript jquery='full' %} {# Embed Bootstrap JS+jQuery #}
|
||||||
|
{% block extrahead %} {# Extra Resources Start #}
|
||||||
|
{{ form.media }} {# Form required JS and CSS #}
|
||||||
|
{% endblock %}
|
||||||
<h1>{% trans "API Metrics" %}</h1>
|
<h1>{% trans "API Metrics" %}</h1>
|
||||||
|
|
||||||
<div id="metrics-filter">
|
<div id="metrics-filter">
|
||||||
|
|||||||
@ -8,16 +8,16 @@
|
|||||||
<h1>{% trans "API Usage Report" %}</h1>
|
<h1>{% trans "API Usage Report" %}</h1>
|
||||||
<h2>{% trans "API instance" %} {{ api_host_name }}</h2>
|
<h2>{% trans "API instance" %} {{ api_host_name }}</h2>
|
||||||
<div id="metrics-data">
|
<div id="metrics-data">
|
||||||
<ul class="nav nav-tabs">
|
<ul class="nav nav-tabs">
|
||||||
{% block nav_tabs %}
|
{% block nav_tabs %}
|
||||||
<li><a href="{% url 'yearly-summary' %}?{{ request.GET.urlencode }}">{% trans "Year" %}</a></li>
|
<li><a href="{% url 'yearly-summary' %}?{{ request.GET.urlencode }}">{% trans "Year" %}</a></li>
|
||||||
<li><a href="{% url 'quarterly-summary' %}?{{ request.GET.urlencode }}">{% trans "Quarter" %}</a></li>
|
<li><a href="{% url 'quarterly-summary' %}?{{ request.GET.urlencode }}">{% trans "Quarter" %}</a></li>
|
||||||
<li><a href="{% url 'metrics-summary' %}?{{ request.GET.urlencode }}">{% trans "Month" %}</a></li>
|
<li><a href="{% url 'metrics-summary' %}?{{ request.GET.urlencode }}">{% trans "Month" %}</a></li>
|
||||||
<li><a href="{% url 'weekly-summary' %}?{{ request.GET.urlencode }}">{% trans "Week" %}</a></li>
|
<li><a href="{% url 'weekly-summary' %}?{{ request.GET.urlencode }}">{% trans "Week" %}</a></li>
|
||||||
<li><a href="{% url 'daily-summary' %}?{{ request.GET.urlencode }}">{% trans "Day" %}</a></li>
|
<li><a href="{% url 'daily-summary' %}?{{ request.GET.urlencode }}">{% trans "Day" %}</a></li>
|
||||||
<li class="active"><a href="{% url 'custom-summary' %}?{{ request.GET.urlencode }}">{% trans "Custom" %}</a></li>
|
<li class="active"><a href="{% url 'custom-summary' %}?{{ request.GET.urlencode }}">{% trans "Custom" %}</a></li>
|
||||||
{% endblock nav_tabs %}
|
{% endblock nav_tabs %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div id="metrics-filter">
|
<div id="metrics-filter">
|
||||||
|
|
||||||
@ -41,13 +41,29 @@
|
|||||||
<strong>{% trans "From Date Custom" %} </strong>
|
<strong>{% trans "From Date Custom" %} </strong>
|
||||||
{{ form.from_date_custom }}
|
{{ form.from_date_custom }}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-6 col-sm-4">
|
||||||
|
{% if form.from_time_custom.errors %}<div class="alert alert-danger">{{ form.from_time_custom.errors }}</div>{% endif %}
|
||||||
|
<div class="form-group">
|
||||||
|
<strong>{% trans "From Time Custom" %} </strong>
|
||||||
|
{{ form.from_time_custom }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
<div class="col-xs-6 col-sm-3">
|
<div class="col-xs-6 col-sm-3">
|
||||||
{% if form.to_date.errors %}<div class="alert alert-danger">{{ form.to_date.errors }}</div>{% endif %}
|
{% if form.to_date.errors %}<div class="alert alert-danger">{{ form.to_date.errors }}</div>{% endif %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<strong>{% trans "To Date Custom" %} </strong>
|
<strong>{% trans "To Date Custom" %} </strong>
|
||||||
{{ form.to_date }}
|
{{ form.to_date }}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-6 col-sm-3">
|
||||||
|
{% if form.to_date_time.errors %}<div class="alert alert-danger">{{ form.to_date_time.errors }}</div>{% endif %}
|
||||||
|
<div class="form-group">
|
||||||
|
<strong>{% trans "To Time Custom" %} </strong>
|
||||||
|
{{ form.to_date_time }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-4 col-sm-3">
|
<div class="col-xs-4 col-sm-3">
|
||||||
{% if form.include_app_names.errors %}<div class="alert alert-danger">{{ form.include_app_names.errors }}</div>{% endif %}
|
{% if form.include_app_names.errors %}<div class="alert alert-danger">{{ form.include_app_names.errors }}</div>{% endif %}
|
||||||
@ -60,16 +76,14 @@
|
|||||||
<button type="submit" class="btn btn-primary">{% trans "Search" %}</button>
|
<button type="submit" class="btn btn-primary">{% trans "Search" %}</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-content">
|
<div class="tab-content">
|
||||||
{% block tab_content %}
|
{% block tab_content %}
|
||||||
<div class="tab-pane active">
|
<div class="tab-pane active"><h2>{% if include_app_names != "" %} {{ include_app_names }} : {% endif %}{{ from_date }} - {{ to_date }}</h2>
|
||||||
<h2>{% if include_app_names != "" %} {{ include_app_names }} : {% endif %}{{ from_date }} - {{ to_date }}</h2>
|
|
||||||
|
|
||||||
<table border="1">
|
<table border="1">
|
||||||
<tr>
|
<tr>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{% trans "Total API calls" %}:</td>
|
<td>{% trans "Total API calls" %}:</td>
|
||||||
<td>{{ api_calls }}</td>
|
<td>{{ api_calls }}</td>
|
||||||
@ -136,10 +150,10 @@
|
|||||||
</tr>-->
|
</tr>-->
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
{% endblock tab_content %}
|
{% endblock tab_content %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -49,6 +49,13 @@
|
|||||||
{{ form.to_date }}
|
{{ form.to_date }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-xs-4 col-sm-3">
|
||||||
|
{% if form.to_date_time.errors %}<div class="alert alert-danger">{{ form.to_date_time.errors }}</div>{% endif %}
|
||||||
|
<div class="form-group">
|
||||||
|
{{ form.to_date_time.label_tag }}
|
||||||
|
{{ form.to_date_time }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="col-xs-4 col-sm-3">
|
<div class="col-xs-4 col-sm-3">
|
||||||
{% if form.include_app_names.errors %}<div class="alert alert-danger">{{ form.include_app_names.errors }}</div>{% endif %}
|
{% if form.include_app_names.errors %}<div class="alert alert-danger">{{ form.include_app_names.errors }}</div>{% endif %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|||||||
@ -48,6 +48,13 @@
|
|||||||
{{ form.to_date }}
|
{{ form.to_date }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-xs-4 col-sm-3">
|
||||||
|
{% if form.to_date_time.errors %}<div class="alert alert-danger">{{ form.to_date_time.errors }}</div>{% endif %}
|
||||||
|
<div class="form-group">
|
||||||
|
{{ form.to_date_time.label_tag }}
|
||||||
|
{{ form.to_date_time }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="col-xs-4 col-sm-3">
|
<div class="col-xs-4 col-sm-3">
|
||||||
{% if form.include_app_names.errors %}<div class="alert alert-danger">{{ form.include_app_names.errors }}</div>{% endif %}
|
{% if form.include_app_names.errors %}<div class="alert alert-danger">{{ form.include_app_names.errors }}</div>{% endif %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|||||||
@ -44,6 +44,14 @@
|
|||||||
{{ form.to_date }}
|
{{ form.to_date }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-xs-4 col-sm-3">
|
||||||
|
{% if form.to_date_time.errors %}<div class="alert alert-danger">{{ form.to_date_time.errors }}</div>{% endif %}
|
||||||
|
<div class="form-group">
|
||||||
|
{{ form.to_date_time.label_tag }}
|
||||||
|
{{ form.to_date_time }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="col-xs-4 col-sm-3">
|
<div class="col-xs-4 col-sm-3">
|
||||||
{% if form.include_app_names.errors %}<div class="alert alert-danger">{{ form.include_app_names.errors }}</div>{% endif %}
|
{% if form.include_app_names.errors %}<div class="alert alert-danger">{{ form.include_app_names.errors }}</div>{% endif %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|||||||
@ -48,6 +48,14 @@
|
|||||||
{{ form.to_date }}
|
{{ form.to_date }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-xs-4 col-sm-3">
|
||||||
|
{% if form.to_date_time.errors %}<div class="alert alert-danger">{{ form.to_date_time.errors }}</div>{% endif %}
|
||||||
|
<div class="form-group">
|
||||||
|
{{ form.to_date_time.label_tag }}
|
||||||
|
{{ form.to_date_time }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="col-xs-4 col-sm-3">
|
<div class="col-xs-4 col-sm-3">
|
||||||
{% if form.include_app_names.errors %}<div class="alert alert-danger">{{ form.include_app_names.errors }}</div>{% endif %}
|
{% if form.include_app_names.errors %}<div class="alert alert-danger">{{ form.include_app_names.errors }}</div>{% endif %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|||||||
@ -50,6 +50,14 @@
|
|||||||
{{ form.to_date }}
|
{{ form.to_date }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-xs-4 col-sm-3">
|
||||||
|
{% if form.to_date_time.errors %}<div class="alert alert-danger">{{ form.to_date_time.errors }}</div>{% endif %}
|
||||||
|
<div class="form-group">
|
||||||
|
{{ form.to_date_time.label_tag }}
|
||||||
|
{{ form.to_date_time }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="col-xs-4 col-sm-3">
|
<div class="col-xs-4 col-sm-3">
|
||||||
{% if form.include_app_names.errors %}<div class="alert alert-danger">{{ form.include_app_names.errors }}</div>{% endif %}
|
{% if form.include_app_names.errors %}<div class="alert alert-danger">{{ form.include_app_names.errors }}</div>{% endif %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|||||||
@ -50,6 +50,13 @@
|
|||||||
{{ form.to_date }}
|
{{ form.to_date }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-xs-4 col-sm-3">
|
||||||
|
{% if form.to_date_time.errors %}<div class="alert alert-danger">{{ form.to_date_time.errors }}</div>{% endif %}
|
||||||
|
<div class="form-group">
|
||||||
|
{{ form.to_date_time.label_tag }}
|
||||||
|
{{ form.to_date_time }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="col-xs-4 col-sm-3">
|
<div class="col-xs-4 col-sm-3">
|
||||||
{% if form.include_app_names.errors %}<div class="alert alert-danger">{{ form.include_app_names.errors }}</div>{% endif %}
|
{% if form.include_app_names.errors %}<div class="alert alert-danger">{{ form.include_app_names.errors }}</div>{% endif %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|||||||
@ -11,7 +11,7 @@ from enum import Enum
|
|||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from apimanager import local_settings
|
from apimanager import local_settings
|
||||||
from apimanager.settings import API_HOST, EXCLUDE_APPS, EXCLUDE_FUNCTIONS, EXCLUDE_URL_PATTERN, API_EXPLORER_APP_NAME, API_DATE_FORMAT, API_DATE_TIME_FORMAT, DEBUG
|
from apimanager.settings import API_HOST, EXCLUDE_APPS, EXCLUDE_FUNCTIONS, EXCLUDE_URL_PATTERN, API_EXPLORER_APP_NAME, API_DATE_FORMAT_WITH_MILLISECONDS, API_DATE_FORMAT_WITH_SECONDS , DEBUG
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||||
from django.views.generic import TemplateView
|
from django.views.generic import TemplateView
|
||||||
@ -115,7 +115,7 @@ class MetricsView(LoginRequiredMixin, TemplateView):
|
|||||||
"""
|
"""
|
||||||
for metric in metrics:
|
for metric in metrics:
|
||||||
metric['date'] = datetime.datetime.strptime(
|
metric['date'] = datetime.datetime.strptime(
|
||||||
metric['date'], settings.API_DATE_TIME_FORMAT)
|
metric['date'], settings.API_DATE_FORMAT_WITH_SECONDS )
|
||||||
return metrics
|
return metrics
|
||||||
|
|
||||||
def to_api(self, cleaned_data):
|
def to_api(self, cleaned_data):
|
||||||
@ -130,7 +130,7 @@ class MetricsView(LoginRequiredMixin, TemplateView):
|
|||||||
# Maybe we should define the API format as Django format to not
|
# Maybe we should define the API format as Django format to not
|
||||||
# have to convert in places like this?
|
# have to convert in places like this?
|
||||||
if value.__class__.__name__ == 'datetime':
|
if value.__class__.__name__ == 'datetime':
|
||||||
value = value.strftime(settings.API_DATE_FORMAT)
|
value = value.strftime(settings.API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
if value:
|
if value:
|
||||||
# API does not like quoted data
|
# API does not like quoted data
|
||||||
params.append('{}={}'.format(name, value))
|
params.append('{}={}'.format(name, value))
|
||||||
@ -259,7 +259,7 @@ class MonthlyMetricsSummaryView(LoginRequiredMixin, TemplateView):
|
|||||||
"""
|
"""
|
||||||
for metric in metrics:
|
for metric in metrics:
|
||||||
metric['date'] = datetime.datetime.strptime(
|
metric['date'] = datetime.datetime.strptime(
|
||||||
metric['date'], API_DATE_FORMAT)
|
metric['date'], API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
return metrics
|
return metrics
|
||||||
|
|
||||||
def to_api(self, cleaned_data):
|
def to_api(self, cleaned_data):
|
||||||
@ -274,7 +274,7 @@ class MonthlyMetricsSummaryView(LoginRequiredMixin, TemplateView):
|
|||||||
# Maybe we should define the API format as Django format to not
|
# Maybe we should define the API format as Django format to not
|
||||||
# have to convert in places like this?
|
# have to convert in places like this?
|
||||||
if value.__class__.__name__ == 'datetime':
|
if value.__class__.__name__ == 'datetime':
|
||||||
value = value.strftime(settings.API_DATE_FORMAT)
|
value = value.strftime(settings.API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
if value:
|
if value:
|
||||||
# API does not like quoted data
|
# API does not like quoted data
|
||||||
params.append('{}={}'.format(name, value))
|
params.append('{}={}'.format(name, value))
|
||||||
@ -364,8 +364,8 @@ class MonthlyMetricsSummaryView(LoginRequiredMixin, TemplateView):
|
|||||||
to_date, urlpath):
|
to_date, urlpath):
|
||||||
api_calls_total = metrics[0]["count"]
|
api_calls_total = metrics[0]["count"]
|
||||||
average_response_time = metrics[0]["average_response_time"]
|
average_response_time = metrics[0]["average_response_time"]
|
||||||
to_date = datetime.datetime.strptime(to_date, API_DATE_FORMAT)
|
to_date = datetime.datetime.strptime(to_date, API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
from_date = datetime.datetime.strptime(from_date, API_DATE_FORMAT)
|
from_date = datetime.datetime.strptime(from_date, API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
number_of_days = abs((to_date - from_date).days)
|
number_of_days = abs((to_date - from_date).days)
|
||||||
# if number_of_days= 0, then it means calls_per_hour
|
# if number_of_days= 0, then it means calls_per_hour
|
||||||
average_calls_per_day = api_calls_total if (number_of_days == 0) else api_calls_total / number_of_days
|
average_calls_per_day = api_calls_total if (number_of_days == 0) else api_calls_total / number_of_days
|
||||||
@ -413,12 +413,12 @@ class MonthlyMetricsSummaryView(LoginRequiredMixin, TemplateView):
|
|||||||
|
|
||||||
def get_total_number_of_apps(self, cleaned_data, from_date, to_date):
|
def get_total_number_of_apps(self, cleaned_data, from_date, to_date):
|
||||||
apps = []
|
apps = []
|
||||||
from_date = datetime.datetime.strptime(from_date, API_DATE_FORMAT)
|
from_date = datetime.datetime.strptime(from_date, API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
to_date = datetime.datetime.strptime(to_date, API_DATE_FORMAT)
|
to_date = datetime.datetime.strptime(to_date, API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
apps_list = self.get_all_consumers()
|
apps_list = self.get_all_consumers()
|
||||||
|
|
||||||
for app in apps_list:
|
for app in apps_list:
|
||||||
app_created_date = datetime.datetime.strptime(app["created"], API_DATE_TIME_FORMAT)
|
app_created_date = datetime.datetime.strptime(app["created"], API_DATE_FORMAT_WITH_SECONDS )
|
||||||
|
|
||||||
if app_created_date < from_date and app_created_date > to_date:
|
if app_created_date < from_date and app_created_date > to_date:
|
||||||
apps_list.remove(app)
|
apps_list.remove(app)
|
||||||
@ -485,18 +485,18 @@ class MonthlyMetricsSummaryView(LoginRequiredMixin, TemplateView):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
# we need to convert string to datetime object, then we can calculate the date
|
# we need to convert string to datetime object, then we can calculate the date
|
||||||
from_datetime_object = datetime.datetime.strptime(from_date_string, API_DATE_FORMAT)
|
from_datetime_object = datetime.datetime.strptime(from_date_string, API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
to_datetime_object = datetime.datetime.strptime(to_date_string , API_DATE_FORMAT)
|
to_datetime_object = datetime.datetime.strptime(to_date_string , API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
time_delta_in_loop = from_datetime_object + timedelta(**delta)
|
time_delta_in_loop = from_datetime_object + timedelta(**delta)
|
||||||
|
|
||||||
result_list = []
|
result_list = []
|
||||||
result_list_pure = []
|
result_list_pure = []
|
||||||
date_list = []
|
date_list = []
|
||||||
while time_delta_in_loop <= to_datetime_object:
|
while time_delta_in_loop <= to_datetime_object + timedelta(days=1, hours=1):
|
||||||
try:
|
try:
|
||||||
# here we need to first convert datetime object to String
|
# here we need to first convert datetime object to String
|
||||||
form_date= from_datetime_object.strftime(API_DATE_FORMAT)
|
form_date= from_datetime_object.strftime(API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
to_date= time_delta_in_loop.strftime(API_DATE_FORMAT)
|
to_date= time_delta_in_loop.strftime(API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
aggregate_metrics = self.get_aggregate_metrics(form_date, to_date, include_app_names)
|
aggregate_metrics = self.get_aggregate_metrics(form_date, to_date, include_app_names)
|
||||||
result = aggregate_metrics[0]
|
result = aggregate_metrics[0]
|
||||||
result_list_pure.append(result)
|
result_list_pure.append(result)
|
||||||
@ -813,15 +813,15 @@ class MonthlyMetricsSummaryView(LoginRequiredMixin, TemplateView):
|
|||||||
|
|
||||||
for app in apps_list:
|
for app in apps_list:
|
||||||
created_date = datetime.datetime.strptime(app['created'], '%Y-%m-%dT%H:%M:%SZ')
|
created_date = datetime.datetime.strptime(app['created'], '%Y-%m-%dT%H:%M:%SZ')
|
||||||
created_date = created_date.strftime(API_DATE_FORMAT)
|
created_date = created_date.strftime(API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
created_date = datetime.datetime.strptime(created_date, API_DATE_FORMAT)
|
created_date = datetime.datetime.strptime(created_date, API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
if created_date >= datetime.datetime.strptime(from_date, API_DATE_FORMAT):
|
if created_date >= datetime.datetime.strptime(from_date, API_DATE_FORMAT_WITH_MILLISECONDS):
|
||||||
new_apps_list.append(app)
|
new_apps_list.append(app)
|
||||||
|
|
||||||
times_to_first_call = []
|
times_to_first_call = []
|
||||||
|
|
||||||
strfrom_date=datetime.datetime.strptime(from_date, API_DATE_FORMAT)
|
strfrom_date=datetime.datetime.strptime(from_date, API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
strto_date=datetime.datetime.strptime(to_date, API_DATE_FORMAT)
|
strto_date=datetime.datetime.strptime(to_date, API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
for app in new_apps_list:
|
for app in new_apps_list:
|
||||||
urlpath_metrics = '/management/metrics?from_date={}&to_date={}&consumer_id={}&sort_by={}&direction={}&limit={}'.format(
|
urlpath_metrics = '/management/metrics?from_date={}&to_date={}&consumer_id={}&sort_by={}&direction={}&limit={}'.format(
|
||||||
from_date, to_date, app['consumer_id'], 'date', 'asc', '1')
|
from_date, to_date, app['consumer_id'], 'date', 'asc', '1')
|
||||||
@ -887,8 +887,10 @@ class MonthlyMetricsSummaryView(LoginRequiredMixin, TemplateView):
|
|||||||
#if exclude_app_names not in local_settings.EXCLUDE_APPS:
|
#if exclude_app_names not in local_settings.EXCLUDE_APPS:
|
||||||
# error_once_only(self.request, "Invalid Exclude App Name, Please select" + str(local_settings.EXCLUDE_APPS) + "Anyone of these")
|
# error_once_only(self.request, "Invalid Exclude App Name, Please select" + str(local_settings.EXCLUDE_APPS) + "Anyone of these")
|
||||||
form_to_date_string = form.data['to_date']
|
form_to_date_string = form.data['to_date']
|
||||||
|
print(form.data, "Form data")
|
||||||
to_date = convert_form_date_to_obpapi_datetime_format(form_to_date_string)
|
to_date = convert_form_date_to_obpapi_datetime_format(form_to_date_string)
|
||||||
|
print("to_date", to_date)
|
||||||
|
#to_date = datetime.datetime.strptime(f"{form.data['to_date']}T{form.data['to_date_time']}Z", API_DATE_FORMAT_WITH_SECONDS ).strftime(API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
if (web_page_type == SummaryType.DAILY):
|
if (web_page_type == SummaryType.DAILY):
|
||||||
# for one day, the from_date is 1 day ago.
|
# for one day, the from_date is 1 day ago.
|
||||||
from_date = return_to_days_ago(to_date, 1)
|
from_date = return_to_days_ago(to_date, 1)
|
||||||
@ -909,7 +911,7 @@ class MonthlyMetricsSummaryView(LoginRequiredMixin, TemplateView):
|
|||||||
|
|
||||||
if (web_page_type == SummaryType.QUARTERLY):
|
if (web_page_type == SummaryType.QUARTERLY):
|
||||||
# for one quarter, the from_date is 90 days ago.
|
# for one quarter, the from_date is 90 days ago.
|
||||||
from_date = (datetime.datetime.strptime(to_date, API_DATE_FORMAT) - timedelta(90)).strftime(API_DATE_FORMAT)
|
from_date = (datetime.datetime.strptime(to_date, API_DATE_FORMAT_WITH_MILLISECONDS) - timedelta(90)).strftime(API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
calls_per_month_list, calls_per_month, month_list = self.calls_per_month(from_date, to_date, include_app_names)
|
calls_per_month_list, calls_per_month, month_list = self.calls_per_month(from_date, to_date, include_app_names)
|
||||||
per_month_chart = self.plot_line_chart(calls_per_month, month_list, 'month')
|
per_month_chart = self.plot_line_chart(calls_per_month, month_list, 'month')
|
||||||
|
|
||||||
@ -965,8 +967,8 @@ class MonthlyMetricsSummaryView(LoginRequiredMixin, TemplateView):
|
|||||||
'user_email_cansearchwarehouse': user_email_cansearchwarehouse,
|
'user_email_cansearchwarehouse': user_email_cansearchwarehouse,
|
||||||
'number_of_users_with_cansearchwarehouse': number_of_users_with_cansearchwarehouse,
|
'number_of_users_with_cansearchwarehouse': number_of_users_with_cansearchwarehouse,
|
||||||
'api_host_name': api_host_name,
|
'api_host_name': api_host_name,
|
||||||
'from_date': (datetime.datetime.strptime(from_date, API_DATE_FORMAT)).strftime('%d %B %Y'),
|
'from_date': (datetime.datetime.strptime(from_date, API_DATE_FORMAT_WITH_MILLISECONDS)).strftime('%d %B %Y'),
|
||||||
'to_date': (datetime.datetime.strptime(to_date, API_DATE_FORMAT)).strftime('%d %B %Y'),
|
'to_date': (datetime.datetime.strptime(to_date, API_DATE_FORMAT_WITH_MILLISECONDS)).strftime('%d %B %Y'),
|
||||||
'top_apis': top_apis,
|
'top_apis': top_apis,
|
||||||
'top_apis_bar_chart': top_apis_bar_chart,
|
'top_apis_bar_chart': top_apis_bar_chart,
|
||||||
'top_consumers_bar_chart': top_consumers_bar_chart,
|
'top_consumers_bar_chart': top_consumers_bar_chart,
|
||||||
@ -1004,7 +1006,7 @@ class MonthlyMetricsSummaryView(LoginRequiredMixin, TemplateView):
|
|||||||
|
|
||||||
if (web_page_type == SummaryType.QUARTERLY):
|
if (web_page_type == SummaryType.QUARTERLY):
|
||||||
# for one quarter, the from_date is 90 days ago.
|
# for one quarter, the from_date is 90 days ago.
|
||||||
from_date = (datetime.datetime.strptime(to_date, API_DATE_FORMAT) - timedelta(90)).strftime(API_DATE_FORMAT)
|
from_date = (datetime.datetime.strptime(to_date, API_DATE_FORMAT_WITH_MILLISECONDS) - timedelta(90)).strftime(API_DATE_FORMAT_WITH_MILLISECONDS)
|
||||||
calls_per_month_list, calls_per_month, month_list = self.calls_per_month(from_date, to_date, include_app_names)
|
calls_per_month_list, calls_per_month, month_list = self.calls_per_month(from_date, to_date, include_app_names)
|
||||||
per_month_chart = self.plot_line_chart(calls_per_month, month_list, 'month')
|
per_month_chart = self.plot_line_chart(calls_per_month, month_list, 'month')
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user