author | Todd Larsen <tlarsen@google.com> |
Wed, 01 Oct 2008 05:17:15 +0000 | |
changeset 235 | 17b35a1f2868 |
parent 222 | 63e5f42e2e83 |
child 251 | 8f23804302d0 |
permissions | -rw-r--r-- |
202
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
1 |
#!/usr/bin/python2.5 |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
2 |
# |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
3 |
# Copyright 2008 the Melange authors. |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
4 |
# |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
5 |
# Licensed under the Apache License, Version 2.0 (the "License"); |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
6 |
# you may not use this file except in compliance with the License. |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
7 |
# You may obtain a copy of the License at |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
8 |
# |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
9 |
# http://www.apache.org/licenses/LICENSE-2.0 |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
10 |
# |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
11 |
# Unless required by applicable law or agreed to in writing, software |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
12 |
# distributed under the License is distributed on an "AS IS" BASIS, |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
13 |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
14 |
# See the License for the specific language governing permissions and |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
15 |
# limitations under the License. |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
16 |
|
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
17 |
"""Functions for composing Model entity key names. |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
18 |
""" |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
19 |
|
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
20 |
__authors__ = [ |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
21 |
'"Todd Larsen" <tlarsen@google.com>', |
213
75a8cc0200ad
Add key naming function for Sponsor, School, Organization, Club key_names.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
206
diff
changeset
|
22 |
'"Pawel Solyga" <pawel.solyga@gmail.com>', |
202
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
23 |
] |
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
24 |
|
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
25 |
|
222
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
26 |
# start with ASCII digit or lowercase |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
27 |
# (additional ASCII digit or lowercase |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
28 |
# -OR- |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
29 |
# underscore and ASCII digit or lowercase) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
30 |
# zero or more of OR group |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
31 |
LINKNAME_PATTERN_CORE = r'[0-9a-z](?:[0-9a-z]|_[0-9a-z])*' |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
32 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
33 |
LINKNAME_PATTERN = r'^%s$' % LINKNAME_PATTERN_CORE |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
34 |
LINKNAME_ARG_PATTERN = r'(?P<linkname>%s)' % LINKNAME_PATTERN_CORE |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
35 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
36 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
37 |
# partial path is multiple linkname chunks, |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
38 |
# each separated by a trailing / |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
39 |
# (at least 1) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
40 |
# followed by a single linkname with no trailing / |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
41 |
WORK_PATH_LINKNAME_ARGS_PATTERN = ( |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
42 |
r'(?P<partial_path>%(linkname)s(?:/%(linkname)s)*)/' |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
43 |
'(?P<linkname>%(linkname)s)' % { |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
44 |
'linkname': LINKNAME_PATTERN_CORE}) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
45 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
46 |
WORK_PATH_LINKNAME_PATTERN = r'^%s$' % WORK_PATH_LINKNAME_ARGS_PATTERN |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
47 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
48 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
49 |
class Error(Exception): |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
50 |
"""Base class for all exceptions raised by this module.""" |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
51 |
pass |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
52 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
53 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
54 |
def getFullClassName(cls): |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
55 |
"""Returns fully-qualified module.class name string.""" |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
56 |
return '%s.%s' % (cls.__module__, cls.__name__) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
57 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
58 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
59 |
def combinePath(path_parts): |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
60 |
"""Returns path components combined into a single string. |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
61 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
62 |
Args: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
63 |
path_parts: a single path string, or a list of path part strings, |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
64 |
or a nested list of path part strings (where the zeroeth element in |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
65 |
the list is itself a list); for example: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
66 |
'a/complete/path/in/one/string' |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
67 |
['some', 'path', 'parts'] |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
68 |
[['path', 'parts', 'and', 'a'], 'link name'] |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
69 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
70 |
Returns: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
71 |
None if path_parts is False (None, empty string, etc.) or if |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
72 |
any list elements are False (an empty list, empty string, etc.); |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
73 |
otherwise, the combined string with the necessary separators. |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
74 |
""" |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
75 |
if not path_parts: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
76 |
# completely empty input, so return early |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
77 |
return None |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
78 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
79 |
if not isinstance(path_parts, (list, tuple)): |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
80 |
# a single path string, so just return it as-is (nothing to do) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
81 |
return path_parts |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
82 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
83 |
flattened_parts = [] |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
84 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
85 |
for part in path_parts: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
86 |
if not part: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
87 |
# encountered a "False" element, which invalidates everything else |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
88 |
return None |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
89 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
90 |
if isinstance(part, (list, tuple)): |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
91 |
flattened_parts.extend(part) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
92 |
else: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
93 |
flattened_parts.append(part) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
94 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
95 |
return '/'.join(flattened_parts) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
96 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
97 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
98 |
def nameDocument(partial_path, link_name=None): |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
99 |
"""Returns a Document key name constructed from a path and link name. |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
100 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
101 |
Args: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
102 |
partial_path: the first portion of the path to the Document that uniquely |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
103 |
identifies it |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
104 |
link_name: optional link name to append to path (when omitted, |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
105 |
partial_path is actually the entire path, with the link_name already |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
106 |
appended) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
107 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
108 |
Raises: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
109 |
Error if partial_path and link_Name produce a "False" path (None, |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
110 |
empty string, etc.) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
111 |
""" |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
112 |
path = [partial_path] |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
113 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
114 |
if link_name: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
115 |
path.append(link_name) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
116 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
117 |
path = combinePath(path) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
118 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
119 |
if not path: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
120 |
raise Error('"path" must be non-False: "%s"' % path) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
121 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
122 |
return 'Document:%s' % path |
202
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
123 |
|
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
124 |
|
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
125 |
def nameSiteSettings(path): |
222
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
126 |
"""Returns a SiteSettings key name constructed from a supplied path. |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
127 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
128 |
Raises: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
129 |
Error if path is "False" (None, empty string, etc.) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
130 |
""" |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
131 |
if not path: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
132 |
raise Error('"path" must be non-False: "%s"' % path) |
206
832335761384
Make use of PolyModel for Works, Documents, etc. Add some (but not all) of
Todd Larsen <tlarsen@google.com>
parents:
202
diff
changeset
|
133 |
|
222
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
134 |
return 'SiteSettings:%s' % path |
202
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
135 |
|
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
136 |
|
b8b4a83788d4
A key_name controller module to collect all of the name...() functions that
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
137 |
def nameUser(email): |
222
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
138 |
"""Returns a User key name constructed from a supplied email address. |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
139 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
140 |
Raises: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
141 |
Error if email is "False" (None, empty string, etc.) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
142 |
""" |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
143 |
if not email: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
144 |
raise Error('"email" must be non-False: "%s"' % email) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
145 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
146 |
return 'User:%s' % email |
206
832335761384
Make use of PolyModel for Works, Documents, etc. Add some (but not all) of
Todd Larsen <tlarsen@google.com>
parents:
202
diff
changeset
|
147 |
|
213
75a8cc0200ad
Add key naming function for Sponsor, School, Organization, Club key_names.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
206
diff
changeset
|
148 |
|
75a8cc0200ad
Add key naming function for Sponsor, School, Organization, Club key_names.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
206
diff
changeset
|
149 |
def nameSponsor(link_name): |
222
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
150 |
"""Returns a Sponsor key name constructed from a supplied link name. |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
151 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
152 |
Raises: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
153 |
Error if link_name is "False" (None, empty string, etc.) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
154 |
""" |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
155 |
if not link_name: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
156 |
raise Error('"link_name" must be non-False: "%s"' % link_name) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
157 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
158 |
return 'Group/Sponsor:%s' % link_name |
213
75a8cc0200ad
Add key naming function for Sponsor, School, Organization, Club key_names.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
206
diff
changeset
|
159 |
|
75a8cc0200ad
Add key naming function for Sponsor, School, Organization, Club key_names.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
206
diff
changeset
|
160 |
|
75a8cc0200ad
Add key naming function for Sponsor, School, Organization, Club key_names.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
206
diff
changeset
|
161 |
def nameSchool(sponsor_ln, program_ln, link_name): |
222
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
162 |
"""Returns a School key name constructed from link names. |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
163 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
164 |
Args: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
165 |
sponsor_ln: Sponsor link name |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
166 |
program_ln: Program link name |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
167 |
link_name: School link name |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
168 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
169 |
Raises: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
170 |
Error if sponsor_ln, program_ln, and link_Name combine to produce |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
171 |
a "False" path (None, empty string, etc.) |
213
75a8cc0200ad
Add key naming function for Sponsor, School, Organization, Club key_names.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
206
diff
changeset
|
172 |
""" |
222
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
173 |
path = combinePath([[sponsor_ln, program_ln], link_name]) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
174 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
175 |
if not path: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
176 |
raise Error('"path" must be non-False: "%s"' % path) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
177 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
178 |
return 'Group/School:%s' % path |
213
75a8cc0200ad
Add key naming function for Sponsor, School, Organization, Club key_names.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
206
diff
changeset
|
179 |
|
75a8cc0200ad
Add key naming function for Sponsor, School, Organization, Club key_names.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
206
diff
changeset
|
180 |
|
75a8cc0200ad
Add key naming function for Sponsor, School, Organization, Club key_names.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
206
diff
changeset
|
181 |
def nameOrganization(sponsor_ln, program_ln, link_name): |
222
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
182 |
"""Returns a Organization key name constructed from link names. |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
183 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
184 |
Args: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
185 |
sponsor_ln: Sponsor link name |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
186 |
program_ln: Program link name |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
187 |
link_name: Organization link name |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
188 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
189 |
Raises: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
190 |
Error if sponsor_ln, program_ln, and link_Name combine to produce |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
191 |
a "False" path (None, empty string, etc.) |
213
75a8cc0200ad
Add key naming function for Sponsor, School, Organization, Club key_names.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
206
diff
changeset
|
192 |
""" |
222
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
193 |
path = combinePath([[sponsor_ln, program_ln], link_name]) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
194 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
195 |
if not path: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
196 |
raise Error('"path" must be non-False: "%s"' % path) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
197 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
198 |
return 'Group/Organization:%s' % path |
213
75a8cc0200ad
Add key naming function for Sponsor, School, Organization, Club key_names.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
206
diff
changeset
|
199 |
|
75a8cc0200ad
Add key naming function for Sponsor, School, Organization, Club key_names.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
206
diff
changeset
|
200 |
|
75a8cc0200ad
Add key naming function for Sponsor, School, Organization, Club key_names.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
206
diff
changeset
|
201 |
def nameClub(link_name): |
222
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
202 |
"""Returns a Club key name constructed from a supplied link name. |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
203 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
204 |
Raises: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
205 |
Error if link_name is "False" (None, empty string, etc.) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
206 |
""" |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
207 |
if not link_name: |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
208 |
raise Error('"link_name" must be non-False: "%s"' % link_name) |
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
209 |
|
63e5f42e2e83
Add lots of new functions to key_name.py, including path/link_name processing.
Todd Larsen <tlarsen@google.com>
parents:
213
diff
changeset
|
210 |
return 'Group/Club:%s' % link_name |