From 0ca09a9483a11afa0a1eae23e158a971834d1f75 Mon Sep 17 00:00:00 2001 From: Fabien Quatravaux <fabien.quatravaux@riseup.net> Date: Wed, 10 Jun 2020 17:42:49 +0200 Subject: [PATCH] update: modify fields to match Person ontology --- djangoldp_profile/models.py | 86 ++++++++++++++++++++++++++----------- 1 file changed, 61 insertions(+), 25 deletions(-) diff --git a/djangoldp_profile/models.py b/djangoldp_profile/models.py index 0703065..761cc68 100644 --- a/djangoldp_profile/models.py +++ b/djangoldp_profile/models.py @@ -6,14 +6,38 @@ from django.dispatch import receiver from djangoldp.models import Model +class Contact(Model): + fullName = models.CharField(max_length=255) + givenName = models.CharField(max_length=255, blank=True) + familyName = models.CharField(max_length=255, blank=True) + email = models.EmailField(max_length=254, blank=True) + phone = models.CharField(max_length=255, blank=True) + role = models.CharField(max_length=255, blank=True) + + class Meta(Model.Meta): + anonymous_perms = ['view'] + authenticated_perms = ['inherit'] + owner_perms = ['inherit', 'change'] + rdf_type = 'vcard:Individual' + rdf_context = { + 'fullName': 'vcard:fn', + 'givenName': 'vcard:given-name', + 'familyName': 'vcard:family-name', + 'email': 'vcard:hasEmail', + 'phone': 'vcard:hasTelephone', + 'role': 'vcard:role' + } + def __str__(self): + return self.fullName class Profile(Model): user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="profile") + contact = models.OneToOneField(Contact, on_delete=models.CASCADE, related_name="profile", blank=True, null=True) + bio = models.CharField(max_length=2048, blank=True) slug = models.SlugField(unique=True, blank=True) available = models.NullBooleanField(blank=True) job = models.CharField(max_length=150, blank=True) city = models.CharField(max_length=255, blank=True) - phone = models.CharField(max_length=255, blank=True) website = models.URLField(blank=True) def jabberID(self): @@ -22,41 +46,53 @@ class Profile(Model): except: return None + def name(self): + try: + return self.contact.fullName + except: + return None + + def givenName(self): + try: + return self.contact.givenName + except: + return None + + def familyName(self): + try: + return self.contact.familyName + except: + return None + + def phone(self): + try: + return self.contact.phone + except: + return None + class Meta: auto_author = 'user' anonymous_perms = ['view'] authenticated_perms = ['inherit'] owner_perms = ['inherit', 'change'] lookup_field = 'slug' + rdf_type = 'foaf:Person' + rdf_context = { + 'foaf': "http://xmlns.com/foaf/0.1/", + 'user': 'foaf:account', + 'name': 'foaf:name', + 'givenName': 'foaf:givenName', + 'familyName': 'foaf:familyName', + 'bio': 'bio:biography', + 'phone': 'foaf:phone', + 'jabberID': 'foaf:jabberID', + 'website': 'foaf:homepage' + } def __str__(self): return '{} ({})'.format(self.user.get_full_name(), self.user.username) -class Contact(Model): - fullName = models.CharField(max_length=255) - givenName = models.CharField(max_length=255, blank=True) - familyName = models.CharField(max_length=255, blank=True) - email = models.EmailField(max_length=254, blank=True) - phone = models.CharField(max_length=255, blank=True) - role = models.CharField(max_length=255, blank=True) - - class Meta(Model.Meta): - anonymous_perms = [] - authenticated_perms = [] - owner_perms = [] - rdf_type = 'vcard:Individual' - rdf_context = { - 'fullName': 'vcard:fn', - 'givenName': 'vcard:given-name', - 'familyName': 'vcard:family-name', - 'email': 'vcard:hasEmail', - 'phone': 'vcard:hasTelephone', - 'role': 'vcard:role' - } - def __str__(self): - return self.fullName - @receiver(post_save, sender=settings.AUTH_USER_MODEL) def create_user_profile(sender, instance, created, **kwargs): if created: -- GitLab