def factory_user_model_with_contact(): """Produce a user model.""" user_info = { 'username': '******', 'firstname': 'bar', 'lastname': 'User', 'keycloak_guid': uuid.uuid4() } user = UserModel( username=user_info['username'], firstname=user_info['firstname'], lastname=user_info['lastname'], keycloak_guid=user_info.get('keycloak_guid', None), type=user_info.get('access_type', None), ) user.save() contact = factory_contact_model() contact.save() contact_link = ContactLinkModel() contact_link.contact = contact contact_link.user = user contact_link.save() return user
def add_contact(token, contact_info: dict, throw_error_for_duplicates: bool = True): """Add contact information for an existing user.""" current_app.logger.debug('add_contact') user = UserModel.find_by_jwt_token(token) if user is None: raise BusinessException(Error.DATA_NOT_FOUND, None) # check for existing contact (we only want one contact per user) contact_link = ContactLinkModel.find_by_user_id(user.id) if contact_link is not None: if not throw_error_for_duplicates: # TODO may be throw whole object return None raise BusinessException(Error.DATA_ALREADY_EXISTS, None) contact = ContactModel(**camelback2snake(contact_info)) contact = contact.flush() contact_link = ContactLinkModel() contact_link.user = user contact_link.contact = contact contact_link.save() return ContactService(contact)
def factory_user_model_with_contact(user_info: dict = TestUserInfo.user1, keycloak_guid=None): """Produce a user model.""" user_type = Role.ANONYMOUS_USER.name if user_info.get( 'access_type', None) == AccessType.ANONYMOUS.value else None user = UserModel(username=user_info.get( 'username', user_info.get('preferred_username')), firstname=user_info['firstname'], lastname=user_info['lastname'], keycloak_guid=user_info.get('keycloak_guid', keycloak_guid), type=user_type, email='*****@*****.**', login_source=user_info.get('loginSource')) user.save() contact = factory_contact_model() contact.save() contact_link = ContactLinkModel() contact_link.contact = contact contact_link.user = user contact_link.save() return user
def add_contact(self, contact_info: dict): """Add a business contact to this entity.""" # check for existing contact (we only want one contact per user) contact_link = ContactLinkModel.find_by_entity_id(self._model.id) if contact_link is not None: raise BusinessException(Error.DATA_ALREADY_EXISTS, None) contact = ContactModel(**camelback2snake(contact_info)) contact.flush() contact_link = ContactLinkModel() contact_link.contact = contact contact_link.entity = self._model contact_link.save() return self
def factory_user_model_with_contact(user_info: dict = TestUserInfo.user1): """Produce a user model.""" user = UserModel(username=user_info['username'], firstname=user_info['firstname'], lastname=user_info['lastname'], roles=user_info['roles'], keycloak_guid=user_info.get('keycloak_guid', None), type=user_info.get('access_type', None), email='*****@*****.**') user.save() contact = factory_contact_model() contact.save() contact_link = ContactLinkModel() contact_link.contact = contact contact_link.user = user contact_link.save() return user
def add_contact(org_id, contact_info): """Create a new contact for this org.""" # check for existing contact (only one contact per org for now) current_app.logger.debug('>add_contact') org = OrgModel.find_by_org_id(org_id) if org is None: raise BusinessException(Error.DATA_NOT_FOUND, None) contact_link = ContactLinkModel.find_by_org_id(org_id) if contact_link is not None: raise BusinessException(Error.DATA_ALREADY_EXISTS, None) contact = ContactModel(**camelback2snake(contact_info)) contact = contact.flush() contact_link = ContactLinkModel() contact_link.contact = contact contact_link.org = org contact_link.save() current_app.logger.debug('<add_contact') return ContactService(contact)