Esempio n. 1
0
def update_article(handler, id, title=None, description=None, content=None,
                   icon_data=None, message=''):
    if not isinstance(id, (int, long)):
        raise TypeError('Article id must be an integer.')

    user = handler.user_obj
    if not user:
        raise simpleeditions.NotLoggedInError(
            'You must be logged in to update an article.')

    try:
        if icon_data:
            icon_blob = create_icon(user, icon_data,
                                    model.get_key(id, model.Article))
        else:
            icon_blob = None
        article = model.Article.update(id, user, title, description, content,
                                       icon_blob, message)
    except images.BadImageError:
        raise simpleeditions.SaveArticleError(
            'The supplied file could not be used as an icon. Try another '
            'image.')
    except apiproxy_errors.CapabilityDisabledError:
        raise simpleeditions.SaveArticleError(
            'Sorry, the database is currently in maintenance. Try again '
            'later.')

    return get_article_dict(article)
Esempio n. 2
0
def get_files(handler, article_id):
    if not isinstance(article_id, (int, long)):
        raise TypeError('Article id must be an integer')

    rpc = model.get_rpc()
    query = model.Blob.all() \
        .filter('owner', model.get_key(article_id, model.Article)) \
        .order('-created')
    files = query.fetch(10, rpc=rpc)
    return [get_blob_dict(file) for file in files]
Esempio n. 3
0
def add_file(handler, article_id, name, type, data):
    if not isinstance(article_id, (int, long)):
        raise TypeError('Article id must be an integer.')

    if not handler.user_obj:
        raise simpleeditions.NotLoggedInError(
            'You must be logged in to upload files.')

    return create_blob(handler.user_obj, data, type, name,
                       model.get_key(article_id, model.Article))
Esempio n. 4
0
def get_articles_by_user(handler, user_id):
    if not isinstance(user_id, (int, long)):
        raise TypeError('User id must be an integer')

    user_key = model.get_key(user_id, model.User)

    rpc = model.get_rpc()
    articles = model.Article.all() \
        .filter('user', user_key) \
        .order('-last_modified') \
        .fetch(50, rpc=rpc)

    return [get_article_dict(article) for article in articles]
def get_blob(name, article=None):
    if article:
        article = model.get_key(article, model.Article)
    return model.Blob.get_by_key_name(name, parent=article)