author | Pawel Solyga <Pawel.Solyga@gmail.com> |
Mon, 17 Nov 2008 22:21:02 +0000 | |
changeset 502 | e1e24c0a4e82 |
parent 500 | 44ea4620c5c0 |
child 512 | aae25d2b4464 |
permissions | -rw-r--r-- |
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
1 |
#!/usr/bin/python2.5 |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
2 |
# |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
3 |
# Copyright 2008 the Melange authors. |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
4 |
# |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
5 |
# Licensed under the Apache License, Version 2.0 (the "License"); |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
6 |
# you may not use this file except in compliance with the License. |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
7 |
# You may obtain a copy of the License at |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
8 |
# |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
9 |
# http://www.apache.org/licenses/LICENSE-2.0 |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
10 |
# |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
11 |
# Unless required by applicable law or agreed to in writing, software |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
12 |
# distributed under the License is distributed on an "AS IS" BASIS, |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
13 |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
14 |
# See the License for the specific language governing permissions and |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
15 |
# limitations under the License. |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
16 |
|
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
17 |
"""Simple views that depend entirely on the template and context. |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
18 |
""" |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
19 |
|
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
20 |
__authors__ = [ |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
21 |
'"Todd Larsen" <tlarsen@google.com>', |
141
e120c24b89e2
Added Melange front page edit view where you can change title, content, feed url. Created SiteSettings and Document models and some logic for them. Added isFeedURLValid function in soc/logic/feed.py. Created some functions for handling datastore updates of different kinds of Models (soc/logic/model.py). Fixed some typos and too long lines of code.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
139
diff
changeset
|
22 |
'"Pawel Solyga" <pawel.solyga@gmail.com>', |
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
23 |
] |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
24 |
|
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
25 |
|
139
93a9a22a4c38
Add getAltResponseIfNotLoggedIn() and getAltResponseIfNotDeveloper() simple
Todd Larsen <tlarsen@google.com>
parents:
125
diff
changeset
|
26 |
from django.utils.translation import ugettext_lazy |
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
27 |
|
481
94834a1e6c01
Attempt to rename User.id to User.account, in preparation for making User be
Todd Larsen <tlarsen@google.com>
parents:
374
diff
changeset
|
28 |
from soc.logic import accounts |
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
29 |
from soc.logic import out_of_band |
270
7dd6d8347b56
Move helpers/template_helpers.py to helper/templates.py.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
30 |
from soc.views import helper |
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
|
31 |
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:
299
diff
changeset
|
32 |
|
272
00cea07656c0
Move helpers/response_helpers.py to helper/responses.py.
Todd Larsen <tlarsen@google.com>
parents:
270
diff
changeset
|
33 |
import soc.views.helper.responses |
270
7dd6d8347b56
Move helpers/template_helpers.py to helper/templates.py.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
34 |
import soc.views.helper.templates |
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
35 |
|
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
36 |
|
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
|
37 |
DEF_PUBLIC_TMPL = 'soc/base.html' |
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
|
38 |
|
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
|
39 |
@decorators.view |
482
839740b061ad
Factor out direct use of the page object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
481
diff
changeset
|
40 |
def public(request, page_name=None, template=DEF_PUBLIC_TMPL, link_name=None, |
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
|
41 |
context=None): |
299
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
42 |
"""A simple template view that expects a link_name extracted from the URL. |
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
43 |
|
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
44 |
Args: |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
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 |
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
47 |
template: the template to use for rendering the view (or a search list |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
48 |
of templates) |
299
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
49 |
link_name: a site-unique "link_name" (usually extracted from the URL) |
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
50 |
context: the context dict supplied to the template, which is modified |
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:
355
diff
changeset
|
51 |
(so supply a copy if such modification is not acceptable) |
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:
355
diff
changeset
|
52 |
link_name: the link_name parameter is added to the context |
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:
355
diff
changeset
|
53 |
link_name_user: if the link_name exists for a User, that User |
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:
355
diff
changeset
|
54 |
is added to the context |
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
|
55 |
|
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
56 |
|
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
57 |
Returns: |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
58 |
A subclass of django.http.HttpResponse containing the generated page. |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
59 |
""" |
299
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
60 |
|
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
61 |
template = helper.templates.makeSiblingTemplatesList(template, 'public.html') |
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
62 |
|
374
9363b9dc2983
Add the Page object to the context of each view. Update templates to make
Todd Larsen <tlarsen@google.com>
parents:
365
diff
changeset
|
63 |
# TODO(tlarsen): fix getUniversalContext() so that it is back to being a |
9363b9dc2983
Add the Page object to the context of each view. Update templates to make
Todd Larsen <tlarsen@google.com>
parents:
365
diff
changeset
|
64 |
# dict merge of missing defaults (as discussed at length in recent code |
9363b9dc2983
Add the Page object to the context of each view. Update templates to make
Todd Larsen <tlarsen@google.com>
parents:
365
diff
changeset
|
65 |
# reviews) |
299
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
66 |
if not context: |
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
67 |
context = helper.responses.getUniversalContext(request) |
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
68 |
|
482
839740b061ad
Factor out direct use of the page object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
481
diff
changeset
|
69 |
context['page_name'] = page_name |
374
9363b9dc2983
Add the Page object to the context of each view. Update templates to make
Todd Larsen <tlarsen@google.com>
parents:
365
diff
changeset
|
70 |
|
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
71 |
try: |
299
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
72 |
if link_name: |
481
94834a1e6c01
Attempt to rename User.id to User.account, in preparation for making User be
Todd Larsen <tlarsen@google.com>
parents:
374
diff
changeset
|
73 |
user = accounts.getUserFromLinkNameOr404(link_name) |
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
74 |
except out_of_band.ErrorResponse, error: |
482
839740b061ad
Factor out direct use of the page object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
481
diff
changeset
|
75 |
return errorResponse(request, page_name, error, template, context) |
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
76 |
|
299
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
77 |
context['link_name'] = link_name |
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
78 |
context['link_name_user'] = user |
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
79 |
|
272
00cea07656c0
Move helpers/response_helpers.py to helper/responses.py.
Todd Larsen <tlarsen@google.com>
parents:
270
diff
changeset
|
80 |
return helper.responses.respond(request, template, context) |
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
81 |
|
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
82 |
|
299
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
83 |
DEF_ERROR_TMPL = 'soc/error.html' |
122
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
84 |
|
482
839740b061ad
Factor out direct use of the page object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
481
diff
changeset
|
85 |
def errorResponse(request, page_name, error, template, context): |
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
86 |
"""Displays an error page for an out_of_band.ErrorResponse exception. |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
87 |
|
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
88 |
Args: |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
89 |
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
|
90 |
page_name: the page name displayed in templates as page and header title |
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
91 |
error: an out_of_band.ErrorResponse exception |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
92 |
template: the "sibling" template (or a search list of such templates) |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
93 |
from which to construct the error.html template name (or names) |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
94 |
context: the context dict supplied to the template, which is modified |
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:
355
diff
changeset
|
95 |
(so supply a copy if such modification is not acceptable) |
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:
355
diff
changeset
|
96 |
error_message: the error message string from error.message |
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:
355
diff
changeset
|
97 |
error_status: error.response_args['status'], or None if a status code |
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:
355
diff
changeset
|
98 |
was not supplied to the ErrorResponse |
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
|
99 |
|
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
100 |
""" |
299
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
101 |
|
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
102 |
if not context: |
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
103 |
context = helper.responses.getUniversalContext(request) |
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
104 |
|
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
105 |
# make a list of possible "sibling" templates, then append a default |
270
7dd6d8347b56
Move helpers/template_helpers.py to helper/templates.py.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
106 |
error_templates = helper.templates.makeSiblingTemplatesList( |
125
155f43a0fa68
An emerging pattern with makeSiblingTemplatesList() is that views calling that
Todd Larsen <tlarsen@google.com>
parents:
123
diff
changeset
|
107 |
template, 'error.html', default_template=DEF_ERROR_TMPL) |
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
108 |
|
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
109 |
context['error_status'] = error.response_args.get('status') |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
110 |
context['error_message'] = error.message |
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
111 |
|
272
00cea07656c0
Move helpers/response_helpers.py to helper/responses.py.
Todd Larsen <tlarsen@google.com>
parents:
270
diff
changeset
|
112 |
return helper.responses.respond(request, error_templates, context=context, |
119
50d8d58dcd7c
Add soc.views.simple containing (initially) two simple template views.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
113 |
response_args=error.response_args) |
122
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
114 |
|
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
115 |
|
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
116 |
DEF_LOGIN_TMPL = 'soc/login.html' |
139
93a9a22a4c38
Add getAltResponseIfNotLoggedIn() and getAltResponseIfNotDeveloper() simple
Todd Larsen <tlarsen@google.com>
parents:
125
diff
changeset
|
117 |
DEF_LOGIN_MSG_FMT = ugettext_lazy( |
93a9a22a4c38
Add getAltResponseIfNotLoggedIn() and getAltResponseIfNotDeveloper() simple
Todd Larsen <tlarsen@google.com>
parents:
125
diff
changeset
|
118 |
'Please <a href="%(sign_in)s">sign in</a> to continue.') |
122
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
119 |
|
482
839740b061ad
Factor out direct use of the page object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
481
diff
changeset
|
120 |
def requestLogin(request, page_name, template, context=None, login_message_fmt=None): |
122
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
121 |
"""Displays a login request page with custom message and login link. |
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
122 |
|
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
123 |
Args: |
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
124 |
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
|
125 |
page_name: the page name displayed in templates as page and header title |
122
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
126 |
template: the "sibling" template (or a search list of such templates) |
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
127 |
from which to construct the login.html template name (or names) |
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
128 |
login_message_fmt: a custom message format string used to create a |
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
129 |
message displayed on the login page; the format string can contain |
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
130 |
named format specifiers for any of the keys in context, but should at |
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
131 |
least contain %(sign_in)s |
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
132 |
context: the context dict supplied to the template, which is modified |
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:
355
diff
changeset
|
133 |
(so supply a copy if such modification is not acceptable) |
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:
355
diff
changeset
|
134 |
login_message: the caller can completely construct the message supplied |
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:
355
diff
changeset
|
135 |
to the login template in lieu of using login_message_fmt |
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
|
136 |
|
122
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
137 |
""" |
299
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
138 |
|
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
139 |
if not context: |
a1cc853a56e5
Refactor nearly all the soc.logic code to use the Base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
295
diff
changeset
|
140 |
context = helper.responses.getUniversalContext(request) |
122
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
141 |
|
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
142 |
# make a list of possible "sibling" templates, then append a default |
270
7dd6d8347b56
Move helpers/template_helpers.py to helper/templates.py.
Todd Larsen <tlarsen@google.com>
parents:
141
diff
changeset
|
143 |
login_templates = helper.templates.makeSiblingTemplatesList( |
125
155f43a0fa68
An emerging pattern with makeSiblingTemplatesList() is that views calling that
Todd Larsen <tlarsen@google.com>
parents:
123
diff
changeset
|
144 |
template, 'login.html', default_template=DEF_LOGIN_TMPL) |
122
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
145 |
|
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
146 |
if not context.get('login_message'): |
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
147 |
if not login_message_fmt: |
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
148 |
login_message_fmt = DEF_LOGIN_MSG_FMT |
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
149 |
context['login_message'] = login_message_fmt % context |
95d0d954fe0b
Add a public() convenience wrapper around templateWithLinkName() for the common
Todd Larsen <tlarsen@google.com>
parents:
119
diff
changeset
|
150 |
|
272
00cea07656c0
Move helpers/response_helpers.py to helper/responses.py.
Todd Larsen <tlarsen@google.com>
parents:
270
diff
changeset
|
151 |
return helper.responses.respond(request, login_templates, context=context) |
139
93a9a22a4c38
Add getAltResponseIfNotLoggedIn() and getAltResponseIfNotDeveloper() simple
Todd Larsen <tlarsen@google.com>
parents:
125
diff
changeset
|
152 |