author | Lennard de Rijk <ljvderijk@gmail.com> |
Tue, 06 Jan 2009 20:56:48 +0000 | |
changeset 769 | a0ee643fe832 |
parent 744 | cd9bf163473c |
child 862 | fac7cb803aaf |
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 |
# |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
3 |
# Copyright 2008 the Melange authors. |
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 |
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
26 |
|
640
a62a78fe4e43
Added User welcome message.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
533
diff
changeset
|
27 |
from soc.logic.helper import notifications |
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
28 |
from soc.logic.models import base |
316
9efdc7bc3565
Add missing blank lines between imports and sort all of the imports.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
308
diff
changeset
|
29 |
|
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
30 |
import soc.models.user |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
31 |
|
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
32 |
|
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
33 |
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
|
34 |
"""Logic methods for the User model. |
308
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 |
def __init__(self): |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
38 |
"""Defines the name, key_name and model for this entity. |
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
39 |
""" |
655
9635cbaa2dcd
Cleanups to the logic module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
640
diff
changeset
|
40 |
|
9635cbaa2dcd
Cleanups to the logic module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
640
diff
changeset
|
41 |
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
|
42 |
skip_properties=['former_accounts']) |
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
43 |
|
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
|
44 |
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
|
45 |
"""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
|
46 |
""" |
655
9635cbaa2dcd
Cleanups to the logic module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
640
diff
changeset
|
47 |
|
533
ba3309b2fd30
Move LINK_ID and SCOPE_PATH regular expressions to soc/models/linkable.py.
Todd Larsen <tlarsen@google.com>
parents:
512
diff
changeset
|
48 |
# 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
|
49 |
# 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
|
50 |
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
|
51 |
'WHERE former_accounts != :1', None).fetch(1000) |
655
9635cbaa2dcd
Cleanups to the logic module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
640
diff
changeset
|
52 |
|
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
|
53 |
for former_account_user in users_with_former_accounts: |
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 |
if account in former_account_user.former_accounts: |
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
|
55 |
return True |
655
9635cbaa2dcd
Cleanups to the logic module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
640
diff
changeset
|
56 |
|
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
|
57 |
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
|
58 |
|
722
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
59 |
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
|
60 |
"""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
|
61 |
|
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
62 |
If there is no user logged in, or they have no associated User |
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
63 |
entity, None is returend. |
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
64 |
""" |
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
65 |
|
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
66 |
account = users.get_current_user() |
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
67 |
|
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
68 |
if not account: |
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
69 |
return None |
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 |
user = self.getForFields({'account': account}, unique=True) |
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 |
return user |
a59eaa177562
Added getForCurrentAccount to user.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
655
diff
changeset
|
74 |
|
434
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
75 |
def getKeyValues(self, entity): |
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
|
76 |
"""See base.Logic.getKeyValues. |
434
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
77 |
""" |
459
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
448
diff
changeset
|
78 |
|
512
aae25d2b4464
Rename link_name to link_id everywhere, regardless of case (so LINK_NAME
Todd Larsen <tlarsen@google.com>
parents:
505
diff
changeset
|
79 |
return [entity.link_id] |
434
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
80 |
|
459
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
448
diff
changeset
|
81 |
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
|
82 |
"""See base.Logic.getSuffixValues. |
459
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
448
diff
changeset
|
83 |
""" |
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
448
diff
changeset
|
84 |
|
512
aae25d2b4464
Rename link_name to link_id everywhere, regardless of case (so LINK_NAME
Todd Larsen <tlarsen@google.com>
parents:
505
diff
changeset
|
85 |
return [entity.link_id] |
459
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
448
diff
changeset
|
86 |
|
434
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
87 |
def getKeyValuesFromFields(self, fields): |
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
88 |
"""See base.Logic.getKeyValuesFromFields. |
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
89 |
""" |
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
90 |
|
512
aae25d2b4464
Rename link_name to link_id everywhere, regardless of case (so LINK_NAME
Todd Larsen <tlarsen@google.com>
parents:
505
diff
changeset
|
91 |
return [fields['link_id']] |
434
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
92 |
|
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
93 |
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
|
94 |
"""See base.Logic.getKeyFieldNames. |
434
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
95 |
""" |
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
96 |
|
512
aae25d2b4464
Rename link_name to link_id everywhere, regardless of case (so LINK_NAME
Todd Larsen <tlarsen@google.com>
parents:
505
diff
changeset
|
97 |
return ['link_id'] |
434
a4fc430fefac
Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
432
diff
changeset
|
98 |
|
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
99 |
def _updateField(self, model, name, value): |
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
|
100 |
"""Special case logic for account. |
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
101 |
|
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
|
102 |
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
|
103 |
with the old account. |
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
104 |
""" |
533
ba3309b2fd30
Move LINK_ID and SCOPE_PATH regular expressions to soc/models/linkable.py.
Todd Larsen <tlarsen@google.com>
parents:
512
diff
changeset
|
105 |
if (name == 'account') and (model.account != value): |
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
|
106 |
model.former_accounts.append(model.account) |
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
107 |
|
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
108 |
return True |
640
a62a78fe4e43
Added User welcome message.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
533
diff
changeset
|
109 |
|
a62a78fe4e43
Added User welcome message.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
533
diff
changeset
|
110 |
def _onCreate(self, entity): |
a62a78fe4e43
Added User welcome message.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
533
diff
changeset
|
111 |
"""Send out a message to welcome the new user. |
a62a78fe4e43
Added User welcome message.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
533
diff
changeset
|
112 |
""" |
a62a78fe4e43
Added User welcome message.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
533
diff
changeset
|
113 |
notifications.sendWelcomeMessage(entity) |
308
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
114 |
|
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
115 |
|
740090cd17c9
Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
116 |
logic = Logic() |