app/soc/views/models/site.py
author Lennard de Rijk <ljvderijk@gmail.com>
Sat, 11 Jul 2009 23:29:22 +0200
changeset 2598 59ebf718c6a4
parent 2392 b53e1cdb0398
child 2656 25210120d67b
permissions -rw-r--r--
Changed URL pattern for starting sending out survey reminders.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
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.
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     4
#
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     8
#
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    10
#
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    16
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    17
"""Views for Site Settings.
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    18
"""
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    19
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    20
__authors__ = [
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    21
    '"Sverre Rabbelier" <sverre@rabbelier.nl>',
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    22
  ]
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    23
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    24
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    25
from django import forms
1240
a94c9bcfa05d Always return a site singleton and fix Edit Site Settings
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1144
diff changeset
    26
from django.utils.translation import ugettext
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    27
1396
2238f2af7428 Clean the e-mail field
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1343
diff changeset
    28
from soc.logic import cleaning
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    29
from soc.logic import dicts
1526
5c31184594a5 Convert everything to use the new access methods
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
    30
from soc.views import out_of_band
551
2ee7ad5266a8 Define a default for rights['public'] in views/models/base.py. Alter rights
Todd Larsen <tlarsen@google.com>
parents: 544
diff changeset
    31
from soc.views.helper import access
1583
1e4c785f1adf Added decorators
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1581
diff changeset
    32
from soc.views.helper import decorators
1100
db177bcdfe29 Added a 'create new document' link to site
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1053
diff changeset
    33
from soc.views.helper import redirects
1581
4484186d7427 Added a maintenance page
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1526
diff changeset
    34
from soc.views.helper import responses
1240
a94c9bcfa05d Always return a site singleton and fix Edit Site Settings
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1144
diff changeset
    35
from soc.views.helper import widgets
706
19f55eb5f194 Add site scoped documents to the Site menu
Sverre Rabbelier <srabbelier@gmail.com>
parents: 702
diff changeset
    36
from soc.views.models import document as document_view
1053
3b9552cf748a Rename the confusing Tossed Model class to PresenceWithToS.
Todd Larsen <tlarsen@google.com>
parents: 1051
diff changeset
    37
from soc.views.models import presence_with_tos
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    38
534
c31cfbf1a20f Replace HomeSettings with Presence Model class. Replace SiteSettings with
Todd Larsen <tlarsen@google.com>
parents: 513
diff changeset
    39
import soc.models.site
c31cfbf1a20f Replace HomeSettings with Presence Model class. Replace SiteSettings with
Todd Larsen <tlarsen@google.com>
parents: 513
diff changeset
    40
import soc.logic.models.site
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    41
import soc.logic.dicts
1789
6f112b2ebd1f Return a HttpResponse in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1635
diff changeset
    42
import soc.logic.system
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    43
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    44
1053
3b9552cf748a Rename the confusing Tossed Model class to PresenceWithToS.
Todd Larsen <tlarsen@google.com>
parents: 1051
diff changeset
    45
class View(presence_with_tos.View):
499
d22e4fe8e64b Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 494
diff changeset
    46
  """View methods for the Document model.
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    47
  """
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    48
656
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 624
diff changeset
    49
  def __init__(self, params=None):
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    50
    """Defines the fields and methods required for the base View class
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    51
    to provide the user with list, public, create, edit and delete views.
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    52
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    53
    Params:
656
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 624
diff changeset
    54
      params: a dict with params for this View
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    55
    """
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    56
1007
3b66772d21a5 Major refactor of the access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 973
diff changeset
    57
    rights = access.Checker(params)
3b66772d21a5 Major refactor of the access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 973
diff changeset
    58
    rights['unspecified'] = ['checkIsDeveloper']
3b66772d21a5 Major refactor of the access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 973
diff changeset
    59
    rights['any_access'] = ['allow']
1109
a83d8c5e6650 Edited the access check for show in site settings.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1102
diff changeset
    60
    rights['show'] = ['checkIsDeveloper']
708
89f1a8c2ea59 Some cleanups in role.py and site.py and create()
Sverre Rabbelier <srabbelier@gmail.com>
parents: 706
diff changeset
    61
656
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 624
diff changeset
    62
    new_params = {}
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 624
diff changeset
    63
    new_params['logic'] = soc.logic.models.site.logic
708
89f1a8c2ea59 Some cleanups in role.py and site.py and create()
Sverre Rabbelier <srabbelier@gmail.com>
parents: 706
diff changeset
    64
    new_params['rights'] = rights
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    65
656
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 624
diff changeset
    66
    new_params['name'] = "Site Settings"
903
7110fc489fd0 Rename "site/settings" to "site"
Sverre Rabbelier <srabbelier@gmail.com>
parents: 901
diff changeset
    67
    new_params['name_plural'] = new_params['name']
1303
08433090cff8 Add prefix filtering and refactored program field generation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1247
diff changeset
    68
    new_params['document_prefix'] = 'site'
656
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 624
diff changeset
    69
    new_params['name_short'] = "Site"
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    70
656
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 624
diff changeset
    71
    new_params['sidebar_defaults'] = [('/%s/edit', 'Edit %(name)s', 'edit')]
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 624
diff changeset
    72
    new_params['sidebar_heading'] = new_params['name_short']
542
7cc99461b64d Remove redundant dicts for URL patterns and sidebar menu text, and use the
Todd Larsen <tlarsen@google.com>
parents: 537
diff changeset
    73
1049
cc6aedbde28d Fixed the edit site view having a delete button
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1017
diff changeset
    74
    new_params['edit_template'] = 'soc/site/edit.html'
921
e499cc2641f6 Create a new 'home' view for Presences
Sverre Rabbelier <srabbelier@gmail.com>
parents: 904
diff changeset
    75
    new_params['home_template'] = 'soc/site/home.html'
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    76
1430
ff8cc6b15e6a Rename dynafields to dynaproperties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1396
diff changeset
    77
    new_params['create_extra_dynaproperties'] = {
904
a6397daf4006 Hide the 'link_id' field for site
Sverre Rabbelier <srabbelier@gmail.com>
parents: 903
diff changeset
    78
        'link_id': forms.CharField(widget=forms.HiddenInput, required=True),
1396
2238f2af7428 Clean the e-mail field
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1343
diff changeset
    79
        'clean_noreply_email': cleaning.clean_empty_field('noreply_email'),
904
a6397daf4006 Hide the 'link_id' field for site
Sverre Rabbelier <srabbelier@gmail.com>
parents: 903
diff changeset
    80
        }
1430
ff8cc6b15e6a Rename dynafields to dynaproperties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1396
diff changeset
    81
    new_params['edit_extra_dynaproperties'] = {
1240
a94c9bcfa05d Always return a site singleton and fix Edit Site Settings
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1144
diff changeset
    82
        'link_id': forms.CharField(widget=forms.HiddenInput, required=True),
a94c9bcfa05d Always return a site singleton and fix Edit Site Settings
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1144
diff changeset
    83
        'home_link_id': widgets.ReferenceField(
1303
08433090cff8 Add prefix filtering and refactored program field generation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1247
diff changeset
    84
            reference_url='document', required=False,
08433090cff8 Add prefix filtering and refactored program field generation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1247
diff changeset
    85
            filter_fields={'prefix': new_params['document_prefix']},
08433090cff8 Add prefix filtering and refactored program field generation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1247
diff changeset
    86
            label=ugettext('Home page Document link ID'),
1240
a94c9bcfa05d Always return a site singleton and fix Edit Site Settings
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1144
diff changeset
    87
            help_text=soc.models.work.Work.link_id.help_text),
a94c9bcfa05d Always return a site singleton and fix Edit Site Settings
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1144
diff changeset
    88
        'tos_link_id': widgets.ReferenceField(
1303
08433090cff8 Add prefix filtering and refactored program field generation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1247
diff changeset
    89
            reference_url='document', required=False,
08433090cff8 Add prefix filtering and refactored program field generation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1247
diff changeset
    90
            filter_fields={'prefix': new_params['document_prefix']},
08433090cff8 Add prefix filtering and refactored program field generation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1247
diff changeset
    91
            label=ugettext('Terms of Service Document link ID'),
1240
a94c9bcfa05d Always return a site singleton and fix Edit Site Settings
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1144
diff changeset
    92
            help_text=soc.models.work.Work.link_id.help_text),
a94c9bcfa05d Always return a site singleton and fix Edit Site Settings
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1144
diff changeset
    93
        }
904
a6397daf4006 Hide the 'link_id' field for site
Sverre Rabbelier <srabbelier@gmail.com>
parents: 903
diff changeset
    94
660
5a381b290691 Introduced django_extra_patterns
Sverre Rabbelier <srabbelier@gmail.com>
parents: 656
diff changeset
    95
    patterns = []
5a381b290691 Introduced django_extra_patterns
Sverre Rabbelier <srabbelier@gmail.com>
parents: 656
diff changeset
    96
5a381b290691 Introduced django_extra_patterns
Sverre Rabbelier <srabbelier@gmail.com>
parents: 656
diff changeset
    97
    page_name = "Home Page"
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 1901
diff changeset
    98
    patterns += [(r'^$', 'soc.views.models.%(module_name)s.main_public',
660
5a381b290691 Introduced django_extra_patterns
Sverre Rabbelier <srabbelier@gmail.com>
parents: 656
diff changeset
    99
                  page_name)]
5a381b290691 Introduced django_extra_patterns
Sverre Rabbelier <srabbelier@gmail.com>
parents: 656
diff changeset
   100
702
e3b91b6955ff Remove bogus scope from Site
Sverre Rabbelier <srabbelier@gmail.com>
parents: 660
diff changeset
   101
    page_name = "Edit Site"
710
edb5dbb1dea7 Add explicit access_types from the url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 708
diff changeset
   102
    patterns += [(r'^%(url_name)s/(?P<access_type>edit)$',
660
5a381b290691 Introduced django_extra_patterns
Sverre Rabbelier <srabbelier@gmail.com>
parents: 656
diff changeset
   103
                  'soc.views.models.%(module_name)s.main_edit',
5a381b290691 Introduced django_extra_patterns
Sverre Rabbelier <srabbelier@gmail.com>
parents: 656
diff changeset
   104
                  page_name)]
5a381b290691 Introduced django_extra_patterns
Sverre Rabbelier <srabbelier@gmail.com>
parents: 656
diff changeset
   105
1789
6f112b2ebd1f Return a HttpResponse in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1635
diff changeset
   106
    if soc.logic.system.isDebug():
6f112b2ebd1f Return a HttpResponse in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1635
diff changeset
   107
      patterns += [('^seed_db$', 'soc.models.seed_db.seed', "Seed DB"),
6f112b2ebd1f Return a HttpResponse in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1635
diff changeset
   108
                   ('^clear_db$', 'soc.models.seed_db.clear', "Clear DB"),
1901
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   109
                   ('^reseed_db$', 'soc.models.seed_db.reseed', "Reseed DB"),
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   110
                   ('^seed_many$', 'soc.models.seed_db.seed_many', "Seed Many"),
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 1901
diff changeset
   111
                   ('^new_seed_many$', 'soc.models.seed_db.new_seed_many',
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 1901
diff changeset
   112
                    "New Seed Many"),
1901
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   113
                   ]
1789
6f112b2ebd1f Return a HttpResponse in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1635
diff changeset
   114
660
5a381b290691 Introduced django_extra_patterns
Sverre Rabbelier <srabbelier@gmail.com>
parents: 656
diff changeset
   115
    new_params['extra_django_patterns'] = patterns
5a381b290691 Introduced django_extra_patterns
Sverre Rabbelier <srabbelier@gmail.com>
parents: 656
diff changeset
   116
656
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 624
diff changeset
   117
    params = dicts.merge(params, new_params)
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   118
656
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 624
diff changeset
   119
    super(View, self).__init__(params=params)
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   120
1017
6ad4fdb48840 Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1007
diff changeset
   121
  def getSidebarMenus(self, id, user, params=None):
706
19f55eb5f194 Add site scoped documents to the Site menu
Sverre Rabbelier <srabbelier@gmail.com>
parents: 702
diff changeset
   122
    """See base.View.getSidebarMenus.
19f55eb5f194 Add site scoped documents to the Site menu
Sverre Rabbelier <srabbelier@gmail.com>
parents: 702
diff changeset
   123
19f55eb5f194 Add site scoped documents to the Site menu
Sverre Rabbelier <srabbelier@gmail.com>
parents: 702
diff changeset
   124
    Returns a custom sidebar entry for the 'site' singleton.
19f55eb5f194 Add site scoped documents to the Site menu
Sverre Rabbelier <srabbelier@gmail.com>
parents: 702
diff changeset
   125
    """
19f55eb5f194 Add site scoped documents to the Site menu
Sverre Rabbelier <srabbelier@gmail.com>
parents: 702
diff changeset
   126
1017
6ad4fdb48840 Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1007
diff changeset
   127
    entity = self._logic.getSingleton()
706
19f55eb5f194 Add site scoped documents to the Site menu
Sverre Rabbelier <srabbelier@gmail.com>
parents: 702
diff changeset
   128
2189
8c9ab031a6b3 Remove redundant if check
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2048
diff changeset
   129
    submenus = document_view.view.getMenusForScope(entity, self._params)
1526
5c31184594a5 Convert everything to use the new access methods
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   130
2189
8c9ab031a6b3 Remove redundant if check
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2048
diff changeset
   131
    try:
8c9ab031a6b3 Remove redundant if check
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2048
diff changeset
   132
      rights = self._params['rights']
8c9ab031a6b3 Remove redundant if check
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2048
diff changeset
   133
      rights.setCurrentUser(id, user)
8c9ab031a6b3 Remove redundant if check
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2048
diff changeset
   134
      rights.checkIsHost()
8c9ab031a6b3 Remove redundant if check
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2048
diff changeset
   135
      is_host = True
8c9ab031a6b3 Remove redundant if check
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2048
diff changeset
   136
    except out_of_band.Error:
8c9ab031a6b3 Remove redundant if check
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2048
diff changeset
   137
      is_host = False
1526
5c31184594a5 Convert everything to use the new access methods
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   138
2189
8c9ab031a6b3 Remove redundant if check
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2048
diff changeset
   139
    if is_host:
8c9ab031a6b3 Remove redundant if check
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2048
diff changeset
   140
      submenus += [(redirects.getCreateDocumentRedirect(entity, 'site'),
8c9ab031a6b3 Remove redundant if check
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2048
diff changeset
   141
          "Create a New Document", 'any_access')]
706
19f55eb5f194 Add site scoped documents to the Site menu
Sverre Rabbelier <srabbelier@gmail.com>
parents: 702
diff changeset
   142
2189
8c9ab031a6b3 Remove redundant if check
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2048
diff changeset
   143
      submenus += [(redirects.getListDocumentsRedirect(entity, 'site'),
8c9ab031a6b3 Remove redundant if check
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2048
diff changeset
   144
          "List Documents", 'any_access')]
2210
1095b52ed667 Add priority groups and jobs to the sitemap
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2189
diff changeset
   145
    submenus += [('/priority_group/list', "List Priority Groups", 'edit')]
1095b52ed667 Add priority groups and jobs to the sitemap
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2189
diff changeset
   146
    submenus += [('/job/list', "List Jobs", 'edit')]
1317
fad74cf4e5da Add a 'list documents' link everywhere
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
   147
706
19f55eb5f194 Add site scoped documents to the Site menu
Sverre Rabbelier <srabbelier@gmail.com>
parents: 702
diff changeset
   148
    new_params = {}
19f55eb5f194 Add site scoped documents to the Site menu
Sverre Rabbelier <srabbelier@gmail.com>
parents: 702
diff changeset
   149
    new_params['sidebar_additional'] = submenus
19f55eb5f194 Add site scoped documents to the Site menu
Sverre Rabbelier <srabbelier@gmail.com>
parents: 702
diff changeset
   150
19f55eb5f194 Add site scoped documents to the Site menu
Sverre Rabbelier <srabbelier@gmail.com>
parents: 702
diff changeset
   151
    params = dicts.merge(params, new_params)
1017
6ad4fdb48840 Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1007
diff changeset
   152
    return super(View, self).getSidebarMenus(id, user, params=params)
706
19f55eb5f194 Add site scoped documents to the Site menu
Sverre Rabbelier <srabbelier@gmail.com>
parents: 702
diff changeset
   153
559
44e50e92621e Fix names of methods in soc.views.model.site.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 554
diff changeset
   154
  def mainPublic(self, request, page_name=None, **kwargs):
499
d22e4fe8e64b Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 494
diff changeset
   155
    """Displays the main site settings page.
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   156
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   157
    Args:
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   158
      request: the standard Django HTTP request object
500
44ea4620c5c0 Replace old page parameter doc string description with new one for page_name.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 499
diff changeset
   159
      page_name: the page name displayed in templates as page and header title
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   160
      kwargs: not used
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   161
    """
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   162
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   163
    keys = self._logic.getKeyFieldNames()
537
f2bd9c465a6d Fix getKeyValues() method footprint mismatches in soc.logic.models.site.Logic
Todd Larsen <tlarsen@google.com>
parents: 536
diff changeset
   164
f2bd9c465a6d Fix getKeyValues() method footprint mismatches in soc.logic.models.site.Logic
Todd Larsen <tlarsen@google.com>
parents: 536
diff changeset
   165
    # No entity in this case, since Site key values are hard-coded for the
f2bd9c465a6d Fix getKeyValues() method footprint mismatches in soc.logic.models.site.Logic
Todd Larsen <tlarsen@google.com>
parents: 536
diff changeset
   166
    # Site singleton, so pass in None to match parent method footprint.
1115
0a723ff3d27c Cleanups in base.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1109
diff changeset
   167
    values = self._logic.getKeyValuesFromEntity(None)
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   168
    key_values = dicts.zip(keys, values)
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   169
921
e499cc2641f6 Create a new 'home' view for Presences
Sverre Rabbelier <srabbelier@gmail.com>
parents: 904
diff changeset
   170
    return self.home(request, "home", page_name=page_name, **key_values)
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   171
559
44e50e92621e Fix names of methods in soc.views.model.site.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 554
diff changeset
   172
  def mainEdit(self, request, page_name=None, **kwargs):
499
d22e4fe8e64b Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 494
diff changeset
   173
    """Displays the edit page for the main site settings page.
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   174
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   175
    Args:
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   176
      request: the standard Django HTTP request object
500
44ea4620c5c0 Replace old page parameter doc string description with new one for page_name.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 499
diff changeset
   177
      page_name: the page name displayed in templates as page and header title
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   178
      kwargs: not used
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   179
    """
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   180
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   181
    keys = self._logic.getKeyFieldNames()
537
f2bd9c465a6d Fix getKeyValues() method footprint mismatches in soc.logic.models.site.Logic
Todd Larsen <tlarsen@google.com>
parents: 536
diff changeset
   182
f2bd9c465a6d Fix getKeyValues() method footprint mismatches in soc.logic.models.site.Logic
Todd Larsen <tlarsen@google.com>
parents: 536
diff changeset
   183
    # No entity in this case, since Site key values are hard-coded for the
f2bd9c465a6d Fix getKeyValues() method footprint mismatches in soc.logic.models.site.Logic
Todd Larsen <tlarsen@google.com>
parents: 536
diff changeset
   184
    # Site singleton, so pass in None to match parent method footprint.
1115
0a723ff3d27c Cleanups in base.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1109
diff changeset
   185
    values = self._logic.getKeyValuesFromEntity(None)
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   186
    key_values = dicts.zip(keys, values)
921
e499cc2641f6 Create a new 'home' view for Presences
Sverre Rabbelier <srabbelier@gmail.com>
parents: 904
diff changeset
   187
717
f3f43ba566ef Fixed missing header in site settings.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 710
diff changeset
   188
    return self.edit(request, "edit", page_name, seed=key_values, **key_values)
446
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   189
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   190
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   191
view = View()
0b479d573a4c Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   192
1584
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1583
diff changeset
   193
admin = decorators.view(view.admin)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1583
diff changeset
   194
create = decorators.view(view.create)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1583
diff changeset
   195
edit = decorators.view(view.edit)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1583
diff changeset
   196
delete = decorators.view(view.delete)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1583
diff changeset
   197
list = decorators.view(view.list)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1583
diff changeset
   198
public = decorators.view(view.public)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1583
diff changeset
   199
export = decorators.view(view.export)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1583
diff changeset
   200
main_public = decorators.view(view.mainPublic)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1583
diff changeset
   201
main_edit = decorators.view(view.mainEdit)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1583
diff changeset
   202
home = decorators.view(view.home)