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)
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]
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))
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)