author | Lennard de Rijk <ljvderijk@gmail.com> |
Mon, 25 May 2009 23:45:20 +0200 | |
changeset 2348 | 0edff67b472d |
parent 2333 | 221482a54238 |
child 2609 | dc0d4c3d9d2e |
permissions | -rw-r--r-- |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
1 |
#!/usr/bin/python2.5 |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
2 |
# |
1308
35b75ffcbb37
Partially reverted "Update the copyright notice for 2009."
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1307
diff
changeset
|
3 |
# Copyright 2008 the Melange authors. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
4 |
# |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
5 |
# Licensed under the Apache License, Version 2.0 (the "License"); |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
6 |
# you may not use this file except in compliance with the License. |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
7 |
# You may obtain a copy of the License at |
1326 | 8 |
# |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
9 |
# http://www.apache.org/licenses/LICENSE-2.0 |
1326 | 10 |
# |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
11 |
# Unless required by applicable law or agreed to in writing, software |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
12 |
# distributed under the License is distributed on an "AS IS" BASIS, |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
13 |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
14 |
# See the License for the specific language governing permissions and |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
15 |
# limitations under the License. |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
16 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
17 |
"""Helpers functions for displaying views. |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
18 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
19 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
20 |
__authors__ = [ |
429
e50e18936f06
Fixed typo in e-mail address
Sverre Rabbelier <srabbelier@gmail.com>
parents:
428
diff
changeset
|
21 |
'"Sverre Rabbelier" <sverre@rabbelier.nl>', |
516
ec1dcd70b97e
The list method in models/base.py can now use a filter to make a selection of entities to show.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
514
diff
changeset
|
22 |
'"Lennard de Rijk" <ljvderijk@gmail.com>', |
471
dcb1f7821b39
Remove stop parameter from home_settings and site_settings views. This is something Sverre didn't mean to commit :-) Add missing params description to the models Base class docs.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
459
diff
changeset
|
23 |
'"Pawel Solyga" <pawel.solyga@gmail.com>', |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
24 |
] |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
25 |
|
1806
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
26 |
|
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
27 |
import csv |
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
28 |
import StringIO |
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
29 |
|
1268
9d092b702f92
Resolve references if they are specified
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1227
diff
changeset
|
30 |
from google.appengine.ext import db |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
31 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
32 |
from django import http |
1098
e5c06755ecd8
Use django.utils.simplejson in soc.views.models.base pick method instead of our standalone simplejson module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1035
diff
changeset
|
33 |
from django.utils import simplejson |
970
8b5611d5b053
Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents:
957
diff
changeset
|
34 |
from django.utils.translation import ugettext |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
35 |
|
387
c55195361cb6
Addressed comments by Todd on r822
Sverre Rabbelier <srabbelier@gmail.com>
parents:
373
diff
changeset
|
36 |
from soc.logic import dicts |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
37 |
from soc.views import helper |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
38 |
from soc.views import out_of_band |
876
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
39 |
from soc.views.helper import decorators |
612
3cca81b1e5a1
Moved checkAccess and getCleanedFields into access and forms
Sverre Rabbelier <srabbelier@gmail.com>
parents:
611
diff
changeset
|
40 |
from soc.views.helper import forms |
858
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
41 |
from soc.views.helper import redirects |
2081
0490222fab35
Fix wrong usage of helper requests module in soc.views.models.base after recent unused imports cleanup.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
2076
diff
changeset
|
42 |
from soc.views.helper import requests |
1349
d05a9bf08c11
Hopefully fix json caching issues in IE7.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1342
diff
changeset
|
43 |
from soc.views.helper import responses |
2333
221482a54238
First step in the module design
Sverre Rabbelier <sverre@rabbelier.nl>
parents:
2330
diff
changeset
|
44 |
from soc.views.sitemap import sidebar |
221482a54238
First step in the module design
Sverre Rabbelier <sverre@rabbelier.nl>
parents:
2330
diff
changeset
|
45 |
from soc.views.sitemap import sitemap |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
46 |
|
1796
5cd78a7aacdd
Allow for query caching in pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1790
diff
changeset
|
47 |
import soc.cache.logic |
646
860e17e5118f
Remove cyclic imports by moving response method of out_of_band.Error class to soc.views.helper.responses module as errorResponse function. Apply changes to affected files.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
639
diff
changeset
|
48 |
import soc.logic |
860e17e5118f
Remove cyclic imports by moving response method of out_of_band.Error class to soc.views.helper.responses module as errorResponse function. Apply changes to affected files.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
639
diff
changeset
|
49 |
import soc.logic.lists |
860e17e5118f
Remove cyclic imports by moving response method of out_of_band.Error class to soc.views.helper.responses module as errorResponse function. Apply changes to affected files.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
639
diff
changeset
|
50 |
import soc.views.helper.lists |
860e17e5118f
Remove cyclic imports by moving response method of out_of_band.Error class to soc.views.helper.responses module as errorResponse function. Apply changes to affected files.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
639
diff
changeset
|
51 |
import soc.views.helper.params |
860e17e5118f
Remove cyclic imports by moving response method of out_of_band.Error class to soc.views.helper.responses module as errorResponse function. Apply changes to affected files.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
639
diff
changeset
|
52 |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
53 |
|
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
54 |
class View(object): |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
55 |
"""Views for entity classes. |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
56 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
57 |
The View class functions specific to Entity classes by relying |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
58 |
on the the child-classes to define the following fields: |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
59 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
60 |
self._logic: the logic singleton for this entity |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
61 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
62 |
|
970
8b5611d5b053
Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents:
957
diff
changeset
|
63 |
DEF_CREATE_NEW_ENTITY_MSG_FMT = ugettext( |
502
e1e24c0a4e82
Add new parameters to views: url_name which is name used in urls (instead of using lower entity names) and module_name which is used for constructing django urls. Append changes to all affected files. Fix some title names. Change urls that included underscores like "site_settings" into urls with slash "site/settings". Plus some other minor fixes.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
500
diff
changeset
|
64 |
' You can create a new %(entity_type)s by visiting' |
387
c55195361cb6
Addressed comments by Todd on r822
Sverre Rabbelier <srabbelier@gmail.com>
parents:
373
diff
changeset
|
65 |
' <a href="%(create)s">Create ' |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
66 |
'a New %(entity_type)s</a> page.') |
387
c55195361cb6
Addressed comments by Todd on r822
Sverre Rabbelier <srabbelier@gmail.com>
parents:
373
diff
changeset
|
67 |
|
970
8b5611d5b053
Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents:
957
diff
changeset
|
68 |
DEF_CREATE_INSTRUCTION_MSG_FMT = ugettext( |
663
c2dcae606699
Make base.View.create lookup the scope if appropriate
Sverre Rabbelier <srabbelier@gmail.com>
parents:
662
diff
changeset
|
69 |
'Please select a %s for the new %s.') |
c2dcae606699
Make base.View.create lookup the scope if appropriate
Sverre Rabbelier <srabbelier@gmail.com>
parents:
662
diff
changeset
|
70 |
|
507
3603fdafabf7
Fold the _rights dictionary into params
Sverre Rabbelier <srabbelier@gmail.com>
parents:
502
diff
changeset
|
71 |
def __init__(self, params=None): |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
72 |
""" |
373
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
73 |
|
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
74 |
Args: |
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
75 |
params: This dictionary should be filled with the parameters |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
76 |
specific to this entity. See the methods in this class on |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
77 |
the fields it should contain, and how they are used. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
78 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
79 |
|
611
2ec30182e5f1
Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
610
diff
changeset
|
80 |
self._params = helper.params.constructParams(params) |
2ec30182e5f1
Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
610
diff
changeset
|
81 |
self._logic = params['logic'] |
554
68c7a1dd3c52
Renamed templates/soc/entity/list/entity_*.html to *.html
Sverre Rabbelier <srabbelier@gmail.com>
parents:
553
diff
changeset
|
82 |
|
876
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
83 |
@decorators.merge_params |
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
84 |
@decorators.check_access |
710
edb5dbb1dea7
Add explicit access_types from the url
Sverre Rabbelier <srabbelier@gmail.com>
parents:
708
diff
changeset
|
85 |
def public(self, request, access_type, |
edb5dbb1dea7
Add explicit access_types from the url
Sverre Rabbelier <srabbelier@gmail.com>
parents:
708
diff
changeset
|
86 |
page_name=None, params=None, **kwargs): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
87 |
"""Displays the public page for the entity specified by **kwargs. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
88 |
|
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
89 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
90 |
rights: The rights dictionary is used to check if the user has |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
91 |
the required rights to view the public page for this entity. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
92 |
See checkAccess for more details on how the rights dictionary |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
93 |
is used to check access rights. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
94 |
error_public: The error_public value is used as template when |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
95 |
the key values (as defined by the page's url) do not |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
96 |
correspond to an existing entity. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
97 |
name: The name value is used to set the entity_type in the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
98 |
context so that the template can refer to it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
99 |
public_template: The public_template value is used as template |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
100 |
to display the public page of the found entity. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
101 |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
102 |
Args: |
373
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
103 |
request: the standard Django HTTP request object |
957
5b657063b23b
Add missing parameter description to docstring of soc.views.models.base module methods.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
939
diff
changeset
|
104 |
access_type : the name of the access type which should be checked |
500
44ea4620c5c0
Replace old page parameter doc string description with new one for page_name.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
499
diff
changeset
|
105 |
page_name: the page name displayed in templates as page and header title |
471
dcb1f7821b39
Remove stop parameter from home_settings and site_settings views. This is something Sverre didn't mean to commit :-) Add missing params description to the models Base class docs.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
459
diff
changeset
|
106 |
params: a dict with params for this View |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
107 |
kwargs: the Key Fields for the specified entity |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
108 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
109 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
110 |
# create default template context for use with any templates |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
111 |
context = helper.responses.getUniversalContext(request) |
1357
3dd1507aa723
Prepare all views for a new modular approach to JS loading
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1349
diff
changeset
|
112 |
helper.responses.useJavaScript(context, params['js_uses_all']) |
482
839740b061ad
Factor out direct use of the page object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
471
diff
changeset
|
113 |
context['page_name'] = page_name |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
114 |
entity = None |
1784
d5dacf2be926
Use params['logic'] instead of self._logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1703
diff
changeset
|
115 |
logic = params['logic'] |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
116 |
|
446
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
117 |
if not all(kwargs.values()): |
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
118 |
#TODO: Change this into a proper redirect |
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
119 |
return http.HttpResponseRedirect('/') |
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
120 |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
121 |
try: |
1784
d5dacf2be926
Use params['logic'] instead of self._logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1703
diff
changeset
|
122 |
entity = logic.getFromKeyFieldsOr404(kwargs) |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
123 |
except out_of_band.Error, error: |
646
860e17e5118f
Remove cyclic imports by moving response method of out_of_band.Error class to soc.views.helper.responses module as errorResponse function. Apply changes to affected files.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
639
diff
changeset
|
124 |
return helper.responses.errorResponse( |
860e17e5118f
Remove cyclic imports by moving response method of out_of_band.Error class to soc.views.helper.responses module as errorResponse function. Apply changes to affected files.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
639
diff
changeset
|
125 |
error, request, template=params['error_public'], context=context) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
126 |
|
1991
3aeda3007467
Make _public return True iff public page should be shown
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1967
diff
changeset
|
127 |
if not self._public(request, entity, context): |
3aeda3007467
Make _public return True iff public page should be shown
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1967
diff
changeset
|
128 |
redirect = params['public_redirect'] |
3aeda3007467
Make _public return True iff public page should be shown
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1967
diff
changeset
|
129 |
if redirect: |
3aeda3007467
Make _public return True iff public page should be shown
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1967
diff
changeset
|
130 |
return http.HttpResponseRedirect(redirect) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
131 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
132 |
context['entity'] = entity |
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
133 |
context['entity_type'] = params['name'] |
1500
a495ae7efc70
Fixed broken 'Edit <entity name> Settings' for orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1497
diff
changeset
|
134 |
context['entity_type_url'] = params['url_name'] |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
135 |
|
1677
b2cf6ad50a2a
Make it possible to add some default values to the context
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1667
diff
changeset
|
136 |
context = dicts.merge(params['context'], context) |
b2cf6ad50a2a
Make it possible to add some default values to the context
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1667
diff
changeset
|
137 |
|
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
138 |
template = params['public_template'] |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
139 |
|
858
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
140 |
return helper.responses.respond(request, template, context=context) |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
141 |
|
876
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
142 |
@decorators.merge_params |
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
143 |
@decorators.check_access |
1342 | 144 |
def admin(self, request, access_type, |
145 |
page_name=None, params=None, **kwargs): |
|
146 |
"""Displays the admin page for the entity specified by **kwargs. |
|
147 |
||
148 |
Params usage: |
|
149 |
rights: The rights dictionary is used to check if the user has |
|
2021
3ab5d0d73f38
Fixed some typo in app/soc/views/models/base.py
Chen Lunpeng <forever.clp@gmail.com>
parents:
2002
diff
changeset
|
150 |
the required rights to view the admin page for this entity. |
1342 | 151 |
See checkAccess for more details on how the rights dictionary |
152 |
is used to check access rights. |
|
153 |
name: The name value is used to set the entity_type in the |
|
154 |
context so that the template can refer to it. |
|
155 |
public_template: The public_template value is used as template |
|
156 |
to display the public page of the found entity. |
|
157 |
||
158 |
Args: |
|
159 |
request: the standard Django HTTP request object |
|
160 |
access_type : the name of the access type which should be checked |
|
161 |
page_name: the page name displayed in templates as page and header title |
|
162 |
params: a dict with params for this View |
|
163 |
kwargs: the Key Fields for the specified entity |
|
164 |
""" |
|
165 |
||
166 |
# create default template context for use with any templates |
|
167 |
context = helper.responses.getUniversalContext(request) |
|
1357
3dd1507aa723
Prepare all views for a new modular approach to JS loading
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1349
diff
changeset
|
168 |
helper.responses.useJavaScript(context, params['js_uses_all']) |
1342 | 169 |
context['page_name'] = page_name |
1784
d5dacf2be926
Use params['logic'] instead of self._logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1703
diff
changeset
|
170 |
logic = params['logic'] |
1342 | 171 |
|
172 |
try: |
|
1784
d5dacf2be926
Use params['logic'] instead of self._logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1703
diff
changeset
|
173 |
entity = logic.getFromKeyFieldsOr404(kwargs) |
1342 | 174 |
except out_of_band.Error, error: |
175 |
return helper.responses.errorResponse(error, request, context=context) |
|
176 |
||
177 |
form = params['admin_form'](instance=entity) |
|
178 |
template = params['admin_template'] |
|
179 |
||
180 |
return self._constructResponse(request, entity, context, form, |
|
181 |
params, template=template) |
|
182 |
||
183 |
@decorators.merge_params |
|
184 |
@decorators.check_access |
|
858
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
185 |
def export(self, request, access_type, |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
186 |
page_name=None, params=None, **kwargs): |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
187 |
"""Displays the export page for the entity specified by **kwargs. |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
188 |
|
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
189 |
Params usage: |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
190 |
rights: The rights dictionary is used to check if the user has |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
191 |
the required rights to view the export page for this entity. |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
192 |
See checkAccess for more details on how the rights dictionary |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
193 |
is used to check access rights. |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
194 |
error_export: The error_export value is used as template when |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
195 |
the key values (as defined by the page's url) do not |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
196 |
correspond to an existing entity. |
1805
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
197 |
Params is passed to download, refer to it's docstring for more |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
198 |
details on how it uses it. |
858
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
199 |
|
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
200 |
Args: |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
201 |
request: the standard Django HTTP request object |
957
5b657063b23b
Add missing parameter description to docstring of soc.views.models.base module methods.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
939
diff
changeset
|
202 |
access_type : the name of the access type which should be checked |
858
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
203 |
page_name: the page name displayed in templates as page and header title |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
204 |
params: a dict with params for this View |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
205 |
kwargs: the Key Fields for the specified entity |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
206 |
""" |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
207 |
|
1805
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
208 |
if not ('export_content_type' in params) and ('export_function' in params): |
858
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
209 |
return self.public(request, access_type, page_name=page_name, |
874
30e9629bf590
Fixed two trivial bugs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
858
diff
changeset
|
210 |
params=params, **kwargs) |
858
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
211 |
|
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
212 |
# create default template context for use with any templates |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
213 |
entity = None |
1784
d5dacf2be926
Use params['logic'] instead of self._logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1703
diff
changeset
|
214 |
logic = params['logic'] |
858
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
215 |
|
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
216 |
if not all(kwargs.values()): |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
217 |
#TODO: Change this into a proper redirect |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
218 |
return http.HttpResponseRedirect('/') |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
219 |
|
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
220 |
try: |
1784
d5dacf2be926
Use params['logic'] instead of self._logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1703
diff
changeset
|
221 |
entity = logic.getFromKeyFieldsOr404(kwargs) |
858
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
222 |
except out_of_band.Error, error: |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
223 |
return helper.responses.errorResponse( |
1805
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
224 |
error, request, template=params['error_export']) |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
225 |
|
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
226 |
export_function = params['export_function'] |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
227 |
data, filename = export_function(entity) |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
228 |
|
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
229 |
return self.download(request, data, filename, params) |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
230 |
|
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
231 |
def download(self, request, data, filename, params): |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
232 |
"""Returns data as a downloadable file with the specified name. |
858
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
233 |
|
1805
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
234 |
Params usage: |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
235 |
export_template: The export_template value is used as template |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
236 |
to display the export page of the found entity. |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
237 |
export_content_type: The export_content_type value is used to set |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
238 |
the Content-Type header of the HTTP response. If empty (or None), |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
239 |
public() is called instead. |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
240 |
export_extension: The export_extension value is used as the suffix |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
241 |
of the file that will be offered for download. |
858
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
242 |
|
1805
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
243 |
Args: |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
244 |
request: the standard Django HTTP request object |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
245 |
data: the data that should be offered as file content |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
246 |
filename: the name the file should have |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
247 |
params: a dict with params for this View |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
248 |
""" |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
249 |
|
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
250 |
context = {} |
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
251 |
context['data'] = data |
858
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
252 |
|
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
253 |
template = params['export_template'] |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
254 |
|
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
255 |
response_args = {'mimetype': params['export_content_type']} |
1399
5b154edd94ac
Make it easier to support other extensions per-Model (such as .csv, etc.).
Todd Larsen <tlarsen@google.com>
parents:
1398
diff
changeset
|
256 |
|
1400
842958b8a55d
Rebased my double work on top of Todd recent commit
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1399
diff
changeset
|
257 |
export_extension = params['export_extension'] |
842958b8a55d
Rebased my double work on top of Todd recent commit
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1399
diff
changeset
|
258 |
|
1398
e6a11f0dba68
Force browser to ask to save an Export, and provide a filename extension.
Todd Larsen <tlarsen@google.com>
parents:
1373
diff
changeset
|
259 |
response_headers = { |
1399
5b154edd94ac
Make it easier to support other extensions per-Model (such as .csv, etc.).
Todd Larsen <tlarsen@google.com>
parents:
1398
diff
changeset
|
260 |
'Content-Disposition': 'attachment; filename=%s%s' % ( |
1805
7204ec5ead23
Factor download functionality out of export()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1801
diff
changeset
|
261 |
filename, export_extension), |
1398
e6a11f0dba68
Force browser to ask to save an Export, and provide a filename extension.
Todd Larsen <tlarsen@google.com>
parents:
1373
diff
changeset
|
262 |
} |
858
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
263 |
|
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
264 |
return helper.responses.respond(request, template, context=context, |
1398
e6a11f0dba68
Force browser to ask to save an Export, and provide a filename extension.
Todd Larsen <tlarsen@google.com>
parents:
1373
diff
changeset
|
265 |
response_args=response_args, |
e6a11f0dba68
Force browser to ask to save an Export, and provide a filename extension.
Todd Larsen <tlarsen@google.com>
parents:
1373
diff
changeset
|
266 |
response_headers=response_headers) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
267 |
|
876
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
268 |
@decorators.check_access |
710
edb5dbb1dea7
Add explicit access_types from the url
Sverre Rabbelier <srabbelier@gmail.com>
parents:
708
diff
changeset
|
269 |
def create(self, request, access_type, |
edb5dbb1dea7
Add explicit access_types from the url
Sverre Rabbelier <srabbelier@gmail.com>
parents:
708
diff
changeset
|
270 |
page_name=None, params=None, **kwargs): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
271 |
"""Displays the create page for this entity type. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
272 |
|
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
273 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
274 |
The params dictionary is passed on to edit, see the docstring |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
275 |
for edit on how it uses it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
276 |
|
373
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
277 |
Args: |
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
278 |
request: the standard Django HTTP request object |
957
5b657063b23b
Add missing parameter description to docstring of soc.views.models.base module methods.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
939
diff
changeset
|
279 |
access_type : the name of the access type which should be checked |
500
44ea4620c5c0
Replace old page parameter doc string description with new one for page_name.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
499
diff
changeset
|
280 |
page_name: the page name displayed in templates as page and header title |
471
dcb1f7821b39
Remove stop parameter from home_settings and site_settings views. This is something Sverre didn't mean to commit :-) Add missing params description to the models Base class docs.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
459
diff
changeset
|
281 |
params: a dict with params for this View |
373
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
282 |
kwargs: not used for create() |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
283 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
284 |
|
663
c2dcae606699
Make base.View.create lookup the scope if appropriate
Sverre Rabbelier <srabbelier@gmail.com>
parents:
662
diff
changeset
|
285 |
new_params = dicts.merge(params, self._params) |
c2dcae606699
Make base.View.create lookup the scope if appropriate
Sverre Rabbelier <srabbelier@gmail.com>
parents:
662
diff
changeset
|
286 |
|
2204
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
287 |
# redirect to scope selection view |
663
c2dcae606699
Make base.View.create lookup the scope if appropriate
Sverre Rabbelier <srabbelier@gmail.com>
parents:
662
diff
changeset
|
288 |
if ('scope_view' in new_params) and ('scope_path' not in kwargs): |
c2dcae606699
Make base.View.create lookup the scope if appropriate
Sverre Rabbelier <srabbelier@gmail.com>
parents:
662
diff
changeset
|
289 |
view = new_params['scope_view'].view |
c2dcae606699
Make base.View.create lookup the scope if appropriate
Sverre Rabbelier <srabbelier@gmail.com>
parents:
662
diff
changeset
|
290 |
redirect = new_params['scope_redirect'] |
c2dcae606699
Make base.View.create lookup the scope if appropriate
Sverre Rabbelier <srabbelier@gmail.com>
parents:
662
diff
changeset
|
291 |
return self.select(request, view, redirect, |
c2dcae606699
Make base.View.create lookup the scope if appropriate
Sverre Rabbelier <srabbelier@gmail.com>
parents:
662
diff
changeset
|
292 |
params=params, page_name=page_name, **kwargs) |
c2dcae606699
Make base.View.create lookup the scope if appropriate
Sverre Rabbelier <srabbelier@gmail.com>
parents:
662
diff
changeset
|
293 |
|
c2dcae606699
Make base.View.create lookup the scope if appropriate
Sverre Rabbelier <srabbelier@gmail.com>
parents:
662
diff
changeset
|
294 |
params = new_params |
492
4abdeedfc08e
Fixed redirection after creation to Just Work
Sverre Rabbelier <srabbelier@gmail.com>
parents:
490
diff
changeset
|
295 |
|
2204
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
296 |
context = helper.responses.getUniversalContext(request) |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
297 |
helper.responses.useJavaScript(context, params['js_uses_all']) |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
298 |
context['page_name'] = page_name |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
299 |
|
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
300 |
if request.method == 'POST': |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
301 |
return self.createPost(request, context, params) |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
302 |
else: |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
303 |
return self.createGet(request, context, params, kwargs) |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
304 |
|
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
305 |
def createGet(self, request, context, params, seed): |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
306 |
"""See editGet. |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
307 |
|
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
308 |
Handles generating the patch to create new entities. |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
309 |
""" |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
310 |
|
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
311 |
self._editSeed(request, seed) |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
312 |
|
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
313 |
if seed: |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
314 |
# pass the seed through the context to _constructResponse |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
315 |
# it will be popped before dispatching to Django |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
316 |
context['seed'] = seed |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
317 |
form = params['create_form'](initial=seed) |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
318 |
else: |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
319 |
form = params['create_form']() |
410
2af7f84f4fc7
Moved all key_name related things to the logic modules
Sverre Rabbelier <srabbelier@gmail.com>
parents:
409
diff
changeset
|
320 |
|
2204
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
321 |
return self._constructResponse(request, None, context, form, params) |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
322 |
|
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
323 |
def createPost(self, request, context, params): |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
324 |
"""See editPost. |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
325 |
|
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
326 |
Handles the creation of new entities. |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
327 |
""" |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
328 |
|
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
329 |
form = params['create_form'](request.POST) |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
330 |
|
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
331 |
if not form.is_valid(): |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
332 |
return self._constructResponse(request, None, context, form, params) |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
333 |
|
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
334 |
_, fields = forms.collectCleanedFields(form) |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
335 |
self._editPost(request, None, fields) |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
336 |
|
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
337 |
logic = params['logic'] |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
338 |
entity = logic.updateOrCreateFromFields(fields) |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
339 |
|
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
340 |
page_params = params['edit_params'] |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
341 |
params['suffix'] = entity.key().id_or_name() |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
342 |
|
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
343 |
request.path = params['edit_redirect'] % params |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
344 |
|
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
345 |
return helper.responses.redirectToChangedSuffix( |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
346 |
request, None, params=page_params) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
347 |
|
876
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
348 |
@decorators.merge_params |
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
349 |
@decorators.check_access |
710
edb5dbb1dea7
Add explicit access_types from the url
Sverre Rabbelier <srabbelier@gmail.com>
parents:
708
diff
changeset
|
350 |
def edit(self, request, access_type, |
edb5dbb1dea7
Add explicit access_types from the url
Sverre Rabbelier <srabbelier@gmail.com>
parents:
708
diff
changeset
|
351 |
page_name=None, params=None, seed=None, **kwargs): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
352 |
"""Displays the edit page for the entity specified by **kwargs. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
353 |
|
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
354 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
355 |
The params dictionary is passed on to either editGet or editPost |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
356 |
depending on the method type of the request. See the docstring |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
357 |
for editGet and editPost on how they use it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
358 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
359 |
rights: The rights dictionary is used to check if the user has |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
360 |
the required rights to edit (or create) a new entity. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
361 |
See checkAccess for more details on how the rights dictionary |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
362 |
is used to check access rights. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
363 |
name: The name value is used to construct the message_fmt of the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
364 |
raised error when there key_values do not define an existing |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
365 |
entity. See DEF_CREATE_NEW_ENTITY_MSG_FMT on how the name |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
366 |
(and the lower() version of it) is used. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
367 |
missing_redirect: The missing_redirect value is also used to |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
368 |
construct the message_fmt mentioned above. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
369 |
error_public: The error_public value is used as the template for |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
370 |
the error response mentioned above. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
371 |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
372 |
Args: |
373
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
373 |
request: the standard Django HTTP request object |
957
5b657063b23b
Add missing parameter description to docstring of soc.views.models.base module methods.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
939
diff
changeset
|
374 |
access_type : the name of the access type which should be checked |
500
44ea4620c5c0
Replace old page parameter doc string description with new one for page_name.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
499
diff
changeset
|
375 |
page_name: the page name displayed in templates as page and header title |
471
dcb1f7821b39
Remove stop parameter from home_settings and site_settings views. This is something Sverre didn't mean to commit :-) Add missing params description to the models Base class docs.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
459
diff
changeset
|
376 |
params: a dict with params for this View |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
377 |
kwargs: The Key Fields for the specified entity |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
378 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
379 |
|
1784
d5dacf2be926
Use params['logic'] instead of self._logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1703
diff
changeset
|
380 |
logic = params['logic'] |
d5dacf2be926
Use params['logic'] instead of self._logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1703
diff
changeset
|
381 |
|
373
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
382 |
context = helper.responses.getUniversalContext(request) |
1357
3dd1507aa723
Prepare all views for a new modular approach to JS loading
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1349
diff
changeset
|
383 |
helper.responses.useJavaScript(context, params['js_uses_all']) |
482
839740b061ad
Factor out direct use of the page object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
471
diff
changeset
|
384 |
context['page_name'] = page_name |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
385 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
386 |
try: |
2204
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
387 |
entity = logic.getFromKeyFieldsOr404(kwargs) |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
388 |
except out_of_band.Error, error: |
2204
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
389 |
msg = self.DEF_CREATE_NEW_ENTITY_MSG_FMT % { |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
390 |
'entity_type_lower' : params['name'].lower(), |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
391 |
'entity_type' : params['name'], |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
392 |
'create' : params['missing_redirect'] |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
393 |
} |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
394 |
error.message_fmt = error.message_fmt + msg |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
395 |
return helper.responses.errorResponse( |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
396 |
error, request, context=context) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
397 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
398 |
if request.method == 'POST': |
876
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
399 |
return self.editPost(request, entity, context, params=params) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
400 |
else: |
2204
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
401 |
return self.editGet(request, entity, context, params=params) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
402 |
|
876
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
403 |
@decorators.merge_params |
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
404 |
def editPost(self, request, entity, context, params=None): |
639
1f92bd41b914
Some docstring fixes in few modules (soc.views.helper soc.views.models.base).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
632
diff
changeset
|
405 |
"""Processes POST requests for the specified entity. |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
406 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
407 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
408 |
The params dictionary is passed to _constructResponse when the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
409 |
form is not valid (see edit_form and create_form below). See |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
410 |
the docstring of _constructResponse on how it uses it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
411 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
412 |
edit_form: The edit_form value is used as form when there is an |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
413 |
existing entity. It is provided with with the request.POST |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
414 |
dictionary on construction. The collectCleanedFields method |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
415 |
is called with the newly constructed form. If the form is |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
416 |
not valid, it is passed as argument to _constructResponse. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
417 |
create_form: The create_form value is used in a similar way to |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
418 |
edit_form, only it is used when there is no existing entity. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
419 |
edit_redirect: The edit_redirect value is used as the first part |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
420 |
of the url if the form was valid. The last part of the url is |
2161
3b5e0e0880cd
Remove getKeySuffix and it's usage
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2160
diff
changeset
|
421 |
created using the .key().id_or_name() method of the entity. |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
422 |
edit_params: The edit_params dictionary is used as argument to |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
423 |
redirectToChangedSuffix, it will be appended to the url in the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
424 |
standard ?key=value format. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
425 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
426 |
Args: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
427 |
request: a django request object |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
428 |
entity: the entity that will be modified or created, may be None |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
429 |
context: the context dictionary that will be provided to Django |
876
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
430 |
params: required, a dict with params for this View |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
431 |
""" |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
432 |
|
1784
d5dacf2be926
Use params['logic'] instead of self._logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1703
diff
changeset
|
433 |
logic = params['logic'] |
d5dacf2be926
Use params['logic'] instead of self._logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1703
diff
changeset
|
434 |
|
2204
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
435 |
form = params['edit_form'](request.POST) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
436 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
437 |
if not form.is_valid(): |
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
438 |
return self._constructResponse(request, entity, context, form, params) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
439 |
|
2205
77273200ab4f
Fix user_self calling editGet with a wrong parameter
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2204
diff
changeset
|
440 |
_, fields = forms.collectCleanedFields(form) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
441 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
442 |
self._editPost(request, entity, fields) |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
443 |
|
2204
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
444 |
entity = logic.updateEntityProperties(entity, fields) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
445 |
|
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
446 |
page_params = params['edit_params'] |
2161
3b5e0e0880cd
Remove getKeySuffix and it's usage
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2160
diff
changeset
|
447 |
params['suffix'] = entity.key().id_or_name() |
735
28225172af06
Make it possible to redirect anywhere after editPost
Sverre Rabbelier <srabbelier@gmail.com>
parents:
714
diff
changeset
|
448 |
|
28225172af06
Make it possible to redirect anywhere after editPost
Sverre Rabbelier <srabbelier@gmail.com>
parents:
714
diff
changeset
|
449 |
request.path = params['edit_redirect'] % params |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
450 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
451 |
return helper.responses.redirectToChangedSuffix( |
735
28225172af06
Make it possible to redirect anywhere after editPost
Sverre Rabbelier <srabbelier@gmail.com>
parents:
714
diff
changeset
|
452 |
request, None, params=page_params) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
453 |
|
876
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
454 |
@decorators.merge_params |
2204
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
455 |
def editGet(self, request, entity, context, params=None): |
639
1f92bd41b914
Some docstring fixes in few modules (soc.views.helper soc.views.models.base).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
632
diff
changeset
|
456 |
"""Processes GET requests for the specified entity. |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
457 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
458 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
459 |
The params dictionary is passed to _constructResponse, see the |
639
1f92bd41b914
Some docstring fixes in few modules (soc.views.helper soc.views.models.base).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
632
diff
changeset
|
460 |
docstring of _constructResponse on how it uses it. |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
461 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
462 |
save_message: The save_message list is used as argument to |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
463 |
getSingleIndexedParamValue when an existing entity was saved. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
464 |
edit_form: The edit_form is used as form if there is an existing |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
465 |
entity. The existing entity is passed as instance to it on |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
466 |
construction. If key_name is part of it's fields it will be |
2160
3f9dd37d98a8
Use key().id_or_name() instead of key().name()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2132
diff
changeset
|
467 |
set to the entity's key().id_or_name() value. It is also passed as |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
468 |
argument to the _editGet method. See the docstring for |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
469 |
_editGet on how it uses it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
470 |
create_form: The create_form is used as form if there was no |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
471 |
existing entity. If the seed argument is present, it is passed |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
472 |
as the 'initial' argument on construction. Otherwise, it is |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
473 |
called with no arguments. |
611
2ec30182e5f1
Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
610
diff
changeset
|
474 |
submit_msg_param_name: The submit_msg_param_name value is used |
2ec30182e5f1
Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
610
diff
changeset
|
475 |
as the key part in the ?key=value construct for the submit |
2ec30182e5f1
Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
610
diff
changeset
|
476 |
message parameter (see also save_message). |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
477 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
478 |
Args: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
479 |
request: the django request object |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
480 |
entity: the entity that will be edited, may be None |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
481 |
context: the context dictionary that will be provided to django |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
482 |
seed: if no entity is provided, the initial values for the new entity |
876
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
483 |
params: required, a dict with params for this View |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
484 |
""" |
403
d3e545a8bd26
Some more improvements to the generic view code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
402
diff
changeset
|
485 |
|
2193
0b6ec4a223cf
Comment out unused variables in soc.views.models.base module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
2164
diff
changeset
|
486 |
# logic = params['logic'] |
2164
94e498e3dd44
Brown paper bag fix
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2161
diff
changeset
|
487 |
suffix = entity.key().id_or_name() if entity else None |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
488 |
|
1373
178bd19966fe
Fixes the problem of <Entity> Saved not being
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1357
diff
changeset
|
489 |
# remove the params from the request, this is relevant only if |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
490 |
# someone bookmarked a POST page. |
2081
0490222fab35
Fix wrong usage of helper requests module in soc.views.models.base after recent unused imports cleanup.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
2076
diff
changeset
|
491 |
is_self_referrer = requests.isReferrerSelf( |
1373
178bd19966fe
Fixes the problem of <Entity> Saved not being
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1357
diff
changeset
|
492 |
request, suffix=suffix, url_name=params['url_name']) |
178bd19966fe
Fixes the problem of <Entity> Saved not being
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1357
diff
changeset
|
493 |
|
611
2ec30182e5f1
Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
610
diff
changeset
|
494 |
if request.GET.get(params['submit_msg_param_name']): |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
495 |
if (not entity) or (not is_self_referrer): |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
496 |
return http.HttpResponseRedirect(request.path) |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
497 |
|
2204
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
498 |
# note: no message will be displayed if parameter is not present |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
499 |
context['notice'] = requests.getSingleIndexedParamValue( |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
500 |
request, params['submit_msg_param_name'], |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
501 |
values=params['save_message']) |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
502 |
|
2204
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
503 |
# populate form with the existing entity |
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
504 |
form = params['edit_form'](instance=entity) |
939
b341698bf3b1
Make reference picker work for create too
Sverre Rabbelier <srabbelier@gmail.com>
parents:
937
diff
changeset
|
505 |
|
2204
ccbc8bb5ce86
Split edit and create into different methods
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2193
diff
changeset
|
506 |
self._editGet(request, entity, form) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
507 |
|
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
508 |
return self._constructResponse(request, entity, context, form, params) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
509 |
|
876
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
510 |
@decorators.merge_params |
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
511 |
@decorators.check_access |
710
edb5dbb1dea7
Add explicit access_types from the url
Sverre Rabbelier <srabbelier@gmail.com>
parents:
708
diff
changeset
|
512 |
def list(self, request, access_type, |
1667
95bc81b4cd5c
Updated list to use the new order in getForFields.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1658
diff
changeset
|
513 |
page_name=None, params=None, filter=None, order=None, **kwargs): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
514 |
"""Displays the list page for the entity type. |
1326 | 515 |
|
373
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
516 |
Args: |
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
517 |
request: the standard Django HTTP request object |
957
5b657063b23b
Add missing parameter description to docstring of soc.views.models.base module methods.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
939
diff
changeset
|
518 |
access_type : the name of the access type which should be checked |
500
44ea4620c5c0
Replace old page parameter doc string description with new one for page_name.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
499
diff
changeset
|
519 |
page_name: the page name displayed in templates as page and header title |
471
dcb1f7821b39
Remove stop parameter from home_settings and site_settings views. This is something Sverre didn't mean to commit :-) Add missing params description to the models Base class docs.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
459
diff
changeset
|
520 |
params: a dict with params for this View |
516
ec1dcd70b97e
The list method in models/base.py can now use a filter to make a selection of entities to show.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
514
diff
changeset
|
521 |
filter: a dict for the properties that the entities should have |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
522 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
523 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
524 |
The params dictionary is passed as argument to getListContent in |
1326 | 525 |
the soc.views.helper.list module. See the docstring for getListContent |
526 |
on how it uses it. The params dictionary is also passed as argument to |
|
639
1f92bd41b914
Some docstring fixes in few modules (soc.views.helper soc.views.models.base).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
632
diff
changeset
|
527 |
the _list method. See the docstring for _list on how it uses it. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
528 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
529 |
|
1667
95bc81b4cd5c
Updated list to use the new order in getForFields.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1658
diff
changeset
|
530 |
content = helper.lists.getListContent(request, params, filter, order=order) |
555
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
531 |
contents = [content] |
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
532 |
|
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
533 |
return self._list(request, params, contents, page_name) |
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
534 |
|
1326 | 535 |
def _list(self, request, params, contents, page_name, context=None): |
639
1f92bd41b914
Some docstring fixes in few modules (soc.views.helper soc.views.models.base).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
632
diff
changeset
|
536 |
"""Returns the list page for the specified contents. |
555
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
537 |
|
1806
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
538 |
If the export parameter is present in request.GET a csv export of |
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
539 |
the specified list is returned instead, see csv(). |
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
540 |
|
555
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
541 |
Args: |
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
542 |
request: the standard Django HTTP request object |
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
543 |
params: a dict with params for this View |
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
544 |
contents: a list of content dicts |
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
545 |
page_name: the page name displayed in templates as page and header title |
1296
64918d0c97ea
Implemented the 2nd part of bulk acceptance.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1269
diff
changeset
|
546 |
context: the context for this page |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
547 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
548 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
549 |
name: The name value is used to set the entity_type in the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
550 |
context so that the template can refer to it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
551 |
name_plural: The name_plural value is used to set |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
552 |
the entity_type_plural value in the context so that the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
553 |
template can refer to it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
554 |
list_template: The list_template value is used as template for |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
555 |
to display the list of all entities for this View. |
555
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
556 |
""" |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
557 |
|
1806
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
558 |
try: |
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
559 |
export = int(request.GET.get('export', -1)) |
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
560 |
export = export if export >= 0 else None |
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
561 |
except ValueError: |
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
562 |
export = None |
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
563 |
|
2119
15cfe49eea42
Brown paper bag fix
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2108
diff
changeset
|
564 |
content = [i for i in contents if i.get('idx') == export] |
2108
286aa6528e84
Properly handle exports when there are multiple lists
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2081
diff
changeset
|
565 |
if len(content) == 1: |
286aa6528e84
Properly handle exports when there are multiple lists
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2081
diff
changeset
|
566 |
content = content[0] |
1806
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
567 |
key_order = content.get('key_order') |
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
568 |
|
1864
3d50c8c34d6a
Don't create csv export when no key_order is defined
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1844
diff
changeset
|
569 |
if key_order: |
3d50c8c34d6a
Don't create csv export when no key_order is defined
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1844
diff
changeset
|
570 |
data = [i.toDict(key_order) for i in content['data']] |
1806
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
571 |
|
1864
3d50c8c34d6a
Don't create csv export when no key_order is defined
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1844
diff
changeset
|
572 |
filename = "export_%d" % export |
3d50c8c34d6a
Don't create csv export when no key_order is defined
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1844
diff
changeset
|
573 |
return self.csv(request, data, filename, params, key_order) |
1806
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
574 |
|
1326 | 575 |
context = dicts.merge(context, |
1296
64918d0c97ea
Implemented the 2nd part of bulk acceptance.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1269
diff
changeset
|
576 |
helper.responses.getUniversalContext(request)) |
1357
3dd1507aa723
Prepare all views for a new modular approach to JS loading
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1349
diff
changeset
|
577 |
helper.responses.useJavaScript(context, params['js_uses_all']) |
555
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
578 |
context['page_name'] = page_name |
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
579 |
context['list'] = soc.logic.lists.Lists(contents) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
580 |
|
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
581 |
context['entity_type'] = params['name'] |
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
582 |
context['entity_type_plural'] = params['name_plural'] |
1967
3fe7ad2d40c0
Allow for a message to be displayed above the list view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1958
diff
changeset
|
583 |
context['list_msg'] = params['list_msg'] |
1458
ec06d3ee73e4
Make it possible to display a message when there are no lists
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1427
diff
changeset
|
584 |
context['no_lists_msg'] = params['no_lists_msg'] |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
585 |
|
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
586 |
template = params['list_template'] |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
587 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
588 |
return helper.responses.respond(request, template, context) |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
589 |
|
876
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
590 |
@decorators.merge_params |
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
591 |
@decorators.check_access |
710
edb5dbb1dea7
Add explicit access_types from the url
Sverre Rabbelier <srabbelier@gmail.com>
parents:
708
diff
changeset
|
592 |
def delete(self, request, access_type, |
edb5dbb1dea7
Add explicit access_types from the url
Sverre Rabbelier <srabbelier@gmail.com>
parents:
708
diff
changeset
|
593 |
page_name=None, params=None, **kwargs): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
594 |
"""Shows the delete page for the entity specified by **kwargs. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
595 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
596 |
Args: |
373
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
597 |
request: the standard Django HTTP request object |
957
5b657063b23b
Add missing parameter description to docstring of soc.views.models.base module methods.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
939
diff
changeset
|
598 |
access_type : the name of the access type which should be checked |
500
44ea4620c5c0
Replace old page parameter doc string description with new one for page_name.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
499
diff
changeset
|
599 |
page_name: the page name displayed in templates as page and header title |
471
dcb1f7821b39
Remove stop parameter from home_settings and site_settings views. This is something Sverre didn't mean to commit :-) Add missing params description to the models Base class docs.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
459
diff
changeset
|
600 |
params: a dict with params for this View |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
601 |
kwargs: The Key Fields for the specified entity |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
602 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
603 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
604 |
rights: The rights dictionary is used to check if the user has |
1326 | 605 |
the required rights to delete the specified entity. See checkAccess |
606 |
for more details on how the rights dictionary is used to check access |
|
639
1f92bd41b914
Some docstring fixes in few modules (soc.views.helper soc.views.models.base).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
632
diff
changeset
|
607 |
rights. |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
608 |
name: used in the same way as in edit(), see it's docstring for |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
609 |
a more detailed explanation on how it is used. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
610 |
missing_redirect: see name |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
611 |
error_edit: see name |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
612 |
delete_redirect: The delete_redirect value is used as the url to |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
613 |
redirect to after having successfully deleted the entity. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
614 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
615 |
|
1784
d5dacf2be926
Use params['logic'] instead of self._logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1703
diff
changeset
|
616 |
logic = params['logic'] |
d5dacf2be926
Use params['logic'] instead of self._logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1703
diff
changeset
|
617 |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
618 |
try: |
1784
d5dacf2be926
Use params['logic'] instead of self._logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1703
diff
changeset
|
619 |
entity = logic.getFromKeyFieldsOr404(kwargs) |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
620 |
except out_of_band.Error, error: |
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
621 |
error.message_fmt = ( |
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
622 |
error.message_fmt + self.DEF_CREATE_NEW_ENTITY_MSG_FMT % { |
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
623 |
'entity_type_lower' : params['name'].lower(), |
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
624 |
'entity_type' : params['name'], |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
625 |
'create' : params['missing_redirect']}) |
646
860e17e5118f
Remove cyclic imports by moving response method of out_of_band.Error class to soc.views.helper.responses module as errorResponse function. Apply changes to affected files.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
639
diff
changeset
|
626 |
return helper.responses.errorResponse( |
1357
3dd1507aa723
Prepare all views for a new modular approach to JS loading
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1349
diff
changeset
|
627 |
error, request, template=params['error_edit']) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
628 |
|
1784
d5dacf2be926
Use params['logic'] instead of self._logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1703
diff
changeset
|
629 |
if not logic.isDeletable(entity): |
1594
b80bf089d5f7
Display a notice if the entity cannot be deleted
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1500
diff
changeset
|
630 |
page_params = params['cannot_delete_params'] |
2160
3f9dd37d98a8
Use key().id_or_name() instead of key().name()
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2132
diff
changeset
|
631 |
params['suffix'] = entity.key().id_or_name() |
1594
b80bf089d5f7
Display a notice if the entity cannot be deleted
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1500
diff
changeset
|
632 |
request.path = params['edit_redirect'] % params |
b80bf089d5f7
Display a notice if the entity cannot be deleted
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1500
diff
changeset
|
633 |
|
b80bf089d5f7
Display a notice if the entity cannot be deleted
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1500
diff
changeset
|
634 |
# redirect to the edit page |
b80bf089d5f7
Display a notice if the entity cannot be deleted
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1500
diff
changeset
|
635 |
# display notice that entity could not be deleted |
b80bf089d5f7
Display a notice if the entity cannot be deleted
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1500
diff
changeset
|
636 |
return helper.responses.redirectToChangedSuffix( |
b80bf089d5f7
Display a notice if the entity cannot be deleted
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1500
diff
changeset
|
637 |
request, None, params=page_params) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
638 |
|
1784
d5dacf2be926
Use params['logic'] instead of self._logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1703
diff
changeset
|
639 |
logic.delete(entity) |
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
640 |
redirect = params['delete_redirect'] |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
641 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
642 |
return http.HttpResponseRedirect(redirect) |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
643 |
|
933
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
644 |
def select(self, request, view, redirect, |
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
645 |
page_name=None, params=None, filter=None): |
668
77f9a6ea6e67
Some style and typo fixes in different modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
663
diff
changeset
|
646 |
"""Displays a list page allowing the user to select an entity. |
653
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
647 |
|
876
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
648 |
After having selected the Scope, the user is redirected to the |
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
649 |
'create a new entity' page with the scope_path set appropriately. |
653
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
650 |
|
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
651 |
Params usage: |
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
652 |
The params dictionary is also passed to getListContent from |
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
653 |
the helper.list module, please refer to its docstring also. |
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
654 |
The params dictionary is passed to self._list as well, refer |
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
655 |
to its docstring for details on how it uses it. |
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
656 |
|
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
657 |
Args: |
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
658 |
request: the standard Django HTTP request object |
933
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
659 |
view: the view for which to generate the select page |
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
660 |
redirect: the redirect to use |
653
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
661 |
page_name: the page name displayed in templates as page and header title |
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
662 |
params: a dict with params for this View |
933
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
663 |
filter: a filter that all displayed entities should satisfy |
653
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
664 |
""" |
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
665 |
|
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
666 |
params = dicts.merge(params, view.getParams()) |
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
667 |
params = dicts.merge(params, self._params) |
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
668 |
params['list_action'] = (redirect, self._params) |
663
c2dcae606699
Make base.View.create lookup the scope if appropriate
Sverre Rabbelier <srabbelier@gmail.com>
parents:
662
diff
changeset
|
669 |
params['list_description'] = self.DEF_CREATE_INSTRUCTION_MSG_FMT % ( |
c2dcae606699
Make base.View.create lookup the scope if appropriate
Sverre Rabbelier <srabbelier@gmail.com>
parents:
662
diff
changeset
|
670 |
params['name'], self._params['name']) |
653
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
671 |
|
933
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
672 |
content = helper.lists.getListContent(request, params, filter=filter) |
653
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
673 |
contents = [content] |
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
674 |
|
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
675 |
return self._list(request, params, contents, page_name) |
5105939d3bb4
Make the 'select entity' View generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
652
diff
changeset
|
676 |
|
1958
8e8f45dd46e3
Made _getPickData more generic by supporting ordening
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1879
diff
changeset
|
677 |
def _getData(self, model, filter, order, logic): |
1796
5cd78a7aacdd
Allow for query caching in pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1790
diff
changeset
|
678 |
"""Retrieves the pick data for this query. |
5cd78a7aacdd
Allow for query caching in pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1790
diff
changeset
|
679 |
|
5cd78a7aacdd
Allow for query caching in pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1790
diff
changeset
|
680 |
Args: |
5cd78a7aacdd
Allow for query caching in pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1790
diff
changeset
|
681 |
model: the model that is being queried |
5cd78a7aacdd
Allow for query caching in pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1790
diff
changeset
|
682 |
filter: the filters that apply |
5cd78a7aacdd
Allow for query caching in pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1790
diff
changeset
|
683 |
logic: the logic that will be used for the query |
5cd78a7aacdd
Allow for query caching in pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1790
diff
changeset
|
684 |
""" |
5cd78a7aacdd
Allow for query caching in pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1790
diff
changeset
|
685 |
|
1958
8e8f45dd46e3
Made _getPickData more generic by supporting ordening
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1879
diff
changeset
|
686 |
entities = logic.getForFields(filter=filter, order=order, limit=1000) |
1796
5cd78a7aacdd
Allow for query caching in pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1790
diff
changeset
|
687 |
return entities |
5cd78a7aacdd
Allow for query caching in pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1790
diff
changeset
|
688 |
|
933
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
689 |
@decorators.merge_params |
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
690 |
@decorators.check_access |
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
691 |
def pick(self, request, acces_type, page_name=None, params=None): |
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
692 |
"""Displays a list page allowing the user to select an entity. |
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
693 |
|
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
694 |
After having selected an entity, the user is redirected to the |
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
695 |
return_url as specified in the GET args. |
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
696 |
|
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
697 |
Params usage: |
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
698 |
The params dictionary is passed to self.select, refer |
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
699 |
to its docstring for details on how it uses it. |
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
700 |
|
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
701 |
Args: |
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
702 |
request: the standard Django HTTP request object |
957
5b657063b23b
Add missing parameter description to docstring of soc.views.models.base module methods.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
939
diff
changeset
|
703 |
access_type : the name of the access type which should be checked |
933
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
704 |
page_name: the page name displayed in templates as page and header title |
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
705 |
params: a dict with params for this View |
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
706 |
""" |
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
707 |
|
1784
d5dacf2be926
Use params['logic'] instead of self._logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1703
diff
changeset
|
708 |
logic = params['logic'] |
d5dacf2be926
Use params['logic'] instead of self._logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1703
diff
changeset
|
709 |
|
1304
b736aed728c2
Convert the QueryDict to a regular dictionary
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1296
diff
changeset
|
710 |
# convert to a regular dict |
b736aed728c2
Convert the QueryDict to a regular dictionary
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1296
diff
changeset
|
711 |
filter = {} |
b736aed728c2
Convert the QueryDict to a regular dictionary
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1296
diff
changeset
|
712 |
for key in request.GET.keys(): |
b736aed728c2
Convert the QueryDict to a regular dictionary
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1296
diff
changeset
|
713 |
# need to use getlist as we want to support multiple values |
b736aed728c2
Convert the QueryDict to a regular dictionary
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1296
diff
changeset
|
714 |
filter[key] = request.GET.getlist(key) |
933
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
715 |
|
1796
5cd78a7aacdd
Allow for query caching in pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1790
diff
changeset
|
716 |
if params['cache_pick']: |
1958
8e8f45dd46e3
Made _getPickData more generic by supporting ordening
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1879
diff
changeset
|
717 |
fun = soc.cache.logic.cache(self._getData) |
1796
5cd78a7aacdd
Allow for query caching in pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1790
diff
changeset
|
718 |
else: |
1958
8e8f45dd46e3
Made _getPickData more generic by supporting ordening
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1879
diff
changeset
|
719 |
fun = self._getData |
1796
5cd78a7aacdd
Allow for query caching in pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1790
diff
changeset
|
720 |
|
1958
8e8f45dd46e3
Made _getPickData more generic by supporting ordening
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1879
diff
changeset
|
721 |
order = [] |
8e8f45dd46e3
Made _getPickData more generic by supporting ordening
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1879
diff
changeset
|
722 |
entities = fun(logic.getModel(), filter, order, logic) |
1790
7655a46dcfa3
Retrieve all entities rather than just the first 1k
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1784
diff
changeset
|
723 |
|
2132
37c6fe0c426c
Make it possible to specify the key_order for pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2119
diff
changeset
|
724 |
key_order = params.get('cache_pick_order') |
37c6fe0c426c
Make it possible to specify the key_order for pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2119
diff
changeset
|
725 |
data = [i.toDict(key_order) for i in entities] |
933
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
726 |
|
1703
6d6813e83756
Factor out the 'json' part from pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1700
diff
changeset
|
727 |
return self.json(request, data) |
6d6813e83756
Factor out the 'json' part from pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1700
diff
changeset
|
728 |
|
6d6813e83756
Factor out the 'json' part from pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1700
diff
changeset
|
729 |
def json(self, request, data): |
6d6813e83756
Factor out the 'json' part from pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1700
diff
changeset
|
730 |
"""Returns data as a json object. |
6d6813e83756
Factor out the 'json' part from pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1700
diff
changeset
|
731 |
""" |
6d6813e83756
Factor out the 'json' part from pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1700
diff
changeset
|
732 |
|
977
d212d5f4c41a
Have /entity/pick return a JSON object instead of a user view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
973
diff
changeset
|
733 |
to_json = { |
d212d5f4c41a
Have /entity/pick return a JSON object instead of a user view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
973
diff
changeset
|
734 |
'data': data, |
d212d5f4c41a
Have /entity/pick return a JSON object instead of a user view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
973
diff
changeset
|
735 |
} |
d212d5f4c41a
Have /entity/pick return a JSON object instead of a user view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
973
diff
changeset
|
736 |
|
d212d5f4c41a
Have /entity/pick return a JSON object instead of a user view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
973
diff
changeset
|
737 |
json = simplejson.dumps(to_json) |
d212d5f4c41a
Have /entity/pick return a JSON object instead of a user view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
973
diff
changeset
|
738 |
|
d212d5f4c41a
Have /entity/pick return a JSON object instead of a user view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
973
diff
changeset
|
739 |
context = {'json': json} |
d212d5f4c41a
Have /entity/pick return a JSON object instead of a user view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
973
diff
changeset
|
740 |
template = 'soc/json.html' |
d212d5f4c41a
Have /entity/pick return a JSON object instead of a user view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
973
diff
changeset
|
741 |
|
1331
e6fc2238bab0
Added no-cache headers to pick and bulk-accept views.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1326
diff
changeset
|
742 |
response = responses.respond(request, template, context) |
1703
6d6813e83756
Factor out the 'json' part from pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1700
diff
changeset
|
743 |
|
1349
d05a9bf08c11
Hopefully fix json caching issues in IE7.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1342
diff
changeset
|
744 |
# if the browser supports HTTP/1.1 |
d05a9bf08c11
Hopefully fix json caching issues in IE7.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1342
diff
changeset
|
745 |
# post-check and pre-check and no-store for IE7 |
1658
65147d9fbd96
Fix too long lines and rename unused loop variables to _ in soc.views.models.base module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1594
diff
changeset
|
746 |
response['Cache-Control'] = 'no-store, no-cache, must-revalidate, ' \ |
65147d9fbd96
Fix too long lines and rename unused loop variables to _ in soc.views.models.base module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1594
diff
changeset
|
747 |
'post-check=0, pre-check=0' |
1703
6d6813e83756
Factor out the 'json' part from pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1700
diff
changeset
|
748 |
|
1349
d05a9bf08c11
Hopefully fix json caching issues in IE7.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1342
diff
changeset
|
749 |
# if the browser supports HTTP/1.0 |
1331
e6fc2238bab0
Added no-cache headers to pick and bulk-accept views.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1326
diff
changeset
|
750 |
response['Pragma'] = 'no-cache' |
1703
6d6813e83756
Factor out the 'json' part from pick
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1700
diff
changeset
|
751 |
|
1331
e6fc2238bab0
Added no-cache headers to pick and bulk-accept views.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1326
diff
changeset
|
752 |
return response |
933
7331232d6356
Added a 'pick' view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
880
diff
changeset
|
753 |
|
1806
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
754 |
def csv(self, request, data, filename, params, key_order=None): |
1879
60e48bc3aee3
Some minor style fixes.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1878
diff
changeset
|
755 |
"""Returns data as a csv file. |
1806
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
756 |
|
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
757 |
If key_order is set data should be a sequence of dicts, otherwise |
1879
60e48bc3aee3
Some minor style fixes.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1878
diff
changeset
|
758 |
data should be a sequence of lists, see csv.writer and |
1806
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
759 |
csv.DictWriter for more information. |
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
760 |
""" |
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
761 |
|
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
762 |
params = params.copy() |
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
763 |
params['export_extension'] = '.csv' |
1844
006ca71ed07a
Set the content type to text/csv for csv exports
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1843
diff
changeset
|
764 |
params['export_content_type'] = 'text/csv' |
2076
1cd180cc56c9
Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
2021
diff
changeset
|
765 |
# fieldnames = params['csv_fieldnames'] |
1806
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
766 |
|
2076
1cd180cc56c9
Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
2021
diff
changeset
|
767 |
file_handler = StringIO.StringIO() |
1806
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
768 |
|
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
769 |
if key_order: |
2076
1cd180cc56c9
Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
2021
diff
changeset
|
770 |
writer = csv.DictWriter(file_handler, key_order, dialect='excel') |
1843
af89d570bf6f
Add row headings to the csv export
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1809
diff
changeset
|
771 |
writer.writerow(dicts.identity(key_order)) |
1879
60e48bc3aee3
Some minor style fixes.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1878
diff
changeset
|
772 |
|
60e48bc3aee3
Some minor style fixes.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1878
diff
changeset
|
773 |
# encode the data to UTF-8 to ensure compatibiliy |
1878
25116444358c
Fix missing utf encoding of data when exporting lists to csv file.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1864
diff
changeset
|
774 |
for row_dict in data: |
25116444358c
Fix missing utf encoding of data when exporting lists to csv file.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1864
diff
changeset
|
775 |
for key in row_dict.keys(): |
2002
7698408e10a5
Fix csv export of properties that are not string (like datetime.time). Also replace name_on_documents with name helper property.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1991
diff
changeset
|
776 |
value = row_dict[key] |
2076
1cd180cc56c9
Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
2021
diff
changeset
|
777 |
if isinstance(value, basestring): |
1cd180cc56c9
Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
2021
diff
changeset
|
778 |
row_dict[key] = value.encode("utf-8") |
1cd180cc56c9
Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
2021
diff
changeset
|
779 |
else: |
1cd180cc56c9
Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
2021
diff
changeset
|
780 |
row_dict[key] = str(value) |
1878
25116444358c
Fix missing utf encoding of data when exporting lists to csv file.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1864
diff
changeset
|
781 |
writer.writerow(row_dict) |
1806
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
782 |
else: |
2076
1cd180cc56c9
Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
2021
diff
changeset
|
783 |
writer = csv.writer(file_handler, dialect='excel') |
1879
60e48bc3aee3
Some minor style fixes.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1878
diff
changeset
|
784 |
|
60e48bc3aee3
Some minor style fixes.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1878
diff
changeset
|
785 |
# encode the data to UTF-8 to ensure compatibiliy |
1878
25116444358c
Fix missing utf encoding of data when exporting lists to csv file.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1864
diff
changeset
|
786 |
for row in data: |
2002
7698408e10a5
Fix csv export of properties that are not string (like datetime.time). Also replace name_on_documents with name helper property.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1991
diff
changeset
|
787 |
if row: |
7698408e10a5
Fix csv export of properties that are not string (like datetime.time). Also replace name_on_documents with name helper property.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1991
diff
changeset
|
788 |
writer.writerow(row.encode("utf-8")) |
7698408e10a5
Fix csv export of properties that are not string (like datetime.time). Also replace name_on_documents with name helper property.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1991
diff
changeset
|
789 |
else: |
7698408e10a5
Fix csv export of properties that are not string (like datetime.time). Also replace name_on_documents with name helper property.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1991
diff
changeset
|
790 |
writer.writerow(row) |
1806
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
791 |
|
2076
1cd180cc56c9
Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
2021
diff
changeset
|
792 |
data = file_handler.getvalue() |
1806
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
793 |
|
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
794 |
return self.download(request, data, filename, params) |
d321d5123928
Added generic csv export to all list views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1805
diff
changeset
|
795 |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
796 |
def _editPost(self, request, entity, fields): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
797 |
"""Performs any required processing on the entity to post its edit page. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
798 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
799 |
Args: |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
800 |
request: the django request object |
639
1f92bd41b914
Some docstring fixes in few modules (soc.views.helper soc.views.models.base).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
632
diff
changeset
|
801 |
entity: the entity to create or update from POST contents |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
802 |
fields: the new field values |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
803 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
804 |
|
1700
599a5ff8f422
Clean document references
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1677
diff
changeset
|
805 |
references = self._params['references'] |
599a5ff8f422
Clean document references
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1677
diff
changeset
|
806 |
for field_name, original_name, _ in references: |
1268
9d092b702f92
Resolve references if they are specified
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1227
diff
changeset
|
807 |
if field_name not in fields: |
9d092b702f92
Resolve references if they are specified
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1227
diff
changeset
|
808 |
continue |
9d092b702f92
Resolve references if they are specified
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1227
diff
changeset
|
809 |
|
1700
599a5ff8f422
Clean document references
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1677
diff
changeset
|
810 |
entity = fields.get('resolved_%s' % field_name) |
1268
9d092b702f92
Resolve references if they are specified
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1227
diff
changeset
|
811 |
fields[original_name] = entity |
9d092b702f92
Resolve references if they are specified
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1227
diff
changeset
|
812 |
|
662
0e89b027b140
Make use of the new generic key_name by lookup up scope_path
Sverre Rabbelier <srabbelier@gmail.com>
parents:
653
diff
changeset
|
813 |
# If scope_logic is not defined, this entity has no scope |
677
c8f24e3078b8
Fix scope lookup for unscoped entities
Sverre Rabbelier <srabbelier@gmail.com>
parents:
668
diff
changeset
|
814 |
if not self._params['scope_logic']: |
662
0e89b027b140
Make use of the new generic key_name by lookup up scope_path
Sverre Rabbelier <srabbelier@gmail.com>
parents:
653
diff
changeset
|
815 |
return |
0e89b027b140
Make use of the new generic key_name by lookup up scope_path
Sverre Rabbelier <srabbelier@gmail.com>
parents:
653
diff
changeset
|
816 |
|
714
3e2ce3d8057a
Add missing dots in docstrings, proper sorting of imports and small docstring typo fixes.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
710
diff
changeset
|
817 |
# If this entity is unscoped, do not try to retrieve a scope |
701
d6f5d34cff5a
If an entity is unscoped, do not try to retrieve a scope
Sverre Rabbelier <srabbelier@gmail.com>
parents:
677
diff
changeset
|
818 |
if 'scope_path' not in fields: |
d6f5d34cff5a
If an entity is unscoped, do not try to retrieve a scope
Sverre Rabbelier <srabbelier@gmail.com>
parents:
677
diff
changeset
|
819 |
return |
d6f5d34cff5a
If an entity is unscoped, do not try to retrieve a scope
Sverre Rabbelier <srabbelier@gmail.com>
parents:
677
diff
changeset
|
820 |
|
1427
00a118a442f7
Scope is already set to entity.scope, so no need to overwrite in base._editPost().
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1424
diff
changeset
|
821 |
if not entity: |
1424
f8c762a33a43
Since scope does not change we do not need to call getFromKeyName every time.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1414
diff
changeset
|
822 |
scope = self._params['scope_logic'].logic.getFromKeyName( |
f8c762a33a43
Since scope does not change we do not need to call getFromKeyName every time.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1414
diff
changeset
|
823 |
fields['scope_path']) |
f8c762a33a43
Since scope does not change we do not need to call getFromKeyName every time.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1414
diff
changeset
|
824 |
fields['scope'] = scope |
446
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
825 |
|
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
826 |
def _public(self, request, entity, context): |
880 | 827 |
"""Performs any required processing to get an entity's public page. |
446
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
828 |
|
1991
3aeda3007467
Make _public return True iff public page should be shown
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1967
diff
changeset
|
829 |
Should return True iff the public page should be displayed. |
3aeda3007467
Make _public return True iff public page should be shown
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1967
diff
changeset
|
830 |
|
446
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
831 |
Args: |
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
832 |
request: the django request object |
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
833 |
entity: the entity to make public |
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
834 |
context: the context object |
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
835 |
""" |
1991
3aeda3007467
Make _public return True iff public page should be shown
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1967
diff
changeset
|
836 |
|
3aeda3007467
Make _public return True iff public page should be shown
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1967
diff
changeset
|
837 |
return True |
446
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
838 |
|
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
839 |
def _editGet(self, request, entity, form): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
840 |
"""Performs any required processing on the form to get its edit page. |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
841 |
|
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
842 |
Args: |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
843 |
request: the django request object |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
844 |
entity: the entity to get |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
845 |
form: the django form that will be used for the page |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
846 |
""" |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
847 |
|
662
0e89b027b140
Make use of the new generic key_name by lookup up scope_path
Sverre Rabbelier <srabbelier@gmail.com>
parents:
653
diff
changeset
|
848 |
# fill in the email field with the data from the entity |
677
c8f24e3078b8
Fix scope lookup for unscoped entities
Sverre Rabbelier <srabbelier@gmail.com>
parents:
668
diff
changeset
|
849 |
if 'scope_path' in form.fields: |
c8f24e3078b8
Fix scope lookup for unscoped entities
Sverre Rabbelier <srabbelier@gmail.com>
parents:
668
diff
changeset
|
850 |
form.fields['scope_path'].initial = entity.scope_path |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
851 |
|
1700
599a5ff8f422
Clean document references
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1677
diff
changeset
|
852 |
for field_name, _, getter in self._params['references']: |
1268
9d092b702f92
Resolve references if they are specified
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1227
diff
changeset
|
853 |
try: |
9d092b702f92
Resolve references if they are specified
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1227
diff
changeset
|
854 |
field = getter(entity) |
9d092b702f92
Resolve references if they are specified
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1227
diff
changeset
|
855 |
form.fields[field_name].initial = field.link_id if field else None |
9d092b702f92
Resolve references if they are specified
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1227
diff
changeset
|
856 |
except db.Error: |
2076
1cd180cc56c9
Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
2021
diff
changeset
|
857 |
# TODO(Pawel.Solyga): use logging to log exception |
1cd180cc56c9
Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
2021
diff
changeset
|
858 |
return |
1268
9d092b702f92
Resolve references if they are specified
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1227
diff
changeset
|
859 |
|
1414
69c812b91d37
Redone form field filling via request.GET to work on multiple fields.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1400
diff
changeset
|
860 |
for field, value in request.GET.iteritems(): |
69c812b91d37
Redone form field filling via request.GET to work on multiple fields.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1400
diff
changeset
|
861 |
if field in form.fields: |
69c812b91d37
Redone form field filling via request.GET to work on multiple fields.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1400
diff
changeset
|
862 |
form.fields[field].initial = value |
934
9fcc08971efe
Add a 'pick' view to the appropriate views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
933
diff
changeset
|
863 |
|
497
73666a7cd718
Added a default _editSeed method
Sverre Rabbelier <srabbelier@gmail.com>
parents:
495
diff
changeset
|
864 |
def _editSeed(self, request, seed): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
865 |
"""Performs any required processing on the form to get its edit page. |
497
73666a7cd718
Added a default _editSeed method
Sverre Rabbelier <srabbelier@gmail.com>
parents:
495
diff
changeset
|
866 |
|
73666a7cd718
Added a default _editSeed method
Sverre Rabbelier <srabbelier@gmail.com>
parents:
495
diff
changeset
|
867 |
Args: |
73666a7cd718
Added a default _editSeed method
Sverre Rabbelier <srabbelier@gmail.com>
parents:
495
diff
changeset
|
868 |
request: the django request object |
73666a7cd718
Added a default _editSeed method
Sverre Rabbelier <srabbelier@gmail.com>
parents:
495
diff
changeset
|
869 |
seed: the fields to seed the create page with |
73666a7cd718
Added a default _editSeed method
Sverre Rabbelier <srabbelier@gmail.com>
parents:
495
diff
changeset
|
870 |
""" |
1414
69c812b91d37
Redone form field filling via request.GET to work on multiple fields.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1400
diff
changeset
|
871 |
pass |
497
73666a7cd718
Added a default _editSeed method
Sverre Rabbelier <srabbelier@gmail.com>
parents:
495
diff
changeset
|
872 |
|
1269
62b1e9ee46c5
Add an _editContext hook
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1268
diff
changeset
|
873 |
def _editContext(self, request, context): |
62b1e9ee46c5
Add an _editContext hook
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1268
diff
changeset
|
874 |
"""Performs any required processing on the context for edit pages. |
62b1e9ee46c5
Add an _editContext hook
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1268
diff
changeset
|
875 |
|
62b1e9ee46c5
Add an _editContext hook
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1268
diff
changeset
|
876 |
Args: |
62b1e9ee46c5
Add an _editContext hook
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1268
diff
changeset
|
877 |
request: the django request object |
62b1e9ee46c5
Add an _editContext hook
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1268
diff
changeset
|
878 |
context: the context dictionary that will be used |
62b1e9ee46c5
Add an _editContext hook
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1268
diff
changeset
|
879 |
""" |
62b1e9ee46c5
Add an _editContext hook
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1268
diff
changeset
|
880 |
|
62b1e9ee46c5
Add an _editContext hook
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1268
diff
changeset
|
881 |
pass |
62b1e9ee46c5
Add an _editContext hook
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1268
diff
changeset
|
882 |
|
1339
c007dc7d00ca
Make _constructResponsoe take an optional template
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1331
diff
changeset
|
883 |
def _constructResponse(self, request, entity, context, |
c007dc7d00ca
Make _constructResponsoe take an optional template
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1331
diff
changeset
|
884 |
form, params, template=None): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
885 |
"""Updates the context and returns a response for the specified arguments. |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
886 |
|
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
887 |
Args: |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
888 |
request: the django request object |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
889 |
entity: the entity that is used and set in the context |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
890 |
context: the context to be used |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
891 |
form: the form that will be used and set in the context |
471
dcb1f7821b39
Remove stop parameter from home_settings and site_settings views. This is something Sverre didn't mean to commit :-) Add missing params description to the models Base class docs.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
459
diff
changeset
|
892 |
params: a dict with params for this View |
1339
c007dc7d00ca
Make _constructResponsoe take an optional template
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1331
diff
changeset
|
893 |
template: if specified, this template is |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
894 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
895 |
Params usage: |
2021
3ab5d0d73f38
Fixed some typo in app/soc/views/models/base.py
Chen Lunpeng <forever.clp@gmail.com>
parents:
2002
diff
changeset
|
896 |
name: The name value is used to set the entity_type |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
897 |
value in the context so that the template can refer to it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
898 |
name_plural: same as name, but used to set entity_type_plural |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
899 |
name_short: same as name, but used to set entity_type_short |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
900 |
url_name: same as name, but used to set entity_type_url |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
901 |
edit_template: The edit_template value is used as template when |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
902 |
there is an existing entity to display the edit page for the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
903 |
specified entity. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
904 |
create_template: similar to edit_template, but is used when |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
905 |
there is no existing entity. |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
906 |
""" |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
907 |
|
2193
0b6ec4a223cf
Comment out unused variables in soc.views.models.base module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
2164
diff
changeset
|
908 |
# logic = params['logic'] |
2164
94e498e3dd44
Brown paper bag fix
Sverre Rabbelier <srabbelier@gmail.com>
parents:
2161
diff
changeset
|
909 |
suffix = entity.key().id_or_name() if entity else None |
403
d3e545a8bd26
Some more improvements to the generic view code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
402
diff
changeset
|
910 |
|
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
911 |
context['form'] = form |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
912 |
context['entity'] = entity |
403
d3e545a8bd26
Some more improvements to the generic view code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
402
diff
changeset
|
913 |
context['entity_suffix'] = suffix |
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
914 |
context['entity_type'] = params['name'] |
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
915 |
context['entity_type_plural'] = params['name_plural'] |
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
916 |
context['entity_type_short'] = params['name_short'] |
502
e1e24c0a4e82
Add new parameters to views: url_name which is name used in urls (instead of using lower entity names) and module_name which is used for constructing django urls. Append changes to all affected files. Fix some title names. Change urls that included underscores like "site_settings" into urls with slash "site/settings". Plus some other minor fixes.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
500
diff
changeset
|
917 |
context['entity_type_url'] = params['url_name'] |
2330
068540d91bde
Now clicking cancel button returns user to previous page. Fixes issue 569.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
2212
diff
changeset
|
918 |
context['cancel_redirect'] = params.get('cancel_redirect') |
935
09f47e08f805
Adust the as_table tag to render a pick link if appropriate
Sverre Rabbelier <srabbelier@gmail.com>
parents:
934
diff
changeset
|
919 |
context['return_url'] = request.path |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
920 |
|
874
30e9629bf590
Fixed two trivial bugs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
858
diff
changeset
|
921 |
if params.get('export_content_type') and entity: |
858
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
922 |
context['export_link'] = redirects.getExportRedirect(entity, params) |
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
923 |
|
1339
c007dc7d00ca
Make _constructResponsoe take an optional template
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1331
diff
changeset
|
924 |
if not template: |
c007dc7d00ca
Make _constructResponsoe take an optional template
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1331
diff
changeset
|
925 |
if entity: |
c007dc7d00ca
Make _constructResponsoe take an optional template
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1331
diff
changeset
|
926 |
template = params['edit_template'] |
c007dc7d00ca
Make _constructResponsoe take an optional template
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1331
diff
changeset
|
927 |
else: |
c007dc7d00ca
Make _constructResponsoe take an optional template
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1331
diff
changeset
|
928 |
template = params['create_template'] |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
929 |
|
1269
62b1e9ee46c5
Add an _editContext hook
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1268
diff
changeset
|
930 |
self._editContext(request, context) |
1497
1387f0d2cf45
Pass the seed to _constructResponse
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1468
diff
changeset
|
931 |
|
1387f0d2cf45
Pass the seed to _constructResponse
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1468
diff
changeset
|
932 |
# remove the seed from the context before dispatching to Django |
1387f0d2cf45
Pass the seed to _constructResponse
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1468
diff
changeset
|
933 |
context.pop('seed', None) |
1387f0d2cf45
Pass the seed to _constructResponse
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1468
diff
changeset
|
934 |
|
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
935 |
return helper.responses.respond(request, template, context) |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
936 |
|
652
02323664d532
Cleanups in preparation of general selector view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
651
diff
changeset
|
937 |
def getParams(self): |
668
77f9a6ea6e67
Some style and typo fixes in different modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
663
diff
changeset
|
938 |
"""Returns this view's params attribute. |
652
02323664d532
Cleanups in preparation of general selector view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
651
diff
changeset
|
939 |
""" |
02323664d532
Cleanups in preparation of general selector view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
651
diff
changeset
|
940 |
|
02323664d532
Cleanups in preparation of general selector view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
651
diff
changeset
|
941 |
return self._params |
02323664d532
Cleanups in preparation of general selector view
Sverre Rabbelier <srabbelier@gmail.com>
parents:
651
diff
changeset
|
942 |
|
876
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
943 |
@decorators.merge_params |
1017
6ad4fdb48840
Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents:
977
diff
changeset
|
944 |
def getSidebarMenus(self, id, user, params=None): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
945 |
"""Returns an dictionary with one sidebar entry. |
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
946 |
|
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
947 |
Args: |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
948 |
params: a dict with params for this View |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
949 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
950 |
Params usage: |
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
613
diff
changeset
|
951 |
The params dictionary is passed as argument to getSidebarItems |
639
1f92bd41b914
Some docstring fixes in few modules (soc.views.helper soc.views.models.base).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
632
diff
changeset
|
952 |
from the soc.views.sitemap.sidebar module, see the docstring |
1f92bd41b914
Some docstring fixes in few modules (soc.views.helper soc.views.models.base).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
632
diff
changeset
|
953 |
of _getSidebarItems on how it uses it. |
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
954 |
""" |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
955 |
|
2333
221482a54238
First step in the module design
Sverre Rabbelier <sverre@rabbelier.nl>
parents:
2330
diff
changeset
|
956 |
return sidebar.getSidebarMenus(id, user, params=params) |
494
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
957 |
|
876
0c1329d4b514
Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
874
diff
changeset
|
958 |
@decorators.merge_params |
494
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
959 |
def getDjangoURLPatterns(self, params=None): |
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
613
diff
changeset
|
960 |
"""Retrieves a list of sidebar entries for this view |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
961 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
962 |
Params usage: |
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
613
diff
changeset
|
963 |
The params dictionary is passed to the getDjangoURLPatterns |
639
1f92bd41b914
Some docstring fixes in few modules (soc.views.helper soc.views.models.base).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
632
diff
changeset
|
964 |
function in the soc.views.sitemap.sitemap module, see the |
1f92bd41b914
Some docstring fixes in few modules (soc.views.helper soc.views.models.base).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
632
diff
changeset
|
965 |
docstring of getDjangoURLPatterns on how it uses it. |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
966 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
967 |
Args: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
968 |
params: a dict with params for this View |
494
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
969 |
""" |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
970 |
|
2333
221482a54238
First step in the module design
Sverre Rabbelier <sverre@rabbelier.nl>
parents:
2330
diff
changeset
|
971 |
return sitemap.getDjangoURLPatterns(params) |
858
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
755
diff
changeset
|
972 |