def admin_dashboard(request): if request.user.is_superuser: permissions = { 'conferences': True, 'news': True, 'membership': settings.ENABLE_MEMBERSHIP, 'elections': settings.ENABLE_ELECTIONS, 'invoices': True, 'accounting': True, } else: groups = [g.name for g in request.user.groups.all()] confperm = ConferenceSeries.objects.filter(administrators=request.user).exists() or Conference.objects.filter(administrators=request.user).exists() permissions = { 'conferences': confperm, 'news': 'News administrators' in groups, 'membership': settings.ENABLE_MEMBERSHIP and 'Membership administrators' in groups, 'elections': settings.ENABLE_ELECTIONS and 'Election administrators' in groups, 'invoices': "Invoice managers" in groups, 'accounting': "Accounting managers" in groups, } if permissions['invoices']: pending_bank = PendingBankTransaction.objects.all().exists() pending_refunds = InvoiceRefund.objects.filter(completed__isnull=True).exists() ipm = list(InvoicePaymentMethod.objects.filter(active=True, config__has_key='file_upload_interval')) if ipm: # At least one payment method exists that *should* get uploads checked # XXX: this could probably be done more efficient... But we never have # many payment methods, and even fewer that actually handle file uploads. for pm in ipm: if pm.config['file_upload_interval'] > 0: if not BankFileUpload.objects.filter(method=pm, created__gt=timezone.now() - datetime.timedelta(days=pm.config['file_upload_interval']) ).exists(): bank_file_uploads = True break else: bank_file_uploads = False else: bank_file_uploads = None else: pending_bank = False pending_refunds = False bank_file_uploads = None return render(request, 'adm/index.html', { 'permissions': permissions, 'pending_bank': pending_bank, 'pending_refunds': pending_refunds, 'bank_file_uploads': bank_file_uploads, 'schedalert': conditional_exec_to_scalar(request.user.is_superuser, "SELECT NOT EXISTS (SELECT 1 FROM pg_stat_activity WHERE application_name='pgeu scheduled job runner' AND datname=current_database())"), 'mailqueuealert': conditional_exec_to_scalar(request.user.is_superuser, "SELECT EXISTS (SELECT 1 FROM mailqueue_queuedmail LIMIT 1)"), })
def admin_dashboard(request): if request.user.is_superuser: permissions = { 'conferences': True, 'news': True, 'membership': settings.ENABLE_MEMBERSHIP, 'elections': settings.ENABLE_ELECTIONS, 'invoices': True, 'accounting': True, } else: groups = [g.name for g in request.user.groups.all()] confperm = ConferenceSeries.objects.filter( administrators=request.user).exists() or Conference.objects.filter( administrators=request.user).exists() permissions = { 'conferences': confperm, 'news': 'News administrators' in groups, 'membership': settings.ENABLE_MEMBERSHIP and 'Membership administrators' in groups, 'elections': settings.ENABLE_ELECTIONS and 'Election administrators' in groups, 'invoices': "Invoice managers" in groups, 'accounting': "Accounting managers" in groups, } if permissions['invoices']: pending_bank = PendingBankTransaction.objects.all().exists() else: pending_bank = False return render( request, 'adm/index.html', { 'permissions': permissions, 'pending_bank': pending_bank, 'schedalert': conditional_exec_to_scalar( request.user.is_superuser, "SELECT NOT EXISTS (SELECT 1 FROM pg_stat_activity WHERE application_name='pgeu scheduled job runner' AND datname=current_database())" ), 'mailqueuealert': conditional_exec_to_scalar( request.user.is_superuser, "SELECT EXISTS (SELECT 1 FROM mailqueue_queuedmail LIMIT 1)"), })