This commit is contained in:
Kenneth Kehl
2023-08-29 14:54:30 -07:00
parent 19dcd7a48b
commit 1ecb747c6d
588 changed files with 34100 additions and 23589 deletions

View File

@@ -10,49 +10,53 @@ DATE_FORMAT = "%Y-%m-%d"
def pagination_links(pagination, endpoint, **kwargs):
if 'page' in kwargs:
kwargs.pop('page', None)
if "page" in kwargs:
kwargs.pop("page", None)
links = {}
if pagination.has_prev:
links['prev'] = url_for(endpoint, page=pagination.prev_num, **kwargs)
links["prev"] = url_for(endpoint, page=pagination.prev_num, **kwargs)
if pagination.has_next:
links['next'] = url_for(endpoint, page=pagination.next_num, **kwargs)
links['last'] = url_for(endpoint, page=pagination.pages, **kwargs)
links["next"] = url_for(endpoint, page=pagination.next_num, **kwargs)
links["last"] = url_for(endpoint, page=pagination.pages, **kwargs)
return links
def get_prev_next_pagination_links(current_page, next_page_exists, endpoint, **kwargs):
if 'page' in kwargs:
kwargs.pop('page', None)
if "page" in kwargs:
kwargs.pop("page", None)
links = {}
if current_page > 1:
links['prev'] = url_for(endpoint, page=current_page - 1, **kwargs)
links["prev"] = url_for(endpoint, page=current_page - 1, **kwargs)
if next_page_exists:
links['next'] = url_for(endpoint, page=current_page + 1, **kwargs)
links["next"] = url_for(endpoint, page=current_page + 1, **kwargs)
return links
def url_with_token(data, url, config, base_url=None):
from notifications_utils.url_safe_token import generate_token
token = generate_token(data, config['SECRET_KEY'], config['DANGEROUS_SALT'])
base_url = (base_url or config['ADMIN_BASE_URL']) + url
token = generate_token(data, config["SECRET_KEY"], config["DANGEROUS_SALT"])
base_url = (base_url or config["ADMIN_BASE_URL"]) + url
return base_url + token
def get_template_instance(template, values):
from app.models import EMAIL_TYPE, SMS_TYPE
return {
SMS_TYPE: SMSMessageTemplate,
EMAIL_TYPE: HTMLEmailTemplate,
}[template['template_type']](template, values)
}[
template["template_type"]
](template, values)
def get_midnight_in_utc(date):
"""
This function converts date to midnight in UTC,
removing the tzinfo from the datetime because the database stores the timestamps without timezone.
:param date: the day to calculate the local midnight in UTC for
:return: the datetime of local midnight in UTC, for example 2016-06-17 = 2016-06-16 23:00:00
This function converts date to midnight in UTC,
removing the tzinfo from the datetime because the database stores the timestamps without timezone.
:param date: the day to calculate the local midnight in UTC for
:return: the datetime of local midnight in UTC, for example 2016-06-17 = 2016-06-16 23:00:00
"""
return datetime.combine(date, datetime.min.time())
@@ -64,29 +68,27 @@ def get_midnight_for_day_before(date):
def get_month_from_utc_column(column):
"""
Where queries need to count notifications by month it needs to be
the month in local time.
The database stores all timestamps as UTC without the timezone.
- First set the timezone on created_at to UTC
- then convert the timezone to local time (or America/New_York)
- lastly truncate the datetime to month with which we can group
queries
Where queries need to count notifications by month it needs to be
the month in local time.
The database stores all timestamps as UTC without the timezone.
- First set the timezone on created_at to UTC
- then convert the timezone to local time (or America/New_York)
- lastly truncate the datetime to month with which we can group
queries
"""
return func.date_trunc(
"month",
func.timezone("UTC", func.timezone("UTC", column))
)
return func.date_trunc("month", func.timezone("UTC", func.timezone("UTC", column)))
def get_public_notify_type_text(notify_type, plural=False):
from app.models import SMS_TYPE, UPLOAD_DOCUMENT
notify_type_text = notify_type
if notify_type == SMS_TYPE:
notify_type_text = 'text message'
notify_type_text = "text message"
elif notify_type == UPLOAD_DOCUMENT:
notify_type_text = 'document'
notify_type_text = "document"
return '{}{}'.format(notify_type_text, 's' if plural else '')
return "{}{}".format(notify_type_text, "s" if plural else "")
def midnight_n_days_ago(number_of_days):
@@ -97,17 +99,14 @@ def midnight_n_days_ago(number_of_days):
def escape_special_characters(string):
for special_character in ('\\', '_', '%', '/'):
string = string.replace(
special_character,
r'\{}'.format(special_character)
)
for special_character in ("\\", "_", "%", "/"):
string = string.replace(special_character, r"\{}".format(special_character))
return string
def get_archived_db_column_value(column):
date = datetime.utcnow().strftime("%Y-%m-%d")
return f'_archived_{date}_{column}'
return f"_archived_{date}_{column}"
def get_dt_string_or_none(val):