diff --git a/__pycache__/app.cpython-313.pyc b/__pycache__/app.cpython-313.pyc index fcbc680..5b5c186 100644 Binary files a/__pycache__/app.cpython-313.pyc and b/__pycache__/app.cpython-313.pyc differ diff --git a/__pycache__/models.cpython-313.pyc b/__pycache__/models.cpython-313.pyc index e2fd722..92562ba 100644 Binary files a/__pycache__/models.cpython-313.pyc and b/__pycache__/models.cpython-313.pyc differ diff --git a/migrations/versions/20519a2437c2_add_mails_table.py b/migrations/versions/20519a2437c2_add_mails_table.py new file mode 100644 index 0000000..2f61176 --- /dev/null +++ b/migrations/versions/20519a2437c2_add_mails_table.py @@ -0,0 +1,41 @@ +"""add_mails_table + +Revision ID: 20519a2437c2 +Revises: 444d76da74ba +Create Date: 2025-06-02 09:04:39.972021 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '20519a2437c2' +down_revision = '444d76da74ba' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('mails', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('recipient', sa.String(length=150), nullable=False), + sa.Column('subject', sa.String(length=200), nullable=False), + sa.Column('body', sa.Text(), nullable=False), + sa.Column('status', sa.String(length=20), nullable=False), + sa.Column('created_at', sa.DateTime(), nullable=True), + sa.Column('sent_at', sa.DateTime(), nullable=True), + sa.Column('template_id', sa.Integer(), nullable=True), + sa.Column('notif_id', sa.Integer(), nullable=True), + sa.ForeignKeyConstraint(['notif_id'], ['notifs.id'], ), + sa.ForeignKeyConstraint(['template_id'], ['email_templates.id'], ), + sa.PrimaryKeyConstraint('id') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('mails') + # ### end Alembic commands ### diff --git a/migrations/versions/__pycache__/20519a2437c2_add_mails_table.cpython-313.pyc b/migrations/versions/__pycache__/20519a2437c2_add_mails_table.cpython-313.pyc new file mode 100644 index 0000000..573e08f Binary files /dev/null and b/migrations/versions/__pycache__/20519a2437c2_add_mails_table.cpython-313.pyc differ diff --git a/models.py b/models.py index 7dbd606..c84db27 100644 --- a/models.py +++ b/models.py @@ -312,4 +312,23 @@ class EmailTemplate(db.Model): creator = db.relationship('User', backref='created_email_templates', foreign_keys=[created_by]) def __repr__(self): - return f'' \ No newline at end of file + return f'' + +class Mail(db.Model): + __tablename__ = 'mails' + id = db.Column(db.Integer, primary_key=True) + recipient = db.Column(db.String(150), nullable=False) + subject = db.Column(db.String(200), nullable=False) + body = db.Column(db.Text, nullable=False) + status = db.Column(db.String(20), default='pending', nullable=False) # e.g., pending, sent, failed + created_at = db.Column(db.DateTime, default=datetime.utcnow) + sent_at = db.Column(db.DateTime, nullable=True) + template_id = db.Column(db.Integer, db.ForeignKey('email_templates.id'), nullable=True) + notif_id = db.Column(db.Integer, db.ForeignKey('notifs.id'), nullable=True) + + # Relationships + template = db.relationship('EmailTemplate', backref='mails') + notif = db.relationship('Notif', backref='mails') + + def __repr__(self): + return f'' \ No newline at end of file diff --git a/templates/settings/tabs/email_templates.html b/templates/settings/tabs/email_templates.html index d71dba1..c52573e 100644 --- a/templates/settings/tabs/email_templates.html +++ b/templates/settings/tabs/email_templates.html @@ -11,13 +11,27 @@ {% for template in templates %} {% endfor %} + + +
@@ -52,6 +66,83 @@