From 6b54d4a107e978d5475036cd7b3429d7f10ab8f0 Mon Sep 17 00:00:00 2001 From: Hongwei Date: Wed, 29 Nov 2023 14:54:13 +0100 Subject: [PATCH] bugfix/merge date time to same form row --- apimanager/apimanager/settings.py | 3 + apimanager/base/utils.py | 5 +- apimanager/metrics/forms.py | 101 ++++-------------- apimanager/metrics/templates/metrics/api.html | 7 -- .../templates/metrics/custom_summary.html | 18 ---- .../templates/metrics/daily_summary.html | 7 -- .../templates/metrics/hourly_summary.html | 7 -- .../templates/metrics/monthly_summary.html | 9 -- .../templates/metrics/quarterly_summary.html | 8 -- .../templates/metrics/weekly_summary.html | 8 -- .../templates/metrics/yearly_summary.html | 7 -- apimanager/metrics/views.py | 1 - 12 files changed, 29 insertions(+), 152 deletions(-) diff --git a/apimanager/apimanager/settings.py b/apimanager/apimanager/settings.py index 39af906..2781d3c 100644 --- a/apimanager/apimanager/settings.py +++ b/apimanager/apimanager/settings.py @@ -251,6 +251,9 @@ 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_WITH_MILLISECONDS = '%Y-%m-%dT%H:%M:%S.%fZ' +# the API_Manager the web form datetime format, eg: 2023-11-28 10:49:27 +API_DATE_FORMAT_WITH_DAY_DATE_TIME = '%Y-%m-%d %H:%M:%S' + # the API_Manager the web form date format, eg: 2020-10-11 API_DATE_FORMAT_WITH_DAY = '%Y-%m-%d' API_FIELD_TIME_FORMAT = '%H-%M-%S' diff --git a/apimanager/base/utils.py b/apimanager/base/utils.py index 108e945..16c0451 100644 --- a/apimanager/base/utils.py +++ b/apimanager/base/utils.py @@ -4,7 +4,8 @@ Base utilities """ from django.contrib.humanize.templatetags.humanize import naturaltime from datetime import datetime, timedelta -from apimanager.settings import API_DATE_FORMAT_WITH_MILLISECONDS, API_DATE_FORMAT_WITH_DAY +from apimanager.settings import API_DATE_FORMAT_WITH_MILLISECONDS, API_DATE_FORMAT_WITH_DAY, \ + API_DATE_FORMAT_WITH_DAY_DATE_TIME from base import context_processors from django.contrib import messages import functools @@ -61,7 +62,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_DATE_FORMAT_WITH_DAY).strftime(API_DATE_FORMAT_WITH_MILLISECONDS) + return datetime.strptime(form_to_date_string, API_DATE_FORMAT_WITH_DAY_DATE_TIME).strftime(API_DATE_FORMAT_WITH_MILLISECONDS) def return_to_days_ago(date, days): """ diff --git a/apimanager/metrics/forms.py b/apimanager/metrics/forms.py index d161e0c..4a37091 100644 --- a/apimanager/metrics/forms.py +++ b/apimanager/metrics/forms.py @@ -10,54 +10,32 @@ from django.forms.widgets import SelectMultiple, CheckboxInput, CheckboxSelectMu 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_DATE_FORMAT_WITH_DAY, API_DATE_FORMAT_WITH_MILLISECONDS -from apimanager.settings import API_DATE_FORMAT_WITH_DAY, API_FIELD_TIME_FORMAT +from bootstrap_datepicker_plus import DateTimePickerInput +from apimanager.settings import API_DATE_FORMAT_WITH_DAY_DATE_TIME 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' +FROM_DATE = 'From Date Time' +TO_DATE = 'To Date Time' PLACEHOLDER = "2013-01-22" -PLACEHOLDER1 = "23:59:59" +PLACEHOLDER1 = "2022-01-01 12:30:45" PLACEHOLDER2 = "00:00:00" class MetricsForm(forms.Form): from_date = forms.DateTimeField( label=_(FROM_DATE), - widget=DatePickerInput(format=API_DATE_FORMAT_WITH_DAY), + widget=DateTimePickerInput(format=API_DATE_FORMAT_WITH_DAY_DATE_TIME), required=True, - initial=(datetime.now() - timedelta(1)).strftime(API_DATE_FORMAT_WITH_DAY), - ) - from_time = forms.TimeField( - label=_('From Time'), - widget=forms.TimeInput( - format='%H:%M:%S', - attrs={ - 'placeholder': PLACEHOLDER2, - 'class': 'form-control', - } - ), - required=False, + initial=(datetime.now() - timedelta(1)).strftime(API_DATE_FORMAT_WITH_DAY_DATE_TIME), ) to_date = forms.DateTimeField( label=_(TO_DATE), - widget=DatePickerInput(format=API_DATE_FORMAT_WITH_DAY), + widget=DateTimePickerInput(format=API_DATE_FORMAT_WITH_DAY_DATE_TIME), required=True, - initial=(datetime.now() - timedelta()).strftime(API_DATE_FORMAT_WITH_DAY), - ) - to_date_time = forms.TimeField( - label=_('To Time'), - widget=forms.TimeInput( - format='%H:%M:%S', - attrs={ - 'placeholder': PLACEHOLDER1, - 'class': 'form-control', - } - ), - required=False, + initial=(datetime.now() - timedelta()).strftime(API_DATE_FORMAT_WITH_DAY_DATE_TIME), ) + limit = forms.IntegerField( label=_('Limit'), widget=forms.NumberInput( @@ -179,9 +157,9 @@ class ConnectorMetricsForm(MetricsForm): # override from_date until API returns values without given date from_date = forms.DateTimeField( label=_(FROM_DATE), - widget=DatePickerInput(format=API_DATE_FORMAT_WITH_DAY), + widget=DateTimePickerInput(format=API_DATE_FORMAT_WITH_DAY_DATE_TIME), required=True, - initial=(datetime.now() - timedelta(6)).strftime(API_DATE_FORMAT_WITH_DAY), + initial=(datetime.now() - timedelta(6)).strftime(API_DATE_FORMAT_WITH_DAY_DATE_TIME), ) connector_name = forms.CharField( label=_('Connector Name'), @@ -213,39 +191,17 @@ class ConnectorMetricsForm(MetricsForm): class CustomSummaryForm(forms.Form): - to_date = forms.DateField( - label=_("Date"), - widget=DatePickerInput(format=API_DATE_FORMAT_WITH_DAY), + to_date = forms.DateTimeField( + label=_(TO_DATE), + widget=DateTimePickerInput(format=API_DATE_FORMAT_WITH_DAY_DATE_TIME), required=True, - initial=str(datetime.now().strftime(API_DATE_FORMAT_WITH_DAY)), + initial=(datetime.now()).strftime(API_DATE_FORMAT_WITH_DAY_DATE_TIME), ) - 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.DateTimeField( label=_(FROM_DATE), - widget=DatePickerInput(format=API_DATE_FORMAT_WITH_DAY), + widget=DateTimePickerInput(format=API_DATE_FORMAT_WITH_DAY_DATE_TIME), required=True, - initial=(datetime.now() - timedelta(6)).strftime(API_DATE_FORMAT_WITH_DAY), - ) - from_time_custom = forms.TimeField( - label=_('Time'), - widget=forms.TimeInput( - format='%H:%M:%S', - attrs={ - 'placeholder': PLACEHOLDER1, - 'class': 'form-control', - } - ), - required=False, + initial=(datetime.now() - timedelta(6)).strftime(API_DATE_FORMAT_WITH_DAY_DATE_TIME), ) include_app_names = forms.CharField( label=_('Include App Names'), @@ -263,22 +219,11 @@ class CustomSummaryForm(forms.Form): super(CustomSummaryForm, self).__init__(*args, **kwargs) class MonthlyMetricsSummaryForm(forms.Form): - to_date = forms.DateField( - label=_("To Date"), - widget=DatePickerInput(format=API_DATE_FORMAT_WITH_DAY), + to_date = forms.DateTimeField( + label=_(TO_DATE), + widget=DateTimePickerInput(format=API_DATE_FORMAT_WITH_DAY_DATE_TIME), required=True, - initial=str(datetime.now().strftime(API_DATE_FORMAT_WITH_DAY)), - ) - to_date_time = forms.TimeField( - label=_('Time'), - widget=forms.TimeInput( - format='%H:%M:%S', - attrs={ - 'placeholder': PLACEHOLDER1, - 'class': 'form-control', - } - ), - required=False, + initial=(datetime.now()).strftime(API_DATE_FORMAT_WITH_DAY_DATE_TIME), ) 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 2c21e06..24d13c5 100644 --- a/apimanager/metrics/templates/metrics/api.html +++ b/apimanager/metrics/templates/metrics/api.html @@ -44,13 +44,6 @@ {{ 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 }} -
-
diff --git a/apimanager/metrics/templates/metrics/custom_summary.html b/apimanager/metrics/templates/metrics/custom_summary.html index 5949688..0313f5c 100644 --- a/apimanager/metrics/templates/metrics/custom_summary.html +++ b/apimanager/metrics/templates/metrics/custom_summary.html @@ -44,10 +44,6 @@
{% if form.to_date.errors %}
{{ form.to_date.errors }}
{% endif %} @@ -56,20 +52,6 @@ {{ form.to_date }}
- -
- {% if form.include_app_names.errors %}
{{ form.include_app_names.errors }}
{% endif %} -
- {{ form.include_app_names.label_tag }} - {{ form.include_app_names }} -
-
diff --git a/apimanager/metrics/templates/metrics/daily_summary.html b/apimanager/metrics/templates/metrics/daily_summary.html index bff34f1..17053b6 100644 --- a/apimanager/metrics/templates/metrics/daily_summary.html +++ b/apimanager/metrics/templates/metrics/daily_summary.html @@ -49,13 +49,6 @@ {{ form.to_date }} -
{% 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 5abd80e..be0d641 100644 --- a/apimanager/metrics/templates/metrics/hourly_summary.html +++ b/apimanager/metrics/templates/metrics/hourly_summary.html @@ -48,13 +48,6 @@ {{ form.to_date }}
-
{% 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 8bae1f1..d5d2724 100644 --- a/apimanager/metrics/templates/metrics/monthly_summary.html +++ b/apimanager/metrics/templates/metrics/monthly_summary.html @@ -36,7 +36,6 @@ {% endif %}
-
{% if form.to_date.errors %}
{{ form.to_date.errors }}
{% endif %}
@@ -44,14 +43,6 @@ {{ form.to_date }}
- -
{% 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 4a9d759..d65b186 100644 --- a/apimanager/metrics/templates/metrics/quarterly_summary.html +++ b/apimanager/metrics/templates/metrics/quarterly_summary.html @@ -48,14 +48,6 @@ {{ form.to_date }}
- -
{% 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 9812cd1..7809570 100644 --- a/apimanager/metrics/templates/metrics/weekly_summary.html +++ b/apimanager/metrics/templates/metrics/weekly_summary.html @@ -50,14 +50,6 @@ {{ form.to_date }}
- -
{% 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 2dd9322..acc45e0 100644 --- a/apimanager/metrics/templates/metrics/yearly_summary.html +++ b/apimanager/metrics/templates/metrics/yearly_summary.html @@ -50,13 +50,6 @@ {{ form.to_date }}
-
{% 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 c493c61..1014f9c 100644 --- a/apimanager/metrics/views.py +++ b/apimanager/metrics/views.py @@ -893,7 +893,6 @@ class MonthlyMetricsSummaryView(LoginRequiredMixin, TemplateView): 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, 0)