diff --git a/djangoldp_profile/models.py b/djangoldp_profile/models.py index aef060eec38520461fa07e8fd065784a0db350cb..aa915aede0dbe4be5995477eb4418910f3e04a1e 100644 --- a/djangoldp_profile/models.py +++ b/djangoldp_profile/models.py @@ -3,6 +3,7 @@ from django.core.urlresolvers import reverse_lazy from django.db import models from django.db.models.signals import post_save from django.dispatch import receiver +from importlib import import_module from djangoldp.models import Model from djangoldp_skill.models import Skill @@ -54,6 +55,22 @@ class Contact(Model): def __str__(self): return self.fullName +# allow other modules to add nested fields to Profile +djangoldp_modules = list(settings.DJANGOLDP_PACKAGES) +profile_fields = ['@id', 'user', 'bio', 'slug', 'available', 'job', 'website', 'address', 'skills', 'jabberID', 'name', 'givenName', 'familyName', 'phone'] +profile_nested_fields = [] +for dldp_module in djangoldp_modules: + try: + module_profile_nested_fields = import_module(dldp_module + '.settings').PROFILE_NESTED_FIELDS + profile_fields += module_profile_nested_fields + profile_nested_fields += module_profile_nested_fields + except: + pass + +s_fields = [] +s_fields.extend(profile_fields) +s_fields.extend(profile_nested_fields) + class Profile(Model): user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="profile") bio = models.CharField(max_length=2048, blank=True) @@ -75,6 +92,8 @@ class Profile(Model): authenticated_perms = ['inherit'] owner_perms = ['inherit', 'change'] lookup_field = 'slug' + nested_fields = profile_nested_fields + serializer_fields = s_fields rdf_type = 'foaf:Person' rdf_context = { 'foaf': "http://xmlns.com/foaf/0.1/",