def __init__(self, raw=None, raw_key=None, title=None, artist=None, tracks=None, add_date=None, asin=None, cover_small=None, cover_large= None, is_new=True, key=None, **kwds): if raw is not None: super(Album, self).__init__(raw=raw) return elif raw_key is not None: super(Album, self).__init__(raw_key=raw_key) return if tracks is None: tracks = [] if not title: raise Exception("Cannot have an Album without a title") if add_date is None: add_date = datetime.datetime.now() if key is None: batch = RawAlbum.allocate_ids(1) key = ndb.Key(RawAlbum, batch[0]) # Instantiate the tracks, put them (Model.put() returns keys) if tracks: tracks = self._put_tracks(tracks, artist, key) super(Album, self).__init__(key=key, title=title, artist=artist, add_date=add_date, isNew=is_new, songList=tracks, cover_small=cover_small, cover_large=cover_large, asin=asin, **kwds)
def get_key(cls, title=None, artist=None, is_new=None, asin=None, order=None, num=-1, page=False, cursor=None): query = RawAlbum.query() if title is not None: query = query.filter(RawAlbum.title == title) if artist is not None: query = query.filter(RawAlbum.artist == artist) if is_new is not None: query = query.filter(RawAlbum.isNew == is_new) if asin is not None: query = query.filter(RawAlbum.asin == asin) # Usual album orders: 'add_date' if order is not None: query = query.order(*order) if num == -1: return query.get(keys_only=True, start_cursor=cursor) elif not page: return query.fetch(num, keys_only=True, start_cursor=cursor) else: return query.fetch_page(num, keys_only=True, start_cursor=cursor)