Commit 96358d1d authored by Mike Lambert's avatar Mike Lambert

Tabs->Spaces

parent 1595568e
...@@ -8,171 +8,171 @@ from google.appengine.ext import db ...@@ -8,171 +8,171 @@ from google.appengine.ext import db
from google.appengine.ext import ndb from google.appengine.ext import ndb
class NdbModelView(BaseModelView): class NdbModelView(BaseModelView):
""" """
AppEngine NDB model scaffolding. AppEngine NDB model scaffolding.
""" """
def get_pk_value(self, model): def get_pk_value(self, model):
return model.key.urlsafe() return model.key.urlsafe()
def scaffold_list_columns(self): def scaffold_list_columns(self):
return sorted([k for (k, v) in self.model.__dict__.iteritems() if isinstance(v, ndb.Property)]) return sorted([k for (k, v) in self.model.__dict__.iteritems() if isinstance(v, ndb.Property)])
def scaffold_sortable_columns(self): def scaffold_sortable_columns(self):
return [k for (k, v) in self.model.__dict__.iteritems() if isinstance(v, ndb.Property) and v._indexed] return [k for (k, v) in self.model.__dict__.iteritems() if isinstance(v, ndb.Property) and v._indexed]
def init_search(self): def init_search(self):
return None return None
def is_valid_filter(self): def is_valid_filter(self):
pass pass
def scaffold_filters(self): def scaffold_filters(self):
#TODO: implement #TODO: implement
pass pass
def scaffold_form(self): def scaffold_form(self):
return wt_ndb.model_form(self.model()) return wt_ndb.model_form(self.model())
def get_list(self, page, sort_field, sort_desc, search, filters): def get_list(self, page, sort_field, sort_desc, search, filters):
#TODO: implement filters (don't think search can work here) #TODO: implement filters (don't think search can work here)
q = self.model.query() q = self.model.query()
if sort_field: if sort_field:
order_field = getattr(self.model, sort_field) order_field = getattr(self.model, sort_field)
if sort_desc: if sort_desc:
order_field = -order_field order_field = -order_field
q = q.order(order_field) q = q.order(order_field)
results = q.fetch(self.page_size, offset=page*self.page_size) results = q.fetch(self.page_size, offset=page*self.page_size)
return q.count(), results return q.count(), results
def get_one(self, urlsafe_key): def get_one(self, urlsafe_key):
return ndb.Key(urlsafe=urlsafe_key).get() return ndb.Key(urlsafe=urlsafe_key).get()
def create_model(self, form): def create_model(self, form):
try: try:
model = self.model() model = self.model()
form.populate_obj(model) form.populate_obj(model)
model.put() model.put()
return model return model
except Exception as ex: except Exception as ex:
if not self.handle_view_exception(ex): if not self.handle_view_exception(ex):
#flash(gettext('Failed to create record. %(error)s', #flash(gettext('Failed to create record. %(error)s',
# error=ex), 'error') # error=ex), 'error')
logging.exception('Failed to create record.') logging.exception('Failed to create record.')
return False return False
def update_model(self, form, model): def update_model(self, form, model):
try: try:
form.populate_obj(model) form.populate_obj(model)
model.put() model.put()
return True return True
except Exception as ex: except Exception as ex:
if not self.handle_view_exception(ex): if not self.handle_view_exception(ex):
#flash(gettext('Failed to update record. %(error)s', #flash(gettext('Failed to update record. %(error)s',
# error=ex), 'error') # error=ex), 'error')
logging.exception('Failed to update record.') logging.exception('Failed to update record.')
return False return False
def delete_model(self, model): def delete_model(self, model):
try: try:
model.key.delete() model.key.delete()
return True return True
except Exception as ex: except Exception as ex:
if not self.handle_view_exception(ex): if not self.handle_view_exception(ex):
#flash(gettext('Failed to delete record. %(error)s', #flash(gettext('Failed to delete record. %(error)s',
# error=ex), # error=ex),
# 'error') # 'error')
logging.exception('Failed to delete record.') logging.exception('Failed to delete record.')
return False return False
class DbModelView(BaseModelView): class DbModelView(BaseModelView):
""" """
AppEngine DB model scaffolding. AppEngine DB model scaffolding.
""" """
def get_pk_value(self, model): def get_pk_value(self, model):
return str(model.key()) return str(model.key())
def scaffold_list_columns(self): def scaffold_list_columns(self):
return sorted([k for (k, v) in self.model.__dict__.iteritems() if isinstance(v, db.Property)]) return sorted([k for (k, v) in self.model.__dict__.iteritems() if isinstance(v, db.Property)])
def scaffold_sortable_columns(self): def scaffold_sortable_columns(self):
return [k for (k, v) in self.model.__dict__.iteritems() if isinstance(v, db.Property) and v.indexed] return [k for (k, v) in self.model.__dict__.iteritems() if isinstance(v, db.Property) and v.indexed]
def init_search(self): def init_search(self):
return None return None
def is_valid_filter(self): def is_valid_filter(self):
pass pass
def scaffold_filters(self): def scaffold_filters(self):
#TODO: implement #TODO: implement
pass pass
def scaffold_form(self): def scaffold_form(self):
return wt_db.model_form(self.model()) return wt_db.model_form(self.model())
def get_list(self, page, sort_field, sort_desc, search, filters): def get_list(self, page, sort_field, sort_desc, search, filters):
#TODO: implement filters (don't think search can work here) #TODO: implement filters (don't think search can work here)
q = self.model.all() q = self.model.all()
if sort_field: if sort_field:
if sort_desc: if sort_desc:
sort_field = "-" + sort_field sort_field = "-" + sort_field
q.order(sort_field) q.order(sort_field)
results = q.fetch(self.page_size, offset=page*self.page_size) results = q.fetch(self.page_size, offset=page*self.page_size)
return q.count(), results return q.count(), results
def get_one(self, encoded_key): def get_one(self, encoded_key):
return db.get(db.Key(encoded=encoded_key)) return db.get(db.Key(encoded=encoded_key))
def create_model(self, form): def create_model(self, form):
try: try:
model = self.model() model = self.model()
form.populate_obj(model) form.populate_obj(model)
model.put() model.put()
return model return model
except Exception as ex: except Exception as ex:
if not self.handle_view_exception(ex): if not self.handle_view_exception(ex):
#flash(gettext('Failed to create record. %(error)s', #flash(gettext('Failed to create record. %(error)s',
# error=ex), 'error') # error=ex), 'error')
logging.exception('Failed to create record.') logging.exception('Failed to create record.')
return False return False
def update_model(self, form, model): def update_model(self, form, model):
try: try:
form.populate_obj(model) form.populate_obj(model)
model.put() model.put()
return True return True
except Exception as ex: except Exception as ex:
if not self.handle_view_exception(ex): if not self.handle_view_exception(ex):
#flash(gettext('Failed to update record. %(error)s', #flash(gettext('Failed to update record. %(error)s',
# error=ex), 'error') # error=ex), 'error')
logging.exception('Failed to update record.') logging.exception('Failed to update record.')
return False return False
def delete_model(self, model): def delete_model(self, model):
try: try:
model.delete() model.delete()
return True return True
except Exception as ex: except Exception as ex:
if not self.handle_view_exception(ex): if not self.handle_view_exception(ex):
#flash(gettext('Failed to delete record. %(error)s', #flash(gettext('Failed to delete record. %(error)s',
# error=ex), # error=ex),
# 'error') # 'error')
logging.exception('Failed to delete record.') logging.exception('Failed to delete record.')
return False return False
def ModelView(model): def ModelView(model):
if issubclass(model, ndb.Model): if issubclass(model, ndb.Model):
return NdbModelView(model) return NdbModelView(model)
elif issubclass(model, db.Model): elif issubclass(model, db.Model):
return DbModelView(model) return DbModelView(model)
else: else:
raise ValueError("Unsupported model: %s" % model) raise ValueError("Unsupported model: %s" % model)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment