diff --git a/README.md b/README.md
index 31aad70..e89a89f 100644
--- a/README.md
+++ b/README.md
@@ -227,9 +227,9 @@ EXCLUDE_URL_PATTERN = []
API_EXPLORER_APP_NAME = 'xxx'
#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'
-API_DATE_FORMAT = '%Y-%m-%dT%H:%M:%S.000Z'
+API_DATE_FORMAT_WITH_MILLISECONDS = '%Y-%m-%dT%H:%M:%S.000Z'
```
diff --git a/apimanager/apimanager/settings.py b/apimanager/apimanager/settings.py
index ad52a2a..b36da49 100644
--- a/apimanager/apimanager/settings.py
+++ b/apimanager/apimanager/settings.py
@@ -244,9 +244,9 @@ LOGGING = {
LOGIN_URL = reverse_lazy('home')
#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'
-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
API_MANAGER_DATE_FORMAT= '%Y-%m-%d'
diff --git a/apimanager/base/filters.py b/apimanager/base/filters.py
index a0f74c2..9d014fd 100644
--- a/apimanager/base/filters.py
+++ b/apimanager/base/filters.py
@@ -77,7 +77,7 @@ class FilterTime(BaseFilter):
print(filtered)
for item in data:
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:
filtered.append(item)
return filtered
diff --git a/apimanager/base/utils.py b/apimanager/base/utils.py
index a1418b5..bc60c5d 100644
--- a/apimanager/base/utils.py
+++ b/apimanager/base/utils.py
@@ -4,7 +4,7 @@ Base utilities
"""
from django.contrib.humanize.templatetags.humanize import naturaltime
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 django.contrib import messages
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
"""
- 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):
"""
@@ -70,4 +70,4 @@ def return_to_days_ago(date, days):
days =1
return 2020-10-21T00:00:00.000000Z
"""
- return (datetime.strptime(date, API_DATE_FORMAT) - timedelta(days)).strftime(API_DATE_FORMAT)
\ No newline at end of file
+ return (datetime.strptime(date, API_DATE_FORMAT_WITH_MILLISECONDS) - timedelta(days)).strftime(API_DATE_FORMAT_WITH_MILLISECONDS)
\ No newline at end of file
diff --git a/apimanager/consumers/views.py b/apimanager/consumers/views.py
index ecfdb93..7f8336f 100644
--- a/apimanager/consumers/views.py
+++ b/apimanager/consumers/views.py
@@ -44,7 +44,7 @@ class IndexView(LoginRequiredMixin, TemplateView):
"""Scrubs data in the given consumers to adher to certain formats"""
for consumer in consumers:
consumer['created'] = datetime.strptime(
- consumer['created'], settings.API_DATE_TIME_FORMAT)
+ consumer['created'], settings.API_DATE_FORMAT_WITH_SECONDS )
return consumers
def compile_statistics(self, consumers):
@@ -146,7 +146,7 @@ class DetailView(LoginRequiredMixin, FormView):
urlpath = '/management/consumers/{}'.format(self.kwargs['consumer_id'])
consumer = api.get(urlpath)
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'])
consumer_call_limtis = api.get(call_limits_urlpath)
diff --git a/apimanager/customers/forms.py b/apimanager/customers/forms.py
index 75039ef..23caeb4 100644
--- a/apimanager/customers/forms.py
+++ b/apimanager/customers/forms.py
@@ -85,7 +85,7 @@ class CreateCustomerForm(forms.Form):
)
face_image_date = forms.DateTimeField(
label=_('Face Image Date'),
- input_formats=[settings.API_DATE_TIME_FORMAT],
+ input_formats=[settings.API_DATE_FORMAT_WITH_SECONDS ],
widget=forms.DateTimeInput(
attrs={
'placeholder': PLACEHOLDER,
@@ -214,7 +214,7 @@ class CreateCustomerForm(forms.Form):
)
last_ok_date = forms.DateTimeField(
label=_('Last OK Date'),
- input_formats=[settings.API_DATE_TIME_FORMAT],
+ input_formats=[settings.API_DATE_FORMAT_WITH_SECONDS ],
widget=forms.DateTimeInput(
attrs={
'placeholder': PLACEHOLDER,
@@ -231,7 +231,7 @@ class CreateCustomerForm(forms.Form):
def clean_face_image_date(self):
data = self.cleaned_data['face_image_date']
if data:
- return data.strftime(settings.API_DATE_TIME_FORMAT)
+ return data.strftime(settings.API_DATE_FORMAT_WITH_SECONDS )
else:
return None
diff --git a/apimanager/customers/views.py b/apimanager/customers/views.py
index a4113eb..cb32767 100644
--- a/apimanager/customers/views.py
+++ b/apimanager/customers/views.py
@@ -38,7 +38,7 @@ class CreateView(LoginRequiredMixin, FormView):
except Exception as err:
messages.error(self.request, err)
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
def form_valid(self, form):
@@ -75,7 +75,7 @@ class CreateView(LoginRequiredMixin, FormView):
'employment_status': data['employment_status'],
'kyc_status': data['kyc_status'],
'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:
result = self.api.post(urlpath, payload=payload)
diff --git a/apimanager/entitlementrequests/views.py b/apimanager/entitlementrequests/views.py
index 8662014..f486e31 100644
--- a/apimanager/entitlementrequests/views.py
+++ b/apimanager/entitlementrequests/views.py
@@ -24,7 +24,7 @@ class IndexView(LoginRequiredMixin, TemplateView):
"""Scrubs data in the given entitlement requests to adher to certain formats"""
for entitlement_request in entitlement_requests:
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
def get_context_data(self, **kwargs):
diff --git a/apimanager/metrics/forms.py b/apimanager/metrics/forms.py
index e2ad226..e53f59c 100644
--- a/apimanager/metrics/forms.py
+++ b/apimanager/metrics/forms.py
@@ -11,36 +11,40 @@ from datetime import datetime, timedelta
from django.utils.translation import ugettext_lazy as _
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'
FROM_DATE = 'From Date'
TO_DATE = 'To Date'
+PLACEHOLDER = "2013-01-22"
+PLACEHOLDER1 = "23:59:59"
+PLACEHOLDER2 = "00:00:00"
class MetricsForm(forms.Form):
from_date = forms.DateTimeField(
label=_(FROM_DATE),
- input_formats=[settings.API_DATE_FORMAT],
+ input_formats=[settings.API_DATE_FORMAT_WITH_MILLISECONDS],
widget=forms.DateTimeInput(
attrs={
- 'placeholder': API_DATE_FORMAT,
+ 'placeholder': API_DATE_FORMAT_WITH_MILLISECONDS,
'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,
)
to_date = forms.DateTimeField(
label=_(TO_DATE),
- input_formats=[settings.API_DATE_FORMAT],
+ input_formats=[settings.API_DATE_FORMAT_WITH_MILLISECONDS],
widget=forms.DateTimeInput(
attrs={
- 'placeholder': API_DATE_FORMAT,
+ 'placeholder': API_DATE_FORMAT_WITH_MILLISECONDS,
'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,
)
limit = forms.IntegerField(
@@ -89,7 +93,6 @@ class APIMetricsForm(MetricsForm):
'class': FORM_CONTROL,
}
),
- choices=[],
required=False,
)
user_id = forms.CharField(
@@ -109,7 +112,7 @@ class APIMetricsForm(MetricsForm):
'class': FORM_CONTROL,
}
),
- initial='false',
+ initial='',
required=False,
)
app_name = forms.CharField(
@@ -152,14 +155,12 @@ class APIMetricsForm(MetricsForm):
)
implemented_in_version = forms.ChoiceField(
label=_('Implemented In Version'),
- #choices=VERSION,
widget=forms.Select(
attrs={
'class': FORM_CONTROL,
}
),
choices=[],
- #initial='',
required=False,
)
@@ -201,18 +202,48 @@ class ConnectorMetricsForm(MetricsForm):
class CustomSummaryForm(forms.Form):
- to_date = forms.DateField(
+ """ to_date = forms.DateField(
label=_(TO_DATE),
widget=DatePickerInput(format=API_MANAGER_DATE_FORMAT),
required=True,
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(
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,
- 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(
label=_('Include App Names'),
@@ -230,12 +261,29 @@ class CustomSummaryForm(forms.Form):
super(CustomSummaryForm, self).__init__(*args, **kwargs)
class MonthlyMetricsSummaryForm(forms.Form):
- to_date = forms.DateField(
+ """ to_date = forms.DateField(
label=_(TO_DATE),
widget=DatePickerInput(format=API_MANAGER_DATE_FORMAT),
required=True,
#initial=str(datetime.now().strftime('%Y-%m-%dT%H:%M:%S.%fZ')),
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(
label=_('Include App Names'),
diff --git a/apimanager/metrics/templates/metrics/api.html b/apimanager/metrics/templates/metrics/api.html
index f6a6be4..738b717 100644
--- a/apimanager/metrics/templates/metrics/api.html
+++ b/apimanager/metrics/templates/metrics/api.html
@@ -4,8 +4,13 @@
{% block page_title %}{{ block.super }} / API Metrics{% endblock page_title %}
+{% load bootstrap3 %}
{% block content %}
+ {% bootstrap_javascript jquery='full' %} {# Embed Bootstrap JS+jQuery #}
+ {% block extrahead %} {# Extra Resources Start #}
+ {{ form.media }} {# Form required JS and CSS #}
+ {% endblock %}
{% trans "API Metrics" %}
diff --git a/apimanager/metrics/templates/metrics/custom_summary.html b/apimanager/metrics/templates/metrics/custom_summary.html
index a95e0b2..15f2ce9 100644
--- a/apimanager/metrics/templates/metrics/custom_summary.html
+++ b/apimanager/metrics/templates/metrics/custom_summary.html
@@ -8,16 +8,16 @@
{% trans "API Usage Report" %}
{% trans "API instance" %} {{ api_host_name }}
-
@@ -41,13 +41,29 @@
{% trans "From Date Custom" %}
{{ form.from_date_custom }}
+
+
+ {% if form.from_time_custom.errors %}
{{ form.from_time_custom.errors }}
{% endif %}
+
+ {% trans "From Time Custom" %}
+ {{ form.from_time_custom }}
+
+
+
{% if form.to_date.errors %}
{{ form.to_date.errors }}
{% endif %}
{% trans "To Date Custom" %}
{{ form.to_date }}
+
+
+ {% if form.to_date_time.errors %}
{{ form.to_date_time.errors }}
{% endif %}
+
+ {% trans "To Time Custom" %}
+ {{ form.to_date_time }}
+
{% if form.include_app_names.errors %}
{{ form.include_app_names.errors }}
{% endif %}
@@ -60,16 +76,14 @@
-
- {% block tab_content %}
-
-
{% if include_app_names != "" %} {{ include_app_names }} : {% endif %}{{ from_date }} - {{ to_date }}
-
+
+ {% block tab_content %}
+
{% if include_app_names != "" %} {{ include_app_names }} : {% endif %}{{ from_date }} - {{ to_date }}
-
- |
- |
-
+
+ |
+ |
+
| {% trans "Total API calls" %}: |
{{ api_calls }} |
@@ -136,10 +150,10 @@
-->
-
- {% endblock tab_content %}
-
-
+
+ {% endblock tab_content %}
+
+
diff --git a/apimanager/metrics/templates/metrics/daily_summary.html b/apimanager/metrics/templates/metrics/daily_summary.html
index 02c2eb4..27bb969 100644
--- a/apimanager/metrics/templates/metrics/daily_summary.html
+++ b/apimanager/metrics/templates/metrics/daily_summary.html
@@ -49,6 +49,13 @@
{{ form.to_date }}
+
+ {% if form.to_date_time.errors %}
{{ form.to_date_time.errors }}
{% endif %}
+
+ {{ form.to_date_time.label_tag }}
+ {{ form.to_date_time }}
+
+
{% if form.include_app_names.errors %}
{{ form.include_app_names.errors }}
{% endif %}
diff --git a/apimanager/metrics/templates/metrics/hourly_summary.html b/apimanager/metrics/templates/metrics/hourly_summary.html
index bef6d8d..e549cdd 100644
--- a/apimanager/metrics/templates/metrics/hourly_summary.html
+++ b/apimanager/metrics/templates/metrics/hourly_summary.html
@@ -48,6 +48,13 @@
{{ form.to_date }}
+
+ {% if form.to_date_time.errors %}
{{ form.to_date_time.errors }}
{% endif %}
+
+ {{ form.to_date_time.label_tag }}
+ {{ form.to_date_time }}
+
+
{% if form.include_app_names.errors %}
{{ form.include_app_names.errors }}
{% endif %}
diff --git a/apimanager/metrics/templates/metrics/monthly_summary.html b/apimanager/metrics/templates/metrics/monthly_summary.html
index 2932ed6..3a695d6 100644
--- a/apimanager/metrics/templates/metrics/monthly_summary.html
+++ b/apimanager/metrics/templates/metrics/monthly_summary.html
@@ -44,6 +44,14 @@
{{ form.to_date }}
+
+ {% if form.to_date_time.errors %}
{{ form.to_date_time.errors }}
{% endif %}
+
+ {{ form.to_date_time.label_tag }}
+ {{ form.to_date_time }}
+
+
+
{% if form.include_app_names.errors %}
{{ form.include_app_names.errors }}
{% endif %}
diff --git a/apimanager/metrics/templates/metrics/quarterly_summary.html b/apimanager/metrics/templates/metrics/quarterly_summary.html
index d47fcfc..b89af7d 100644
--- a/apimanager/metrics/templates/metrics/quarterly_summary.html
+++ b/apimanager/metrics/templates/metrics/quarterly_summary.html
@@ -48,6 +48,14 @@
{{ form.to_date }}
+
+ {% if form.to_date_time.errors %}
{{ form.to_date_time.errors }}
{% endif %}
+
+ {{ form.to_date_time.label_tag }}
+ {{ form.to_date_time }}
+
+
+
{% if form.include_app_names.errors %}
{{ form.include_app_names.errors }}
{% endif %}
diff --git a/apimanager/metrics/templates/metrics/weekly_summary.html b/apimanager/metrics/templates/metrics/weekly_summary.html
index 91d2857..a0c1f66 100644
--- a/apimanager/metrics/templates/metrics/weekly_summary.html
+++ b/apimanager/metrics/templates/metrics/weekly_summary.html
@@ -50,6 +50,14 @@
{{ form.to_date }}
+
+ {% if form.to_date_time.errors %}
{{ form.to_date_time.errors }}
{% endif %}
+
+ {{ form.to_date_time.label_tag }}
+ {{ form.to_date_time }}
+
+
+
{% if form.include_app_names.errors %}
{{ form.include_app_names.errors }}
{% endif %}
diff --git a/apimanager/metrics/templates/metrics/yearly_summary.html b/apimanager/metrics/templates/metrics/yearly_summary.html
index 67d7f76..11a45ec 100644
--- a/apimanager/metrics/templates/metrics/yearly_summary.html
+++ b/apimanager/metrics/templates/metrics/yearly_summary.html
@@ -50,6 +50,13 @@
{{ form.to_date }}
+
+ {% if form.to_date_time.errors %}
{{ form.to_date_time.errors }}
{% endif %}
+
+ {{ form.to_date_time.label_tag }}
+ {{ form.to_date_time }}
+
+
{% if form.include_app_names.errors %}
{{ form.include_app_names.errors }}
{% endif %}
diff --git a/apimanager/metrics/views.py b/apimanager/metrics/views.py
index 218c2e6..ef21536 100644
--- a/apimanager/metrics/views.py
+++ b/apimanager/metrics/views.py
@@ -11,7 +11,7 @@ from enum import Enum
from django.conf import 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.auth.mixins import LoginRequiredMixin
from django.views.generic import TemplateView
@@ -115,7 +115,7 @@ class MetricsView(LoginRequiredMixin, TemplateView):
"""
for metric in metrics:
metric['date'] = datetime.datetime.strptime(
- metric['date'], settings.API_DATE_TIME_FORMAT)
+ metric['date'], settings.API_DATE_FORMAT_WITH_SECONDS )
return metrics
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
# have to convert in places like this?
if value.__class__.__name__ == 'datetime':
- value = value.strftime(settings.API_DATE_FORMAT)
+ value = value.strftime(settings.API_DATE_FORMAT_WITH_MILLISECONDS)
if value:
# API does not like quoted data
params.append('{}={}'.format(name, value))
@@ -259,7 +259,7 @@ class MonthlyMetricsSummaryView(LoginRequiredMixin, TemplateView):
"""
for metric in metrics:
metric['date'] = datetime.datetime.strptime(
- metric['date'], API_DATE_FORMAT)
+ metric['date'], API_DATE_FORMAT_WITH_MILLISECONDS)
return metrics
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
# have to convert in places like this?
if value.__class__.__name__ == 'datetime':
- value = value.strftime(settings.API_DATE_FORMAT)
+ value = value.strftime(settings.API_DATE_FORMAT_WITH_MILLISECONDS)
if value:
# API does not like quoted data
params.append('{}={}'.format(name, value))
@@ -364,8 +364,8 @@ class MonthlyMetricsSummaryView(LoginRequiredMixin, TemplateView):
to_date, urlpath):
api_calls_total = metrics[0]["count"]
average_response_time = metrics[0]["average_response_time"]
- to_date = datetime.datetime.strptime(to_date, API_DATE_FORMAT)
- from_date = datetime.datetime.strptime(from_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_WITH_MILLISECONDS)
number_of_days = abs((to_date - from_date).days)
# 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
@@ -413,12 +413,12 @@ class MonthlyMetricsSummaryView(LoginRequiredMixin, TemplateView):
def get_total_number_of_apps(self, cleaned_data, from_date, to_date):
apps = []
- from_date = datetime.datetime.strptime(from_date, API_DATE_FORMAT)
- to_date = datetime.datetime.strptime(to_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_WITH_MILLISECONDS)
apps_list = self.get_all_consumers()
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:
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
- from_datetime_object = datetime.datetime.strptime(from_date_string, API_DATE_FORMAT)
- to_datetime_object = datetime.datetime.strptime(to_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_WITH_MILLISECONDS)
time_delta_in_loop = from_datetime_object + timedelta(**delta)
result_list = []
result_list_pure = []
date_list = []
- while time_delta_in_loop <= to_datetime_object:
+ while time_delta_in_loop <= to_datetime_object + timedelta(days=1, hours=1):
try:
# here we need to first convert datetime object to String
- form_date= from_datetime_object.strftime(API_DATE_FORMAT)
- to_date= time_delta_in_loop.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_WITH_MILLISECONDS)
aggregate_metrics = self.get_aggregate_metrics(form_date, to_date, include_app_names)
result = aggregate_metrics[0]
result_list_pure.append(result)
@@ -813,15 +813,15 @@ class MonthlyMetricsSummaryView(LoginRequiredMixin, TemplateView):
for app in apps_list:
created_date = datetime.datetime.strptime(app['created'], '%Y-%m-%dT%H:%M:%SZ')
- created_date = created_date.strftime(API_DATE_FORMAT)
- created_date = datetime.datetime.strptime(created_date, API_DATE_FORMAT)
- if created_date >= datetime.datetime.strptime(from_date, API_DATE_FORMAT):
+ created_date = created_date.strftime(API_DATE_FORMAT_WITH_MILLISECONDS)
+ created_date = datetime.datetime.strptime(created_date, API_DATE_FORMAT_WITH_MILLISECONDS)
+ if created_date >= datetime.datetime.strptime(from_date, API_DATE_FORMAT_WITH_MILLISECONDS):
new_apps_list.append(app)
times_to_first_call = []
- strfrom_date=datetime.datetime.strptime(from_date, API_DATE_FORMAT)
- strto_date=datetime.datetime.strptime(to_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_WITH_MILLISECONDS)
for app in new_apps_list:
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')
@@ -887,8 +887,10 @@ class MonthlyMetricsSummaryView(LoginRequiredMixin, TemplateView):
#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")
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)
-
+ 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):
# for one day, the from_date is 1 day ago.
from_date = return_to_days_ago(to_date, 1)
@@ -909,7 +911,7 @@ class MonthlyMetricsSummaryView(LoginRequiredMixin, TemplateView):
if (web_page_type == SummaryType.QUARTERLY):
# 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)
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,
'number_of_users_with_cansearchwarehouse': number_of_users_with_cansearchwarehouse,
'api_host_name': api_host_name,
- 'from_date': (datetime.datetime.strptime(from_date, API_DATE_FORMAT)).strftime('%d %B %Y'),
- 'to_date': (datetime.datetime.strptime(to_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_WITH_MILLISECONDS)).strftime('%d %B %Y'),
'top_apis': top_apis,
'top_apis_bar_chart': top_apis_bar_chart,
'top_consumers_bar_chart': top_consumers_bar_chart,
@@ -1004,7 +1006,7 @@ class MonthlyMetricsSummaryView(LoginRequiredMixin, TemplateView):
if (web_page_type == SummaryType.QUARTERLY):
# 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)
per_month_chart = self.plot_line_chart(calls_per_month, month_list, 'month')