def _apply_filter_by_client(self): """ If the user has the role Client, the user can not see batches from client objects he/she does not belong to. """ # If the current context is a Client, filter Batches by Client UID if IClient.providedBy(self.context): client_uid = api.get_uid(self.context) self.contentFilter['getClientUID'] = client_uid return # If the current user is a Client contact, filter the Batches in # accordance. For the rest of users (LabContacts), the visibility of # the Batches depend on their permissions user = api.get_current_user() roles = user.getRoles() if 'Client' not in roles: return # Are we sure this a ClientContact? # May happen that this is a Plone member, w/o having a ClientContact # assigned or having a LabContact assigned... weird contact = api.get_user_contact(user) if not contact or ILabContact.providedBy(contact): return # Is the parent from the Contact a Client? client = api.get_parent(contact) if not client or not IClient.providedBy(client): return client_uid = api.get_uid(client) self.contentFilter['getClientUID'] = client_uid
def _apply_filter_by_client(self): # If the current context is a Client, filter Patients by Client UID if IClient.providedBy(self.context): client_uid = api.get_uid(self.context) self.contentFilter['getPrimaryReferrerUID'] = client_uid return # If the current user is a Client contact, filter the Patients in # accordance. For the rest of users (LabContacts), the visibility of # the patients depend on their permissions user = api.get_current_user() roles = user.getRoles() if 'Client' not in roles: return # Are we sure this a ClientContact? # May happen that this is a Plone member, w/o having a ClientContact # assigned or having a LabContact assigned... weird contact = api.get_user_contact(user) if not contact or ILabContact.providedBy(contact): return # Is the parent from the Contact a Client? client = api.get_parent(contact) if not client or not IClient.providedBy(client): return client_uid = api.get_uid(client) self.contentFilter['getPrimaryReferrerUID'] = client_uid
def get_current_client(self, default=None): """Returns the client the current user belongs to """ user = api.get_current_user() roles = user.getRoles() if 'Client' not in roles: return default contact = api.get_user_contact(user) if not contact or ILabContact.providedBy(contact): return default client = api.get_parent(contact) if not client or not IClient.providedBy(client): return default return client
def get_user_client(user_or_contact): """Returns the client of the contact of a Plone user If the user passed in has no contact or does not belong to any client, returns None. :param: Plone user or contact :returns: Client the contact of the Plone user belongs to """ if not user_or_contact or ILabContact.providedBy(user_or_contact): # Lab contacts cannot belong to a client return None if not IContact.providedBy(user_or_contact): contact = get_user_contact(user_or_contact, contact_types=['Contact']) if IContact.providedBy(contact): return get_user_client(contact) return None client = get_parent(user_or_contact) if client and IClient.providedBy(client): return client return None