Exemplo n.º 1
0
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)"),
    })
Exemplo n.º 2
0
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)"),
        })