author | Sverre Rabbelier <srabbelier@gmail.com> |
Thu, 26 Feb 2009 16:54:44 +0000 | |
changeset 1521 | bb086732bf7f |
parent 1517 | a467d13e34ea |
child 1522 | 983b126f5aca |
permissions | -rw-r--r-- |
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
1 |
#!/usr/bin/python2.5 |
740090cd17c9
Added invididual model logic files
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. |
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
4 |
# |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
5 |
# Licensed under the Apache License, Version 2.0 (the "License"); |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
6 |
# you may not use this file except in compliance with the License. |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
7 |
# You may obtain a copy of the License at |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
8 |
# |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
9 |
# http://www.apache.org/licenses/LICENSE-2.0 |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
10 |
# |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
11 |
# Unless required by applicable law or agreed to in writing, software |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
12 |
# distributed under the License is distributed on an "AS IS" BASIS, |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
13 |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
14 |
# See the License for the specific language governing permissions and |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
15 |
# limitations under the License. |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
16 |
|
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
17 |
"""User (Model) query functions. |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
18 |
""" |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
19 |
|
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
20 |
__authors__ = [ |
429
e50e18936f06
Fixed typo in e-mail address
Sverre Rabbelier <srabbelier@gmail.com>
parents:
316
diff
changeset
|
21 |
'"Sverre Rabbelier" <sverre@rabbelier.nl>', |
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
22 |
] |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
23 |
|
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
24 |
|
722
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
25 |
from google.appengine.api import users |
865
4f96580e1871
Fix missing import identified by pylint.
Todd Larsen <tlarsen@google.com>
parents:
862
diff
changeset
|
26 |
from google.appengine.ext import db |
722
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
27 |
|
988
e35b3d98d469
Flush the sidebar if a user's rights change
Sverre Rabbelier <srabbelier@gmail.com>
parents:
865
diff
changeset
|
28 |
from soc.cache import sidebar |
1521
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
29 |
from soc.logic import accounts |
640
a62a78fe4e43
Added User welcome message.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
533
diff
changeset
|
30 |
from soc.logic.helper import notifications |
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
31 |
from soc.logic.models import base |
862
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
32 |
from soc.logic.models.site import logic as site_logic |
316
9efdc7bc3565
Add missing blank lines between imports and sort all of the imports.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
308
diff
changeset
|
33 |
|
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
34 |
import soc.models.user |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
35 |
|
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
36 |
|
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
37 |
class Logic(base.Logic): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
496
diff
changeset
|
38 |
"""Logic methods for the User model. |
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
39 |
""" |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
40 |
|
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
41 |
def __init__(self): |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
42 |
"""Defines the name, key_name and model for this entity. |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
43 |
""" |
655
9635cbaa2dcd
Cleanups to the logic module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
640
diff
changeset
|
44 |
|
9635cbaa2dcd
Cleanups to the logic module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
640
diff
changeset
|
45 |
super(Logic, self).__init__(soc.models.user.User, |
481
94834a1e6c01
Attempt to rename User.id to User.account, in preparation for making User be
Todd Larsen <tlarsen@google.com>
parents:
459
diff
changeset
|
46 |
skip_properties=['former_accounts']) |
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
47 |
|
481
94834a1e6c01
Attempt to rename User.id to User.account, in preparation for making User be
Todd Larsen <tlarsen@google.com>
parents:
459
diff
changeset
|
48 |
def isFormerAccount(self, account): |
94834a1e6c01
Attempt to rename User.id to User.account, in preparation for making User be
Todd Larsen <tlarsen@google.com>
parents:
459
diff
changeset
|
49 |
"""Returns true if account is a former account of some User. |
94834a1e6c01
Attempt to rename User.id to User.account, in preparation for making User be
Todd Larsen <tlarsen@google.com>
parents:
459
diff
changeset
|
50 |
""" |
655
9635cbaa2dcd
Cleanups to the logic module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
640
diff
changeset
|
51 |
|
533
ba3309b2fd30
Move LINK_ID and SCOPE_PATH regular expressions to soc/models/linkable.py.
Todd Larsen <tlarsen@google.com>
parents:
512
diff
changeset
|
52 |
# TODO(pawel.solyga): replace 1000 with solution that works for any |
ba3309b2fd30
Move LINK_ID and SCOPE_PATH regular expressions to soc/models/linkable.py.
Todd Larsen <tlarsen@google.com>
parents:
512
diff
changeset
|
53 |
# number of queries |
481
94834a1e6c01
Attempt to rename User.id to User.account, in preparation for making User be
Todd Larsen <tlarsen@google.com>
parents:
459
diff
changeset
|
54 |
users_with_former_accounts = soc.models.user.User.gql( |
94834a1e6c01
Attempt to rename User.id to User.account, in preparation for making User be
Todd Larsen <tlarsen@google.com>
parents:
459
diff
changeset
|
55 |
'WHERE former_accounts != :1', None).fetch(1000) |
655
9635cbaa2dcd
Cleanups to the logic module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
640
diff
changeset
|
56 |
|
481
94834a1e6c01
Attempt to rename User.id to User.account, in preparation for making User be
Todd Larsen <tlarsen@google.com>
parents:
459
diff
changeset
|
57 |
for former_account_user in users_with_former_accounts: |
1242
c5ca70606850
Handle GAE account normalization
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1193
diff
changeset
|
58 |
for former_account in former_account_user.former_accounts: |
c5ca70606850
Handle GAE account normalization
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1193
diff
changeset
|
59 |
if str(account) == str(former_account): |
c5ca70606850
Handle GAE account normalization
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1193
diff
changeset
|
60 |
return True |
655
9635cbaa2dcd
Cleanups to the logic module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
640
diff
changeset
|
61 |
|
448
075360be6743
Fix not working former_ids. Add support for "Invalid accounts". Now when id from former_ids tries to create a profile "This account is invalid." error message is displayed. Compare emails in lower cases to prevent changing User email to the same email with different character casing (needs some more testing).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
434
diff
changeset
|
62 |
return False |
075360be6743
Fix not working former_ids. Add support for "Invalid accounts". Now when id from former_ids tries to create a profile "This account is invalid." error message is displayed. Compare emails in lower cases to prevent changing User email to the same email with different character casing (needs some more testing).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
434
diff
changeset
|
63 |
|
722
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
64 |
def getForCurrentAccount(self): |
744
cd9bf163473c
Add missing dots, fix imports sorting and too long lines in different modules. Add TODO in soc.views.models.host module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
722
diff
changeset
|
65 |
"""Retrieves the user entity for the currently logged in account. |
722
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
66 |
|
1193
8d3a7e8d88bd
Fixed a typo in getForCurrentAccount comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1192
diff
changeset
|
67 |
If there is no user logged in, or they have no valid associated User |
8d3a7e8d88bd
Fixed a typo in getForCurrentAccount comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1192
diff
changeset
|
68 |
entity, None is returned. |
722
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
69 |
""" |
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
70 |
|
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
71 |
account = users.get_current_user() |
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
72 |
|
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
73 |
if not account: |
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
74 |
return None |
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
75 |
|
1521
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
76 |
return self.getForAccount(account) |
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
77 |
|
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
78 |
def getForAccount(self, account): |
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
79 |
"""Retrieves the user entity for the specified account. |
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
80 |
|
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
81 |
If there is no user logged in, or they have no valid associated User |
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
82 |
entity, None is returned. |
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
83 |
""" |
722
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
84 |
|
1521
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
85 |
if not account: |
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
86 |
raise base.InvalidArgumentError |
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
87 |
|
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
88 |
account = accounts.normalizeAccount(account) |
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
89 |
|
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
90 |
fields = { |
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
91 |
'account': account, |
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
92 |
'status':'valid', |
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
93 |
} |
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
94 |
|
bb086732bf7f
Factor out the getForAccount logic in user
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1517
diff
changeset
|
95 |
return self.getForFields(filter=fields, unique=True) |
722
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
96 |
|
862
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
97 |
def agreesToSiteToS(self, entity): |
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
98 |
"""Returns indication of User's answer to the site-wide Terms of Service. |
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
99 |
|
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
100 |
Args: |
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
101 |
entity: User entity to check for agreement to site-wide ToS |
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
102 |
|
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
103 |
Returns: |
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
104 |
True: no site-wide ToS is currently in effect on the site |
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
105 |
True: site-wide ToS is in effect *and* User agrees to it |
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
106 |
(User explicitly answered "Yes") |
1076
063194eaf87b
Added agreed_to_tos_on field in user and role model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
988
diff
changeset
|
107 |
False: site-wide ToS is in effect but User did not agree to it yet |
862
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
108 |
""" |
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
109 |
if not site_logic.getToS(site_logic.getSingleton()): |
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
110 |
# no site-wide ToS in effect, so let the User slide for now |
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
111 |
return True |
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
112 |
|
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
113 |
try: |
1076
063194eaf87b
Added agreed_to_tos_on field in user and role model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
988
diff
changeset
|
114 |
agreed_on = entity.agreed_to_tos_on |
862
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
115 |
except db.Error: |
1076
063194eaf87b
Added agreed_to_tos_on field in user and role model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
988
diff
changeset
|
116 |
# return False indicating that answer is missing |
063194eaf87b
Added agreed_to_tos_on field in user and role model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
988
diff
changeset
|
117 |
return False |
862
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
118 |
|
1076
063194eaf87b
Added agreed_to_tos_on field in user and role model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
988
diff
changeset
|
119 |
# user has not agreed yet |
063194eaf87b
Added agreed_to_tos_on field in user and role model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
988
diff
changeset
|
120 |
if not agreed_on: |
862
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
121 |
return False |
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
122 |
|
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
123 |
return True |
fac7cb803aaf
Add agreesToSiteToS() logic method to indicate if User accepts site-wide ToS.
Todd Larsen <tlarsen@google.com>
parents:
744
diff
changeset
|
124 |
|
1115
0a723ff3d27c
Cleanups in base.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1106
diff
changeset
|
125 |
def getKeyValuesFromEntity(self, entity): |
0a723ff3d27c
Cleanups in base.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1106
diff
changeset
|
126 |
"""See base.Logic.getKeyValuesFromEntity. |
434
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
127 |
""" |
459
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
448
diff
changeset
|
128 |
|
512
aae25d2b4464
Rename link_name to link_id everywhere, regardless of case (so LINK_NAME
Todd Larsen <tlarsen@google.com>
parents:
505
diff
changeset
|
129 |
return [entity.link_id] |
434
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
130 |
|
459
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
448
diff
changeset
|
131 |
def getSuffixValues(self, entity): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
496
diff
changeset
|
132 |
"""See base.Logic.getSuffixValues. |
459
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
448
diff
changeset
|
133 |
""" |
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
448
diff
changeset
|
134 |
|
512
aae25d2b4464
Rename link_name to link_id everywhere, regardless of case (so LINK_NAME
Todd Larsen <tlarsen@google.com>
parents:
505
diff
changeset
|
135 |
return [entity.link_id] |
459
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
448
diff
changeset
|
136 |
|
434
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
137 |
def getKeyValuesFromFields(self, fields): |
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
138 |
"""See base.Logic.getKeyValuesFromFields. |
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
139 |
""" |
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
140 |
|
512
aae25d2b4464
Rename link_name to link_id everywhere, regardless of case (so LINK_NAME
Todd Larsen <tlarsen@google.com>
parents:
505
diff
changeset
|
141 |
return [fields['link_id']] |
434
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
142 |
|
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
143 |
def getKeyFieldNames(self): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
496
diff
changeset
|
144 |
"""See base.Logic.getKeyFieldNames. |
434
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
145 |
""" |
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
146 |
|
512
aae25d2b4464
Rename link_name to link_id everywhere, regardless of case (so LINK_NAME
Todd Larsen <tlarsen@google.com>
parents:
505
diff
changeset
|
147 |
return ['link_id'] |
434
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
148 |
|
1517
a467d13e34ea
Pass _updateField the entity_properties dict instead of just the value
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1479
diff
changeset
|
149 |
def _updateField(self, entity, entity_properties, name): |
481
94834a1e6c01
Attempt to rename User.id to User.account, in preparation for making User be
Todd Larsen <tlarsen@google.com>
parents:
459
diff
changeset
|
150 |
"""Special case logic for account. |
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
151 |
|
481
94834a1e6c01
Attempt to rename User.id to User.account, in preparation for making User be
Todd Larsen <tlarsen@google.com>
parents:
459
diff
changeset
|
152 |
When the account is changed, the former_accounts field should be appended |
94834a1e6c01
Attempt to rename User.id to User.account, in preparation for making User be
Todd Larsen <tlarsen@google.com>
parents:
459
diff
changeset
|
153 |
with the old account. |
988
e35b3d98d469
Flush the sidebar if a user's rights change
Sverre Rabbelier <srabbelier@gmail.com>
parents:
865
diff
changeset
|
154 |
Also, if either is_developer or agrees_to_tos change, the user's |
e35b3d98d469
Flush the sidebar if a user's rights change
Sverre Rabbelier <srabbelier@gmail.com>
parents:
865
diff
changeset
|
155 |
rights have changed, so we need to flush the sidebar. |
1161
ad352f3a37d3
This patch prohibits changing of agreed_to_tos and agreed_to_tos_on by the Logic module.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1115
diff
changeset
|
156 |
Make sure once the user agreed ToS, the ToS fields can't be changed. |
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
157 |
""" |
988
e35b3d98d469
Flush the sidebar if a user's rights change
Sverre Rabbelier <srabbelier@gmail.com>
parents:
865
diff
changeset
|
158 |
|
1517
a467d13e34ea
Pass _updateField the entity_properties dict instead of just the value
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1479
diff
changeset
|
159 |
value = entity_properties[name] |
a467d13e34ea
Pass _updateField the entity_properties dict instead of just the value
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1479
diff
changeset
|
160 |
|
1161
ad352f3a37d3
This patch prohibits changing of agreed_to_tos and agreed_to_tos_on by the Logic module.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1115
diff
changeset
|
161 |
# iff the agreed_to_tos is True and we want to set it to False |
ad352f3a37d3
This patch prohibits changing of agreed_to_tos and agreed_to_tos_on by the Logic module.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1115
diff
changeset
|
162 |
if (name == 'agreed_to_tos') and (not value) and entity.agreed_to_tos: |
ad352f3a37d3
This patch prohibits changing of agreed_to_tos and agreed_to_tos_on by the Logic module.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1115
diff
changeset
|
163 |
return False |
ad352f3a37d3
This patch prohibits changing of agreed_to_tos and agreed_to_tos_on by the Logic module.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1115
diff
changeset
|
164 |
|
ad352f3a37d3
This patch prohibits changing of agreed_to_tos and agreed_to_tos_on by the Logic module.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1115
diff
changeset
|
165 |
# iff the agreed_to_tos_on has a value and we want to change it |
ad352f3a37d3
This patch prohibits changing of agreed_to_tos and agreed_to_tos_on by the Logic module.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1115
diff
changeset
|
166 |
if (name == 'agreed_to_tos_on') and entity.agreed_to_tos_on and ( |
ad352f3a37d3
This patch prohibits changing of agreed_to_tos and agreed_to_tos_on by the Logic module.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1115
diff
changeset
|
167 |
value != entity.agreed_to_tos_on): |
ad352f3a37d3
This patch prohibits changing of agreed_to_tos and agreed_to_tos_on by the Logic module.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1115
diff
changeset
|
168 |
return False |
ad352f3a37d3
This patch prohibits changing of agreed_to_tos and agreed_to_tos_on by the Logic module.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1115
diff
changeset
|
169 |
|
988
e35b3d98d469
Flush the sidebar if a user's rights change
Sverre Rabbelier <srabbelier@gmail.com>
parents:
865
diff
changeset
|
170 |
if (name == 'is_developer') and (entity.is_developer != value): |
e35b3d98d469
Flush the sidebar if a user's rights change
Sverre Rabbelier <srabbelier@gmail.com>
parents:
865
diff
changeset
|
171 |
sidebar.flush(entity.account) |
e35b3d98d469
Flush the sidebar if a user's rights change
Sverre Rabbelier <srabbelier@gmail.com>
parents:
865
diff
changeset
|
172 |
|
1076
063194eaf87b
Added agreed_to_tos_on field in user and role model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
988
diff
changeset
|
173 |
if (name == 'agreed_to_tos') and (entity.agreed_to_tos != value): |
988
e35b3d98d469
Flush the sidebar if a user's rights change
Sverre Rabbelier <srabbelier@gmail.com>
parents:
865
diff
changeset
|
174 |
sidebar.flush(entity.account) |
e35b3d98d469
Flush the sidebar if a user's rights change
Sverre Rabbelier <srabbelier@gmail.com>
parents:
865
diff
changeset
|
175 |
|
1479
bc738f92a4d8
Fix the user editing
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1308
diff
changeset
|
176 |
if (name == 'account'): |
bc738f92a4d8
Fix the user editing
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1308
diff
changeset
|
177 |
if (str(entity.account) != str(value)): |
bc738f92a4d8
Fix the user editing
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1308
diff
changeset
|
178 |
entity.former_accounts.append(entity.account) |
bc738f92a4d8
Fix the user editing
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1308
diff
changeset
|
179 |
elif entity.account != value: |
bc738f92a4d8
Fix the user editing
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1308
diff
changeset
|
180 |
# this occurs when the account ends in the auth domain, e.g.: |
bc738f92a4d8
Fix the user editing
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1308
diff
changeset
|
181 |
# if the auth domain is "example.com", then the following would |
bc738f92a4d8
Fix the user editing
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1308
diff
changeset
|
182 |
# would put us here: |
bc738f92a4d8
Fix the user editing
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1308
diff
changeset
|
183 |
# entity.account = users.User('foo@example.com') |
bc738f92a4d8
Fix the user editing
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1308
diff
changeset
|
184 |
# value = 'foo' |
bc738f92a4d8
Fix the user editing
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1308
diff
changeset
|
185 |
return False |
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
186 |
|
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
187 |
return True |
640
a62a78fe4e43
Added User welcome message.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
533
diff
changeset
|
188 |
|
a62a78fe4e43
Added User welcome message.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
533
diff
changeset
|
189 |
def _onCreate(self, entity): |
a62a78fe4e43
Added User welcome message.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
533
diff
changeset
|
190 |
"""Send out a message to welcome the new user. |
a62a78fe4e43
Added User welcome message.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
533
diff
changeset
|
191 |
""" |
988
e35b3d98d469
Flush the sidebar if a user's rights change
Sverre Rabbelier <srabbelier@gmail.com>
parents:
865
diff
changeset
|
192 |
|
640
a62a78fe4e43
Added User welcome message.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
533
diff
changeset
|
193 |
notifications.sendWelcomeMessage(entity) |
1106
e14b0995cf29
Flush sidebar when creating a new entity
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1076
diff
changeset
|
194 |
|
e14b0995cf29
Flush sidebar when creating a new entity
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1076
diff
changeset
|
195 |
super(Logic, self)._onCreate(entity) |
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
196 |
|
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
197 |
|
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
198 |
logic = Logic() |