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