summaryrefslogtreecommitdiff
path: root/pgweb/profserv/views.py
blob: e618bee3143064808e2ac3fbd1cff6356f3623a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from django.http import Http404
from pgweb.util.decorators import login_required

from pgweb.util.contexts import render_pgweb
from pgweb.util.helpers import simple_form

from models import ProfessionalService
from forms import ProfessionalServiceForm

regions = (
    ('africa', 'Africa'),
    ('asia', 'Asia'),
    ('europe', 'Europe'),
    ('northamerica', 'North America'),
    ('oceania', 'Oceania'),
    ('southamerica', 'South America'),
)


def root(request, servtype):
    title = servtype == 'support' and 'Professional Services' or 'Hosting Providers'
    what = servtype == 'support' and 'support' or 'hosting'
    support = servtype == 'support'
    return render_pgweb(request, 'support', 'profserv/root.html', {
        'title': title,
        'support': support,
        'regions': regions,
        'what': what,
    })


def region(request, servtype, regionname):
    regname = [n for r, n in regions if r == regionname]
    if not regname:
        raise Http404
    regname = regname[0]

    what = servtype == 'support' and 'support' or 'hosting'
    whatname = servtype == 'support' and 'Professional Services' or 'Hosting Providers'
    title = "%s - %s" % (whatname, regname)
    support = servtype == 'support'

    # DB model is a bit funky here, so use the extra-where functionality to filter properly.
    # Field names are cleaned up earlier, so it's safe against injections.
    services = ProfessionalService.objects.select_related('org').filter(approved=True).extra(where=["region_%s AND provides_%s" % (regionname, what), ])

    return render_pgweb(request, 'support', 'profserv/list.html', {
        'title': title,
        'support': support,
        'what': what,
        'whatname': whatname,
        'regionname': regname,
        'services': services,
    })


# Forms to edit
@login_required
def profservform(request, itemid):
    return simple_form(ProfessionalService, itemid, request, ProfessionalServiceForm,
                       redirect='/account/edit/services/')