three-way favourite policy. closes #18
This commit is contained in:
parent
5c47db8cc4
commit
51e070af3d
|
@ -0,0 +1,53 @@
|
|||
"""add three-way favourite policy
|
||||
|
||||
Revision ID: 2bd33abe291c
|
||||
Revises: 583cdac8eba1
|
||||
Create Date: 2018-01-03 17:31:03.718648
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '2bd33abe291c'
|
||||
down_revision = '583cdac8eba1'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
transitional = sa.table('accounts',
|
||||
sa.column('policy_keep_favourites'),
|
||||
sa.column('old_policy_keep_favourites'))
|
||||
|
||||
|
||||
|
||||
def upgrade():
|
||||
ThreeWayPolicyEnum = sa.Enum('keeponly', 'deleteonly', 'none',
|
||||
name='enum_3way_policy')
|
||||
op.alter_column('accounts', 'policy_keep_favourites',
|
||||
new_column_name='old_policy_keep_favourites')
|
||||
op.add_column(
|
||||
'accounts',
|
||||
sa.Column('policy_keep_favourites', ThreeWayPolicyEnum,
|
||||
nullable=False, server_default='none'))
|
||||
|
||||
op.execute(transitional.update()
|
||||
.where(transitional.c.old_policy_keep_favourites)
|
||||
.values(policy_keep_favourites=op.inline_literal('keeponly')))
|
||||
|
||||
op.drop_column('accounts', 'old_policy_keep_favourites')
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.alter_column('accounts', 'policy_keep_favourites',
|
||||
new_column_name='old_policy_keep_favourites')
|
||||
op.add_column(
|
||||
'accounts',
|
||||
sa.Column('policy_keep_favourites', sa.Boolean(),
|
||||
nullable=False, server_default='f'))
|
||||
|
||||
op.execute(transitional.update()
|
||||
.where(transitional.c.old_policy_keep_favourites == op.inline_literal('keeponly'))
|
||||
.values(policy_keep_favourites=op.inline_literal('t')))
|
||||
|
||||
op.drop_column('accounts', 'old_policy_keep_favourites')
|
10
model.py
10
model.py
|
@ -81,8 +81,8 @@ class Account(TimestampMixin, RemoteIDMixin):
|
|||
nullable=False)
|
||||
policy_keep_latest = db.Column(db.Integer, server_default='100',
|
||||
nullable=False)
|
||||
policy_keep_favourites = db.Column(db.Boolean, server_default='TRUE',
|
||||
nullable=False)
|
||||
policy_keep_favourites = db.Column(ThreeWayPolicyEnum,
|
||||
server_default='none', nullable=False)
|
||||
policy_keep_media = db.Column(ThreeWayPolicyEnum, server_default='none',
|
||||
nullable=False)
|
||||
policy_delete_every = db.Column(db.Interval, server_default='30 minutes',
|
||||
|
@ -177,8 +177,10 @@ class Account(TimestampMixin, RemoteIDMixin):
|
|||
.filter(Post.created_at <=
|
||||
db.func.now() - self.policy_keep_younger)
|
||||
.except_(latest_n_posts))
|
||||
if(self.policy_keep_favourites):
|
||||
query = query.filter(db.or_(~Post.favourite, Post.is_reblog))
|
||||
if(self.policy_keep_favourites != 'none'):
|
||||
query = query.filter(db.or_(
|
||||
Post.favourite == (self.policy_keep_favourites == 'deleteonly'),
|
||||
Post.is_reblog))
|
||||
if(self.policy_keep_media != 'none'):
|
||||
query = query.filter(db.or_(
|
||||
Post.has_media == (self.policy_keep_media == 'deleteonly'),
|
||||
|
|
4
tasks.py
4
tasks.py
|
@ -175,7 +175,9 @@ def delete_from_account(account_id):
|
|||
post.is_reblog or
|
||||
(
|
||||
(
|
||||
not account.policy_keep_favourites or not post.favourite
|
||||
account.policy_keep_favourites == 'none' or
|
||||
(account.policy_keep_favourites == 'keeponly' and not post.favourite) or
|
||||
(account.policy_keep_favourites == 'deleteonly' and post.favourite)
|
||||
) and (
|
||||
account.policy_keep_media == 'none' or
|
||||
(account.policy_keep_media == 'keeponly' and not post.has_media) or
|
||||
|
|
|
@ -70,20 +70,22 @@
|
|||
<input type=number name=policy_keep_latest min=0 step=1 style='max-width:8ch' value={{g.viewer.account.policy_keep_latest}}>
|
||||
most recent posts will expire
|
||||
</p>
|
||||
<p>Keep posts that you have liked / favourited
|
||||
<p>Keep
|
||||
<span class="radiostrip">
|
||||
<input type=radio name=policy_keep_favourites value=true id=policy_keep_favourites_true {{ "checked" if g.viewer.account.policy_keep_favourites }}>
|
||||
<label for=policy_keep_favourites_true>Yes</label>
|
||||
<input type=radio name=policy_keep_favourites value=false id=policy_keep_favourites_false {{ "checked" if not g.viewer.account.policy_keep_favourites }}>
|
||||
<label for=policy_keep_favourites_false>No</label>
|
||||
<input type=radio name=policy_keep_favourites value=keeponly id=policy_keep_favourites_keeponly {{ "checked" if g.viewer.account.policy_keep_favourites == 'keeponly' }}>
|
||||
<label for=policy_keep_favourites_keeponly>favourited posts</label>
|
||||
<input type=radio name=policy_keep_favourites value=deleteonly id=policy_keep_favourites_deleteonly {{ "checked" if g.viewer.account.policy_keep_favourites == 'deleteonly' }}>
|
||||
<label for=policy_keep_favourites_deleteonly>non-favourited posts</label>
|
||||
<input type=radio name=policy_keep_favourites value=none id=policy_keep_favourites_none {{ "checked" if g.viewer.account.policy_keep_favourites == 'none' }}>
|
||||
<label for=policy_keep_favourites_none>neither</label>
|
||||
</span>
|
||||
</p>
|
||||
<p>Keep posts
|
||||
<p>Keep
|
||||
<span class="radiostrip">
|
||||
<input type=radio name=policy_keep_media value=keeponly id=policy_keep_media_keeponly {{ "checked" if g.viewer.account.policy_keep_media == 'keeponly' }}>
|
||||
<label for=policy_keep_media_keeponly>with media attached</label>
|
||||
<label for=policy_keep_media_keeponly>media posts</label>
|
||||
<input type=radio name=policy_keep_media value=deleteonly id=policy_keep_media_deleteonly {{ "checked" if g.viewer.account.policy_keep_media == 'deleteonly' }}>
|
||||
<label for=policy_keep_media_deleteonly>with no media attached</label>
|
||||
<label for=policy_keep_media_deleteonly>non-media posts</label>
|
||||
<input type=radio name=policy_keep_media value=none id=policy_keep_media_none {{ "checked" if g.viewer.account.policy_keep_media == 'none' }}>
|
||||
<label for=policy_keep_media_none>neither</label>
|
||||
</span>
|
||||
|
|
Loading…
Reference in New Issue