Add a field site.domain, so that profiles can be labeled as username@domain, WebFinger style

This commit is contained in:
Danielle McLean 2017-10-31 13:46:52 +11:00
parent 76305543fa
commit 8a9f41759e
Signed by: 00dani
GPG key ID: 5A5D2D1AFF12EEC5
5 changed files with 61 additions and 5 deletions

View file

@ -11,7 +11,15 @@ def avatar_path(instance, name):
class Site(models.Model):
name = models.CharField(max_length=100, unique=True)
icon = models.CharField(max_length=100)
url = models.CharField(max_length=100)
domain = models.CharField(max_length=100, blank=True)
url_template = models.CharField(max_length=100)
def format(self, username=''):
return self.url_template.format(domain=self.domain, username=username)
@property
def url(self):
return self.format()
def __str__(self):
return self.name
@ -73,7 +81,9 @@ class Profile(models.Model):
display_name = models.CharField(max_length=100, blank=True)
def __str__(self):
return self.url
if self.site.domain:
return self.name + '@' + self.site.domain
return self.name
@property
def name(self):
@ -81,7 +91,7 @@ class Profile(models.Model):
@property
def url(self):
return self.site.url.format(username=self.username)
return self.site.format(username=self.username)
class Meta:
ordering = ('site', 'username')