app/soc/views/helper/redirects.py
author Lennard de Rijk <ljvderijk@gmail.com>
Fri, 23 Jan 2009 12:00:48 +0000
changeset 920 39badbfb80be
parent 891 3d40190f35b6
child 923 5a10f6db154b
permissions -rw-r--r--
Added the new way to process invites for club_admin only. This patch contains the separability needed to ensure that we can successfully do the access checks we need. Host invites can for the time being only be completed by developers due to the reorganization. Patch by: Lennard de Rijk Reviewed by: to-be-reviewed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
611
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     2
#
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     3
# Copyright 2008 the Melange authors.
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     4
#
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     8
#
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    10
#
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    16
639
1f92bd41b914 Some docstring fixes in few modules (soc.views.helper soc.views.models.base).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 620
diff changeset
    17
"""Redirect related methods.
611
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    18
"""
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    19
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    20
__authors__ = [
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    21
  '"Sverre Rabbelier" <sverre@rabbelier.nl>',
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    22
  ]
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    23
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    24
891
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
    25
from google.appengine.ext import db
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
    26
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
    27
654
68bafa9f719f Fixed the 'New Host' link
Sverre Rabbelier <srabbelier@gmail.com>
parents: 652
diff changeset
    28
def getInviteRedirect(entity, params):
667
f96095df1433 Some more import sorting fixes and docstring typos in program modules and soc.views.helper.redirects module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 654
diff changeset
    29
  """Returns the invitation redirect for the specified entity.
654
68bafa9f719f Fixed the 'New Host' link
Sverre Rabbelier <srabbelier@gmail.com>
parents: 652
diff changeset
    30
  """
68bafa9f719f Fixed the 'New Host' link
Sverre Rabbelier <srabbelier@gmail.com>
parents: 652
diff changeset
    31
68bafa9f719f Fixed the 'New Host' link
Sverre Rabbelier <srabbelier@gmail.com>
parents: 652
diff changeset
    32
  result ='/%s/invite/%s' % (
698
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    33
      params['url_name'], entity.key().name())
654
68bafa9f719f Fixed the 'New Host' link
Sverre Rabbelier <srabbelier@gmail.com>
parents: 652
diff changeset
    34
68bafa9f719f Fixed the 'New Host' link
Sverre Rabbelier <srabbelier@gmail.com>
parents: 652
diff changeset
    35
  return result
68bafa9f719f Fixed the 'New Host' link
Sverre Rabbelier <srabbelier@gmail.com>
parents: 652
diff changeset
    36
667
f96095df1433 Some more import sorting fixes and docstring typos in program modules and soc.views.helper.redirects module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 654
diff changeset
    37
652
02323664d532 Cleanups in preparation of general selector view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 643
diff changeset
    38
def getCreateRedirect(entity, params):
643
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 639
diff changeset
    39
  """Returns the create program redirect for the specified entity.
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 639
diff changeset
    40
  """
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 639
diff changeset
    41
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 639
diff changeset
    42
  result ='/%s/create/%s' % (
698
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    43
      params['url_name'], entity.key().name())
643
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 639
diff changeset
    44
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 639
diff changeset
    45
  return result
620
e74e0b74625f Put the redirects in the views/helper/redirects.py module.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 611
diff changeset
    46
667
f96095df1433 Some more import sorting fixes and docstring typos in program modules and soc.views.helper.redirects module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 654
diff changeset
    47
611
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    48
def getEditRedirect(entity, params):
620
e74e0b74625f Put the redirects in the views/helper/redirects.py module.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 611
diff changeset
    49
  """Returns the edit redirect for the specified entity.
611
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    50
  """
2ec30182e5f1 Move parameter construction into a seperate module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    51
698
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    52
  return '/%s/edit/%s' % (
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    53
      params['url_name'], entity.key().name())
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    54
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    55
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    56
def getPublicRedirect(entity, params):
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    57
  """Returns the public redirect for the specified entity.
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    58
  """
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    59
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    60
  return '/%s/show/%s' % (
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    61
      params['url_name'], entity.key().name())
885
f46b689e19eb Changed the redirect in club application overview to the correct page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    62
f46b689e19eb Changed the redirect in club application overview to the correct page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    63
858
e79e7a22326f Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents: 797
diff changeset
    64
def getExportRedirect(entity, params):
e79e7a22326f Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents: 797
diff changeset
    65
  """Returns the export redirect for the specified entity.
e79e7a22326f Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents: 797
diff changeset
    66
  """
e79e7a22326f Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents: 797
diff changeset
    67
e79e7a22326f Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents: 797
diff changeset
    68
  return '/%s/export/%s' % (
e79e7a22326f Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents: 797
diff changeset
    69
      params['url_name'], entity.key().name())
e79e7a22326f Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents: 797
diff changeset
    70
885
f46b689e19eb Changed the redirect in club application overview to the correct page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    71
797
0bc3f950d7cf Added basic review functionality for club applications.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 698
diff changeset
    72
def getReviewRedirect(entity, params):
0bc3f950d7cf Added basic review functionality for club applications.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 698
diff changeset
    73
  """Returns the redirect to review the specified entity
0bc3f950d7cf Added basic review functionality for club applications.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 698
diff changeset
    74
  """
0bc3f950d7cf Added basic review functionality for club applications.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 698
diff changeset
    75
  
0bc3f950d7cf Added basic review functionality for club applications.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 698
diff changeset
    76
  return '/%s/review/%s' % (
0bc3f950d7cf Added basic review functionality for club applications.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 698
diff changeset
    77
      params['url_name'], entity.link_id)
698
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    78
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    79
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    80
def getCreateRequestRedirect(entity, params):
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    81
  """Returns the create request redirect for the specified entity.
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    82
  """
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    83
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    84
  result ='/request/create/%s/%s/%s' % (
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    85
      params['group_scope'], params['url_name'], entity.key().name())
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    86
a953f0676699 Added a public redirect
Sverre Rabbelier <srabbelier@gmail.com>
parents: 676
diff changeset
    87
  return result
620
e74e0b74625f Put the redirects in the views/helper/redirects.py module.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 611
diff changeset
    88
e74e0b74625f Put the redirects in the views/helper/redirects.py module.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 611
diff changeset
    89
e74e0b74625f Put the redirects in the views/helper/redirects.py module.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 611
diff changeset
    90
def inviteAcceptedRedirect(entity, _):
e74e0b74625f Put the redirects in the views/helper/redirects.py module.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 611
diff changeset
    91
  """Returns the redirect for accepting an invite.
e74e0b74625f Put the redirects in the views/helper/redirects.py module.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 611
diff changeset
    92
  """
e74e0b74625f Put the redirects in the views/helper/redirects.py module.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 611
diff changeset
    93
920
39badbfb80be Added the new way to process invites for club_admin only.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 891
diff changeset
    94
  return '/%s/accept_invite/%s/%s' % (
620
e74e0b74625f Put the redirects in the views/helper/redirects.py module.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 611
diff changeset
    95
      entity.role, entity.scope_path, entity.link_id)
885
f46b689e19eb Changed the redirect in club application overview to the correct page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    96
920
39badbfb80be Added the new way to process invites for club_admin only.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 891
diff changeset
    97
def inviteProcessRedirect(entity, _):
39badbfb80be Added the new way to process invites for club_admin only.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 891
diff changeset
    98
  """Returns the redirect for processing an invite
39badbfb80be Added the new way to process invites for club_admin only.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 891
diff changeset
    99
  """
39badbfb80be Added the new way to process invites for club_admin only.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 891
diff changeset
   100
39badbfb80be Added the new way to process invites for club_admin only.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 891
diff changeset
   101
  return '/request/process_invite/%s/%s/%s' % (
39badbfb80be Added the new way to process invites for club_admin only.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 891
diff changeset
   102
      entity.scope_path, entity.role, entity.link_id)
885
f46b689e19eb Changed the redirect in club application overview to the correct page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   103
f46b689e19eb Changed the redirect in club application overview to the correct page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   104
def getApplicantRedirect(entity, params):
f46b689e19eb Changed the redirect in club application overview to the correct page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   105
  """Returns the redirect for processing accepted Applications.
f46b689e19eb Changed the redirect in club application overview to the correct page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   106
  """
f46b689e19eb Changed the redirect in club application overview to the correct page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   107
f46b689e19eb Changed the redirect in club application overview to the correct page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   108
  return '/%s/applicant/%s' % (
f46b689e19eb Changed the redirect in club application overview to the correct page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   109
      params['url_name'], entity.link_id)
f46b689e19eb Changed the redirect in club application overview to the correct page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   110
891
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   111
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   112
def getToSRedirect(presence):
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   113
  """Returns link to 'show' the ToS Document if it exists, None otherwise.
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   114
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   115
  Args:
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   116
    presence: Presence entity that may or may not have a tos property
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   117
  """
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   118
  if not presence:
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   119
    return None
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   120
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   121
  try:
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   122
    tos_doc = presence.tos
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   123
  except db.Error:
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   124
    return None
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   125
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   126
  if not tos_doc:
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   127
    return None
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   128
3d40190f35b6 Move getToSLink() to soc.views.helper.redirects.getToSRedirect().
Todd Larsen <tlarsen@google.com>
parents: 885
diff changeset
   129
  return getPublicRedirect(tos_doc, {'url_name': 'document'})