summaryrefslogtreecommitdiff
path: root/pgweb/profserv/views.py
blob: cf08d1481ee22a5c7ab6580491d59d0f4b87d281 (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
from django.shortcuts import render_to_response, get_object_or_404
from django.http import HttpResponse, Http404, HttpResponseRedirect
from django.template import TemplateDoesNotExist, loader, Context
from django.contrib.auth.decorators import login_required
from django.db.models import Q

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

from models import ProfessionalService

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_to_response('profserv/root.html', {
		'title': title,
		'support': support,
		'regions': regions,
		'what': what,
	}, NavContext(request, 'support'))


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('organisation').filter(approved=True).extra(where=["region_%s AND provides_%s" % (regionname, what),])
	
	return render_to_response('profserv/list.html', {
		'title': title,
		'support': support,
		'what': what,
		'whatname': whatname,
		'regionname': regname,
		'services': services,
	}, NavContext(request, 'support'))