-
Notifications
You must be signed in to change notification settings - Fork 0
/
models.py
30 lines (28 loc) · 949 Bytes
/
models.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from google.appengine.api import memcache
from google.appengine.api import users
from google.appengine.ext import db
import logging
class UserPrefs(db.Model):
tz_offset = db.IntegerProperty(default=0)
user = db.UserProperty(auto_current_user_add=True)
def cache_set(self):
logging.info('cache set')
memcache.set(self.key().name(), self, namespace=self.key().kind())
def put(self):
self.cache_set()
db.Model.put(self)
def get_userprefs(user_id=None):
if not user_id:
user = users.get_current_user()
if not user:
return None
user_id = user.user_id()
userprefs = memcache.get(user_id, namespace='UserPrefs')
if not userprefs:
key = db.Key.from_path('UserPrefs', user_id)
userprefs = db.get(key)
if userprefs:
userprefs.cache_set()
else:
userprefs = UserPrefs(key_name=user_id)
return userprefs