def test_import(self): user_schema = getUserDataSchema() pm = getToolByName(self.portal, "portal_memberdata") member_properties = pm.propertyIds() self.assertIn("home_page", user_schema) self.assertTrue(isinstance(user_schema['home_page'], schema.URI)) self.assertIn("home_page", member_properties) self.assertEqual(pm.getPropertyType('home_page'), 'text') self.assertIn("description", user_schema) self.assertTrue(isinstance(user_schema['description'], schema.Text)) self.assertIn("description", member_properties) self.assertEqual(pm.getPropertyType('description'), 'text') self.assertIn("location", user_schema) self.assertTrue(isinstance(user_schema['location'], schema.TextLine)) self.assertIn("location", member_properties) self.assertEqual(pm.getPropertyType('location'), 'string') self.assertIn("portrait", user_schema) self.assertTrue(isinstance(user_schema['portrait'], NamedBlobImage)) # image fields are not handled as memberdata property, # it is handled directly in portal_membership self.assertNotIn("portrait", member_properties) self.assertIn("birthdate", user_schema) self.assertTrue(isinstance(user_schema['birthdate'], schema.Date)) self.assertIn("birthdate", member_properties) self.assertEqual(pm.getPropertyType('birthdate'), 'date') self.assertIn("another_date", user_schema) self.assertTrue(isinstance(user_schema['another_date'], schema.Datetime)) self.assertIn("another_date", member_properties) self.assertEqual(pm.getPropertyType('another_date'), 'date') self.assertIn("age", user_schema) self.assertTrue(isinstance(user_schema['age'], schema.Int)) self.assertIn("age", member_properties) self.assertEqual(pm.getPropertyType('age'), 'int') self.assertIn("department", user_schema) self.assertTrue(isinstance(user_schema['department'], schema.Choice)) self.assertIn("department", member_properties) self.assertEqual(pm.getPropertyType('department'), 'string') self.assertIn("skills", user_schema) self.assertTrue(isinstance(user_schema['skills'], schema.Set)) self.assertIn("skills", member_properties) self.assertEqual(pm.getPropertyType('skills'), 'lines') self.assertIn("pi", user_schema) self.assertTrue(isinstance(user_schema['pi'], schema.Float)) self.assertIn("pi", member_properties) self.assertEqual(pm.getPropertyType('pi'), 'float') self.assertIn("vegetarian", user_schema) self.assertTrue(isinstance(user_schema['vegetarian'], schema.Bool)) self.assertIn("vegetarian", member_properties) self.assertEqual(pm.getPropertyType('vegetarian'), 'boolean')
def test_import(self): user_schema = getUserDataSchema() pm = getToolByName(self.portal, "portal_memberdata") member_properties = pm.propertyIds() self.assertIn("home_page", user_schema) self.assertTrue(isinstance(user_schema["home_page"], schema.URI)) self.assertIn("home_page", member_properties) self.assertEqual(pm.getPropertyType("home_page"), "text") self.assertIn("description", user_schema) self.assertTrue(isinstance(user_schema["description"], schema.Text)) self.assertIn("description", member_properties) self.assertEqual(pm.getPropertyType("description"), "text") self.assertIn("location", user_schema) self.assertTrue(isinstance(user_schema["location"], schema.TextLine)) self.assertIn("location", member_properties) self.assertEqual(pm.getPropertyType("location"), "string") self.assertIn("portrait", user_schema) self.assertTrue(isinstance(user_schema["portrait"], NamedBlobImage)) # image fields are not handled as memberdata property, # it is handled directly in portal_membership self.assertNotIn("portrait", member_properties) self.assertIn("birthdate", user_schema) self.assertTrue(isinstance(user_schema["birthdate"], schema.Date)) self.assertIn("birthdate", member_properties) self.assertEqual(pm.getPropertyType("birthdate"), "date") self.assertIn("another_date", user_schema) self.assertTrue(isinstance(user_schema["another_date"], schema.Datetime)) self.assertIn("another_date", member_properties) self.assertEqual(pm.getPropertyType("another_date"), "date") self.assertIn("age", user_schema) self.assertTrue(isinstance(user_schema["age"], schema.Int)) self.assertIn("age", member_properties) self.assertEqual(pm.getPropertyType("age"), "int") self.assertIn("department", user_schema) self.assertTrue(isinstance(user_schema["department"], schema.Choice)) self.assertIn("department", member_properties) self.assertEqual(pm.getPropertyType("department"), "string") self.assertIn("skills", user_schema) self.assertTrue(isinstance(user_schema["skills"], schema.Set)) self.assertIn("skills", member_properties) self.assertEqual(pm.getPropertyType("skills"), "lines") self.assertIn("pi", user_schema) self.assertTrue(isinstance(user_schema["pi"], schema.Float)) self.assertIn("pi", member_properties) self.assertEqual(pm.getPropertyType("pi"), "float") self.assertIn("vegetarian", user_schema) self.assertTrue(isinstance(user_schema["vegetarian"], schema.Bool)) self.assertIn("vegetarian", member_properties) self.assertEqual(pm.getPropertyType("vegetarian"), "boolean")
def test_profile_properties(self): """Check that the user profile edit form have all the properties.""" user_schema = getUserDataSchema() for field in user_schema_properties: self.assertIn( field, user_schema, 'Field "{0}" not found on userschema.xml'.format(field))
def test_hidden_properties_not_on_profile(self): """Check that some properties are not on the profile edit.""" user_schema = getUserDataSchema() error_msg = 'Property "{0}" should not be on a member edit profile' for field in hidden_properties: self.assertNotIn( field, user_schema, error_msg.format(field) )
def test_profile_properties(self): """Check that the user profile edit form have all the properties.""" user_schema = getUserDataSchema() for field in user_schema_properties: self.assertIn( field, user_schema, 'Field "{0}" not found on userschema.xml'.format(field) )
def test_import(self): user_schema = getUserDataSchema() pm = getToolByName(self.portal, "portal_memberdata") member_properties = pm.propertyIds() self.assertIn("id_number", user_schema) self.assertTrue(isinstance(user_schema['id_number'], schema.TextLine)) self.assertIn("id_number", member_properties) self.assertEqual(pm.getPropertyType('id_number'), 'string') self.assertIn("safe_level", user_schema) self.assertTrue(isinstance(user_schema['safe_level'], schema.Choice)) self.assertIn("safe_level", member_properties) self.assertEqual(pm.getPropertyType('safe_level'), 'string')
def __call__(self): user = self.context portal = getSite() # Global roles roles = user.getRoles() # Anonymous and Authenticated are pseudo roles assign automatically # to logged-in or logged-out users. They should not be exposed here roles = list(set(roles) - set([ 'Anonymous', 'Authenticated', ])) data = { '@id': '{}/@users/{}'.format(portal.absolute_url(), user.id), 'id': user.id, 'username': user.getUserName(), 'roles': roles, } if HAS_TTW_SCHEMAS: schema = getUserDataSchema() else: util = getUtility(IUserDataSchemaProvider) schema = util.getSchema() for name in getFieldNames(schema): if name == 'portrait': memberdata = getToolByName(portal, 'portal_memberdata') if user.id in memberdata.portraits: value = '{}/portal_memberdata/portraits/{}'.format( portal.absolute_url(), user.id) else: value = None elif name == 'pdelete': continue else: value = user.getProperty(name, '') if value == '': value = None if value: value = safe_unicode(value) data[name] = value return data
def __call__(self): user = self.context portal = getSite() # Global roles roles = user.getRoles() # Anonymous and Authenticated are pseudo roles assign automatically # to logged-in or logged-out users. They should not be exposed here roles = list(set(roles) - set(["Anonymous", "Authenticated"])) data = { "@id": "{}/@users/{}".format(portal.absolute_url(), user.id), "id": user.id, "username": user.getUserName(), "roles": roles, } if HAS_TTW_SCHEMAS: schema = getUserDataSchema() else: util = getUtility(IUserDataSchemaProvider) schema = util.getSchema() for name in getFieldNames(schema): if name == "portrait": memberdata = getToolByName(portal, "portal_memberdata") if user.id in memberdata.portraits: value = "{}/portal_memberdata/portraits/{}".format( portal.absolute_url(), user.id) else: value = None elif name == "pdelete": continue else: value = user.getProperty(name, "") if value == "": value = None if value: value = safe_unicode(value) data[name] = value return data
def test_hidden_properties_not_on_profile(self): """Check that some properties are not on the profile edit.""" user_schema = getUserDataSchema() error_msg = 'Property "{0}" should not be on a member edit profile' for field in hidden_properties: self.assertNotIn(field, user_schema, error_msg.format(field))