author | Sverre Rabbelier <srabbelier@gmail.com> |
Wed, 05 Nov 2008 23:38:00 +0000 | |
changeset 446 | 0b479d573a4c |
parent 398 | aa1e786a0b1d |
permissions | -rw-r--r-- |
238
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
1 |
#!/usr/bin/python2.5 |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
2 |
# |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
3 |
# Copyright 2008 the Melange authors. |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
4 |
# |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
5 |
# Licensed under the Apache License, Version 2.0 (the "License"); |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
6 |
# you may not use this file except in compliance with the License. |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
7 |
# You may obtain a copy of the License at |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
8 |
# |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
9 |
# http://www.apache.org/licenses/LICENSE-2.0 |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
10 |
# |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
11 |
# Unless required by applicable law or agreed to in writing, software |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
12 |
# distributed under the License is distributed on an "AS IS" BASIS, |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
13 |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
14 |
# See the License for the specific language governing permissions and |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
15 |
# limitations under the License. |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
16 |
|
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
17 |
"""Document viewers. |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
18 |
|
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
19 |
public: how the general public sees a Document |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
20 |
""" |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
21 |
|
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
22 |
__authors__ = [ |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
23 |
'"Todd Larsen" <tlarsen@google.com>', |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
24 |
] |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
25 |
|
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
26 |
|
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
27 |
from soc.logic import out_of_band |
336
9d5b8880260f
Fix not working docs show view. Document show view wasn't updated when the logic refactor was made.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
316
diff
changeset
|
28 |
from soc.logic import path_link_name |
9d5b8880260f
Fix not working docs show view. Document show view wasn't updated when the logic refactor was made.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
316
diff
changeset
|
29 |
from soc.logic.models import document |
316
9efdc7bc3565
Add missing blank lines between imports and sort all of the imports.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
298
diff
changeset
|
30 |
from soc.views import helper |
238
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
31 |
from soc.views import simple |
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:
361
diff
changeset
|
32 |
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:
298
diff
changeset
|
33 |
|
272
00cea07656c0
Move helpers/response_helpers.py to helper/responses.py.
Todd Larsen <tlarsen@google.com>
parents:
270
diff
changeset
|
34 |
import soc.views.helper.responses |
270
7dd6d8347b56
Move helpers/template_helpers.py to helper/templates.py.
Todd Larsen <tlarsen@google.com>
parents:
242
diff
changeset
|
35 |
import soc.views.helper.templates |
238
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
36 |
|
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
37 |
|
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
38 |
DEF_DOCS_PUBLIC_TMPL = 'soc/docs/public.html' |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
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:
361
diff
changeset
|
40 |
@decorators.view |
358
843d83b87282
Add page=None parameter to all views. Information from page argument (which is soc.logic.site.page.Page object) is going to be used later in views code and for some context values. Fix some indentions in __doc__ strings. Add proper __doc__ string for all() function in sponsor/list.py module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
336
diff
changeset
|
41 |
def public(request, page=None, partial_path=None, link_name=None, |
238
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
42 |
template=DEF_DOCS_PUBLIC_TMPL): |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
43 |
"""How the "general public" sees a Document. |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
44 |
|
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
45 |
Args: |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
46 |
request: the standard django request object |
358
843d83b87282
Add page=None parameter to all views. Information from page argument (which is soc.logic.site.page.Page object) is going to be used later in views code and for some context values. Fix some indentions in __doc__ strings. Add proper __doc__ string for all() function in sponsor/list.py module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
336
diff
changeset
|
47 |
page: a soc.logic.site.page.Page object which is abstraction that combines |
843d83b87282
Add page=None parameter to all views. Information from page argument (which is soc.logic.site.page.Page object) is going to be used later in views code and for some context values. Fix some indentions in __doc__ strings. Add proper __doc__ string for all() function in sponsor/list.py module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
336
diff
changeset
|
48 |
a Django view with sidebar menu info |
238
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
49 |
partial_path: the Document's site-unique "path" extracted from the URL, |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
50 |
minus the trailing link_name |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
51 |
link_name: the last portion of the Document's site-unique "path" |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
52 |
extracted from the URL |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
53 |
template: the "sibling" template (or a search list of such templates) |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
54 |
from which to construct the public.html template name (or names) |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
55 |
|
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
56 |
Returns: |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
57 |
A subclass of django.http.HttpResponse which either contains the form to |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
58 |
be filled out, or a redirect to the correct view in the interface. |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
59 |
""" |
d6b533f99a45
A very simplistic Document viewer.
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:
270
diff
changeset
|
61 |
context = helper.responses.getUniversalContext(request) |
238
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
62 |
|
242
17984abf0c74
Some TODOs on access control that I didn't want to forget.
Todd Larsen <tlarsen@google.com>
parents:
238
diff
changeset
|
63 |
# TODO: there eventually needs to be a call to some controller logic that |
17984abf0c74
Some TODOs on access control that I didn't want to forget.
Todd Larsen <tlarsen@google.com>
parents:
238
diff
changeset
|
64 |
# implements some sort of access controls, based on the currently |
17984abf0c74
Some TODOs on access control that I didn't want to forget.
Todd Larsen <tlarsen@google.com>
parents:
238
diff
changeset
|
65 |
# logged-in User's Roles, etc. |
17984abf0c74
Some TODOs on access control that I didn't want to forget.
Todd Larsen <tlarsen@google.com>
parents:
238
diff
changeset
|
66 |
|
17984abf0c74
Some TODOs on access control that I didn't want to forget.
Todd Larsen <tlarsen@google.com>
parents:
238
diff
changeset
|
67 |
# TODO: based on the User's Roles, Documents that the User can edit |
17984abf0c74
Some TODOs on access control that I didn't want to forget.
Todd Larsen <tlarsen@google.com>
parents:
238
diff
changeset
|
68 |
# should display a link to a document edit form |
336
9d5b8880260f
Fix not working docs show view. Document show view wasn't updated when the logic refactor was made.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
316
diff
changeset
|
69 |
|
9d5b8880260f
Fix not working docs show view. Document show view wasn't updated when the logic refactor was made.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
316
diff
changeset
|
70 |
doc = None |
242
17984abf0c74
Some TODOs on access control that I didn't want to forget.
Todd Larsen <tlarsen@google.com>
parents:
238
diff
changeset
|
71 |
|
298
c76a366c7ab4
Replace almost all occurences of linkname with link_name
Sverre Rabbelier <srabbelier@gmail.com>
parents:
272
diff
changeset
|
72 |
# try to fetch User entity corresponding to link_name if one exists |
336
9d5b8880260f
Fix not working docs show view. Document show view wasn't updated when the logic refactor was made.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
316
diff
changeset
|
73 |
path = path_link_name.combinePath([partial_path, link_name]) |
9d5b8880260f
Fix not working docs show view. Document show view wasn't updated when the logic refactor was made.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
316
diff
changeset
|
74 |
|
9d5b8880260f
Fix not working docs show view. Document show view wasn't updated when the logic refactor was made.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
316
diff
changeset
|
75 |
# try to fetch Document entity corresponding to path if one exists |
238
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
76 |
try: |
336
9d5b8880260f
Fix not working docs show view. Document show view wasn't updated when the logic refactor was made.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
316
diff
changeset
|
77 |
if path: |
9d5b8880260f
Fix not working docs show view. Document show view wasn't updated when the logic refactor was made.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
316
diff
changeset
|
78 |
doc = document.logic.getFromFields(partial_path=partial_path, |
9d5b8880260f
Fix not working docs show view. Document show view wasn't updated when the logic refactor was made.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
316
diff
changeset
|
79 |
link_name=link_name) |
238
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
80 |
except out_of_band.ErrorResponse, error: |
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
81 |
# show custom 404 page when Document path doesn't exist in Datastore |
361
465e4df617de
Make page argument required for errorResponse and requestLogin functions in simple.py and update affected files. Some keyword argument changes to in user/profile.py. All the changes are based on comments to r817.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
358
diff
changeset
|
82 |
return simple.errorResponse(request, page, error, template, context) |
238
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
83 |
|
270
7dd6d8347b56
Move helpers/template_helpers.py to helper/templates.py.
Todd Larsen <tlarsen@google.com>
parents:
242
diff
changeset
|
84 |
doc.content = helper.templates.unescape(doc.content) |
398
aa1e786a0b1d
Rename 'existing_doc' and 'document' to entity
Sverre Rabbelier <srabbelier@gmail.com>
parents:
365
diff
changeset
|
85 |
context['entity'] = doc |
238
d6b533f99a45
A very simplistic Document viewer.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
86 |
|
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:
361
diff
changeset
|
87 |
return helper.responses.respond(request, template, context) |