Merge pull request #665 from kaiyou/feat-reply-startdate
Implement a start date filter for autoreply, fixes #362
This commit is contained in:
@@ -32,9 +32,6 @@ if exists "X-Virus" {
|
|||||||
stop;
|
stop;
|
||||||
}
|
}
|
||||||
|
|
||||||
{% if user.reply_enabled %}
|
{% if user.reply_active %}
|
||||||
if currentdate :value "le" "date" "{{ user.reply_enddate }}"
|
|
||||||
{
|
|
||||||
vacation :days 1 :subject "{{ user.reply_subject }}" "{{ user.reply_body }}";
|
vacation :days 1 :subject "{{ user.reply_subject }}" "{{ user.reply_body }}";
|
||||||
}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -250,6 +250,8 @@ class User(Base, Email):
|
|||||||
reply_enabled = db.Column(db.Boolean(), nullable=False, default=False)
|
reply_enabled = db.Column(db.Boolean(), nullable=False, default=False)
|
||||||
reply_subject = db.Column(db.String(255), nullable=True, default=None)
|
reply_subject = db.Column(db.String(255), nullable=True, default=None)
|
||||||
reply_body = db.Column(db.Text(), nullable=True, default=None)
|
reply_body = db.Column(db.Text(), nullable=True, default=None)
|
||||||
|
reply_startdate = db.Column(db.Date, nullable=False,
|
||||||
|
default=date(1900, 1, 1))
|
||||||
reply_enddate = db.Column(db.Date, nullable=False,
|
reply_enddate = db.Column(db.Date, nullable=False,
|
||||||
default=date(2999, 12, 31))
|
default=date(2999, 12, 31))
|
||||||
|
|
||||||
@@ -276,6 +278,15 @@ class User(Base, Email):
|
|||||||
else:
|
else:
|
||||||
return self.email
|
return self.email
|
||||||
|
|
||||||
|
@property
|
||||||
|
def reply_active(self):
|
||||||
|
now = date.today()
|
||||||
|
return (
|
||||||
|
self.reply_enabled and
|
||||||
|
self.reply_startdate < now and
|
||||||
|
self.reply_enddate > now
|
||||||
|
)
|
||||||
|
|
||||||
scheme_dict = {'PBKDF2': "pbkdf2_sha512",
|
scheme_dict = {'PBKDF2': "pbkdf2_sha512",
|
||||||
'BLF-CRYPT': "bcrypt",
|
'BLF-CRYPT': "bcrypt",
|
||||||
'SHA512-CRYPT': "sha512_crypt",
|
'SHA512-CRYPT': "sha512_crypt",
|
||||||
|
|||||||
@@ -117,6 +117,7 @@ class UserReplyForm(flask_wtf.FlaskForm):
|
|||||||
reply_subject = fields.StringField(_('Reply subject'))
|
reply_subject = fields.StringField(_('Reply subject'))
|
||||||
reply_body = fields.StringField(_('Reply body'),
|
reply_body = fields.StringField(_('Reply body'),
|
||||||
widget=widgets.TextArea())
|
widget=widgets.TextArea())
|
||||||
|
reply_startdate = fields.html5.DateField(_('Start of vacation'))
|
||||||
reply_enddate = fields.html5.DateField(_('End of vacation'))
|
reply_enddate = fields.html5.DateField(_('End of vacation'))
|
||||||
submit = fields.SubmitField(_('Update'))
|
submit = fields.SubmitField(_('Update'))
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
<form class="form" method="post" role="form">
|
<form class="form" method="post" role="form">
|
||||||
{{ form.hidden_tag() }}
|
{{ form.hidden_tag() }}
|
||||||
{{ macros.form_field(form.reply_enabled,
|
{{ macros.form_field(form.reply_enabled,
|
||||||
onchange="if(this.checked){$('#reply_subject,#reply_body,#reply_enddate').removeAttr('readonly')}
|
onchange="if(this.checked){$('#reply_subject,#reply_body,#reply_enddate,#reply_startdate').removeAttr('readonly')}
|
||||||
else{$('#reply_subject,#reply_body,#reply_enddate').attr('readonly', '')}") }}
|
else{$('#reply_subject,#reply_body,#reply_enddate').attr('readonly', '')}") }}
|
||||||
{{ macros.form_field(form.reply_subject,
|
{{ macros.form_field(form.reply_subject,
|
||||||
**{("rw" if user.reply_enabled else "readonly"): ""}) }}
|
**{("rw" if user.reply_enabled else "readonly"): ""}) }}
|
||||||
@@ -21,6 +21,9 @@
|
|||||||
**{("rw" if user.reply_enabled else "readonly"): ""}) }}
|
**{("rw" if user.reply_enabled else "readonly"): ""}) }}
|
||||||
{{ macros.form_field(form.reply_enddate,
|
{{ macros.form_field(form.reply_enddate,
|
||||||
**{("rw" if user.reply_enabled else "readonly"): ""}) }}
|
**{("rw" if user.reply_enabled else "readonly"): ""}) }}
|
||||||
|
{{ macros.form_field(form.reply_startdate,
|
||||||
|
**{("rw" if user.reply_enabled else "readonly"): ""}) }}
|
||||||
|
|
||||||
{{ macros.form_field(form.submit) }}
|
{{ macros.form_field(form.submit) }}
|
||||||
</form>
|
</form>
|
||||||
{% endcall %}
|
{% endcall %}
|
||||||
|
|||||||
24
core/admin/migrations/versions/3b281286c7bd_.py
Normal file
24
core/admin/migrations/versions/3b281286c7bd_.py
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
""" Add a start day for vacations
|
||||||
|
|
||||||
|
Revision ID: 3b281286c7bd
|
||||||
|
Revises: 25fd6c7bcb4a
|
||||||
|
Create Date: 2018-09-27 22:20:08.158553
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
revision = '3b281286c7bd'
|
||||||
|
down_revision = '25fd6c7bcb4a'
|
||||||
|
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
with op.batch_alter_table('user') as batch:
|
||||||
|
batch.add_column(sa.Column('reply_startdate', sa.Date(), nullable=False,
|
||||||
|
server_default="1900-01-01"))
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
with op.batch_alter_table('user') as batch:
|
||||||
|
batch.drop_column('reply_startdate')
|
||||||
Reference in New Issue
Block a user