aboutsummaryrefslogtreecommitdiff
path: root/src/web/views
diff options
context:
space:
mode:
authorCédric Bonhomme <cedric@cedricbonhomme.org>2016-04-26 07:04:58 +0200
committerCédric Bonhomme <cedric@cedricbonhomme.org>2016-04-26 07:04:58 +0200
commita01f162119eff58bc1148f0b8105cfec714a99f5 (patch)
tree094df2214961244e3e70402bd76ad207b2bf1167 /src/web/views
parentRenamed a function to is_authorized? (diff)
parentUpdated preprocessors for the v3 Article API. (diff)
downloadnewspipe-a01f162119eff58bc1148f0b8105cfec714a99f5.tar.gz
newspipe-a01f162119eff58bc1148f0b8105cfec714a99f5.tar.bz2
newspipe-a01f162119eff58bc1148f0b8105cfec714a99f5.zip
Merge branch 'new-api' of github.com:JARR/JARR into new-api
Diffstat (limited to 'src/web/views')
-rw-r--r--src/web/views/api/v3/article.py35
-rw-r--r--src/web/views/api/v3/common.py6
2 files changed, 36 insertions, 5 deletions
diff --git a/src/web/views/api/v3/article.py b/src/web/views/api/v3/article.py
index a367a62f..49a9842e 100644
--- a/src/web/views/api/v3/article.py
+++ b/src/web/views/api/v3/article.py
@@ -1,7 +1,9 @@
from flask.ext.login import current_user
+from werkzeug.exceptions import NotFound
+from flask.ext.restless import ProcessingException
from web import models
from bootstrap import application, manager
-from web.controllers import ArticleController
+from web.controllers import ArticleController, FeedController
from web.views.api.v3.common import AbstractProcessor
from web.views.api.v3.common import url_prefix, auth_func
@@ -14,6 +16,26 @@ class ArticleProcessor(AbstractProcessor):
if not self.is_authorized(current_user, article):
raise ProcessingException(description='Not Authorized', code=401)
+ def post_put_preprocessor(self, data=None, **kw):
+ data["user_id"] = current_user.id
+
+ fcontr = FeedController()
+ try:
+ feed = fcontr.get(id=data["feed_id"])
+ except NotFound:
+ raise ProcessingException(description='No such feed.', code=404)
+
+ data["category_id"] = feed.category_id
+
+ def delete_preprocessor(self, instance_id=None, **kw):
+ contr = ArticleController()
+ try:
+ article = contr.get(id=instance_id)
+ except NotFound:
+ raise ProcessingException(description='No such article.', code=404)
+ if article.user_id != current_user.id:
+ raise ProcessingException(description='Not Authorized', code=401)
+
article_processor = ArticleProcessor()
@@ -22,9 +44,12 @@ blueprint_article = manager.create_api_blueprint(models.Article,
methods=['GET', 'POST', 'PUT', 'DELETE'],
preprocessors=dict(GET_SINGLE=[auth_func,
article_processor.get_single_preprocessor],
- GET_MANY=[auth_func,
+ GET_MANY=[auth_func,
article_processor.get_many_preprocessor],
- PUT_SINGLE=[auth_func],
- POST=[auth_func],
- DELETE=[auth_func]))
+ POST=[auth_func,
+ article_processor.post_put_preprocessor],
+ PUT_SINGLE=[auth_func,
+ article_processor.post_put_preprocessor],
+ DELETE=[auth_func,
+ article_processor.delete_preprocessor]))
application.register_blueprint(blueprint_article)
diff --git a/src/web/views/api/v3/common.py b/src/web/views/api/v3/common.py
index 00e5b3f9..bd20ad38 100644
--- a/src/web/views/api/v3/common.py
+++ b/src/web/views/api/v3/common.py
@@ -47,3 +47,9 @@ class AbstractProcessor():
search_params["filters"] = []
search_params["filters"].append(filt)
+
+ def post_put_preprocessor(self, data=None, **kw):
+ pass
+
+ def delete_preprocessor(self, instance_id=None, **kw):
+ pass
bgstack15