def create(cls, substance): def _validate(substance): if not substance: return False return True if not _validate(substance): raise IllegalRequestError(None) author_id = substance.get("author_id") author_key = Author.get_key_by_id(author_id) category_id = substance.get("category_id") category_key = Category.get_key_by_id(category_id) kit = Kit( id=Kit.make_kit_id_hash(), kit_name=substance.get("kit_name"), author=author_key, category=category_key, tags=Kit.sanitize_tags(substance.get("tags")), description=substance.get("description"), ) if substance.get("kit_file"): kit.kit_file_id = KitLogic._store_to_blobstore(substance.get("kit_file")) kit.put() return True
def update(cls, substance): def _validate(substance): if not substance: return False if not substance.get("kit_name"): return False return True kit_id = substance.get("kit_id") if not _validate(substance): raise IllegalRequestError(None) kit = Kit.get_by_id(kit_id) if not kit: raise NoDataError(None) kit_name = substance.get("kit_name") category_id = substance.get("category_id") category_key = Category.get_key_by_id(category_id) kit.kit_name = kit_name kit.description = substance.get("description") kit.category = category_key kit.tags = Kit.sanitize_tags(substance.get("tags")) kit.valid = substance.get("valid") if substance.get("kit_file"): if kit.kit_file_id: KitLogic._delete_from_blobstore(str(kit.kit_file_id)) kit.kit_file_id = KitLogic._store_to_blobstore(substance.get("kit_file")) kit.put()
def list(cls, substance): kit_list = [] author_id = substance.get("author_id") category_id = substance.get("category_id") tags = substance.get("tags") if author_id: author_key = Author.get_key_by_id(author_id) if author_key: kit_list = [kit.to_hash_short() for kit in Kit.query(Kit.author == author_key)] elif category_id: category_key = Category.get_key_by_id(category_id) if category_key: kit_list = [kit.to_hash_short() for kit in Kit.query(Kit.category == category_key, True == Kit.valid)] elif tags: kit_list = [ kit.to_hash_short() for kit in Kit.query(Kit.tags.IN(Kit.sanitize_tags(tags)), True == Kit.valid) ] else: kit_list = [kit.to_hash_short() for kit in Kit.query(True == Kit.valid)] return dict(items=kit_list)