snapshot: preserve reliability hardening and Workdock identity pass
This commit is contained in:
@@ -25,7 +25,13 @@ from django.utils.translation import get_language, override
|
||||
from django.urls import reverse
|
||||
|
||||
from .app_registry import build_portal_app_sections, get_portal_app_registry_rows
|
||||
from .backup_ops import create_backup_bundle, delete_backup_bundle, list_backup_bundles, verify_backup_bundle
|
||||
from .backup_ops import (
|
||||
create_backup_bundle,
|
||||
delete_backup_bundle,
|
||||
latest_backup_health_snapshot,
|
||||
list_backup_bundles,
|
||||
verify_backup_bundle,
|
||||
)
|
||||
from .branding import get_branding_email_copy, get_company_email_domain, get_default_notification_templates, get_portal_trial_config, is_trial_expired
|
||||
from .forms import OffboardingRequestForm, OnboardingRequestForm, PortalBrandingForm, PortalCompanyConfigForm, PortalTrialConfigForm, UserManagementCreateForm
|
||||
from .form_builder import (
|
||||
@@ -36,7 +42,7 @@ from .form_builder import (
|
||||
ONBOARDING_PAGE_ORDER,
|
||||
ensure_form_field_configs,
|
||||
)
|
||||
from .models import AdminAuditLog, EmployeeProfile, FormFieldConfig, FormOption, IntroChecklistItem, NotificationRule, NotificationTemplate, OffboardingRequest, OnboardingIntroductionSession, OnboardingRequest, PortalAppConfig, PortalBranding, PortalCompanyConfig, PortalTrialConfig, ScheduledWelcomeEmail, SystemEmailConfig, WorkflowConfig
|
||||
from .models import AdminAuditLog, AsyncTaskLog, EmployeeProfile, FormFieldConfig, FormOption, IntroChecklistItem, NotificationRule, NotificationTemplate, OffboardingRequest, OnboardingIntroductionSession, OnboardingRequest, PortalAppConfig, PortalBranding, PortalCompanyConfig, PortalTrialConfig, ScheduledWelcomeEmail, SystemEmailConfig, WorkflowConfig
|
||||
from .emailing import send_system_email
|
||||
from .roles import ROLE_GROUP_NAMES, ROLE_LABELS, ROLE_PLATFORM_OWNER, ROLE_SUPER_ADMIN, assign_user_role, get_user_role_key, get_user_role_label, user_has_capability
|
||||
from .services import get_email_test_redirect, is_email_test_mode, is_nextcloud_enabled, upload_to_nextcloud
|
||||
@@ -355,6 +361,30 @@ def portal_app_registry_page(request):
|
||||
)
|
||||
|
||||
|
||||
@_require_capability('view_job_monitor')
|
||||
def job_monitor_page(request):
|
||||
status_filter = (request.GET.get('status') or '').strip()
|
||||
task_filter = (request.GET.get('task') or '').strip()
|
||||
logs = AsyncTaskLog.objects.all()
|
||||
if status_filter:
|
||||
logs = logs.filter(status=status_filter)
|
||||
if task_filter:
|
||||
logs = logs.filter(task_name=task_filter)
|
||||
logs = logs.order_by('-started_at', '-id')[:200]
|
||||
task_names = list(AsyncTaskLog.objects.order_by('task_name').values_list('task_name', flat=True).distinct())
|
||||
return render(
|
||||
request,
|
||||
'workflows/job_monitor.html',
|
||||
{
|
||||
'logs': logs,
|
||||
'status_filter': status_filter,
|
||||
'task_filter': task_filter,
|
||||
'task_names': task_names,
|
||||
'status_choices': [('started', _('Gestartet')), ('succeeded', _('Erfolgreich')), ('failed', _('Fehlgeschlagen'))],
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@_require_capability('manage_app_registry')
|
||||
@require_POST
|
||||
def save_portal_app_registry(request):
|
||||
@@ -893,11 +923,13 @@ def audit_log_page(request):
|
||||
|
||||
@_require_capability('manage_backups')
|
||||
def backup_recovery_page(request):
|
||||
rows = list_backup_bundles()
|
||||
return render(
|
||||
request,
|
||||
'workflows/backup_recovery.html',
|
||||
{
|
||||
'rows': list_backup_bundles(),
|
||||
'rows': rows,
|
||||
'backup_health': latest_backup_health_snapshot(),
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user