'Set default permissions and point of contacts.
It is mandatory to call it from descendant classes
but hard to enforce technically via signals or save overriding.'

def set_missing_info(self):

    from guardian.models import UserObjectPermission
    logger.debug('Checking    for    permissions.')
    no_custom_permissions = UserObjectPermission.objects.filter(content_type=ContentType.objects.get_for_model(self.get_self_resource()), object_pk=str(self.pk)).exists()
    if (not no_custom_permissions):
        logger.debug('There    are    no    permissions    for    this    object,    setting    default    perms.')
        self.set_default_permissions()
    user = None
    if self.owner:
        user = self.owner
    else:
        try:
            user = ResourceBase.objects.admin_contact().user
        except:
            pass
    if user:
        if (self.poc is None):
            self.poc = user
        if (self.metadata_author is None):
            self.metadata_author = user
