Exemple #1
0
def album_create_carousel():
    parsed_request = urlparse(flask.request.url)
    hostname = parsed_request.hostname
    if 'www.' in hostname:
        hostname = hostname.split('www.')[1]
        
    query = model.Album.query(
      ndb.AND(
        user_key==auth.current_user_key(),
        hostname==hostname,
        isCarousel==True
      )
    )
    album_db = query.fetch(1)

    if album_db:
        if album_db.user_key != auth.current_user_key():
            return flask.abort(404)
        else:
            resource_dbs = album_db.get_resource_dbs()

    if not album_db:
        album_db = model.Album(
            user_key=auth.current_user_key(),
            hostname=hostname,
            isCarousel=True
        )
        album_db.put()
        return flask.redirect(flask.url_for(
          'album_update', album_id=album_db.key.id(),
        ))
Exemple #2
0
def admin_album_update(album_id=0):
    if album_id:
        album_db = model.Album.get_by_id(album_id)
    else:
        album_db = model.Album()
    if not album_db:
        flask.abort(404)

    form = AlbumUpdateAdminForm(obj=album_db)

    if flask.request.method == 'GET' and not form.errors:
        form.tags.data = config.TAG_SEPARATOR.join(form.tags.data)

    if form.validate_on_submit():
        form.tags.data = util.parse_tags(form.tags.data)
        form.populate_obj(album_db)
        album_db.put()
        return flask.redirect(
            flask.url_for('admin_album_list', order='-modified'))

    return flask.render_template(
        'album/admin_album_update.html',
        title=album_db.name if album_id else 'New Album',
        html_class='admin-album-update',
        form=form,
        album_db=album_db,
        back_url_for='admin_album_list',
        api_url=flask.url_for(
            'api.admin.album',
            album_key=album_db.key.urlsafe() if album_db.key else ''),
    )
Exemple #3
0
def make_home_template(isEditMode):
    parsed_request = urlparse(flask.request.url)
    hostname = parsed_request.hostname
    if 'www.' in hostname:
        hostname = hostname.split('www.')[1]

    # get carousel resources
    query = model.Album.query(
        model.Album.hostname==hostname,
        model.Album.isCarousel==True
    )
    carousel_album_db = query.get()

    if not carousel_album_db and isEditMode:
        carousel_album_db = model.Album(
            user_key=auth.current_user_key(),
            hostname=hostname,
            isCarousel=True
        )
        carousel_album_db.put()

    carousel_resource_dbs = None
    if carousel_album_db:
        carousel_resource_dbs, cursors = carousel_album_db.get_resource_dbs()

    # get site albums
    query = model.Album.query(
      model.Album.hostname==hostname,
      model.Album.isCarousel==False
    )
    album_dbs = query.fetch(30) # limit site albums to 30
    album_list = []
    for album_db in album_dbs:
        query = model.Resource.query(
          model.Resource.album_key==album_db.key
        )
        album_image_db = query.get()
        if album_image_db:
            album_info = {'album_db': album_db, 'image_url': album_image_db.image_url}
        else:
            album_info = {'album_db': album_db, 'image_url': None}
        album_list.append(album_info)

    get_upload_url = None
    if carousel_album_db and isEditMode:
        get_upload_url=flask.url_for('api.album.resource.upload', key=carousel_album_db.key.urlsafe())

    return flask.render_template(
        'welcome.html',
        html_class='welcome',
        isEditMode=isEditMode,
        album_list=album_list,
        carousel_resource_dbs=carousel_resource_dbs,
        get_upload_url=get_upload_url,
        has_json=True,
        upload_url=blobstore.create_upload_url(
          flask.request.path,
          gs_bucket_name=config.CONFIG_DB.bucket_name or None,
        ),
    )
 def get_album(self, album_id):
     if self.apikey:
         url_pattern = r'https://api.douban.com/v2/album/{0}?apikey={1}'
         url = url_pattern.format(album_id, self.apikey)
     else:
         url_pattern = r'https://api.douban.com/v2/album/{0}'
         url = url_pattern.format(album_id)
     jsonStr = self.get_html(url)
     data = json.loads(jsonStr)
     title = data['title'].strip()
     url = data['alt']
     author = data['author']['name']
     created = data['created']
     size = int(data['size'])
     desc = data['desc'].strip()
     return model.Album(album_id,
                        title,
                        url,
                        author=author,
                        created=created,
                        size=size,
                        desc=desc)
Exemple #5
0
def album_create():
    # album_db = model.Album.get_by_id(album_id)
    #
    # if album_db
    #     if album_db.user_key != auth.current_user_key():
    #         return flask.abort(404)
    #     else:
    #         resource_dbs = album_db.get_resource_dbs()
    #
    # if not album_db:
    # todo, securetodo: check if user is registerd with hostname>?
    parsed_request = urlparse(flask.request.url)
    hostname = parsed_request.hostname
    if 'www.' in hostname:
        hostname = hostname.split('www.')[1]
    album_db = model.Album(
        user_key=auth.current_user_key(),
        hostname=hostname
    )
    album_db.put()
    return flask.redirect(flask.url_for(
      'album_update', album_id=album_db.key.id(),
    ))