-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmiddleware.py
38 lines (33 loc) · 1.54 KB
/
middleware.py
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
from django.conf import settings
from django.utils import simplejson as json
from geonode.security.enumerations import AUTHENTICATED_USERS, ANONYMOUS_USERS
from geonode.utils import ogc_server_settings
class PrintProxyMiddleware(object):
def process_request(self, request):
if request.method == 'POST':
if request.GET.has_key('url') and 'pdf' in request.GET['url']:
print_map(request)
def print_map(request):
from django.conf import settings
from proxy.views import proxy
from layers.models import Layer
permissions = {}
params = json.loads(request.body)
for layer in params['layers']:
if ogc_server_settings.LOCATION in layer['baseURL']:
for layer_name in layer['layers']:
layer_obj = Layer.objects.get(typename=layer_name)
permissions[layer_obj] = {}
permissions[layer_obj]['anonymous'] = layer_obj.get_gen_level(ANONYMOUS_USERS)
permissions[layer_obj]['authenticated'] = layer_obj.get_gen_level(AUTHENTICATED_USERS)
layer_obj.set_gen_level(ANONYMOUS_USERS,'layer_readonly')
try:
resp = proxy(request)
except Exception, e:
return HttpResponse('There was an error connecting to the printing server')
finally:
for layer_obj in permissions.keys():
perm_spec = permissions[layer_obj]
layer_obj.set_gen_level(ANONYMOUS_USERS,perm_spec['anonymous'])
layer_obj.set_gen_level(AUTHENTICATED_USERS,perm_spec['authenticated'])
return resp