mirror of
https://github.com/zulip/zulip.git
synced 2025-10-23 04:52:12 +00:00
models: Add MissedMessageEmailAddress class.
Preparatory commit for making the email mirror use the database instead of redis for missed message addresses. This model will represent missed message email addresses, which currently have their data stored in redis. The redis data will be converted and migrated into these models and the email mirror will start using them in the main commit.
This commit is contained in:
committed by
Tim Abbott
parent
a38976f25d
commit
8a1d2bb5b6
@@ -98,6 +98,7 @@ ALL_ZULIP_TABLES = {
|
||||
'zerver_emailchangestatus',
|
||||
'zerver_huddle',
|
||||
'zerver_message',
|
||||
'zerver_missedmessageemailaddress',
|
||||
'zerver_multiuseinvite',
|
||||
'zerver_multiuseinvite_streams',
|
||||
'zerver_preregistrationuser',
|
||||
@@ -145,6 +146,11 @@ NON_EXPORTED_TABLES = {
|
||||
'zerver_preregistrationuser',
|
||||
'zerver_preregistrationuser_streams',
|
||||
|
||||
# Missed message addresses are low value to export since
|
||||
# missed-message email addresses include the server's hostname and
|
||||
# expire after a few days.
|
||||
'zerver_missedmessageemailaddress',
|
||||
|
||||
# When switching servers, clients will need to re-login and
|
||||
# reregister for push notifications anyway.
|
||||
'zerver_pushdevicetoken',
|
||||
|
29
zerver/migrations/0259_missedmessageemailaddress.py
Normal file
29
zerver/migrations/0259_missedmessageemailaddress.py
Normal file
@@ -0,0 +1,29 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.26 on 2020-01-06 01:23
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0258_enable_online_push_notifications_default'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='MissedMessageEmailAddress',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('email_token', models.CharField(db_index=True, max_length=34, unique=True)),
|
||||
('timestamp', models.DateTimeField(db_index=True, default=django.utils.timezone.now)),
|
||||
('times_used', models.PositiveIntegerField(db_index=True, default=0)),
|
||||
('message', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Message')),
|
||||
('user_profile', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
]
|
@@ -2509,6 +2509,21 @@ class ScheduledEmail(AbstractScheduledJob):
|
||||
self.address or list(self.users.all()),
|
||||
self.scheduled_timestamp)
|
||||
|
||||
class MissedMessageEmailAddress(models.Model):
|
||||
EXPIRY_SECONDS = 60 * 60 * 24 * 5
|
||||
|
||||
message = models.ForeignKey(Message, on_delete=CASCADE) # type: Message
|
||||
user_profile = models.ForeignKey(UserProfile, on_delete=CASCADE) # type: UserProfile
|
||||
email_token = models.CharField(max_length=34, unique=True, db_index=True) # type: str
|
||||
|
||||
# Timestamp of when the missed message address generated.
|
||||
# The address is valid until timestamp + EXPIRY_SECONDS.
|
||||
timestamp = models.DateTimeField(db_index=True, default=timezone_now) # type: datetime.datetime
|
||||
times_used = models.PositiveIntegerField(default=0, db_index=True) # type: int
|
||||
|
||||
def __str__(self) -> str:
|
||||
return settings.EMAIL_GATEWAY_PATTERN % (self.email_token,)
|
||||
|
||||
class ScheduledMessage(models.Model):
|
||||
sender = models.ForeignKey(UserProfile, on_delete=CASCADE) # type: UserProfile
|
||||
recipient = models.ForeignKey(Recipient, on_delete=CASCADE) # type: Recipient
|
||||
|
Reference in New Issue
Block a user