diff --git a/lib/mastodon.py b/lib/mastodon.py
index ce105af..82f3c7d 100644
--- a/lib/mastodon.py
+++ b/lib/mastodon.py
@@ -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):
diff --git a/lib/settings.py b/lib/settings.py
index 7aa5407..ff75d93 100644
--- a/lib/settings.py
+++ b/lib/settings.py
@@ -6,4 +6,5 @@ attrs = (
'policy_keep_younger_scale',
'policy_keep_younger_significand',
'policy_keep_media',
+ 'policy_keep_direct',
)
diff --git a/migrations/versions/5fec5f5e8a5e_add_post_direct_and_account_policy_keep_.py b/migrations/versions/5fec5f5e8a5e_add_post_direct_and_account_policy_keep_.py
new file mode 100644
index 0000000..1feeb3d
--- /dev/null
+++ b/migrations/versions/5fec5f5e8a5e_add_post_direct_and_account_policy_keep_.py
@@ -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')
diff --git a/model.py b/model.py
index 8bff012..0007b26 100644
--- a/model.py
+++ b/model.py
@@ -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 '
Private posts (direct messages) will never expire + + + + +
+{% endif %}Every {{interval_input(g.viewer.account, 'policy_delete_every', scales)}}, one expired post will be picked at random and deleted.