예제 #1
0
파일: tracks.py 프로젝트: sglickman/WBOR
  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)
예제 #2
0
파일: tracks.py 프로젝트: sglickman/WBOR
  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)