author | Pawel Solyga <Pawel.Solyga@gmail.com> |
Mon, 17 Nov 2008 22:21:02 +0000 | |
changeset 502 | e1e24c0a4e82 |
parent 500 | 44ea4620c5c0 |
permissions | -rw-r--r-- |
234
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
1 |
#!/usr/bin/python2.5 |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
2 |
# |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
3 |
# Copyright 2008 the Melange authors. |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
4 |
# |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
5 |
# Licensed under the Apache License, Version 2.0 (the "License"); |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
6 |
# you may not use this file except in compliance with the License. |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
7 |
# You may obtain a copy of the License at |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
8 |
# |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
9 |
# http://www.apache.org/licenses/LICENSE-2.0 |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
10 |
# |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
11 |
# Unless required by applicable law or agreed to in writing, software |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
12 |
# distributed under the License is distributed on an "AS IS" BASIS, |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
13 |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
14 |
# See the License for the specific language governing permissions and |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
15 |
# limitations under the License. |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
16 |
|
377
d94ec6f104cc
Refactor various site views into more generic locations, in preparation for
Todd Larsen <tlarsen@google.com>
parents:
374
diff
changeset
|
17 |
"""Views for listing Documents. |
234
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
18 |
""" |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
19 |
|
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
20 |
__authors__ = [ |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
21 |
'"Todd Larsen" <tlarsen@google.com>', |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
22 |
] |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
23 |
|
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
24 |
|
313
c25b1b680ba7
Bugfixes to the latest revision
Sverre Rabbelier <srabbelier@gmail.com>
parents:
309
diff
changeset
|
25 |
from soc.logic.models import work |
268
af1d7f48b361
Move helpers/list.py to helper/lists.py to avoid conflict with built-in type
Todd Larsen <tlarsen@google.com>
parents:
266
diff
changeset
|
26 |
from soc.views import helper |
303
4f1bb54ddae5
Moved soc/logic/helper/access to soc/views/helper/access
Sverre Rabbelier <srabbelier@gmail.com>
parents:
299
diff
changeset
|
27 |
from soc.views.helper import access |
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:
358
diff
changeset
|
28 |
from soc.views.helper import decorators |
316
9efdc7bc3565
Add missing blank lines between imports and sort all of the imports.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
313
diff
changeset
|
29 |
|
9efdc7bc3565
Add missing blank lines between imports and sort all of the imports.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
313
diff
changeset
|
30 |
import soc.logic |
9efdc7bc3565
Add missing blank lines between imports and sort all of the imports.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
313
diff
changeset
|
31 |
import soc.models.document |
268
af1d7f48b361
Move helpers/list.py to helper/lists.py to avoid conflict with built-in type
Todd Larsen <tlarsen@google.com>
parents:
266
diff
changeset
|
32 |
import soc.views.helper.lists |
272
00cea07656c0
Move helpers/response_helpers.py to helper/responses.py.
Todd Larsen <tlarsen@google.com>
parents:
268
diff
changeset
|
33 |
import soc.views.helper.responses |
303
4f1bb54ddae5
Moved soc/logic/helper/access to soc/views/helper/access
Sverre Rabbelier <srabbelier@gmail.com>
parents:
299
diff
changeset
|
34 |
import soc.views.out_of_band |
234
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
35 |
|
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
36 |
|
445
31927f21970d
Major site restructuring, also deleting of many unused or obsolete documents
Sverre Rabbelier <srabbelier@gmail.com>
parents:
377
diff
changeset
|
37 |
DEF_DOCS_LIST_ALL_TMPL = 'soc/models/list.html' |
234
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
38 |
|
303
4f1bb54ddae5
Moved soc/logic/helper/access to soc/views/helper/access
Sverre Rabbelier <srabbelier@gmail.com>
parents:
299
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:
358
diff
changeset
|
40 |
@decorators.view |
482
839740b061ad
Factor out direct use of the page object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
477
diff
changeset
|
41 |
def all(request, page_name=None, templates={}): |
234
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
42 |
"""Show a list of all Documents (limit rows per page). |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
43 |
|
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
44 |
Args: |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
45 |
request: the standard Django HTTP request object |
500
44ea4620c5c0
Replace old page parameter doc string description with new one for page_name.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
482
diff
changeset
|
46 |
page_name: the page name displayed in templates as page and header title |
234
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
47 |
template: the "sibling" template (or a search list of such templates) |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
48 |
from which to construct an alternate template name (or names) |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
49 |
|
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
50 |
Returns: |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
51 |
A subclass of django.http.HttpResponse which either contains the form to |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
52 |
be filled out, or a redirect to the correct view in the interface. |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
53 |
""" |
294
1fdaab4a6ef2
Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
272
diff
changeset
|
54 |
|
1fdaab4a6ef2
Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
272
diff
changeset
|
55 |
try: |
1fdaab4a6ef2
Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
272
diff
changeset
|
56 |
access.checkIsDeveloper(request) |
303
4f1bb54ddae5
Moved soc/logic/helper/access to soc/views/helper/access
Sverre Rabbelier <srabbelier@gmail.com>
parents:
299
diff
changeset
|
57 |
except soc.views.out_of_band.AccessViolationResponse, alt_response: |
294
1fdaab4a6ef2
Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
272
diff
changeset
|
58 |
return alt_response.response() |
1fdaab4a6ef2
Refactor existing code to use the new access module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
272
diff
changeset
|
59 |
|
234
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
60 |
# create default template context for use with any templates |
272
00cea07656c0
Move helpers/response_helpers.py to helper/responses.py.
Todd Larsen <tlarsen@google.com>
parents:
268
diff
changeset
|
61 |
context = helper.responses.getUniversalContext(request) |
482
839740b061ad
Factor out direct use of the page object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
477
diff
changeset
|
62 |
context['page_name'] = page_name |
234
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
63 |
|
268
af1d7f48b361
Move helpers/list.py to helper/lists.py to avoid conflict with built-in type
Todd Larsen <tlarsen@google.com>
parents:
266
diff
changeset
|
64 |
offset, limit = helper.lists.cleanListParameters( |
265
3c2994f3b85f
List views should have a selectable pagination "page" length:
Todd Larsen <tlarsen@google.com>
parents:
263
diff
changeset
|
65 |
offset=request.GET.get('offset'), limit=request.GET.get('limit')) |
263
9b39d93b677f
Make findNearestUsers() code in soc/logic/site/id_user.py more generic and
Todd Larsen <tlarsen@google.com>
parents:
234
diff
changeset
|
66 |
|
9b39d93b677f
Make findNearestUsers() code in soc/logic/site/id_user.py more generic and
Todd Larsen <tlarsen@google.com>
parents:
234
diff
changeset
|
67 |
# Fetch one more to see if there should be a 'next' link |
477
8a8b1bd035c4
Moved from docs -> document
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
68 |
document = work.logic.getForLimitAndOffset(limit + 1, offset=offset) |
263
9b39d93b677f
Make findNearestUsers() code in soc/logic/site/id_user.py more generic and
Todd Larsen <tlarsen@google.com>
parents:
234
diff
changeset
|
69 |
|
268
af1d7f48b361
Move helpers/list.py to helper/lists.py to avoid conflict with built-in type
Todd Larsen <tlarsen@google.com>
parents:
266
diff
changeset
|
70 |
context['pagination_form'] = helper.lists.makePaginationForm(request, limit) |
234
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
71 |
|
377
d94ec6f104cc
Refactor various site views into more generic locations, in preparation for
Todd Larsen <tlarsen@google.com>
parents:
374
diff
changeset
|
72 |
list_templates = { |
d94ec6f104cc
Refactor various site views into more generic locations, in preparation for
Todd Larsen <tlarsen@google.com>
parents:
374
diff
changeset
|
73 |
'list_main': templates.get('list_main', |
d94ec6f104cc
Refactor various site views into more generic locations, in preparation for
Todd Larsen <tlarsen@google.com>
parents:
374
diff
changeset
|
74 |
'soc/list/list_main.html'), |
d94ec6f104cc
Refactor various site views into more generic locations, in preparation for
Todd Larsen <tlarsen@google.com>
parents:
374
diff
changeset
|
75 |
'list_pagination': templates.get('list_pagination', |
d94ec6f104cc
Refactor various site views into more generic locations, in preparation for
Todd Larsen <tlarsen@google.com>
parents:
374
diff
changeset
|
76 |
'soc/list/list_pagination.html'), |
d94ec6f104cc
Refactor various site views into more generic locations, in preparation for
Todd Larsen <tlarsen@google.com>
parents:
374
diff
changeset
|
77 |
'list_row': templates.get('list_row', |
477
8a8b1bd035c4
Moved from docs -> document
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
78 |
'soc/document/list/docs_row.html'), |
377
d94ec6f104cc
Refactor various site views into more generic locations, in preparation for
Todd Larsen <tlarsen@google.com>
parents:
374
diff
changeset
|
79 |
'list_heading': templates.get('list_heading', |
477
8a8b1bd035c4
Moved from docs -> document
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
80 |
'soc/document/list/docs_heading.html'), |
377
d94ec6f104cc
Refactor various site views into more generic locations, in preparation for
Todd Larsen <tlarsen@google.com>
parents:
374
diff
changeset
|
81 |
} |
234
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
82 |
|
268
af1d7f48b361
Move helpers/list.py to helper/lists.py to avoid conflict with built-in type
Todd Larsen <tlarsen@google.com>
parents:
266
diff
changeset
|
83 |
context = helper.lists.setList( |
477
8a8b1bd035c4
Moved from docs -> document
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
84 |
request, context, document, |
234
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
85 |
offset=offset, limit=limit, list_templates=list_templates) |
a019afb4b80f
Implement a Developer list view of all Documents.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
86 |
|
377
d94ec6f104cc
Refactor various site views into more generic locations, in preparation for
Todd Larsen <tlarsen@google.com>
parents:
374
diff
changeset
|
87 |
template = templates.get('all', DEF_DOCS_LIST_ALL_TMPL) |
d94ec6f104cc
Refactor various site views into more generic locations, in preparation for
Todd Larsen <tlarsen@google.com>
parents:
374
diff
changeset
|
88 |
return helper.responses.respond(request, template, context) |