mirror of
https://github.com/zulip/zulip.git
synced 2025-11-13 10:26:28 +00:00
Since c57c4cf703, these are no longer
different implementations, so we can deduplicate them. Because Django
is smart, no migration is required.
36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
import datetime
|
|
|
|
from django.db import models
|
|
|
|
from zerver.models import AbstractPushDeviceToken
|
|
|
|
def get_remote_server_by_uuid(uuid: str) -> 'RemoteZulipServer':
|
|
return RemoteZulipServer.objects.get(uuid=uuid)
|
|
|
|
class RemoteZulipServer(models.Model):
|
|
UUID_LENGTH = 36
|
|
API_KEY_LENGTH = 64
|
|
HOSTNAME_MAX_LENGTH = 128
|
|
|
|
uuid = models.CharField(max_length=UUID_LENGTH, unique=True) # type: str
|
|
api_key = models.CharField(max_length=API_KEY_LENGTH) # type: str
|
|
|
|
hostname = models.CharField(max_length=HOSTNAME_MAX_LENGTH) # type: str
|
|
contact_email = models.EmailField(blank=True, null=False) # type: str
|
|
last_updated = models.DateTimeField('last updated', auto_now=True) # type: datetime.datetime
|
|
|
|
def __str__(self) -> str:
|
|
return "<RemoteZulipServer %s %s>" % (self.hostname, self.uuid[0:12])
|
|
|
|
# Variant of PushDeviceToken for a remote server.
|
|
class RemotePushDeviceToken(AbstractPushDeviceToken):
|
|
server = models.ForeignKey(RemoteZulipServer, on_delete=models.CASCADE) # type: RemoteZulipServer
|
|
# The user id on the remote server for this device device this is
|
|
user_id = models.BigIntegerField(db_index=True) # type: int
|
|
|
|
class Meta:
|
|
unique_together = ("server", "user_id", "kind", "token")
|
|
|
|
def __str__(self) -> str:
|
|
return "<RemotePushDeviceToken %s %s>" % (self.server, self.user_id)
|