from google.appengine.ext import db
from datetime import datetime
from datetime import timedelta
class Lookup(db.Model):
value = db.StringProperty(multiline=True)
update_date = db.DateTimeProperty(auto_now_add=True)
def toJSON(self):
#return "{'value':'" + self.value + "'}"
return "{'value':'" + self.value + "','update_date':'" + str(self.update_date) + "'}"
def create_or_update(keyname, valueTxt):
obj = Lookup.get_by_key_name(keyname)
if obj == None:
obj = Lookup(key_name=keyname,value=valueTxt)
else:
obj.value = valueTxt
obj.update_date = datetime.now()
obj.put()
def get_value(keyname):
obj = Lookup.get_by_key_name(keyname)
if obj == None:
return None
else:
return obj.value
def get_Lookup(keyname):
obj = Lookup.get_by_key_name(keyname)
if obj == None:
return None
else:
return ""
def get_LookupJSON(keyname):
obj = Lookup.get_by_key_name(keyname)
if obj == None:
return None
else:
return str(obj.toJSON())
def deleteByKey(keyname):
obj = Lookup.get_by_key_name(keyname)
if obj != None:
obj.delete()
#for cron job
def expireCacheEntries():
weekago = datetime.now() - timedelta(days=7)
query = Lookup.gql("where update_date < :1", weekago)
for l in query:
l.delete()
class CacheService:
"http://solidcoding.blogspot.com"
def setValue(self, key,value):
"keyvalue"
db.run_in_transaction(create_or_update,key,value)
def getValue(self, key):
"key"
return db.run_in_transaction(get_value,key)
def getLookupAsXml(self, key):
"key"
return db.run_in_transaction(get_Lookup,key)
def getLookupAsJSON(self, key):
"key"
return db.run_in_transaction(get_LookupJSON,key)
def delete(self, key):
"key"
return db.run_in_transaction(deleteByKey,key)
def expire(self):
#for cron job. Not allowed to query inside a transaction. Call direct
expireCacheEntries()