mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-17 21:19:38 -04:00
add clear cache platform admin page
a form that allows you to clear entries from the cache for all of either users, services or templates. It'll tell you the largest amount of keys deleted, since there are multiple keys associated with each model.
This commit is contained in:
@@ -1281,3 +1281,15 @@ class TemplateAndFoldersSelectionForm(Form):
|
||||
required_for_ops('add-new-template'),
|
||||
Optional(),
|
||||
], required_message='Select the type of template you want to add')
|
||||
|
||||
|
||||
class ClearCacheForm(StripWhitespaceForm):
|
||||
model_type = RadioField(
|
||||
'What do you want to clear today',
|
||||
choices=[
|
||||
('user', 'Users'),
|
||||
('service', 'Services'),
|
||||
('template', 'Templates')
|
||||
],
|
||||
validators=[DataRequired()]
|
||||
)
|
||||
|
||||
@@ -13,9 +13,9 @@ from app import (
|
||||
platform_stats_api_client,
|
||||
service_api_client,
|
||||
)
|
||||
from app.extensions import antivirus_client
|
||||
from app.extensions import antivirus_client, redis_client
|
||||
from app.main import main
|
||||
from app.main.forms import DateFilterForm, PDFUploadForm, ReturnedLettersForm
|
||||
from app.main.forms import DateFilterForm, PDFUploadForm, ReturnedLettersForm, ClearCacheForm
|
||||
from app.statistics_utils import (
|
||||
get_formatted_percentage,
|
||||
get_formatted_percentage_two_dp,
|
||||
@@ -281,6 +281,50 @@ def platform_admin_letter_validation_preview():
|
||||
)
|
||||
|
||||
|
||||
@main.route("/platform-admin/clear-cache", methods=['GET', 'POST'])
|
||||
@login_required
|
||||
@user_is_platform_admin
|
||||
def clear_cache():
|
||||
# note: `service-{uuid}-templates` cache is cleared for both services and templates.
|
||||
CACHE_KEYS = {
|
||||
'user': [
|
||||
'user-????????-????-????-????-????????????',
|
||||
],
|
||||
'service': [
|
||||
'has_jobs-????????-????-????-????-????????????',
|
||||
'service-????????-????-????-????-????????????',
|
||||
'service-????????-????-????-????-????????????-templates',
|
||||
'service-????????-????-????-????-????????????-data-retention',
|
||||
'service-????????-????-????-????-????????????-template-folders',
|
||||
],
|
||||
'template': [
|
||||
'service-????????-????-????-????-????????????-templates',
|
||||
'template-????????-????-????-????-????????????-version-*',
|
||||
'template-????????-????-????-????-????????????-versions',
|
||||
],
|
||||
'email_branding': [
|
||||
'email_branding',
|
||||
'email_branding-????????-????-????-????-????????????',
|
||||
]
|
||||
}
|
||||
form = ClearCacheForm()
|
||||
|
||||
if form.validate_on_submit():
|
||||
to_delete = form.model_type.data
|
||||
|
||||
num_deleted = max(
|
||||
redis_client.delete_cache_keys_by_pattern(pattern)
|
||||
for pattern in CACHE_KEYS[to_delete]
|
||||
)
|
||||
|
||||
flash('Removed {} {} objects from redis'.format(num_deleted, to_delete))
|
||||
|
||||
return render_template(
|
||||
'views/platform-admin/clear-cache.html',
|
||||
form=form
|
||||
)
|
||||
|
||||
|
||||
def sum_service_usage(service):
|
||||
total = 0
|
||||
for notification_type in service['statistics'].keys():
|
||||
|
||||
Reference in New Issue
Block a user