def test_get_list_inherited_entities(self): rdf_coll = install_annalist_named_coll("RDF_schema_defs") ann_coll = install_annalist_named_coll("Annalist_schema") testcoll = create_test_coll_inheriting("Annalist_schema") schema_list_ids = get_site_schema_lists_linked("testcoll") u = entitydata_list_type_url("testcoll", "Class", list_id=None, scope="all") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context self.assertEqual(r.context['coll_id'], "testcoll") self.assertEqual(r.context['type_id'], "Class") list_choices = r.context['list_choices'] self.assertEqual(set(list_choices.options), set(schema_list_ids)) self.assertEqual(list_choices['field_value'], "Classes") # Entities entities = context_list_entities(r.context) self.assertEqual(len(entities), 27) field_entities = ( { ('Audio', 'Class', 'Audio clip' ) , ('Collection', 'Class', 'Data collection' ) , ('Default_type', 'Class', 'Default type' ) , ('Entity', 'Class', 'Entity' ) , ('EntityData', 'Class', 'EntityData' ) , ('EntityRoot', 'Class', 'Root entity' ) , ('Enum', 'Class', 'Enumerated type' ) , ('Field', 'Class', 'Field definition' ) , ('Field_group', 'Class', 'Field group' ) , ('Image', 'Class', 'Image' ) , ('List', 'Class', 'List definition' ) , ('Resource', 'Class', 'Resource' ) , ('Site', 'Class', 'Annalist site' ) , ('SiteData', 'Class', 'Site data' ) , ('Type', 'Class', 'Type definition' ) , ('Type_Data', 'Class', 'Type data' ) , ('Unknown_type', 'Class', 'Unknown type' ) , ('User', 'Class', 'User permissions' ) , ('View', 'Class', 'View definition' ) , ('Vocabulary', 'Class', 'Vocabulary namespace definition') , ('Boolean', 'Datatype', 'Boolean' ) , ('Identifier', 'Datatype', 'Identifier' ) , ('Longtext', 'Datatype', 'Multiline text' ) , ('Placement', 'Datatype', 'Field placement' ) , ('Richtext', 'Datatype', 'Rich text' ) , ('Slug', 'Datatype', 'Local entity reference' ) , ('Text', 'Datatype', 'Text' ) }) for f in field_entities: for eid in range(len(entities)): item_fields = context_list_item_fields(r.context, entities[eid]) if item_fields[0]['field_value'] == f[0]: for fid in range(3): item_field = item_fields[fid] check_context_list_field_value(self, item_field, f[fid]) break else: self.fail("Field %s not found in context"%f[0]) return
def test_collection_alt_parents(self): rdf_coll = install_annalist_named_coll("RDF_schema_defs") ann_coll = install_annalist_named_coll("Annalist_schema") testcoll = create_test_coll_inheriting("Annalist_schema") rdf_coll_alts = [ p.get_id() for p in rdf_coll.get_alt_entities(altscope="all") if p ] self.assertEqual(rdf_coll_alts, ["RDF_schema_defs", "_annalist_site"]) ann_coll_alts = [ p.get_id() for p in ann_coll.get_alt_entities(altscope="all") if p ] self.assertEqual(ann_coll_alts, ["Annalist_schema", "RDF_schema_defs", "_annalist_site"]) testcoll_alts = [ p.get_id() for p in testcoll.get_alt_entities(altscope="all") if p ] self.assertEqual(testcoll_alts, ["testcoll", "Annalist_schema", "RDF_schema_defs", "_annalist_site"]) return
def setUp(self): self.testsite = init_annalist_test_site() self.testcoll = init_annalist_test_coll() self.testsubcoll = create_test_coll_inheriting( base_coll_id="testcoll", coll_id="testsubcoll", type_id="testtype" ) create_test_user(self.testcoll, "testuser", "testpassword") create_test_user(self.testsubcoll, "testsubuser", "testpassword") # Allow user "testuser" access in collectrion "testsubcoll" user_permissions = ["VIEW", "CREATE", "UPDATE", "DELETE", "CONFIG"] user_id = "testuser" user_perms = self.testsubcoll.create_user_permissions( user_id, "mailto:%s@%s"%(user_id, TestHost), "Test Subuser", "User %s: permissions for %s in collection %s"% ( user_id, "Test Subuser", self.testsubcoll.get_id() ), user_permissions) # Block user "testsubuser" access in collection "testcoll" user_permissions = [] user_id = "testsubuser" user_perms = self.testcoll.create_user_permissions( user_id, "mailto:%s@%s"%(user_id, TestHost), "Test Subuser", "User %s: permissions for %s in collection %s"% ( user_id, "Test Subuser", self.testcoll.get_id() ), user_permissions) # Block default user access in collection "testcoll" user_permissions = [] user_id = "_default_user_perms" user_uri = "annal:User/_default_user_perms" user_perms = self.testcoll.create_user_permissions( user_id, user_uri, "Test Subuser", "User %s: permissions for %s in collection %s"% ( user_id, "Test Subuser", self.testcoll.get_id() ), user_permissions) # Create inherited entity "testcoll/testtype/entity2" self.testdata = RecordTypeData.load(self.testcoll, "testtype") self.testentity2 = self._create_entity_data("entity2") self.testsubdata = RecordTypeData.load(self.testsubcoll, "testtype") # loggedin = self.client.login(username="******", password="******") # self.assertTrue(loggedin) self.continuation_url = entitydata_list_type_url( coll_id="testsubcoll", type_id="testtype" ) return
def test_inherited_image_edit(self): # This tests that editing an inherited image creartes a new copy in the # inheriting collection. # Upload image self.test_image_edit_field() # Create collection inheriting uploaded image testsubcoll = create_test_coll_inheriting(base_coll_id="testcoll", coll_id="testsubcoll", type_id="testtype") # create_test_user(testsubcoll, "testuser", "testpassword") user_permissions = ["VIEW", "CREATE", "UPDATE", "DELETE", "CONFIG"] user_id = "testuser" user_perms = testsubcoll.create_user_permissions( user_id, "mailto:%s@%s" % (user_id, TestHost), "Test User", "User %s: permissions for %s in collection %s" % (user_id, "Test User", testsubcoll.get_id()), user_permissions) # Get editing form u = entitydata_edit_url("edit", "testsubcoll", "testimgtype", entity_id="test1", view_id="testimgview") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # log.info(r.content) #@@ hi1 = """<input type="hidden" name="orig_id" value="test1" />""" hi2 = """<input type="hidden" name="orig_type" value="testimgtype" />""" hi3 = """<input type="hidden" name="orig_coll" value="testcoll" />""" hi4 = """<input type="hidden" name="action" value="edit" />""" hi5 = """<input type="hidden" name="view_id" value="testimgview" />""" self.assertContains(r, hi1, html=True) self.assertContains(r, hi2, html=True) self.assertContains(r, hi3, html=True) self.assertContains(r, hi4, html=True) self.assertContains(r, hi5, html=True) # Edit entity f = default_view_form_data(coll_id="testsubcoll", type_id="testimgtype", entity_id="test1", orig_coll="testcoll", action="edit", update="Updated") u = entitydata_edit_url("edit", "testsubcoll", "testimgtype", entity_id="test1", view_id="testimgview") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") # Retrieve updated form r = self.client.get(u) # Test context self.assertEqual(len(r.context['fields']), 4) f0 = context_view_field(r.context, 0, 0) self.assertEqual(f0.field_id, "Entity_id") self.assertEqual(f0.field_value, "test1") f1 = context_view_field(r.context, 1, 0) self.assertEqual(f1.field_id, "Entity_label") self.assertEqual(f1.field_value, "Updated testsubcoll/testimgtype/test1") f2 = context_view_field(r.context, 2, 0) self.assertEqual(f2.field_id, "Entity_comment") f3 = context_view_field(r.context, 3, 0) self.assertEqual(f3.field_id, "Test_image") self.assertDictionaryMatch(f3.field_value, test_image_field_value()) # Read back and compare entity resource inherited_test_img_type_info = EntityTypeInfo(testsubcoll, "testimgtype", create_typedata=True) siteobj = open(self.imagepath, "rb") testobj = inherited_test_img_type_info.get_fileobj( "test1", "img_field", "annal:Image", "image/jpeg", "rb") self.assertTrue(siteobj.read() == testobj.read(), "Edited entity image != original")