allow mastodon users to preserve DMs

This commit is contained in:
codl 2017-08-20 18:17:33 +02:00
parent b63f2f2b06
commit 06f144f8b4
No known key found for this signature in database
GPG Key ID: 6CD7C8891ED1233A
6 changed files with 40 additions and 1 deletions

View File

@ -128,6 +128,7 @@ def post_from_api_object(obj, instance):
has_media = 'media_attachments' in obj and bool(obj['media_attachments']),
created_at = iso8601.parse_date(obj['created_at']),
author_id = account_from_api_object(obj['account'], instance).id,
direct = obj['visibility'] == 'direct',
)
def account_from_api_object(obj, instance):

View File

@ -6,4 +6,5 @@ attrs = (
'policy_keep_younger_scale',
'policy_keep_younger_significand',
'policy_keep_media',
'policy_keep_direct',
)

View File

@ -0,0 +1,26 @@
"""add post.direct and account.policy_keep_direct
Revision ID: 5fec5f5e8a5e
Revises: 8993e80e7aa3
Create Date: 2017-08-20 18:16:26.682744
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '5fec5f5e8a5e'
down_revision = '8993e80e7aa3'
branch_labels = None
depends_on = None
def upgrade():
op.add_column('accounts', sa.Column('policy_keep_direct', sa.Boolean(), server_default='TRUE', nullable=False))
op.add_column('posts', sa.Column('direct', sa.Boolean(), server_default='FALSE', nullable=False))
def downgrade():
op.drop_column('posts', 'direct')
op.drop_column('accounts', 'policy_keep_direct')

View File

@ -67,6 +67,7 @@ class Account(TimestampMixin, RemoteIDMixin):
policy_keep_media = db.Column(db.Boolean, server_default='FALSE', nullable=False)
policy_delete_every = db.Column(db.Interval, server_default='30 minutes', nullable=False)
policy_keep_younger = db.Column(db.Interval, server_default='365 days', nullable=False)
policy_keep_direct = db.Column(db.Boolean, server_default='TRUE', nullable=False)
display_name = db.Column(db.String)
screen_name = db.Column(db.String)
@ -176,6 +177,7 @@ class Post(db.Model, TimestampMixin, RemoteIDMixin):
favourite = db.Column(db.Boolean, server_default='FALSE', nullable=False)
has_media = db.Column(db.Boolean, server_default='FALSE', nullable=False)
direct = db.Column(db.Boolean, server_default='FALSE', nullable=False)
def __repr__(self):
return '<Post ({}, Author: {})>'.format(self.id, self.author_id)

View File

@ -162,7 +162,8 @@ def delete_from_account(account_id):
refreshed = refresh_posts((post,))
if refreshed and \
(not account.policy_keep_favourites or not post.favourite) \
and (not account.policy_keep_media or not post.has_media):
and (not account.policy_keep_media or not post.has_media)\
and (not account.policy_keep_direct or not post.direct):
eligible = refreshed
break

View File

@ -63,6 +63,14 @@
<label><input type=radio name=policy_keep_media value=false {{ "checked" if not g.viewer.account.policy_keep_media }}> No</label>
</span>
</p>
{% if g.viewer.account.service == 'mastodon' %}
<p>Private posts (direct messages) will never expire
<span style='display:inline-block'>
<label><input type=radio name=policy_keep_private value=true {{ "checked" if g.viewer.account.policy_keep_private }}> Yes</label>
<label><input type=radio name=policy_keep_private value=false {{ "checked" if not g.viewer.account.policy_keep_private }}> No</label>
</span>
</p>
{% endif %}
<p>Every
{{interval_input(g.viewer.account, 'policy_delete_every', scales)}},
one expired post will be picked at random and deleted.