From 106d83ea8157c6f14a399716381ddf07ac21a024 Mon Sep 17 00:00:00 2001 From: Cédric Bonhomme Date: Mon, 24 Oct 2016 13:30:11 +0200 Subject: add the possibility to mak a feed as private --- ...6f33dd_add_column_private_to_the_feeds_table.py | 25 ++++++++++++++++++++++ src/web/forms.py | 1 + src/web/models/feed.py | 1 + src/web/templates/edit_feed.html | 10 +++++++++ src/web/views/feed.py | 3 ++- src/web/views/user.py | 8 ++++--- src/web/views/views.py | 1 + 7 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 migrations/versions/be2b8b6f33dd_add_column_private_to_the_feeds_table.py diff --git a/migrations/versions/be2b8b6f33dd_add_column_private_to_the_feeds_table.py b/migrations/versions/be2b8b6f33dd_add_column_private_to_the_feeds_table.py new file mode 100644 index 00000000..c41aa12a --- /dev/null +++ b/migrations/versions/be2b8b6f33dd_add_column_private_to_the_feeds_table.py @@ -0,0 +1,25 @@ +"""add column private to the feeds table + +Revision ID: be2b8b6f33dd +Revises: fa10b0bdd045 +Create Date: 2016-10-24 13:28:55.964803 + +""" + +# revision identifiers, used by Alembic. +revision = 'be2b8b6f33dd' +down_revision = 'fa10b0bdd045' +branch_labels = None +depends_on = None + +from alembic import op +import sqlalchemy as sa + + +def upgrade(): + op.add_column('feed', sa.Column('private', + sa.Boolean(), default=False)) + + +def downgrade(): + op.drop_column('feed', 'private') diff --git a/src/web/forms.py b/src/web/forms.py index 4ea646fc..be1650d8 100644 --- a/src/web/forms.py +++ b/src/web/forms.py @@ -191,6 +191,7 @@ class AddFeedForm(Form): submit = SubmitField(lazy_gettext("Save")) category_id = SelectField(lazy_gettext("Category of the feed"), [validators.Optional()]) + private = BooleanField(lazy_gettext("Private"), default=False) def set_category_choices(self, categories): self.category_id.choices = [('0', 'No Category')] diff --git a/src/web/models/feed.py b/src/web/models/feed.py index 362a0d67..7bf2ace3 100644 --- a/src/web/models/feed.py +++ b/src/web/models/feed.py @@ -45,6 +45,7 @@ class Feed(db.Model, RightMixin): enabled = db.Column(db.Boolean(), default=True) created_date = db.Column(db.DateTime(), default=datetime.utcnow) filters = db.Column(db.PickleType, default=[]) + private = db.Column(db.Boolean(), default=False) # cache handling etag = db.Column(db.String(), default="") diff --git a/src/web/templates/edit_feed.html b/src/web/templates/edit_feed.html index ab624f15..128b54fb 100644 --- a/src/web/templates/edit_feed.html +++ b/src/web/templates/edit_feed.html @@ -45,6 +45,16 @@ + +
+ +
+
+ {{ form.private(class_="checkbox", style="margin-left: 0px;") }} +
+
+
+
diff --git a/src/web/views/feed.py b/src/web/views/feed.py index 6338f320..92aef10a 100644 --- a/src/web/views/feed.py +++ b/src/web/views/feed.py @@ -191,7 +191,8 @@ def process_form(feed_id=None): # Edit an existing feed feed_attr = {'title': form.title.data, 'enabled': form.enabled.data, 'link': form.link.data, 'site_link': form.site_link.data, - 'filters': [], 'category_id': form.category_id.data} + 'filters': [], 'category_id': form.category_id.data, + 'private': form.private.data} if not feed_attr['category_id'] or feed_attr['category_id'] == '0': del feed_attr['category_id'] diff --git a/src/web/views/user.py b/src/web/views/user.py index fc94f205..682e20ff 100644 --- a/src/web/views/user.py +++ b/src/web/views/user.py @@ -29,6 +29,10 @@ def profile_public(nickname=None): if not user.is_public_profile: return redirect(url_for('home')) + filters = {} + filters['private__eq'] = False + feeds = FeedController(user.id).read(**filters).all() + """word_size = 6 filters = {} filters['retrieved_date__gt'] = datetime.now() - timedelta(weeks=10) @@ -36,9 +40,7 @@ def profile_public(nickname=None): top_words = misc_utils.top_words(articles, n=50, size=int(word_size)) tag_cloud = misc_utils.tag_cloud(top_words)""" - return render_template('profile_public.html', - user=user, - feeds=user.feeds) + return render_template('profile_public.html', user=user, feeds=feeds) @user_bp.route('/management', methods=['GET', 'POST']) diff --git a/src/web/views/views.py b/src/web/views/views.py index 8703edba..8024b27d 100644 --- a/src/web/views/views.py +++ b/src/web/views/views.py @@ -64,6 +64,7 @@ def popular(): filters = {} filters['created_date__gt'] = not_added_before + filters['private__eq'] = False feeds = FeedController().count_by_link(**filters) sorted_feeds = sorted(list(feeds.items()), key=operator.itemgetter(1), reverse=True) -- cgit