Skip to content
Snippets Groups Projects
models.py 1.55 KiB
Newer Older
  • Learn to ignore specific revisions
  • Eliot Berriot's avatar
    Eliot Berriot committed
    from django.conf import settings
    from django.db import models
    from django.utils import timezone
    
    TYPE_CHOICES = [
        ('Person', 'Person'),
        ('Application', 'Application'),
        ('Group', 'Group'),
        ('Organization', 'Organization'),
        ('Service', 'Service'),
    ]
    
    
    class Actor(models.Model):
        url = models.URLField(unique=True, max_length=500, db_index=True)
        outbox_url = models.URLField(max_length=500)
        inbox_url = models.URLField(max_length=500)
        following_url = models.URLField(max_length=500, null=True, blank=True)
        followers_url = models.URLField(max_length=500, null=True, blank=True)
        shared_inbox_url = models.URLField(max_length=500, null=True, blank=True)
        type = models.CharField(
            choices=TYPE_CHOICES, default='Person', max_length=25)
        name = models.CharField(max_length=200, null=True, blank=True)
        domain = models.CharField(max_length=1000)
        summary = models.CharField(max_length=500, null=True, blank=True)
        preferred_username = models.CharField(
            max_length=200, null=True, blank=True)
        public_key = models.CharField(max_length=5000, null=True, blank=True)
        private_key = models.CharField(max_length=5000, null=True, blank=True)
        creation_date = models.DateTimeField(default=timezone.now)
        last_fetch_date = models.DateTimeField(
            default=timezone.now)
        manually_approves_followers = models.NullBooleanField(default=None)
    
        @property
        def webfinger_subject(self):
            return '{}@{}'.format(
                self.preferred_username,
                settings.FEDERATION_HOSTNAME,
            )