예제 #1
0
 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
예제 #2
0
 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
예제 #3
0
 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
예제 #4
0
    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")