author | Sverre Rabbelier <srabbelier@gmail.com> |
Sun, 01 Feb 2009 22:48:48 +0000 | |
changeset 1166 | 558bd62ee9d4 |
parent 1017 | 6ad4fdb48840 |
child 1307 | 091a21cf3627 |
permissions | -rw-r--r-- |
365
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
1 |
#!/usr/bin/python2.5 |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
2 |
# |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
3 |
# Copyright 2008 the Melange authors. |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
4 |
# |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
5 |
# Licensed under the Apache License, Version 2.0 (the "License"); |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
6 |
# you may not use this file except in compliance with the License. |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
7 |
# You may obtain a copy of the License at |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
8 |
# |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
9 |
# http://www.apache.org/licenses/LICENSE-2.0 |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
10 |
# |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
11 |
# Unless required by applicable law or agreed to in writing, software |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
12 |
# distributed under the License is distributed on an "AS IS" BASIS, |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
13 |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
14 |
# See the License for the specific language governing permissions and |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
15 |
# limitations under the License. |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
16 |
|
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
17 |
"""Views decorators. |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
18 |
""" |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
19 |
|
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
20 |
__authors__ = [ |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
21 |
'"Pawel Solyga" <pawel.solyga@gmail.com>', |
987
6fd5c561b446
Cache sidebar with a simple caching API
Sverre Rabbelier <srabbelier@gmail.com>
parents:
972
diff
changeset
|
22 |
'"Sverre Rabbelier" <sverre@rabbelier.nl>', |
365
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
23 |
] |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
24 |
|
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
25 |
|
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
26 |
import logging |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
27 |
|
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
28 |
from functools import wraps |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
29 |
|
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
30 |
from google.appengine.runtime import DeadlineExceededError |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
31 |
|
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
32 |
from django import http |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
33 |
|
873
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
34 |
from soc.logic import dicts |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
35 |
|
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
36 |
|
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
37 |
class Error(Exception): |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
38 |
pass |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
39 |
|
365
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
40 |
|
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
41 |
def view(func): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
367
diff
changeset
|
42 |
"""Decorator that insists that exceptions are handled by view. |
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
367
diff
changeset
|
43 |
""" |
365
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
44 |
@wraps(func) |
367
5d5730f65fc8
Remove not needed request argument in view decorator.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
365
diff
changeset
|
45 |
def view_wrapper(*args, **kwds): |
365
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
46 |
try: |
367
5d5730f65fc8
Remove not needed request argument in view decorator.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
365
diff
changeset
|
47 |
return func(*args, **kwds) |
365
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
48 |
except DeadlineExceededError: |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
49 |
logging.exception('DeadlineExceededError') |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
50 |
return http.HttpResponse('DeadlineExceededError') |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
51 |
except MemoryError: |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
52 |
logging.exception('MemoryError') |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
53 |
return http.HttpResponse('MemoryError') |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
54 |
except AssertionError: |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
55 |
logging.exception('AssertionError') |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
56 |
return http.HttpResponse('AssertionError') |
74dec172944e
Create decorators module in view/helper and add view decorator that catches exceptions like DeadlineExceededError, MemoryError, AssertionError (this code is being moved from respond function). Add view decorator to all view functions. In addition remove not needed imports from all affected files and fix too long lines.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff
changeset
|
57 |
|
873
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
58 |
return view_wrapper |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
59 |
|
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
60 |
|
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
61 |
def merge_params(func): |
906
275d2f457c50
Fix missing dots in soc.views.helper.decoratos module docstrings.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
873
diff
changeset
|
62 |
"""Decorator that merges 'params' with self._params. |
873
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
63 |
""" |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
64 |
|
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
65 |
@wraps(func) |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
66 |
def wrapper(self, *args, **kwargs): |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
67 |
params = kwargs.get('params', {}) |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
68 |
kwargs['params'] = dicts.merge(params, self._params) |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
69 |
return func(self, *args, **kwargs) |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
70 |
|
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
71 |
return wrapper |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
72 |
|
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
73 |
|
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
74 |
def check_access(func): |
906
275d2f457c50
Fix missing dots in soc.views.helper.decoratos module docstrings.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
873
diff
changeset
|
75 |
"""This decorator does access checks for the specified view method. |
873
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
76 |
|
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
77 |
The rights dictionary is extracted from 'params', or, if either 'params' or |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
78 |
'rights' do not exist, from self._params['rights']. |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
79 |
""" |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
80 |
|
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
81 |
# Do not pollute helper.decorators with access specific imports |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
82 |
from soc.views import out_of_band |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
83 |
from soc.views import helper |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
84 |
from soc.views.helper import access |
972
43018f61b481
Remove the request and arg parameter from the checkAccess call
Sverre Rabbelier <srabbelier@gmail.com>
parents:
906
diff
changeset
|
85 |
from soc.views.helper import responses |
873
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
86 |
|
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
87 |
@wraps(func) |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
88 |
def wrapper(self, request, access_type, *args, **kwargs): |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
89 |
params = kwargs.get('params', {}) |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
90 |
|
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
91 |
# Try to extract rights |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
92 |
if 'rights' in params: |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
93 |
rights = params['rights'] |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
94 |
else: |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
95 |
rights = self._params['rights'] |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
96 |
|
972
43018f61b481
Remove the request and arg parameter from the checkAccess call
Sverre Rabbelier <srabbelier@gmail.com>
parents:
906
diff
changeset
|
97 |
check_kwargs = kwargs.copy() |
43018f61b481
Remove the request and arg parameter from the checkAccess call
Sverre Rabbelier <srabbelier@gmail.com>
parents:
906
diff
changeset
|
98 |
context = responses.getUniversalContext(request) |
43018f61b481
Remove the request and arg parameter from the checkAccess call
Sverre Rabbelier <srabbelier@gmail.com>
parents:
906
diff
changeset
|
99 |
|
1017
6ad4fdb48840
Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1007
diff
changeset
|
100 |
id = context['account'] |
6ad4fdb48840
Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1007
diff
changeset
|
101 |
user = context['user'] |
6ad4fdb48840
Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1007
diff
changeset
|
102 |
|
972
43018f61b481
Remove the request and arg parameter from the checkAccess call
Sverre Rabbelier <srabbelier@gmail.com>
parents:
906
diff
changeset
|
103 |
check_kwargs['GET'] = request.GET |
43018f61b481
Remove the request and arg parameter from the checkAccess call
Sverre Rabbelier <srabbelier@gmail.com>
parents:
906
diff
changeset
|
104 |
check_kwargs['POST'] = request.POST |
43018f61b481
Remove the request and arg parameter from the checkAccess call
Sverre Rabbelier <srabbelier@gmail.com>
parents:
906
diff
changeset
|
105 |
check_kwargs['context'] = context |
43018f61b481
Remove the request and arg parameter from the checkAccess call
Sverre Rabbelier <srabbelier@gmail.com>
parents:
906
diff
changeset
|
106 |
|
1017
6ad4fdb48840
Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1007
diff
changeset
|
107 |
# reset and pre-fill the Checker's cache |
6ad4fdb48840
Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1007
diff
changeset
|
108 |
rights.setCurrentUser(id, user) |
6ad4fdb48840
Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1007
diff
changeset
|
109 |
|
873
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
110 |
# Do the access check dance |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
111 |
try: |
1007
3b66772d21a5
Major refactor of the access module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
987
diff
changeset
|
112 |
rights.checkAccess(access_type, check_kwargs) |
873
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
113 |
except out_of_band.Error, error: |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
114 |
return helper.responses.errorResponse(error, request) |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
115 |
return func(self, request, access_type, *args, **kwargs) |
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
116 |
|
cbb1d15ffe91
Added a merge_params and check_access decorator
Sverre Rabbelier <srabbelier@gmail.com>
parents:
499
diff
changeset
|
117 |
return wrapper |