def test_view_entity_references(self):
     u = entity_url(coll_id="testcoll",
                    type_id="testsrc_type",
                    entity_id="testsrc1")
     r = self.client.get(u)
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     # Test context
     self.assertEqual(len(r.context['fields']), 3)
     f0 = context_view_field(r.context, 0, 0)
     self.assertEqual(f0.field_id, "Entity_id")
     self.assertEqual(f0.field_value, "testsrc1")
     self.assertEqual(f0.field_value_link, None)
     self.assertEqual(f0.options, self.no_options)
     f1 = context_view_field(r.context, 0, 1)
     self.assertEqual(f1.field_id, "testtgtref_field")
     self.assertEqual(f1.field_value, "testtgt_type/testtgt1")
     self.assertEqual(f1.field_value_link,
                      "/testsite/c/testcoll/d/testtgt_type/testtgt1/")
     self.assertEqual(f1.options, self.tgt_options)
     f2 = context_view_field(r.context, 1, 0)
     self.assertEqual(f2.field_id, "Entity_label")
     self.assertEqual(f2.field_value, "testsrc_entity testsrc1 label")
     self.assertEqual(f2.field_value_link, None)
     self.assertEqual(f2.options, self.no_options)
     f3 = context_view_field(r.context, 2, 0)
     self.assertEqual(f3.field_id, "Entity_comment")
     self.assertEqual(f3.field_value, "testsrc_entity testsrc1 comment")
     self.assertEqual(f3.field_value_link, None)
     self.assertEqual(f3.options, self.no_options)
     return
 def test_select_subtype1_fields(self):
     ref_view  = self._create_ref_type_view(view_id="Test_ref_type1_view", record_type="test:testtypes")
     ref_field = self._create_ref_type_field(entity_type="test:testtype1")
     u = entitydata_edit_url(
         "new", "testcoll", "ref_type", view_id="Test_ref_type1_view"
         )
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     # Check render context
     self.assertEqual(r.context['coll_id'],          "testcoll")
     self.assertEqual(r.context['type_id'],          "ref_type")
     # Fields
     head_fields = context_list_head_fields(r.context)
     self.assertEqual(len(head_fields), 1)       # One row of 2 cols..
     self.assertEqual(len(head_fields[0]['row_field_descs']), 2)
     f0 = context_view_field(r.context, 0, 0)
     f1 = context_view_field(r.context, 0, 1)
     self.assertEqual(f0['field_id'], "Entity_id")
     self.assertEqual(f1['field_id'], "Test_ref_type_field")
     baselabel = "Entity testcoll/"
     baseuri   = TestBasePath+"/c/testcoll/d/%s/"
     ref_options = (
         [ FieldChoice(opt, label=baselabel+opt, link=baseuri%opt)
           for opt in ['testtype1/entity1']
         ])
     self.assertEqual(f1['options'], ref_options)
     return
Ejemplo n.º 3
0
 def test_get_types_scope_all_list(self):
     # List types in current collection and site-wide
     u = entitydata_list_type_url(
         "testcoll", "_type", list_id="Type_list", 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['title'],            "Entity types - Collection testcoll")
     self.assertEqual(r.context['coll_id'],          "testcoll")
     self.assertEqual(r.context['type_id'],          "_type")
     # Fields
     head_fields = context_list_head_fields(r.context)
     self.assertEqual(len(head_fields), 1)       # One row of 2 cols..
     self.assertEqual(len(head_fields[0]['row_field_descs']), 2)
     # 1st field
     f0 = context_view_field(r.context, 0, 0)
     self.assertEqual(f0['field_id'], 'Entity_id')
     self.assertEqual(f0['field_name'], 'entity_id')
     # 2nd field
     f1 = context_view_field(r.context, 0, 1)
     self.assertEqual(f1['field_id'], 'Entity_label')
     self.assertEqual(f1['field_name'], 'Entity_label')
     # Entities
     entities   = context_list_entities(r.context)
     listed_entities = { e['entity_id']: e for e in entities }
     type_entities = get_site_bib_types() | {"testtype", "testtype2"}
     self.assertEqual(set(listed_entities.keys()), type_entities)
     return
Ejemplo n.º 4
0
 def test_select_subtype1_fields(self):
     ref_view = self._create_ref_type_view(view_id="Test_ref_type1_view",
                                           record_type="test:testtypes")
     ref_field = self._create_ref_type_field(entity_type="test:testtype1")
     u = entitydata_edit_url("new",
                             "testcoll",
                             "ref_type",
                             view_id="Test_ref_type1_view")
     r = self.client.get(u)
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     # Check render context
     self.assertEqual(r.context['coll_id'], "testcoll")
     self.assertEqual(r.context['type_id'], "ref_type")
     # Fields
     head_fields = context_list_head_fields(r.context)
     self.assertEqual(len(head_fields), 1)  # One row of 2 cols..
     self.assertEqual(len(head_fields[0]['row_field_descs']), 2)
     f0 = context_view_field(r.context, 0, 0)
     f1 = context_view_field(r.context, 0, 1)
     self.assertEqual(f0['field_id'], "Entity_id")
     self.assertEqual(f1['field_id'], "Test_ref_type_field")
     baselabel = "Entity testcoll/"
     baseuri = TestBasePath + "/c/testcoll/d/%s/"
     ref_options = ([
         FieldChoice(opt, label=baselabel + opt, link=baseuri % opt)
         for opt in ['testtype1/entity1']
     ])
     self.assertEqual(f1['options'], ref_options)
     return
Ejemplo n.º 5
0
    def test_image_edit_field(self):
        # Upload to an image view field
        with open(self.imagepath) as fp:
            f = entitydata_default_view_form_data(type_id="testimgtype", entity_id="test1", action="edit")
            f['img_field'] = fp     # Upload file with submission
            u = entitydata_edit_url("edit", "testcoll", "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")

        # Read back and compare entity resource just created
        siteobj = open(self.imagepath, "rb")
        testobj = self.test_img_type_info.get_fileobj(
            "test1", "img_field", "annal:Image", "image/jpeg", "rb"
            )
        self.assertTrue(siteobj.read() == testobj.read(), "Referenced image != original")

        # Retrieve updated form
        r = self.client.get(u)
        # Test context
        # print "@@ "+context_field_map(r.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")
        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())
        return
 def test_select_notype_fields(self):
     ref_view = self._create_ref_type_view(view_id="Test_ref_notype_view",
                                           view_entity_type="test:notypes")
     ref_field = self._create_ref_type_field(
         field_entity_type="test:sometypes")
     u = entitydata_edit_url("new",
                             "testcoll",
                             "ref_type",
                             view_id="Test_ref_notype_view")
     r = self.client.get(u)
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     # Check render context
     self.assertEqual(r.context['coll_id'], "testcoll")
     self.assertEqual(r.context['type_id'], "ref_type")
     # Fields
     head_fields = context_list_head_fields(r.context)
     self.assertEqual(len(head_fields), 1)  # One row of 2 cols..
     self.assertEqual(len(head_fields[0].description['row_field_descs']), 2)
     f0 = context_view_field(r.context, 0, 0)
     f1 = context_view_field(r.context, 0, 1)
     self.assertEqual(f0.field_id, "Entity_id")
     self.assertEqual(f1.field_id, "Test_ref_type_field")
     baselabel = "Entity testcoll/"
     baseuri = TestBasePath + "/c/testcoll/d/%s/"
     ref_options = []
     self.assertEqual(f1['options'], ref_options)
     return
Ejemplo n.º 7
0
 def test_upload_image_resource(self):
     # See https://docs.djangoproject.com/en/1.7/topics/testing/tools/#django.test.Client.post
     with open(self.imagepath) as fp:
         f = entitydata_default_view_form_data(type_id="testupltype", entity_id="test1", action="edit")
         f['upl_field'] = fp     # Upload file with submission
         u = entitydata_edit_url("edit", "testcoll", "testupltype", entity_id="test1", view_id="testuplimageview")
         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")
     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_upload_image")
     self.assertDictionaryMatch(f3.field_value, test_upload_image_field_value())
     # Read back and compare entity resource just created
     siteobj = open(self.imagepath, "rb")
     testobj = self.test_upl_type_info.get_fileobj(
         "test1", "upl_field", "annal:Image", "image/jpeg", "rb"
         )
     self.assertTrue(siteobj.read() == testobj.read(), "Uploaded image != original")
     # self.assertEqual(siteobj.read(), testobj.read())
     return
Ejemplo n.º 8
0
 def test_view_entity_references(self):
     u = entity_url(coll_id="testcoll", type_id="testsrc_type", entity_id="testsrc1")
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     # Test context
     self.assertEqual(len(r.context['fields']), 3)
     f0 = context_view_field(r.context, 0, 0)
     self.assertEqual(f0.field_id,         "Entity_id")
     self.assertEqual(f0.field_value,      "testsrc1")
     self.assertEqual(f0.field_value_link, None)
     self.assertEqual(f0.options,          self.no_options)
     f1 = context_view_field(r.context, 0, 1)
     self.assertEqual(f1.field_id,         "testtgtref_field")
     self.assertEqual(f1.field_value,      "testtgt_type/testtgt1")
     self.assertEqual(f1.field_value_link, "/testsite/c/testcoll/d/testtgt_type/testtgt1/")
     self.assertEqual(f1.options,          self.tgt_options)
     f2 = context_view_field(r.context, 1, 0)
     self.assertEqual(f2.field_id,         "Entity_label")
     self.assertEqual(f2.field_value,      "testsrc_entity testsrc1 label")
     self.assertEqual(f2.field_value_link, None)
     self.assertEqual(f2.options,          self.no_options)
     f3 = context_view_field(r.context, 2, 0)
     self.assertEqual(f3.field_id,         "Entity_comment")
     self.assertEqual(f3.field_value,      "testsrc_entity testsrc1 comment")
     self.assertEqual(f3.field_value_link, None)
     self.assertEqual(f3.options,          self.no_options)
     return
Ejemplo n.º 9
0
    def test_image_view_field(self):
        # This test is for an image field that supports file upload in the same entity

        # Upload image
        self.test_image_edit_field()

        # Display resource in view mode
        u = entitydata_edit_url("view",
                                "testcoll",
                                "testimgtype",
                                entity_id="test1",
                                view_id="testimgview")
        r = self.client.get(u)
        self.assertEqual(r.status_code, 200)
        self.assertEqual(r.reason_phrase, "OK")
        # Check display 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")
        f2 = context_view_field(r.context, 2, 0)
        self.assertEqual(f2.field_id, "Entity_comment")
        f3 = context_view_field(r.context, 3, 0)
        basepath = TestBasePath + "/c/testcoll/d/testimgtype/"
        # print "\n*****\n"+repr(context_view_field(r.context, i, 0).target_value)+"\n*****\n"
        self.assertEqual(f3.field_id, "Test_image")
        self.assertEqual(f3.field_value, test_image_field_value())
        self.assertEqual(f3.target_value_link,
                         basepath + "test1/img_field.jpg")
        # Check for rendered image link
        # log.info(r.content)
        field_details = ({
            "basepath": TestBasePath,
            "coll_id": "testcoll",
            "type_id": "testimgtype",
            "entity_id": "test1",
            "field_id": "img_field",
            "tooltip": ""
        })
        img_element = """
            <div class="small-12 columns" %(tooltip)s>
              <div class="row view-value-row">
                <div class="view-label small-12 medium-2 columns">
                  <span>test_image_field label</span>
                </div>
                <div class="view-value small-12 medium-10 columns">
                  <a href="%(basepath)s/c/%(coll_id)s/d/%(type_id)s/%(entity_id)s/%(field_id)s.jpg" target="_blank">
                    <img src="%(basepath)s/c/%(coll_id)s/d/%(type_id)s/%(entity_id)s/%(field_id)s.jpg"
                         alt="Image at '%(basepath)s/c/%(coll_id)s/d/%(type_id)s/%(entity_id)s/%(field_id)s.jpg'" />
                  </a>
                </div>
              </div>
            </div>
            """ % field_details
        self.assertContains(r, img_element, html=True)
        return
Ejemplo n.º 10
0
    def test_reference_uploaded_image(self):
        self.test_upload_image_resource()

        # Display resource with image reference
        u = entitydata_edit_url("view", "testcoll", "testreftype", entity_id="test1", view_id="testimgrefview")
        r = self.client.get(u)
        self.assertEqual(r.status_code,   200)
        self.assertEqual(r.reason_phrase, "OK")
        # Check display 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,  "test_ref_entity test1 label")
        f2 = context_view_field(r.context, 2, 0)
        self.assertEqual(f2.field_id,     "Entity_comment")
        self.assertEqual(f2.field_value,  "test_ref_entity test1 comment")
        f3 = context_view_field(r.context, 3, 0)
        basepath = TestBasePath + "/c/testcoll/d/testupltype/"
        # print "\n*****\n"+repr(context_view_field(r.context, i, 0).target_value)+"\n*****\n"
        self.assertEqual(f3.field_id,     "Test_image_ref")
        self.assertEqual(f3.field_value,        "testupltype/test1")
        self.assertEqual(f3.field_value_link,   basepath+"test1/")
        self.assertEqual(f3.target_value['upload_name'],   "upl_field")
        self.assertEqual(f3.target_value['resource_name'], "upl_field.jpg")
        self.assertEqual(f3.target_value['resource_type'], "image/jpeg")
        self.assertEqual(f3.target_value['uploaded_file'], "test-image.jpg")
        self.assertEqual(f3.target_value['uploaded_size'], 1547926)
        self.assertEqual(f3.target_value_link,  basepath+"test1/upl_field.jpg")
        # Check for rendered image link
        # log.info(r.content)
        field_details = (
            { "basepath":   TestBasePath
            , "coll_id":    "testcoll"
            , "type_id":    "testupltype"
            , "entity_id":  "test1"
            , "field_id":   "upl_field"
            , "tooltip":    ""
            })
        img_element = """
            <div class="small-12 columns" %(tooltip)s>
              <div class="row view-value-row">
                <div class="view-label small-12 medium-2 columns">
                  <span>test_image_ref_field label</span>
                </div>
                <div class="view-value small-12 medium-10 columns">
                  <a href="%(basepath)s/c/%(coll_id)s/d/%(type_id)s/%(entity_id)s/%(field_id)s.jpg" target="_blank">
                    <img src="%(basepath)s/c/%(coll_id)s/d/%(type_id)s/%(entity_id)s/%(field_id)s.jpg"
                         alt="Image at '%(basepath)s/c/%(coll_id)s/d/%(type_id)s/%(entity_id)s/%(field_id)s.jpg'" />
                  </a>
                </div>
              </div>
            </div>
            """%field_details
        self.assertContains(r, img_element, html=True)
        return
Ejemplo n.º 11
0
    def test_reference_image(self):

        # Display resource with image reference
        u = entitydata_edit_url("view",
                                "testcoll",
                                "testreftype",
                                entity_id="test1",
                                view_id="testrefview")
        r = self.client.get(u)
        self.assertEqual(r.status_code, 200)
        self.assertEqual(r.reason_phrase, "OK")
        # Check display 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, "test_ref_image label")
        f2 = context_view_field(r.context, 2, 0)
        self.assertEqual(f2.field_id, "Entity_comment")
        self.assertEqual(f2.field_value, "test_ref_image comment")
        f3 = context_view_field(r.context, 3, 0)
        basepath = TestBasePath + "/c/testcoll/d/testreftype/"
        # print "\n*****\n"+repr(f3)+"\n*****\n"
        self.assertEqual(f3.field_id, "Test_image_ref")
        self.assertEqual(f3.field_value, self.imageuri)
        self.assertEqual(f3.field_value_link, None)
        self.assertEqual(f3.target_value, self.imageuri)
        self.assertEqual(f3.target_value_link, self.imageuri)
        # Check for rendered image link
        # log.info(r.content)
        field_details = ({
            "basepath": TestBasePath,
            "coll_id": "testcoll",
            "type_id": "testupltype",
            "entity_id": "test1",
            "image_uri": self.imageuri,
            "field_id": "ref_image",
            "tooltip": ""  # 'title="%s"'%r.context['fields'][i].field_help
        })
        img_element = """
            <div class="small-12 columns" %(tooltip)s>
              <div class="row view-value-row">
                <div class="view-label small-12 medium-2 columns">
                  <span>test_image_ref_field label</span>
                </div>
                <div class="view-value small-12 medium-10 columns">
                  <a href="%(image_uri)s" target="_blank">
                    <img src="%(image_uri)s"
                         alt="Image at '%(image_uri)s'" />
                  </a>
                </div>
              </div>
            </div>
            """ % field_details
        self.assertContains(r, img_element, html=True)
        return
Ejemplo n.º 12
0
 def test_view_subproperty_list(self):
     self.create_subproperty_field_view_entity()
     self.create_subproperty_list_field_view_entity()
     # Post edit form response
     u = entitydata_edit_url("view",
                             "testcoll",
                             "testtype",
                             entity_id="testlistentity",
                             view_id="testlistview")
     r = self.client.get(u)
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     # Test context
     url = entity_url(coll_id="testcoll",
                      type_id="testtype",
                      entity_id="testlistentity")
     self.assertEqual(r.context['coll_id'], "testcoll")
     self.assertEqual(r.context['type_id'], "testtype")
     self.assertEqual(r.context['entity_id'], "testlistentity")
     self.assertEqual(r.context['orig_id'], "testlistentity")
     self.assertEqual(r.context['action'], "view")
     # Fields
     self.assertEqual(len(r.context['fields']), 2)
     # Check id field for sanity
     f1 = context_view_field(r.context, 0, 0)
     self.assertEqual(f1.field_id, "Entity_id")
     self.assertEqual(f1.description['field_property_uri'], ANNAL.CURIE.id)
     self.assertEqual(f1['field_value'],
                      self.testlistentity_data[ANNAL.CURIE.id])
     # Check superproperty field value
     f2 = context_view_field(r.context, 1, 0)
     self.assertEqual(f2.field_id, "Test_sup_list")
     self.assertEqual(f2.description['field_property_uri'],
                      "test:superprop_list_uri")
     f2rfs = context_view_repeat_fields(r.context, f2)
     self.assertEqual(f2rfs[0][0].field_value, "Test field 1 value")
     self.assertEqual(f2rfs[1][0].field_value, "Test field 2 value")
     # Check rendered list
     item1data = ("""
         <div class="row view-value-col">
           <div class="view-value small-12 columns">
             <span>Test field 1 value</span>
           </div>
         </div>
         """)
     self.assertContains(r, item1data, html=True)
     item2data = ("""
         <div class="row view-value-col">
           <div class="view-value small-12 columns">
             <span>Test field 1 value</span>
           </div>
         </div>
         """)
     self.assertContains(r, item2data, html=True)
     return
Ejemplo n.º 13
0
    def test_reference_image(self):

        # Display resource with image reference
        u = entitydata_edit_url("view", "testcoll", "testreftype", entity_id="test1", view_id="testrefview")
        r = self.client.get(u)
        self.assertEqual(r.status_code,   200)
        self.assertEqual(r.reason_phrase, "OK")
        # Check display 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,  "test_ref_image label")
        f2 = context_view_field(r.context, 2, 0)
        self.assertEqual(f2.field_id,     "Entity_comment")
        self.assertEqual(f2.field_value,  "test_ref_image comment")
        f3 = context_view_field(r.context, 3, 0)
        basepath = TestBasePath + "/c/testcoll/d/testreftype/"
        # print "\n*****\n"+repr(f3)+"\n*****\n"
        self.assertEqual(f3.field_id,           "Test_image_ref")
        self.assertEqual(f3.field_value,        self.imageuri)
        self.assertEqual(f3.field_value_link,   None)
        self.assertEqual(f3.target_value,       self.imageuri)
        self.assertEqual(f3.target_value_link,  self.imageuri)
        # Check for rendered image link
        # log.info(r.content)
        field_details = (
            { "basepath":   TestBasePath
            , "coll_id":    "testcoll"
            , "type_id":    "testupltype"
            , "entity_id":  "test1"
            , "image_uri":  self.imageuri
            , "field_id":   "ref_image"
            , "tooltip":    "" # 'title="%s"'%r.context['fields'][i].field_help
            })
        img_element = """
            <div class="small-12 columns" %(tooltip)s>
              <div class="row view-value-row">
                <div class="view-label small-12 medium-2 columns">
                  <span>test_image_ref_field label</span>
                </div>
                <div class="view-value small-12 medium-10 columns">
                  <a href="%(image_uri)s" target="_blank">
                    <img src="%(image_uri)s"
                         alt="Image at '%(image_uri)s'" />
                  </a>
                </div>
              </div>
            </div>
            """%field_details
        self.assertContains(r, img_element, html=True)
        return
Ejemplo n.º 14
0
    def test_image_view_field(self):
        # This test is for an image field that supports file upload in the same entity

        # Upload image
        self.test_image_edit_field()

        # Display resource in view mode
        u = entitydata_edit_url("view", "testcoll", "testimgtype", entity_id="test1", view_id="testimgview")
        r = self.client.get(u)
        self.assertEqual(r.status_code,   200)
        self.assertEqual(r.reason_phrase, "OK")
        # Check display 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")
        f2 = context_view_field(r.context, 2, 0)
        self.assertEqual(f2.field_id,     "Entity_comment")
        f3 = context_view_field(r.context, 3, 0)
        basepath = TestBasePath + "/c/testcoll/d/testimgtype/"
        # print "\n*****\n"+repr(context_view_field(r.context, i, 0).target_value)+"\n*****\n"
        self.assertEqual(f3.field_id,           "Test_image")
        self.assertEqual(f3.field_value,        test_image_field_value())
        self.assertEqual(f3.target_value_link,  basepath+"test1/img_field.jpg")
        # Check for rendered image link
        # log.info(r.content)
        field_details = (
            { "basepath":   TestBasePath
            , "coll_id":    "testcoll"
            , "type_id":    "testimgtype"
            , "entity_id":  "test1"
            , "field_id":   "img_field"
            , "tooltip":    ""
            })
        img_element = """
            <div class="small-12 columns" %(tooltip)s>
              <div class="row view-value-row">
                <div class="view-label small-12 medium-2 columns">
                  <span>test_image_field label</span>
                </div>
                <div class="view-value small-12 medium-10 columns">
                  <a href="%(basepath)s/c/%(coll_id)s/d/%(type_id)s/%(entity_id)s/%(field_id)s.jpg" target="_blank">
                    <img src="%(basepath)s/c/%(coll_id)s/d/%(type_id)s/%(entity_id)s/%(field_id)s.jpg"
                         alt="Image at '%(basepath)s/c/%(coll_id)s/d/%(type_id)s/%(entity_id)s/%(field_id)s.jpg'" />
                  </a>
                </div>
              </div>
            </div>
            """%field_details
        self.assertContains(r, img_element, html=True)
        return
Ejemplo n.º 15
0
 def test_reference_uploaded_resource(self):
     # Create uploaded resource (see previous test)
     with open(self.filepath) as fp:
         f = entitydata_default_view_form_data(type_id="testupltype",
                                               entity_id="test1",
                                               action="edit")
         f['upl_field'] = fp  # Upload file with submission
         u = entitydata_edit_url("view",
                                 "testcoll",
                                 "testupltype",
                                 entity_id="test1",
                                 view_id="testuplfileview")
         r = self.client.post(u, f)
     self.assertEqual(r.status_code, 302)
     self.assertEqual(r.reason_phrase, "FOUND")
     # Display resource with reference
     u = entitydata_edit_url("view",
                             "testcoll",
                             "testreftype",
                             entity_id="test1",
                             view_id="testrefview")
     r = self.client.get(u)
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     # Check display 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, "test_ref_entity test1 label")
     f2 = context_view_field(r.context, 2, 0)
     self.assertEqual(f2.field_id, "Entity_comment")
     self.assertEqual(f2.field_value, "test_ref_entity test1 comment")
     f3 = context_view_field(r.context, 3, 0)
     basepath = TestBasePath + "/c/testcoll/d/testupltype/"
     # print "\n*****\n"+repr(context_view_field(r.context, i, 0).target_value)+"\n*****\n"
     self.assertEqual(f3.field_id, "Test_reference")
     self.assertEqual(f3.field_value, "testupltype/test1")
     self.assertEqual(f3.field_value_link, basepath + "test1/")
     self.assertEqual(f3.target_value['upload_name'], "upl_field")
     self.assertEqual(f3.target_value['resource_name'], "upl_field.md")
     self.assertEqual(f3.target_value['resource_type'], "text/markdown")
     self.assertEqual(f3.target_value['uploaded_file'], "testdatafile.md")
     self.assertEqual(f3.target_value['uploaded_size'], 137)
     self.assertEqual(f3.target_value_link, basepath + "test1/upl_field.md")
     return
 def test_dup_field_display(self):
     # Create entity with duplicate fields
     self._create_entity_data("entitydupfield")
     self._check_entity_data_values("entitydupfield",
                                    type_id="testtype",
                                    update="Entity",
                                    comment2="Comment field 2",
                                    comment3="Comment field 3")
     # Display entity in view with duplicate fields
     u = entitydata_edit_url("edit",
                             "testcoll",
                             "testtype",
                             entity_id="entitydupfield",
                             view_id="DupField_view")
     r = self.client.get(u)
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     self.assertContains(r, "Collection testcoll")
     # Check display context
     self.assertEqual(len(r.context['fields']), 5)
     f3 = context_view_field(r.context, 2, 0)
     f4 = context_view_field(r.context, 3, 0)
     f5 = context_view_field(r.context, 4, 0)
     # 4th field - 1st comment
     comment_value = "Entity coll testcoll, type testtype, entity entitydupfield"
     self.assertEqual(f3['field_id'], 'Entity_comment')
     self.assertEqual(f3['field_name'], 'Entity_comment')
     self.assertEqual(f3['field_label'], 'Comment')
     self.assertEqual(f3['field_property_uri'], "rdfs:comment")
     self.assertEqual(f3['field_placement'].field, "small-12 columns")
     self.assertEqual(f3['field_value'], comment_value)
     # 5th field - 2nd comment
     comment2_value = "Comment field 2"
     self.assertEqual(f4['field_id'], 'Entity_comment')
     self.assertEqual(f4['field_name'], 'Entity_comment__2')
     self.assertEqual(f4['field_label'], 'Comment')
     self.assertEqual(f4['field_property_uri'], "rdfs:comment__2")
     self.assertEqual(f4['field_placement'].field, "small-12 columns")
     self.assertEqual(f4['field_value'], comment2_value)
     # 6th field - 3rd comment
     comment2_value = "Comment field 3"
     self.assertEqual(f5['field_id'], 'Entity_comment')
     self.assertEqual(f5['field_name'], 'Entity_comment__3')
     self.assertEqual(f5['field_label'], 'Comment')
     self.assertEqual(f5['field_property_uri'], "rdfs:comment_alt")
     self.assertEqual(f5['field_placement'].field, "small-12 columns")
     self.assertEqual(f5['field_value'], comment2_value)
     return
Ejemplo n.º 17
0
 def test_dup_field_display(self):
     # Create entity with duplicate fields
     self._create_entity_data("entitydupfield")
     self._check_entity_data_values(
         "entitydupfield", type_id="testtype", update="Entity", 
         comment2="Comment field 2",
         comment3="Comment field 3"
         )
     # Display entity in view with duplicate fields
     u = entitydata_edit_url(
         "edit", "testcoll", "testtype", 
         entity_id="entitydupfield",
         view_id="DupField_view"
         )
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     self.assertContains(r, "Collection testcoll")
     # Check display context
     self.assertEqual(len(r.context['fields']), 5)
     f3  = context_view_field(r.context, 2, 0)
     f4  = context_view_field(r.context, 3, 0)
     f5  = context_view_field(r.context, 4, 0)        
     # 4th field - 1st comment
     comment_value = "Entity coll testcoll, type testtype, entity entitydupfield"
     self.assertEqual(f3['field_id'], 'Entity_comment')
     self.assertEqual(f3['field_name'], 'Entity_comment')
     self.assertEqual(f3['field_label'], 'Comment')
     self.assertEqual(f3['field_property_uri'], "rdfs:comment")
     self.assertEqual(f3['field_placement'].field, "small-12 columns")
     self.assertEqual(f3['field_value'], comment_value)
     # 5th field - 2nd comment
     comment2_value = "Comment field 2"
     self.assertEqual(f4['field_id'], 'Entity_comment')
     self.assertEqual(f4['field_name'], 'Entity_comment__2')
     self.assertEqual(f4['field_label'], 'Comment')
     self.assertEqual(f4['field_property_uri'], "rdfs:comment__2")
     self.assertEqual(f4['field_placement'].field, "small-12 columns")
     self.assertEqual(f4['field_value'], comment2_value)
     # 6th field - 3rd comment
     comment2_value = "Comment field 3"
     self.assertEqual(f5['field_id'], 'Entity_comment')
     self.assertEqual(f5['field_name'], 'Entity_comment__3')
     self.assertEqual(f5['field_label'], 'Comment')
     self.assertEqual(f5['field_property_uri'], "rdfs:comment_alt")
     self.assertEqual(f5['field_placement'].field, "small-12 columns")
     self.assertEqual(f5['field_value'], comment2_value)
     return
Ejemplo n.º 18
0
 def test_user_permissions_form_rendering(self):
     # Test rendering of permissions from list in entity
     u = entitydata_edit_url(
         "edit", "testcoll", layout.USER_TYPEID, "testuser", view_id="User_view"
         )
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     field_vals = default_fields(
         coll_id="testcoll", type_id=layout.USER_TYPEID, entity_id="testuser",
         tooltip=context_view_field(r.context, 4, 0)['field_help']
         )
     formrow5 = """
         <div class="small-12 columns" title="%(tooltip)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>Permissions</span>
                 </div>
                 <div class="%(input_classes)s">
                     <input type="text" size="64" name="User_permissions" 
                            placeholder="(user permissions; e.g. &#39;VIEW CREATE UPDATE DELETE CONFIG&#39;)"
                            value="VIEW CREATE UPDATE DELETE CONFIG ADMIN"/>
                 </div>
             </div>
         </div>
         """%field_vals(width=12)
     # log.info(r.content)
     # log.info
     # for i in range(len(r.context['fields'])):
     #     log.info("Field %d: %r"%(i, r.context['fields'][i]))
     self.assertContains(r, formrow5, html=True)
     return
Ejemplo n.º 19
0
 def test_view_field_alias(self):
     # View BibEntry field in Default_view
     u = entitydata_edit_url("edit",
                             "testcoll",
                             "BibEntry_type",
                             entity_id="bibentity1",
                             view_id="Default_view")
     r = self.client.get(u)
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     # Test context
     url = entity_url(coll_id="testcoll",
                      type_id="BibEntry_type",
                      entity_id="bibentity1")
     self.assertEqual(r.context['coll_id'], "testcoll")
     self.assertEqual(r.context['type_id'], "BibEntry_type")
     self.assertEqual(r.context['entity_id'], "bibentity1")
     self.assertEqual(r.context['orig_id'], "bibentity1")
     self.assertEqual(r.context['action'], "edit")
     # Fields
     self.assertEqual(len(r.context['fields']), 3)
     # Check aliased label field
     f2 = context_view_field(r.context, 1, 0)
     self.assertEqual(f2['field_id'], 'Entity_label')
     self.assertEqual(f2['field_property_uri'], RDFS.CURIE.label)
     self.assertEqual(f2['field_value'], self.bibentity1_data['bib:title'])
     return
Ejemplo n.º 20
0
 def test_bad_user_permissions_form_rendering(self):
     # Test handling of permissions not stored in entity as a list of values
     create_user_permissions(self.testcoll, 
         "baduserperms",
         user_permissions="VIEW CREATE UPDATE DELETE"
         )
     u = entitydata_edit_url(
         "edit", "testcoll", layout.USER_TYPEID, "baduserperms", view_id="User_view"
         )
     with SuppressLogging(logging.WARNING):
         r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     field_vals = default_fields(
         coll_id="testcoll", type_id=layout.USER_TYPEID, entity_id="baduserperms",
         tooltip=context_view_field(r.context, 4, 0)['field_help']
         )
     formrow5 = """
         <div class="small-12 columns" title="%(tooltip)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>Permissions</span>
                 </div>
                 <div class="%(input_classes)s">
                     <input type="text" size="64" name="User_permissions" 
                            placeholder="(user permissions; e.g. &#39;VIEW CREATE UPDATE DELETE CONFIG&#39;)"
                            value="VIEW CREATE UPDATE DELETE"/>
                 </div>
             </div>
         </div>
         """%field_vals(width=12)
     # log.info(r.content)
     self.assertContains(r, formrow5, html=True)
     return
Ejemplo n.º 21
0
 def test_view_field_alias(self):
     # View BibEntry field in Default_view
     u = entitydata_edit_url(
         "edit", "testcoll", "BibEntry_type", 
         entity_id="bibentity1", 
         view_id="Default_view"
         )
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     # Test context
     url = entity_url(coll_id="testcoll", type_id="BibEntry_type", entity_id="bibentity1")
     self.assertEqual(r.context['coll_id'],          "testcoll")
     self.assertEqual(r.context['type_id'],          "BibEntry_type")
     self.assertEqual(r.context['entity_id'],        "bibentity1")
     self.assertEqual(r.context['orig_id'],          "bibentity1")
     self.assertEqual(r.context['action'],           "edit")
     # Fields
     self.assertEqual(len(r.context['fields']), 3)
     # Check aliased label field
     f2 = context_view_field(r.context, 1, 0)
     self.assertEqual(f2['field_id'], 'Entity_label')
     self.assertEqual(f2['field_property_uri'], RDFS.CURIE.label)
     self.assertEqual(f2['field_value'], self.bibentity1_data['bib:title'])
     return
Ejemplo n.º 22
0
 def test_user_permissions_form_rendering(self):
     # Test rendering of permissions from list in entity
     u = entitydata_edit_url("edit",
                             "testcoll",
                             layout.USER_TYPEID,
                             "testuser",
                             view_id="User_view")
     r = self.client.get(u)
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     field_vals = default_fields(coll_id="testcoll",
                                 type_id=layout.USER_TYPEID,
                                 entity_id="testuser",
                                 tooltip=context_view_field(
                                     r.context, 4, 0)['field_help'])
     formrow5 = """
         <div class="small-12 columns" title="%(tooltip)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>Permissions</span>
                 </div>
                 <div class="%(input_classes)s">
                     <input type="text" size="64" name="User_permissions" 
                            placeholder="(user permissions; e.g. &#39;VIEW CREATE UPDATE DELETE CONFIG&#39;)"
                            value="VIEW CREATE UPDATE DELETE CONFIG ADMIN"/>
                 </div>
             </div>
         </div>
         """ % field_vals(width=12)
     # log.info(r.content)
     # log.info
     # for i in range(len(r.context['fields'])):
     #     log.info("Field %d: %r"%(i, r.context['fields'][i]))
     self.assertContains(r, formrow5, html=True)
     return
Ejemplo n.º 23
0
 def test_get_fields_list_search(self):
     u = entitydata_list_type_url(
         "testcoll", layout.FIELD_TYPEID, list_id="Field_list", scope="all",
         continuation_url="/xyzzy/",
         query_params={"search": "Coll_"}
         )
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     list_label = "Field definitions" 
     list_title = "Field definitions - Collection testcoll"
     self.assertContains(r, "<title>%s</title>"%list_title, html=True)
     self.assertContains(r, '<h2 class="page-heading">%s</h2>'%list_label, html=True)
     # Test context
     self.assertEqual(r.context['coll_id'],          "testcoll")
     self.assertEqual(r.context['type_id'],          layout.FIELD_TYPEID)
     self.assertEqual(r.context['continuation_url'], "/xyzzy/")
     self.assertEqual(r.context['search_for'],       "Coll_")
     list_choices = r.context['list_choices']
     self.assertEqual(set(list_choices.options),     set(self.list_ids))
     self.assertEqual(list_choices['field_value'],   "Field_list")
     # Fields
     head_fields = context_list_head_fields(r.context)
     self.assertEqual(len(head_fields), 1)       # One row of 4 cols..
     self.assertEqual(len(head_fields[0]['row_field_descs']), 4)
     f0 = context_view_field(r.context, 0, 0)
     f1 = context_view_field(r.context, 0, 1)
     f2 = context_view_field(r.context, 0, 2)
     f3 = context_view_field(r.context, 0, 3)
     self.assertEqual(f0['field_id'], 'Entity_id')
     self.assertEqual(f1['field_id'], 'Field_render_type')
     self.assertEqual(f2['field_id'], 'Field_value_type')
     self.assertEqual(f3['field_id'], 'Entity_label')
     # Entities
     entities = context_list_entities(r.context)
     self.assertEqual(len(entities), 7)
     field_entities = (
         { ( "Coll_comment",             "Markdown",         "annal:Richtext", "Collection metadata" )
         , ( "Coll_default_list_id",     "Showtext",         "annal:Text",     "Default list"        )
         , ( "Coll_default_view_entity", "Showtext",         "annal:Text",     "Default view entity" )
         , ( "Coll_default_view_id",     "Showtext",         "annal:Text",     "Default view"        )
         , ( "Coll_default_view_type",   "Showtext",         "annal:Text",     "Default view type"   )
         , ( "Coll_parent",              "Enum_choice_opt",  "annal:Slug",     "Parent"              )
         , ( "Coll_software_version",    "Showtext",         "annal:Text",     "S/W version"         )
         })
     check_field_list_context_fields(self, r, field_entities)
     return
 def test_reference_imported_resource(self):
     # Create imported resource (see previous test)
     f = entitydata_default_view_form_data(entity_id="test1",
                                           type_id="testimptype",
                                           action="edit",
                                           do_import="imp_field__import")
     f['imp_field'] = self.fileuri
     u = entitydata_edit_url("edit",
                             "testcoll",
                             "testimptype",
                             entity_id="test1",
                             view_id="testimpview")
     r = self.client.post(u, f)
     self.assertEqual(r.status_code, 302)
     self.assertEqual(r.reason_phrase, "FOUND")
     # Display resource with reference
     u = entitydata_edit_url("view",
                             "testcoll",
                             "testreftype",
                             entity_id="test1",
                             view_id="testrefview")
     r = self.client.get(u)
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     # Check display 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, "test_ref_entity test1 label")
     f2 = context_view_field(r.context, 2, 0)
     self.assertEqual(f2.field_id, "Entity_comment")
     self.assertEqual(f2.field_value, "test_ref_entity test1 comment")
     f3 = context_view_field(r.context, 3, 0)
     basepath = TestBasePath + "/c/testcoll/d/testimptype/"
     self.assertEqual(f3.field_id, "Test_reference")
     self.assertEqual(f3.field_value, "testimptype/test1")
     self.assertEqual(f3.field_value_link, basepath + "test1/")
     self.assertEqual(f3.target_value['import_name'], "imp_field")
     self.assertEqual(f3.target_value['resource_name'], "imp_field.md")
     self.assertEqual(f3.target_value['resource_type'], "text/markdown")
     self.assertEqual(f3.target_value_link, basepath + "test1/imp_field.md")
     return
Ejemplo n.º 25
0
    def test_image_edit(self):
        # This test that entity editing leaves attachment intact

        # Upload image
        self.test_image_edit_field()

        # Edit entity
        f = entitydata_default_view_form_data(type_id="testimgtype",
                                              entity_id="test1",
                                              action="edit",
                                              update="Updated")
        u = entitydata_edit_url("edit",
                                "testcoll",
                                "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 testcoll/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
        siteobj = open(self.imagepath, "rb")
        testobj = self.test_img_type_info.get_fileobj("test1", "img_field",
                                                      "annal:Image",
                                                      "image/jpeg", "rb")
        self.assertTrue(siteobj.read() == testobj.read(),
                        "Edited entity image != original")
        return
Ejemplo n.º 26
0
 def test_get_default_all_scope_all_list(self):
     # List all entities in current collection and site-wide
     u = entitydata_list_all_url("testcoll",
                                 list_id="Default_list_all",
                                 scope="all",
                                 continuation_url="/xyzzy/")
     r = self.client.get(u)
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     self.assertContains(r, "Collection testcoll")
     self.assertContains(
         r,
         '<h2 class="page-heading">List entities with type information</h2>',
         html=True)
     # Test context
     self.assertEqual(
         r.context['title'],
         "List entities with type information - Collection testcoll")
     self.assertEqual(r.context['heading'],
                      "List entities with type information")
     self.assertEqual(r.context['coll_id'], "testcoll")
     self.assertEqual(r.context['type_id'], None)
     list_choices = r.context['list_choices']
     self.assertEqual(set(list_choices.options), set(self.list_ids))
     self.assertEqual(list_choices['field_value'], "Default_list_all")
     # Unbound field descriptions
     head_fields = context_list_head_fields(r.context)
     self.assertEqual(len(head_fields), 1)  # One row of 3 cols..
     self.assertEqual(len(head_fields[0].description['row_field_descs']), 3)
     f0 = context_view_field(r.context, 0, 0)
     f1 = context_view_field(r.context, 0, 1)
     f2 = context_view_field(r.context, 0, 2)
     self.assertEqual(f0.field_id, 'Entity_id')
     self.assertEqual(f1.field_id, 'Entity_type')
     self.assertEqual(f2.field_id, 'Entity_label')
     # Entities and bound fields
     entities = context_list_entities(r.context)
     if len(entities) != 213:
         for e in entities:
             log.debug("All entities: %s/%s" %
                       (e['annal:type_id'], e['annal:id']))
     self.assertEqual(len(entities), 226)  # Will change with site data
     return
Ejemplo n.º 27
0
 def test_reference_uploaded_resource(self):
     # Create uploaded resource (see previous test)
     with open(self.filepath) as fp:
         f = entitydata_default_view_form_data(type_id="testupltype", entity_id="test1", action="edit")
         f['upl_field'] = fp     # Upload file with submission
         u = entitydata_edit_url(
             "view", "testcoll", "testupltype", entity_id="test1", view_id="testuplfileview"
             )
         r = self.client.post(u, f)
     self.assertEqual(r.status_code,   302)
     self.assertEqual(r.reason_phrase, "FOUND")
     # Display resource with reference
     u = entitydata_edit_url(
         "view", "testcoll", "testreftype", entity_id="test1", view_id="testrefview"
         )
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     # Check display 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,  "test_ref_entity test1 label")
     f2 = context_view_field(r.context, 2, 0)
     self.assertEqual(f2.field_id,     "Entity_comment")
     self.assertEqual(f2.field_value,  "test_ref_entity test1 comment")
     f3 = context_view_field(r.context, 3, 0)
     basepath = TestBasePath + "/c/testcoll/d/testupltype/"
     # print "\n*****\n"+repr(context_view_field(r.context, i, 0).target_value)+"\n*****\n"
     self.assertEqual(f3.field_id,     "Test_reference")
     self.assertEqual(f3.field_value,        "testupltype/test1")
     self.assertEqual(f3.field_value_link,   basepath+"test1/")
     self.assertEqual(f3.target_value['upload_name'],   "upl_field")
     self.assertEqual(f3.target_value['resource_name'], "upl_field.md")
     self.assertEqual(f3.target_value['resource_type'], "text/markdown")
     self.assertEqual(f3.target_value['uploaded_file'], "testdatafile.md")
     self.assertEqual(f3.target_value['uploaded_size'], 137)
     self.assertEqual(f3.target_value_link,  basepath+"test1/upl_field.md")
     return
Ejemplo n.º 28
0
 def test_reference_imported_resource(self):
     # Create imported resource (see previous test)
     f = entitydata_default_view_form_data(
         entity_id="test1", type_id="testimptype", action="edit", 
         do_import="imp_field__import"
         )
     f['imp_field'] = self.fileuri
     u = entitydata_edit_url(
         "edit", "testcoll", "testimptype", entity_id="test1", view_id="testimpview"
         )
     r = self.client.post(u, f)
     self.assertEqual(r.status_code,   302)
     self.assertEqual(r.reason_phrase, "FOUND")
     # Display resource with reference
     u = entitydata_edit_url(
         "view", "testcoll", "testreftype", entity_id="test1", view_id="testrefview"
         )
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     # Check display 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,  "test_ref_entity test1 label")
     f2 = context_view_field(r.context, 2, 0)
     self.assertEqual(f2.field_id,     "Entity_comment")
     self.assertEqual(f2.field_value,  "test_ref_entity test1 comment")
     f3 = context_view_field(r.context, 3, 0)
     basepath = TestBasePath + "/c/testcoll/d/testimptype/"
     self.assertEqual(f3.field_id,           "Test_reference")
     self.assertEqual(f3.field_value,        "testimptype/test1")
     self.assertEqual(f3.field_value_link,   basepath+"test1/")
     self.assertEqual(f3.target_value['import_name'],   "imp_field")
     self.assertEqual(f3.target_value['resource_name'], "imp_field.md")
     self.assertEqual(f3.target_value['resource_type'], "text/markdown")
     self.assertEqual(f3.target_value_link,  basepath+"test1/imp_field.md")
     return
Ejemplo n.º 29
0
    def test_image_edit_field(self):
        # Upload to an image view field
        with open(self.imagepath) as fp:
            f = entitydata_default_view_form_data(type_id="testimgtype",
                                                  entity_id="test1",
                                                  action="edit")
            f['img_field'] = fp  # Upload file with submission
            u = entitydata_edit_url("edit",
                                    "testcoll",
                                    "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")

        # Read back and compare entity resource just created
        siteobj = open(self.imagepath, "rb")
        testobj = self.test_img_type_info.get_fileobj("test1", "img_field",
                                                      "annal:Image",
                                                      "image/jpeg", "rb")
        self.assertTrue(siteobj.read() == testobj.read(),
                        "Referenced image != original")

        # Retrieve updated form
        r = self.client.get(u)
        # Test context
        # print "@@ "+context_field_map(r.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")
        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())
        return
Ejemplo n.º 30
0
 def test_upload_image_resource(self):
     # See https://docs.djangoproject.com/en/1.7/topics/testing/tools/#django.test.Client.post
     with open(self.imagepath) as fp:
         f = entitydata_default_view_form_data(type_id="testupltype",
                                               entity_id="test1",
                                               action="edit")
         f['upl_field'] = fp  # Upload file with submission
         u = entitydata_edit_url("edit",
                                 "testcoll",
                                 "testupltype",
                                 entity_id="test1",
                                 view_id="testuplimageview")
         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")
     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_upload_image")
     self.assertDictionaryMatch(f3.field_value,
                                test_upload_image_field_value())
     # Read back and compare entity resource just created
     siteobj = open(self.imagepath, "rb")
     testobj = self.test_upl_type_info.get_fileobj("test1", "upl_field",
                                                   "annal:Image",
                                                   "image/jpeg", "rb")
     self.assertTrue(siteobj.read() == testobj.read(),
                     "Uploaded image != original")
     # self.assertEqual(siteobj.read(), testobj.read())
     return
Ejemplo n.º 31
0
    def test_get_types_scope_all_list(self):
        # List types in current collection and site-wide
        u = entitydata_list_type_url(
            "testcoll", "_type", list_id="Type_list", scope="all"
            )
        r = self.client.get(u)
        self.assertEqual(r.status_code,   200)
        self.assertEqual(r.reason_phrase, "OK")
        # log.info(r.content) #@@
        list_label = "Entity types" 
        list_title = "Entity types - Collection testcoll"
        self.assertContains(r, "<title>%s</title>"%list_title, html=True)
        self.assertContains(r, '<h2 class="page-heading">%s</h2>'%list_label, html=True)
        # Test context
        self.assertEqual(r.context['title'],            list_title)
        self.assertEqual(r.context['heading'],          list_label)
        self.assertEqual(r.context['coll_id'],          "testcoll")
        self.assertEqual(r.context['type_id'],          "_type")
        # Fields
        head_fields = context_list_head_fields(r.context)
        self.assertEqual(len(head_fields), 1)       # One row of 2 cols..
        self.assertEqual(len(head_fields[0]['row_field_descs']), 2)
        f0 = context_view_field(r.context, 0, 0)
        f1 = context_view_field(r.context, 0, 1)

        # 1st field
        self.assertEqual(f0['field_id'], 'Entity_id')
        self.assertEqual(f0['field_name'], 'entity_id')
        # 2nd field
        self.assertEqual(f1['field_id'], 'Entity_label')
        self.assertEqual(f1['field_name'], 'Entity_label')
        # Entities
        entities   = context_list_entities(r.context)
        listed_entities = { e['entity_id']: e for e in entities }
        #@@ self.assertIn('_initial_values', listed_entities)
        type_entities = get_site_types() | {"testtype", "testtype2"}
        self.assertEqual(set(listed_entities.keys()), type_entities)
        return
 def test_import_resource(self):
     f = entitydata_default_view_form_data(entity_id="test1",
                                           type_id="testimptype",
                                           action="edit",
                                           do_import="imp_field__import")
     f['imp_field'] = self.fileuri
     u = entitydata_edit_url("edit",
                             "testcoll",
                             "testimptype",
                             entity_id="test1",
                             view_id="testimpview")
     r = self.client.post(u, f)
     self.assertEqual(r.status_code, 302)
     self.assertEqual(r.reason_phrase, "FOUND")
     self.assertMatch(r['location'], TestHostUri + u)
     # Read back form following redirect
     r = self.client.get(u)
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     # 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")
     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_import")
     self.assertDictionaryMatch(f3.field_value, test_import_field_value())
     # Read back and compare entity resource just created
     siteobj = open(TestBaseDir + "/README.md", "rb")
     testobj = self.test_imp_type_info.get_fileobj("test1", "imp_field",
                                                   "annal:Richtext",
                                                   "text/markdown", "rb")
     self.assertEqual(siteobj.read(), testobj.read())
     return
Ejemplo n.º 33
0
 def test_list_field_alias(self):
     # List BibEntry fields in Default_list
     u = entitydata_list_type_url("testcoll",
                                  "BibEntry_type",
                                  list_id="Default_list")
     r = self.client.get(u)
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     # log.info(r.content) #@@
     # Test context
     self.assertEqual(r.context['coll_id'], "testcoll")
     self.assertEqual(r.context['type_id'], "BibEntry_type")
     self.assertEqual(r.context['list_choices']['field_value'],
                      "Default_list")
     # Fields
     head_fields = context_list_head_fields(r.context)
     self.assertEqual(len(head_fields), 1)  # One row of 2 cols..
     self.assertEqual(len(head_fields[0]['row_field_descs']), 2)
     f0 = context_view_field(r.context, 0, 0)
     f1 = context_view_field(r.context, 0, 1)
     # 1st field
     self.assertEqual(f0['field_id'], 'Entity_id')
     self.assertEqual(f0['field_property_uri'], "annal:id")
     self.assertEqual(f0['field_value'], "")
     # 2nd field
     self.assertEqual(f1['field_id'], 'Entity_label')
     self.assertEqual(f1['field_property_uri'], "rdfs:label")
     self.assertEqual(f1['field_value'], "")
     # List entities (actually, just the one)
     entities = context_list_entities(r.context)
     self.assertEqual(len(entities), 1)
     self.assertEqual(
         context_list_item_field_value(r.context, entities[0], 0),
         "bibentity1")
     self.assertEqual(
         context_list_item_field_value(r.context, entities[0], 1),
         self.bibentity1_data['bib:title'])
     return
Ejemplo n.º 34
0
 def test_get_default_all_scope_all_list(self):
     # List all entities in current collection and site-wide
     u = entitydata_list_all_url(
         "testcoll", list_id="Default_list_all", 
         scope="all",
         continuation_url="/xyzzy/"
         )
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     self.assertContains(r, "Collection testcoll")
     self.assertContains(r, '<h2 class="page-heading">List entities with type information</h2>', html=True)
     # Test context
     self.assertEqual(r.context['title'],            "List entities with type information - Collection testcoll")
     self.assertEqual(r.context['heading'],          "List entities with type information")
     self.assertEqual(r.context['coll_id'],          "testcoll")
     self.assertEqual(r.context['type_id'],          "Default_type")
     list_choices = r.context['list_choices']
     self.assertEqual(set(list_choices.options),     set(self.list_ids))
     self.assertEqual(list_choices['field_value'],   "Default_list_all")
     # Unbound field descriptions
     head_fields = context_list_head_fields(r.context)
     self.assertEqual(len(head_fields), 1)       # One row of 3 cols..
     self.assertEqual(len(head_fields[0]['row_field_descs']), 3)
     f0 = context_view_field(r.context, 0, 0)
     f1 = context_view_field(r.context, 0, 1)
     f2 = context_view_field(r.context, 0, 2)
     self.assertEqual(f0['field_id'], 'Entity_id')
     self.assertEqual(f1['field_id'], 'Entity_type')
     self.assertEqual(f2['field_id'], 'Entity_label')
     # Entities and bound fields
     entities = context_list_entities(r.context)
     if len(entities) != 217:
         for e in entities:
             log.debug("All entities: %s/%s"%(e['annal:type_id'], e['annal:id']))
     self.assertEqual(len(entities), 224)    # Will change with site data
     return
Ejemplo n.º 35
0
 def test_list_field_alias(self):
     # List BibEntry fields in Default_list
     u = entitydata_list_type_url("testcoll", "BibEntry_type", list_id="Default_list")
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     # log.info(r.content) #@@
     # Test context
     self.assertEqual(r.context['coll_id'],  "testcoll")
     self.assertEqual(r.context['type_id'],  "BibEntry_type")
     self.assertEqual(r.context['list_choices']['field_value'], "Default_list")
     # Fields
     head_fields = context_list_head_fields(r.context)
     self.assertEqual(len(head_fields), 1)       # One row of 2 cols..
     self.assertEqual(len(head_fields[0]['row_field_descs']), 2)
     f0 = context_view_field(r.context, 0, 0)
     f1 = context_view_field(r.context, 0, 1)
     # 1st field
     self.assertEqual(f0['field_id'], 'Entity_id')
     self.assertEqual(f0['field_property_uri'], "annal:id")
     self.assertEqual(f0['field_value'], "")
     # 2nd field
     self.assertEqual(f1['field_id'], 'Entity_label')
     self.assertEqual(f1['field_property_uri'], "rdfs:label")
     self.assertEqual(f1['field_value'], "")
     # List entities (actually, just the one)
     entities = context_list_entities(r.context)
     self.assertEqual(len(entities), 1)
     self.assertEqual(
         context_list_item_field_value(r.context, entities[0], 0), 
         "bibentity1"
         )
     self.assertEqual(
         context_list_item_field_value(r.context, entities[0], 1), 
         self.bibentity1_data['bib:title']
         )
     return
Ejemplo n.º 36
0
 def test_view_subproperty_field(self):
     self.create_subproperty_field_view_entity()
     # Render view
     u = entitydata_edit_url("view",
                             "testcoll",
                             "testtype",
                             entity_id="testentity",
                             view_id="testview")
     r = self.client.get(u)
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     # Test context
     url = entity_url(coll_id="testcoll",
                      type_id="testtype",
                      entity_id="testentity")
     self.assertEqual(r.context['coll_id'], "testcoll")
     self.assertEqual(r.context['type_id'], "testtype")
     self.assertEqual(r.context['entity_id'], "testentity")
     self.assertEqual(r.context['orig_id'], "testentity")
     self.assertEqual(r.context['action'], "view")
     # Fields
     self.assertEqual(len(r.context['fields']), 2)
     # Check id field for sanity
     f1 = context_view_field(r.context, 0, 0)
     self.assertEqual(f1.field_id, "Entity_id")
     self.assertEqual(f1.description['field_property_uri'], ANNAL.CURIE.id)
     self.assertEqual(f1['field_value'],
                      self.testentity_data[ANNAL.CURIE.id])
     # Check superproperty field value
     f2 = context_view_field(r.context, 1, 0)
     self.assertEqual(f2.field_id, "Test_sup_field")
     self.assertEqual(f2.description['field_property_uri'],
                      "test:superprop_uri")
     self.assertEqual(f2['field_value'],
                      self.testentity_data["test:subprop_uri"])
     return
Ejemplo n.º 37
0
 def test_import_resource(self):
     f = entitydata_default_view_form_data(
         entity_id="test1", type_id="testimptype", action="edit", 
         do_import="imp_field__import"
         )
     f['imp_field'] = self.fileuri
     u = entitydata_edit_url(
         "edit", "testcoll", "testimptype", entity_id="test1", view_id="testimpview"
         )
     r = self.client.post(u, f)
     self.assertEqual(r.status_code,   302)
     self.assertEqual(r.reason_phrase, "FOUND")
     self.assertMatch(r['location'], TestHostUri+u)
     # Read back form following redirect
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     # 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")
     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_import")
     self.assertDictionaryMatch(f3.field_value, test_import_field_value())
     # Read back and compare entity resource just created
     siteobj = open(TestBaseDir+"/README.md", "rb")
     testobj = self.test_imp_type_info.get_fileobj(
         "test1", "imp_field", "annal:Richtext", "text/markdown", "rb"
         )
     self.assertEqual(siteobj.read(), testobj.read())
     return
Ejemplo n.º 38
0
 def test_get_default_all_scope_all_list(self):
     # List all entities in current collection and site-wiude
     # This repeats parts of the previous test but with scope='all'
     u = entitydata_list_all_url(
         "testcoll", list_id="Default_list_all", 
         scope="all", continuation_url="/xyzzy/"
         )
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     list_label = "List entities with type information" 
     list_title = "List entities with type information - Collection testcoll"
     self.assertContains(r, "<title>%s</title>"%list_title, html=True)
     self.assertContains(r, '<h2 class="page-heading">%s</h2>'%list_label, html=True)
     # Test context
     self.assertEqual(r.context['title'],            list_title)
     self.assertEqual(r.context['heading'],          list_label)
     self.assertEqual(r.context['coll_id'],          "testcoll")
     self.assertEqual(r.context['type_id'],          "Default_type")
     list_choices = r.context['list_choices']
     self.assertEqual(set(list_choices.options),     set(self.list_ids))
     self.assertEqual(list_choices['field_value'],   "Default_list_all")
     # Unbound field descriptions
     head_fields = context_list_head_fields(r.context)
     self.assertEqual(len(head_fields), 1)       # One row of 3 cols..
     self.assertEqual(len(head_fields[0]['row_field_descs']), 3)
     f0 = context_view_field(r.context, 0, 0)
     f1 = context_view_field(r.context, 0, 1)
     f2 = context_view_field(r.context, 0, 2)
     self.assertEqual(f0['field_id'], 'Entity_id')
     self.assertEqual(f1['field_id'], 'Entity_type')
     self.assertEqual(f2['field_id'], 'Entity_label')
     # Entities and bound fields
     entities = context_list_entities(r.context)
     self.assertEqual(len(entities), 164)    # Will change with site data
     return
Ejemplo n.º 39
0
    def test_image_edit(self):
        # This test that entity editing leaves attachment intact

        # Upload image
        self.test_image_edit_field()

        # Edit entity
        f = entitydata_default_view_form_data(type_id="testimgtype", entity_id="test1", action="edit", update="Updated")
        u = entitydata_edit_url("edit", "testcoll", "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 testcoll/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
        siteobj = open(self.imagepath, "rb")
        testobj = self.test_img_type_info.get_fileobj(
            "test1", "img_field", "annal:Image", "image/jpeg", "rb"
            )
        self.assertTrue(siteobj.read() == testobj.read(), "Edited entity image != original")
        return
Ejemplo n.º 40
0
 def test_bad_user_permissions_form_rendering(self):
     # Test handling of permissions not stored in entity as a list of values
     create_user_permissions(self.testcoll,
                             "baduserperms",
                             user_permissions="VIEW CREATE UPDATE DELETE")
     u = entitydata_edit_url("edit",
                             "testcoll",
                             layout.USER_TYPEID,
                             "baduserperms",
                             view_id="User_view")
     with SuppressLogging(logging.WARNING):
         r = self.client.get(u)
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     field_vals = default_fields(coll_id="testcoll",
                                 type_id=layout.USER_TYPEID,
                                 entity_id="baduserperms",
                                 tooltip=context_view_field(
                                     r.context, 4, 0)['field_help'])
     formrow5 = """
         <div class="small-12 columns" title="%(tooltip)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>Permissions</span>
                 </div>
                 <div class="%(input_classes)s">
                     <input type="text" size="64" name="User_permissions" 
                            placeholder="(user permissions; e.g. &#39;VIEW CREATE UPDATE DELETE CONFIG&#39;)"
                            value="VIEW CREATE UPDATE DELETE"/>
                 </div>
             </div>
         </div>
         """ % field_vals(width=12)
     # log.info(r.content)
     self.assertContains(r, formrow5, html=True)
     return
Ejemplo n.º 41
0
 def test_get_fields_list_search(self):
     u = entitydata_list_type_url(
         "testcoll", layout.FIELD_TYPEID, list_id="Field_list", scope="all",
         continuation_url="/xyzzy/",
         query_params={"search": "Bib_"}
         )
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     # self.assertContains(r, site_title("<title>%s</title>"))
     # self.assertContains(r, "<h3>List 'Field_list' of entities in collection 'testcoll'</h3>", html=True)
     # Test context
     self.assertEqual(r.context['coll_id'],          "testcoll")
     self.assertEqual(r.context['type_id'],          layout.FIELD_TYPEID)
     self.assertEqual(r.context['continuation_url'], "/xyzzy/")
     self.assertEqual(r.context['search_for'],       "Bib_")
     list_choices = r.context['list_choices']
     self.assertEqual(set(list_choices.options),     set(self.list_ids))
     self.assertEqual(list_choices['field_value'],   "Field_list")
     # Fields
     head_fields = context_list_head_fields(r.context)
     self.assertEqual(len(head_fields), 1)       # One row of 4 cols..
     self.assertEqual(len(head_fields[0]['row_field_descs']), 4)
     f0 = context_view_field(r.context, 0, 0)
     f1 = context_view_field(r.context, 0, 1)
     f2 = context_view_field(r.context, 0, 2)
     f3 = context_view_field(r.context, 0, 3)
     self.assertEqual(f0['field_id'], 'Entity_id')
     self.assertEqual(f1['field_id'], 'Field_render_type')
     self.assertEqual(f2['field_id'], 'Field_value_type')
     self.assertEqual(f3['field_id'], 'Entity_label')
     # Entities
     entities = context_list_entities(r.context)
     self.assertEqual(len(entities), 36)
     field_entities = (
         { ('Bib_address',       "Text",        "annal:Text",          "Address")
         , ('Bib_authors',       "Group_Seq",   "bib:Authors",         "Author(s)")
         , ('Bib_booktitle',     "Text",        "annal:Text",          "Book title")
         , ('Bib_chapter',       "Text",        "annal:Text",          "Chapter")
         , ('Bib_edition',       "Text",        "annal:Text",          "Edition")
         , ('Bib_editors',       "Group_Seq",   "bib:Editors",         "Editor(s)")
         , ('Bib_eprint',        "Text",        "annal:Text",          "Bib_eprint")
         , ('Bib_howpublished',  "Text",        "annal:Text",          "How published")
         , ('Bib_institution',   "Text",        "annal:Text",          "Institution")
         , ('Bib_journal',       "Group_Seq",   "bib:Journal",         "Journal")
         , ('Bib_month',         "Text",        "annal:Text",          "Month")
         , ('Bib_number',        "Text",        "annal:Text",          "Number")
         , ('Bib_organization',  "Text",        "annal:Text",          "Organization")
         , ('Bib_pages',         "Text",        "annal:Text",          "Pages")
         , ('Bib_publisher',     "Text",        "annal:Text",          "Publisher")
         , ('Bib_school',        "Text",        "annal:Text",          "School")
         , ('Bib_title',         "Text",        "annal:Text",          "Title")
         , ('Bib_type',          "Enum",        "annal:Slug",          "Type")
         , ('Bib_url',           "Text",        "annal:Text",          "URL")
         , ('Bib_volume',        "Text",        "annal:Text",          "Volume")
         , ('Bib_year',          "Text",        "annal:Text",          "Year")
         })
     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]
                     head_field = head_fields[0]['row_field_descs'][fid]
                     for fkey in (
                             'field_id', 'field_name', 'field_label', 
                             'field_property_uri', 'field_render_type',
                             'field_placement', 'field_value_type'):
                         self.assertEqual(item_field[fkey], head_field[fkey])
                     check_context_list_field_value(self, item_field, f[fid])
                 break
         else:
             self.fail("Field %s not found in context"%f[0])
     return
Ejemplo n.º 42
0
 def test_get_collection_data_form_rendering(self):
     u = entitydata_edit_url("new", "_annalist_site", "_coll", view_id="Collection_view")
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     field_vals = default_fields(
         coll_id="_annalist_site", 
         type_id="_coll", 
         entity_id="00000001", 
         sotware_ver=annalist.__version_data__,
         tooltip1a=context_view_field(r.context, 0, 0)['field_help'],
         tooltip1b=context_view_field(r.context, 0, 1)['field_help'],
         tooltip2 =context_view_field(r.context, 1, 0)['field_help'],
         tooltip3 =context_view_field(r.context, 2, 0)['field_help'],
         tooltip4 =context_view_field(r.context, 3, 0)['field_help'],
         tooltip5a=context_view_field(r.context, 4, 0)['field_help'],
         tooltip5b=context_view_field(r.context, 4, 1)['field_help'],
         tooltip6a=context_view_field(r.context, 5, 0)['field_help'],
         tooltip6b=context_view_field(r.context, 5, 1)['field_help'],
         tooltip7 =context_view_field(r.context, 6, 0)['field_help'],
         )
     formrow1a = """
         <div class="small-12 medium-6 columns" title="%(tooltip1a)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>Id</span>
                 </div>
                 <div class="%(input_classes)s">
                     <input type="text" size="64" name="entity_id" 
                                placeholder="(entity id)" 
                                value="00000001" />
                 </div>
             </div>
         </div>
         """%field_vals(width=6)
     formrow1b = """
         <div class="small-12 medium-6 columns" title="%(tooltip1b)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>S/W version</span>
                 </div>
                 <div class="%(input_classes)s">
                     <span>&nbsp;</span>
                 </div>
             </div>
         </div>
         """%field_vals(width=6)            
     formrow2 = """
         <div class="small-12 columns" title="%(tooltip2)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>Label</span>
                 </div>
                 <div class="%(input_classes)s">
                     <input type="text" size="64" name="Entity_label" 
                            placeholder="(label)"
                            value="" />
                 </div>
             </div>
         </div>
         """%field_vals(width=12)
     formrow3 = """
         <div class="small-12 columns" title="%(tooltip3)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>Comment</span>
                 </div>
                 <div class="%(input_classes)s">
                     <textarea cols="64" rows="6" name="Entity_comment" 
                               class="small-rows-4 medium-rows-8"
                               placeholder="(description)"
                               >
                     </textarea>
                 </div>
             </div>
         </div>
         """%field_vals(width=12)
     formrow4 = """
         <div class="small-12 columns" title="%(tooltip4)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>Parent</span>
                 </div>
                 <div class="%(input_classes)s">
                     <select name="Coll_parent">
                         <option value="" selected="selected">(site)</option>
                         <option value="_coll/_annalist_site">Annalist data notebook test site</option>
                         <option value="_coll/coll1">Collection coll1</option>
                         <option value="_coll/coll2">Collection coll2</option>
                         <option value="_coll/coll3">Collection coll3</option>
                         <option value="_coll/testcoll">Collection testcoll</option>
                     </select>
                 </div>
             </div>
         </div>
         """%field_vals(width=12)
     formrow5a = """
          <div class="small-12 medium-6 columns" title="%(tooltip5a)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>Default list</span>
                 </div>
                 <div class="%(input_classes)s">
                     <span>&nbsp;</span>
                 </div>
             </div>
         </div>
        """%field_vals(width=6)
     formrow5b = """
         <div class="small-12 medium-6 columns" title="%(tooltip5b)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>Default view</span>
                 </div>
                 <div class="%(input_classes)s">
                     <span>&nbsp;</span>
                 </div>
             </div>
         </div>
         """%field_vals(width=6)            
     formrow6a = """
          <div class="small-12 medium-6 columns" title="%(tooltip6a)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>Default view type</span>
                 </div>
                 <div class="%(input_classes)s">
                     <span>&nbsp;</span>
                 </div>
             </div>
         </div>
        """%field_vals(width=6)
     formrow6b = """
         <div class="small-12 medium-6 columns" title="%(tooltip6b)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>Default view entity</span>
                 </div>
                 <div class="%(input_classes)s">
                     <span>&nbsp;</span>
                 </div>
             </div>
         </div>
         """%field_vals(width=6)            
     formrow7 = """
         <div class="small-12 columns" title="%(tooltip7)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>Collection metadata</span>
                 </div>
                 <div class="%(input_classes)s">
                     <textarea cols="64" rows="6" name="Coll_comment" 
                               class="small-rows-4 medium-rows-8" 
                               placeholder="(annal:meta_comment)"
                               >
                     </textarea>
                 </div>
             </div>
         </div>
         """%field_vals(width=12)
     # log.info(r.content)
     self.assertContains(r, formrow1a, html=True)
     self.assertContains(r, formrow1b, html=True)
     self.assertContains(r, formrow2,  html=True)
     self.assertContains(r, formrow3,  html=True)
     self.assertContains(r, formrow4,  html=True)
     self.assertContains(r, formrow5a, html=True)
     self.assertContains(r, formrow5b, html=True)
     self.assertContains(r, formrow6a, html=True)
     self.assertContains(r, formrow6b, html=True)
     self.assertContains(r, formrow7,  html=True)
     return
Ejemplo n.º 43
0
    def test_Repeat_Ref_Multifield_edit(self):
        self._create_image_multifield_repeat_ref_and_view()

        # Render view of multifield reference
        u = entitydata_edit_url("edit",
                                "testcoll",
                                "ref_type",
                                "Test_rpt_entity",
                                view_id="Test_rptimg_view")
        r = self.client.get(u)
        self.assertEqual(r.status_code, 200)
        self.assertEqual(r.reason_phrase, "OK")

        # Check render context
        self.assertEqual(r.context['coll_id'], "testcoll")
        self.assertEqual(r.context['type_id'], "ref_type")
        self.assertEqual(r.context['entity_id'], "Test_rpt_entity")
        self.assertEqual(r.context['action'], "edit")
        # Fields
        self.assertEqual(len(r.context['fields']), 2)
        # 1st field - Id
        f0 = context_view_field(r.context, 0, 0)
        self.assertEqual(f0['field_id'], "Entity_id")
        self.assertEqual(f0['field_name'], "entity_id")
        self.assertEqual(f0['field_label'], "Id")
        self.assertEqual(f0['field_value'], "Test_rpt_entity")
        # 2nd field - multifield group
        f1 = context_view_field(r.context, 1, 0)
        self.assertEqual(f1['field_id'], "Test_rptref_field")
        self.assertEqual(f1['field_name'], "Test_rptref_field")
        self.assertEqual(f1['field_label'], "Repeat image reference")
        self.assertEqual(f1['field_render_type'], "Group_Seq_Row")
        self.assertEqual(f1['field_value_mode'], "Value_direct")
        self.assertEqual(f1['field_value_type'], "annal:Field_group")
        self.assertEqual(f1['field_group_ref'], "Test_rptref_group")
        self.assertEqual(f1['group_label'], "Repeat image reference")
        self.assertEqual(f1['field_property_uri'], "test:rpt_image")
        self.assertEqual(f1['field_value'][0],
                         {'test:ref_image': 'Test_img_entity'})

        # Test rendered result
        field_vals = default_fields(
            coll_id="testcoll",
            type_id="ref_type",
            entity_id="Test_rpt_entity",
            view_id="Test_rptimg_view",
            basepath=TestBasePath,
            tooltip1=f0['field_help'],
        )
        formrow1 = """
            <div class="small-12 medium-6 columns" title="%(tooltip1)s">
              <div class="row view-value-row">
                <div class="%(label_classes)s">
                  <span>Id</span>
                </div>
                <div class="%(input_classes)s">
                    <input type="text" size="64" name="entity_id"
                           placeholder="(entity id)"
                           value="%(entity_id)s"/>
                </div>
              </div>
            </div>
            """ % field_vals(width=6)
        formrow2a = """
            <div class="group-label small-12 medium-2 columns">
              <span>Repeat image reference</span>
            </div>
            """
        formrow2b = """
            <div class="small-12 medium-10 columns hide-for-small-only">
              <div class="row">
                <div class="small-1 columns">
                  &nbsp;
                </div>
                <div class="small-11 columns">
                  <div class="edit-grouprow col-head row">
                    <div class="%(col_head_classes)s">
                      <span>Image reference</span>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            """ % field_vals(width=6)

        tgt_field_vals = default_fields(
            coll_id="testcoll",
            type_id="img_type",
            entity_id="Test_img_entity",
            view_id="Test_rptimg_view",
            repeat_id="Test_rptref_field",
            field_id="Test_refimg_field",
            tooltip3b=f1._field_description['group_field_descs'][0]
            ['field_help'])
        formrow3a = """
            <div class="small-12 medium-2 columns hide-for-small-only">
              &nbsp;
            </div>
            """ % tgt_field_vals(width=6)
        formrow3b = ("""
            <div class="small-12 medium-10 columns">
              <div class="tbody row select-row">
                <div class="small-1 columns checkbox-in-edit-padding">
                  <input type="checkbox" class="select-box right"
                         name="%(repeat_id)s__select_fields"
                         value="0" />
                </div>
                <div class="small-11 columns">
                  <div class="edit-grouprow row">
                    <div class="%(col_item_classes)s" title="%(tooltip3b)s">
                      <div class="row show-for-small-only">
                        <div class="view-label small-12 columns">
                          <span>Image reference</span>
                        </div>
                      </div>
                      <div class="row view-value-col">
                        <div class="view-value small-12 columns">
                        """ + render_select_options(
            "%(repeat_id)s__0__%(field_id)s", "Image reference", [
                FieldChoice("%(type_id)s/%(entity_id)s",
                            label="Label %(entity_id)s")
            ], "%(type_id)s/%(entity_id)s") + """
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            """) % tgt_field_vals(width=6)
        # log.info(r.content)
        self.assertContains(r, formrow1, html=True)
        self.assertContains(r, formrow2a, html=True)
        self.assertContains(r, formrow2b, html=True)
        self.assertContains(r, formrow3a, html=True)
        self.assertContains(r, formrow3b, html=True)
        return
Ejemplo n.º 44
0
    def test_reference_uploaded_image(self):
        self.test_upload_image_resource()

        # Display resource with image reference
        u = entitydata_edit_url("view",
                                "testcoll",
                                "testreftype",
                                entity_id="test1",
                                view_id="testimgrefview")
        r = self.client.get(u)
        self.assertEqual(r.status_code, 200)
        self.assertEqual(r.reason_phrase, "OK")
        # Check display 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, "test_ref_entity test1 label")
        f2 = context_view_field(r.context, 2, 0)
        self.assertEqual(f2.field_id, "Entity_comment")
        self.assertEqual(f2.field_value, "test_ref_entity test1 comment")
        f3 = context_view_field(r.context, 3, 0)
        basepath = TestBasePath + "/c/testcoll/d/testupltype/"
        # print "\n*****\n"+repr(context_view_field(r.context, i, 0).target_value)+"\n*****\n"
        self.assertEqual(f3.field_id, "Test_image_ref")
        self.assertEqual(f3.field_value, "testupltype/test1")
        self.assertEqual(f3.field_value_link, basepath + "test1/")
        self.assertEqual(f3.target_value['upload_name'], "upl_field")
        self.assertEqual(f3.target_value['resource_name'], "upl_field.jpg")
        self.assertEqual(f3.target_value['resource_type'], "image/jpeg")
        self.assertEqual(f3.target_value['uploaded_file'], "test-image.jpg")
        self.assertEqual(f3.target_value['uploaded_size'], 1547926)
        self.assertEqual(f3.target_value_link,
                         basepath + "test1/upl_field.jpg")
        # Check for rendered image link
        # log.info(r.content)
        field_details = ({
            "basepath": TestBasePath,
            "coll_id": "testcoll",
            "type_id": "testupltype",
            "entity_id": "test1",
            "field_id": "upl_field",
            "tooltip": ""
        })
        img_element = """
            <div class="small-12 columns" %(tooltip)s>
              <div class="row view-value-row">
                <div class="view-label small-12 medium-2 columns">
                  <span>test_image_ref_field label</span>
                </div>
                <div class="view-value small-12 medium-10 columns">
                  <a href="%(basepath)s/c/%(coll_id)s/d/%(type_id)s/%(entity_id)s/%(field_id)s.jpg" target="_blank">
                    <img src="%(basepath)s/c/%(coll_id)s/d/%(type_id)s/%(entity_id)s/%(field_id)s.jpg"
                         alt="Image at '%(basepath)s/c/%(coll_id)s/d/%(type_id)s/%(entity_id)s/%(field_id)s.jpg'" />
                  </a>
                </div>
              </div>
            </div>
            """ % field_details
        self.assertContains(r, img_element, html=True)
        return
Ejemplo n.º 45
0
    def test_Ref_Multifield_edit(self):
        self._create_image_multifield_ref_and_view()

        # Render view of multifield reference
        u = entitydata_edit_url("edit",
                                "testcoll",
                                "ref_type",
                                "Test_ref_entity",
                                view_id="Test_refimg_view")
        r = self.client.get(u)
        self.assertEqual(r.status_code, 200)
        self.assertEqual(r.reason_phrase, "OK")

        # Check render context
        self.assertEqual(r.context['coll_id'], "testcoll")
        self.assertEqual(r.context['type_id'], "ref_type")
        self.assertEqual(r.context['entity_id'], "Test_ref_entity")
        self.assertEqual(r.context['action'], "edit")
        # Fields
        self.assertEqual(len(r.context['fields']), 1)
        # 1st field - Id
        f0 = context_view_field(r.context, 0, 0)
        self.assertEqual(f0['field_id'], "Entity_id")
        self.assertEqual(f0['field_name'], "entity_id")
        self.assertEqual(f0['field_label'], "Id")
        self.assertEqual(f0['field_value'], "Test_ref_entity")
        # 2nd field - multifield group
        f1 = context_view_field(r.context, 0, 1)
        self.assertEqual(f1['field_id'], "Test_refimg_field")
        self.assertEqual(f1['field_name'], "Test_refimg_field")
        self.assertEqual(f1['field_label'], "Image reference")
        self.assertEqual(f1['field_render_type'], "RefMultifield")
        self.assertEqual(f1['field_value_mode'], "Value_entity")
        self.assertEqual(f1['field_value_type'], "annal:Field_group")
        self.assertEqual(f1['field_group_ref'], "Test_refimg_group")
        self.assertEqual(f1['group_label'], "Image reference")
        self.assertEqual(f1['field_property_uri'], "test:ref_image")
        self.assertEqual(f1['field_value'], "Test_img_entity")

        # Test rendered result
        field_vals = default_fields(
            coll_id="testcoll",
            type_id="ref_type",
            entity_id="Test_ref_entity",
            view_id="Test_refimg_view",
            basepath=TestBasePath,
            tooltip1=f0['field_help'],
        )
        formrow1 = """
            <div class="small-12 medium-6 columns" title="%(tooltip1)s">
              <div class="row view-value-row">
                <div class="%(label_classes)s">
                  <span>Id</span>
                </div>
                <div class="%(input_classes)s">
                  <input type="text" size="64" name="entity_id"
                         placeholder="(entity id)"
                         value="%(entity_id)s"/>
                </div>
              </div>
            </div>
            """ % field_vals(width=6)

        tgt_field_vals = default_fields(
            coll_id="testcoll",
            type_id="img_type",
            entity_id="Test_img_entity",
            view_id="Test_refimg_view",
            field_id="Test_refimg_field",
            basepath=TestBasePath,
            tooltip2=f1['field_help'],
        )
        formrow2 = ("""
            <div class="small-12 medium-6 columns" title="%(tooltip2)s">
              <div class="row view-value-row">
                <div class="%(label_classes)s">
                  <span>Image reference</span>
                </div>
                <div class="%(input_classes)s">
                """ +
                    render_select_options("%(field_id)s", "Image reference", [
                        FieldChoice("%(type_id)s/%(entity_id)s",
                                    label="Label %(entity_id)s")
                    ], "%(type_id)s/%(entity_id)s") + """
                </div>
              </div>
            </div>
            """) % tgt_field_vals(width=6)
        # log.info(r.content)
        self.assertContains(r, formrow1, html=True)
        self.assertContains(r, formrow2, html=True)
        return
Ejemplo n.º 46
0
    def test_Repeat_Ref_Multifield_view(self):
        self._create_image_multifield_repeat_ref_and_view()

        # Render view of multifield reference
        u = entitydata_edit_url("view",
                                "testcoll",
                                "ref_type",
                                "Test_rpt_entity",
                                view_id="Test_rptimg_view")
        r = self.client.get(u)
        self.assertEqual(r.status_code, 200)
        self.assertEqual(r.reason_phrase, "OK")

        # Check render context
        self.assertEqual(r.context['coll_id'], "testcoll")
        self.assertEqual(r.context['type_id'], "ref_type")
        self.assertEqual(r.context['entity_id'], "Test_rpt_entity")
        self.assertEqual(r.context['action'], "view")
        # Fields
        self.assertEqual(len(r.context['fields']), 2)
        # 1st field - Id
        f0 = context_view_field(r.context, 0, 0)
        self.assertEqual(f0['field_id'], "Entity_id")
        self.assertEqual(f0['field_name'], "entity_id")
        self.assertEqual(f0['field_label'], "Id")
        self.assertEqual(f0['field_value'], "Test_rpt_entity")
        # 2nd field - multifield group
        f1 = context_view_field(r.context, 1, 0)
        self.assertEqual(f1['field_id'], "Test_rptref_field")
        self.assertEqual(f1['field_name'], "Test_rptref_field")
        self.assertEqual(f1['field_label'], "Repeat image reference")
        self.assertEqual(f1['field_render_type'], "Group_Seq_Row")
        self.assertEqual(f1['field_value_mode'], "Value_direct")
        self.assertEqual(f1['field_value_type'], "annal:Field_group")
        self.assertEqual(f1['field_group_ref'], "Test_rptref_group")
        self.assertEqual(f1['group_label'], "Repeat image reference")
        self.assertEqual(f1['field_property_uri'], "test:rpt_image")
        self.assertEqual(f1['field_value'][0],
                         {'test:ref_image': 'Test_img_entity'})

        # Test rendered result
        field_vals = default_fields(coll_id="testcoll",
                                    type_id="ref_type",
                                    entity_id="Test_rpt_entity",
                                    view_id="Test_rptimg_view",
                                    basepath=TestBasePath,
                                    cont_uri_param="")
        cont_uri_param = (
            "?continuation_url=%(basepath)s/c/%(coll_id)s/v/%(view_id)s/%(type_id)s/%(entity_id)s/!view"
            % field_vals())

        field_vals = default_fields(
            coll_id="testcoll",
            type_id="ref_type",
            entity_id="Test_rpt_entity",
            view_id="Test_rptimg_view",
            basepath=TestBasePath,
            cont_uri_param=cont_uri_param,
        )
        formrow1 = """
            <div class="small-12 medium-6 columns">
              <div class="row view-value-row">
                <div class="%(label_classes)s">
                  <span>Id</span>
                </div>
                <div class="%(input_classes)s">
                  <a href="%(basepath)s/c/%(coll_id)s/d/%(type_id)s/%(entity_id)s/%(cont_uri_param)s">%(entity_id)s</a>
                </div>
              </div>
            </div>
            """ % field_vals(width=6)
        formrow2a = """
            <div class="group-label small-12 medium-2 columns">
              <span>Repeat image reference</span>
            </div>
            """
        # Note two grou wrappers here: one for repeat and one for multifield ref...
        formrow2b = """
            <div class="small-12 medium-10 columns hide-for-small-only">
              <div class="row">
                <div class="small-12 columns">
                  <div class="view-grouprow col-head row">
                    <div class="view-label col-head small-12 medium-6 columns">
                      <div class="view-grouprow col-head row">
                        <div class="%(col_head_classes)s">
                          <span>View comment field</span>
                        </div>
                        <div class="%(col_head_classes)s">
                          <span>View image field</span>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            """ % field_vals(width=6)

        tgt_field_vals = default_fields(
            coll_id="testcoll",
            type_id="img_type",
            entity_id="Test_img_entity",
            view_id="Test_rptimg_view",
            field_id="image_field",
            basepath=TestBasePath,
            ref_image=
            "%s/c/testcoll/d/img_type/Test_img_entity/image_field.jpeg" %
            (TestBasePath, ),
            cont_uri_param=cont_uri_param,
        )
        formrow3a = """
            <div class="small-12 medium-2 columns">
              &nbsp;
            </div>
            """ % tgt_field_vals(width=6)
        formrow3b = ("""
            <div class="small-12 medium-10 columns">
              <div class="row select-row">
                <div class="small-12 columns">
                  <div class="view-grouprow row">
                    <div class="small-12 medium-6 columns">
                      <div class="row show-for-small-only">
                        <div class="view-label small-12 columns">
                          <span>Image reference</span>
                        </div>
                      </div>
                      <div class="row view-value-col">
                        <div class="view-value small-12 columns">
                          <div class="view-grouprow row">
                            <div class="%(col_item_classes)s">
                              <div class="row show-for-small-only">
                                <div class="view-label small-12 columns">
                                  <span>View comment field</span>
                                </div>
                              </div>
                              <div class="row view-value-col">
                                <div class="view-value small-12 columns">
                                  <span class="markdown"><p>Description of image</p></span>
                                </div>
                              </div>
                            </div>
                            <div class="%(col_item_classes)s">
                              <div class="row show-for-small-only">
                                <div class="view-label small-12 columns">
                                  <span>View image field</span>
                                </div>
                              </div>
                              <div class="row view-value-col">
                                <div class="view-value small-12 columns">
                                  <a href="%(ref_image)s" target="_blank">
                                    <img src="%(ref_image)s" alt="Image at '%(ref_image)s'" />
                                  </a>
                                </div>
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            """) % tgt_field_vals(width=6)
        # log.info(r.content)
        self.assertContains(r, formrow1, html=True)
        self.assertContains(r, formrow2a, html=True)
        self.assertContains(r, formrow2b, html=True)
        self.assertContains(r, formrow3a, html=True)
        self.assertContains(r, formrow3b, html=True)
        return
Ejemplo n.º 47
0
 def test_get_edit(self):
     u = entitydata_edit_url("edit",
                             "testcoll",
                             "testtype",
                             entity_id="entity1")
     r = self.client.get(u + "?continuation_url=/xyzzy/")
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     # log.info(r.content)
     self.assertContains(
         r,
         "<title>Entity testcoll/testtype/entity1 - Default record view - Collection testcoll</title>"
     )
     # Test context
     view_url = entity_url(coll_id="testcoll",
                           type_id="testtype",
                           entity_id="entity1")
     self.assertEqual(r.context['coll_id'], "testcoll")
     self.assertEqual(r.context['type_id'], "testtype")
     self.assertEqual(r.context['entity_id'], "entity1")
     self.assertEqual(r.context['orig_id'], "entity1")
     self.assertEqual(r.context['action'], "edit")
     self.assertEqual(r.context['continuation_url'], "/xyzzy/")
     # Fields
     self.assertEqual(len(r.context['fields']), 3)
     f0 = context_view_field(r.context, 0, 0)
     f1 = context_view_field(r.context, 0, 1)
     f2 = context_view_field(r.context, 1, 0)
     f3 = context_view_field(r.context, 2, 0)
     # 1st field
     self.assertEqual(f0['field_id'], 'Entity_id')
     self.assertEqual(f0['field_name'], 'entity_id')
     self.assertEqual(f0['field_label'], 'Id')
     self.assertEqual(f0['field_placeholder'], "(entity id)")
     self.assertEqual(f0['field_property_uri'], "annal:id")
     self.assertEqual(f0['field_render_type'], "EntityId")
     self.assertEqual(f0['field_value_mode'], "Value_direct")
     self.assertEqual(f0['field_value_type'], "annal:Slug")
     self.assertEqual(f0['field_value'], "entity1")
     self.assertEqual(f0['options'], self.no_options)
     # 2nd field
     self.assertEqual(f1['field_id'], 'Entity_type')
     self.assertEqual(f1['field_name'], 'entity_type')
     self.assertEqual(f1['field_label'], 'Type')
     self.assertEqual(f1['field_placeholder'], "(type id)")
     self.assertEqual(f1['field_property_uri'], "annal:type_id")
     self.assertEqual(f1['field_render_type'], "EntityTypeId")
     self.assertEqual(f1['field_value_mode'], "Value_direct")
     self.assertEqual(f1['field_value_type'], "annal:Slug")
     self.assertEqual(f1['field_value'], "testtype")
     self.assertEqual(set(f1['options']), set(self.type_ids))
     # 3rd field
     field_label_value = ("Entity testcoll/testtype/entity1")
     self.assertEqual(f2['field_id'], 'Entity_label')
     self.assertEqual(f2['field_name'], 'Entity_label')
     self.assertEqual(f2['field_label'], 'Label')
     self.assertEqual(f2['field_placeholder'], "(label)")
     self.assertEqual(f2['field_property_uri'], "rdfs:label")
     self.assertEqual(f2['field_render_type'], "Text")
     self.assertEqual(f2['field_value_mode'], "Value_direct")
     self.assertEqual(f2['field_value_type'], "annal:Text")
     self.assertEqual(f2['field_value'], field_label_value)
     self.assertEqual(f2['options'], self.no_options)
     # 4th field
     field_comment_value = (
         "Entity coll testcoll, type testtype, entity entity1")
     self.assertEqual(f3['field_id'], 'Entity_comment')
     self.assertEqual(f3['field_name'], 'Entity_comment')
     self.assertEqual(f3['field_label'], 'Comment')
     self.assertEqual(f3['field_placeholder'], "(description)")
     self.assertEqual(f3['field_property_uri'], "rdfs:comment")
     self.assertEqual(f3['field_render_type'], "Markdown")
     self.assertEqual(f3['field_value_mode'], "Value_direct")
     self.assertEqual(f3['field_value_type'], "annal:Richtext")
     self.assertEqual(f3['field_value'], field_comment_value)
     self.assertEqual(f3['options'], self.no_options)
     return
Ejemplo n.º 48
0
    def test_Ref_Multifield_view(self):
        self._create_image_multifield_ref_and_view()

        # Render view of multifield reference
        u = entitydata_edit_url("view",
                                "testcoll",
                                "ref_type",
                                "Test_ref_entity",
                                view_id="Test_refimg_view")
        r = self.client.get(u)
        self.assertEqual(r.status_code, 200)
        self.assertEqual(r.reason_phrase, "OK")

        # Check render context
        self.assertEqual(r.context['coll_id'], "testcoll")
        self.assertEqual(r.context['type_id'], "ref_type")
        self.assertEqual(r.context['entity_id'], "Test_ref_entity")
        self.assertEqual(r.context['action'], "view")
        # Fields
        # print "@@ field map:\bn"+context_field_map(r.context)
        self.assertEqual(len(r.context['fields']), 1)
        # 1st field - Id
        f0 = context_view_field(r.context, 0, 0)
        self.assertEqual(f0['field_id'], "Entity_id")
        self.assertEqual(f0['field_name'], "entity_id")
        self.assertEqual(f0['field_label'], "Id")
        self.assertEqual(f0['field_value'], "Test_ref_entity")
        # 2nd field - multifield group
        f1 = context_view_field(r.context, 0, 1)
        self.assertEqual(f1['field_id'], "Test_refimg_field")
        self.assertEqual(f1['field_name'], "Test_refimg_field")
        self.assertEqual(f1['field_label'], "Image reference")
        self.assertEqual(f1['field_render_type'], "RefMultifield")
        self.assertEqual(f1['field_value_mode'], "Value_entity")
        self.assertEqual(f1['field_value_type'], "annal:Field_group")
        self.assertEqual(f1['field_group_ref'], "Test_refimg_group")
        self.assertEqual(f1['group_label'], "Image reference")
        self.assertEqual(f1['field_property_uri'], "test:ref_image")
        self.assertEqual(f1['field_value'], "Test_img_entity")

        # Test rendered result
        field_vals = default_fields(
            coll_id="testcoll",
            type_id="ref_type",
            entity_id="Test_ref_entity",
            view_id="Test_refimg_view",
            basepath=TestBasePath,
            cont_uri_param="",
        )
        cont_uri_param = (
            "?continuation_url=%(basepath)s/c/%(coll_id)s/v/%(view_id)s/%(type_id)s/%(entity_id)s/!view"
            % field_vals())

        field_vals = default_fields(
            coll_id="testcoll",
            type_id="ref_type",
            entity_id="Test_ref_entity",
            view_id="Test_refimg_view",
            basepath=TestBasePath,
            cont_uri_param=cont_uri_param,
            # tooltip1=r.context['fields'][0]['field_help'],
        )
        formrow1 = """
            <div class="small-12 medium-6 columns">
              <div class="row view-value-row">
                <div class="%(label_classes)s">
                  <span>Id</span>
                </div>
                <div class="%(input_classes)s">
                  <a href="%(basepath)s/c/%(coll_id)s/d/%(type_id)s/%(entity_id)s/%(cont_uri_param)s">%(entity_id)s</a>
                </div>
              </div>
            </div>
            """ % field_vals(width=6)

        tgt_field_vals = default_fields(
            coll_id="testcoll",
            type_id="img_type",
            entity_id="Test_img_entity",
            view_id="Test_refimg_view",
            field_id="image_field",
            basepath=TestBasePath,
            ref_image=
            "%s/c/testcoll/d/img_type/Test_img_entity/image_field.jpeg" %
            (TestBasePath, ),
            cont_uri_param=cont_uri_param,
            tooltip2a="",
            tooltip2b="",
        )
        formrow2a = """
            <div class="small-12 medium-6 columns" %(tooltip2a)s>
              <div class="row view-value-row">
                <div class="%(label_classes)s">
                  <span>View comment field</span>
                </div>
                <div class="%(input_classes)s">
                  <span class="markdown"><p>Description of image</p></span>
                </div>
              </div>
            </div>
            """ % tgt_field_vals(width=6)
        formrow2b = """
            <div class="small-12 medium-6 columns" %(tooltip2b)s>
              <div class="row view-value-row">
                <div class="%(label_classes)s">
                  <span>View image field</span>
                </div>
                <div class="%(input_classes)s">
                  <a href="%(ref_image)s" target="_blank">
                    <img src="%(ref_image)s"
                         alt="Image at '%(ref_image)s'" />
                  </a>
                </div>
              </div>
            </div>
            """ % tgt_field_vals(width=6)
        # log.info(r.content)
        self.assertContains(r, formrow1, html=True)
        self.assertContains(r, formrow2a, html=True)
        self.assertContains(r, formrow2b, html=True)
        return
Ejemplo n.º 49
0
 def test_get_form_rendering(self):
     u = entitydata_edit_url("new", "testcoll", layout.TYPE_TYPEID, view_id="Type_view")
     r = self.client.get(u+"?continuation_url=/xyzzy/")
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     # log.info(r.content)   #@@
     field_vals = default_fields(
         coll_id="testcoll", type_id=layout.TYPE_TYPEID, entity_id="00000001",
         default_label="(New type initial values - label)",
         default_comment=context_view_field(r.context, 2, 0)['field_value'],
         default_label_esc="(New type initial values - label)",
         default_comment_esc=context_view_field(r.context, 2, 0)['field_value'],
         tooltip1=context_view_field(r.context, 0, 0)['field_help'],
         tooltip2=context_view_field(r.context, 1, 0)['field_help'],
         tooltip3=context_view_field(r.context, 2, 0)['field_help'],
         tooltip4=context_view_field(r.context, 3, 0)['field_help'],
         button_save_tip="Save values and return to previous view.",
         button_view_tip="Save values and switch to entity view.",
         button_cancel_tip="Discard unsaved changes and return to previous view.",
         button_view_list_tip=
             "Define initial view and list definitions for the current type.  "+
             "(View and list type information and URI are taken from the current type; "+
             "other fields are taken from the corresponding &#39;_initial_values&#39; record, "+
             "and may be extended or modified later.)"
         )
     formrow1 = """
         <div class="small-12 medium-6 columns" title="%(tooltip1)s">
           <div class="row view-value-row">
             <div class="%(label_classes)s">
               <span>Type Id</span>
             </div>
             <div class="%(input_classes)s">
               <input type="text" size="64" name="entity_id" 
                      placeholder="(type id)" value="00000001"/>
             </div>
           </div>
         </div>
         """%field_vals(width=6)
     formrow2 = """
         <div class="small-12 columns" title="%(tooltip2)s">
           <div class="row view-value-row">
             <div class="%(label_classes)s">
               <span>Label</span>
             </div>
             <div class="%(input_classes)s">
               <input type="text" size="64" name="Type_label" 
                      placeholder="(label)" 
                      value="%(default_label_esc)s" />
             </div>
           </div>
         </div>
         """%field_vals(width=12)
     formrow3 = """
         <div class="small-12 columns" title="%(tooltip3)s">
           <div class="row view-value-row">
             <div class="%(label_classes)s">
               <span>Comment</span>
             </div>
             <div class="%(input_classes)s">
               <textarea cols="64" rows="6" name="Type_comment" 
                         class="small-rows-4 medium-rows-8"
                         placeholder="(type description)"
                         >
                   %(default_comment_esc)s
               </textarea>
             </div>
           </div>
         </div>
         """%field_vals(width=12)
     formrow4 = """
         <div class="small-12 columns" title="%(tooltip4)s">
           <div class="row view-value-row">
             <div class="%(label_classes)s">
               <span>Type URI</span>
             </div>
             <div class="%(input_classes)s">
               <input type="text" size="64" name="Type_uri" 
                      placeholder="(Type URI)"
                      value=""/>
             </div>
           </div>
         </div>
         """%field_vals(width=12)
     formrow5a = """
         <div class="%(space_classes)s">
           <div class="row">
             <div class="small-12 columns">
               &nbsp;
             </div>
           </div>
         </div>
         """%field_vals(width=2)
     formrow5b = """
         <div class="%(button_wide_classes)s">
           <div class="row">
             <div class="%(button_left_classes)s">
               <input type="submit" name="save"      value="Save"   title="%(button_save_tip)s"/>
               <input type="submit" name="view"      value="View"   title="%(button_view_tip)s"/>
               <input type="submit" name="cancel"    value="Cancel" title="%(button_cancel_tip)s"/>
             </div>
           </div>
         </div>
         """%field_vals(width=4)
     formrow5c = """
         <div class="%(button_wide_classes)s">
           <div class="row">
             <div class="%(button_r_med_up_classes)s">
               <input type="submit" name="Define_view_list" value="Define view+list"
                      title="%(button_view_list_tip)s" />
               <input type="submit" name="customize" value="Customize"
                      title="Open 'Customize' view for collection 'testcoll'." />
             </div>
           </div>
         </div>
         """%field_vals(width=6)
     # log.info(r.content)   #@@
     self.assertContains(r, formrow1, html=True)
     self.assertContains(r, formrow2, html=True)
     self.assertContains(r, formrow3, html=True)
     self.assertContains(r, formrow4, html=True)
     self.assertContains(r, formrow5a, html=True)
     self.assertContains(r, formrow5b, html=True)
     self.assertContains(r, formrow5c, html=True)
     return
Ejemplo n.º 50
0
 def test_get_form_rendering(self):
     u = entitydata_edit_url("new", "testcoll", "testtype")
     r = self.client.get(u + "?continuation_url=/xyzzy/")
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     self.assertContains(r, "Collection testcoll")
     field_vals = default_fields(
         coll_id="testcoll",
         type_id="testtype",
         entity_id="00000001",
         tooltip1=context_view_field(r.context, 0, 0)['field_help'],
         tooltip2=context_view_field(r.context, 0, 1)['field_help'],
         tooltip3=context_view_field(r.context, 1, 0)['field_help'],
         tooltip4=context_view_field(r.context, 2, 0)['field_help'],
     )
     formrow1 = """
           <div class="small-12 medium-6 columns" title="%(tooltip1)s">
             <div class="row view-value-row">
               <div class="%(label_classes)s">
                   <span>Id</span>
               </div>
               <div class="%(input_classes)s">
                 <!-- cf http://stackoverflow.com/questions/1480588/input-size-vs-width -->
                 <input type="text" size="64" name="entity_id" 
                        placeholder="(entity id)" value="00000001">
               </div>
             </div>
           </div>
         """ % field_vals(width=6)
     formrow2 = ("""
           <div class="small-12 medium-6 columns" title="%(tooltip2)s">
             <div class="row view-value-row">
               <div class="%(label_classes)s">
                   <span>Type</span>
               </div>
               <div class="%(input_classes)s">
               """ + render_choice_options("entity_type", self.type_ids,
                                           "_type/testtype") + """
               </div>
             </div>
           </div>
         """) % field_vals(width=6)
     formrow3 = """
           <!-- editable text field -->
           <div class="small-12 columns" title="%(tooltip3)s">
             <div class="row view-value-row">
               <div class="%(label_classes)s">
                   <span>Label</span>
               </div>
               <div class="%(input_classes)s">
                 <input type="text" size="64" name="Entity_label" 
                        placeholder="(label)" 
                        value="%(default_label_esc)s">
               </div>
             </div>
           </div>
         """ % field_vals(width=12)
     formrow4 = """
           <div class="small-12 columns" title="%(tooltip4)s">
             <div class="row view-value-row">
               <div class="%(label_classes)s">
                   <span>Comment</span>
               </div>
               <div class="%(input_classes)s">
                 <textarea cols="64" rows="6" name="Entity_comment" 
                           class="small-rows-4 medium-rows-8"
                           placeholder="(description)">
                     %(default_comment_esc)s
                 </textarea>
               </div>
             </div>
           </div>
         """ % field_vals(width=12)
     # log.info("******\n"+r.content)
     self.assertContains(r, formrow1, html=True)
     self.assertContains(r, formrow2, html=True)
     self.assertContains(r, formrow3, html=True)
     self.assertContains(r, formrow4, html=True)
     return
Ejemplo n.º 51
0
 def test_RenderRepeatGroup_no_labels(self):
     # Create view with repeat-field and repeat-group
     testview        = self._create_testview()
     testrepeatfield = self._create_testrepeatfield(
         label_add=None,
         label_delete="")
     testrepeatgroup = self._create_testrepeatgroup()
     # Render view
     u = entitydata_edit_url("new", "testcoll", "testtype", view_id="testview")
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     # Test rendered values
     self.assertEqual(r.context['coll_id'],          "testcoll")
     self.assertEqual(r.context['type_id'],          "testtype")
     self.assertEqual(r.context['entity_id'],        "00000001")
     self.assertEqual(r.context['action'],           "new")
     # Fields
     self.assertEqual(len(r.context['fields']), 2)
     # 1st field - Id
     i = 0
     self.assertEqual(context_view_field(r.context, i, 0)['field_id'], 'Entity_id')
     self.assertEqual(context_view_field(r.context, i, 0)['field_name'], 'entity_id')
     self.assertEqual(context_view_field(r.context, i, 0)['field_label'], 'Id')
     self.assertEqual(context_view_field(r.context, i, 0)['field_value'], "00000001")
     # 2nd field - repeat group
     i = 1
     self.assertEqual(context_view_field(r.context, i, 0)['field_id'],           "testrepeatfield")
     self.assertEqual(context_view_field(r.context, i, 0)['field_name'],         "testrepeatfield")
     self.assertEqual(context_view_field(r.context, i, 0)['field_label'],        "Test repeat field label")
     self.assertEqual(context_view_field(r.context, i, 0)['field_render_type'],  "Group_Seq_Row")
     self.assertEqual(context_view_field(r.context, i, 0)['field_value_mode'],   "Value_direct")
     self.assertEqual(context_view_field(r.context, i, 0)['field_value_type'],  "annal:Field_group")
     self.assertEqual(context_view_field(r.context, i, 0)['field_group_ref'],    "testrepeatgroup")
     self.assertEqual(context_view_field(r.context, i, 0)['group_label'],        "Test repeat field label")
     self.assertEqual(context_view_field(r.context, i, 0)['group_add_label'],    "Add testrepeatfield")
     self.assertEqual(context_view_field(r.context, i, 0)['group_delete_label'], "Remove testrepeatfield")
     self.assertEqual(context_view_field(r.context, i, 0)['field_property_uri'], "test:repeat_fields")
     self.assertEqual(len(context_view_field(r.context, i, 0)['field_value']), 0)
     self.assertEqual(context_view_field(r.context, i, 0)['field_value'], "") #@@ Really?
     return
Ejemplo n.º 52
0
 def test_get_fields_list_search(self):
     u = entitydata_list_type_url("testcoll",
                                  layout.FIELD_TYPEID,
                                  list_id="Field_list",
                                  scope="all",
                                  continuation_url="/xyzzy/",
                                  query_params={"search": "Bib_"})
     r = self.client.get(u)
     self.assertEqual(r.status_code, 200)
     self.assertEqual(r.reason_phrase, "OK")
     # self.assertContains(r, site_title("<title>%s</title>"))
     # self.assertContains(r, "<h3>List 'Field_list' of entities in collection 'testcoll'</h3>", html=True)
     # Test context
     self.assertEqual(r.context['coll_id'], "testcoll")
     self.assertEqual(r.context['type_id'], layout.FIELD_TYPEID)
     self.assertEqual(r.context['continuation_url'], "/xyzzy/")
     self.assertEqual(r.context['search_for'], "Bib_")
     list_choices = r.context['list_choices']
     self.assertEqual(set(list_choices.options), set(self.list_ids))
     self.assertEqual(list_choices['field_value'], "Field_list")
     # Fields
     head_fields = context_list_head_fields(r.context)
     self.assertEqual(len(head_fields), 1)  # One row of 4 cols..
     self.assertEqual(len(head_fields[0].description['row_field_descs']), 4)
     f0 = context_view_field(r.context, 0, 0)
     f1 = context_view_field(r.context, 0, 1)
     f2 = context_view_field(r.context, 0, 2)
     f3 = context_view_field(r.context, 0, 3)
     self.assertEqual(f0.field_id, 'Entity_id')
     self.assertEqual(f1.field_id, 'Field_render_type')
     self.assertEqual(f2.field_id, 'Field_value_type')
     self.assertEqual(f3.field_id, 'Entity_label')
     # Entities
     entities = context_list_entities(r.context)
     self.assertEqual(len(entities), 36)
     field_entities = ({
         ('Bib_address', "Text", "annal:Text", "Address"),
         ('Bib_authors', "Group_Seq", "bib:Authors", "Author(s)"),
         ('Bib_booktitle', "Text", "annal:Text", "Book title"),
         ('Bib_chapter', "Text", "annal:Text", "Chapter"),
         ('Bib_edition', "Text", "annal:Text", "Edition"),
         ('Bib_editors', "Group_Seq", "bib:Editors", "Editor(s)"),
         ('Bib_eprint', "Text", "annal:Text", "Bib_eprint"),
         ('Bib_howpublished', "Text", "annal:Text", "How published"),
         ('Bib_institution', "Text", "annal:Text", "Institution"),
         ('Bib_journal', "Group_Seq", "bib:Journal", "Journal"),
         ('Bib_month', "Text", "annal:Text", "Month"),
         ('Bib_number', "Text", "annal:Text", "Number"),
         ('Bib_organization', "Text", "annal:Text", "Organization"),
         ('Bib_pages', "Text", "annal:Text", "Pages"),
         ('Bib_publisher', "Text", "annal:Text", "Publisher"),
         ('Bib_school', "Text", "annal:Text", "School"),
         ('Bib_title', "Text", "annal:Text", "Title"),
         ('Bib_type', "Enum", "annal:EntityRef", "Type"),
         ('Bib_url', "Text", "annal:Text", "URL"),
         ('Bib_volume', "Text", "annal:Text", "Volume"),
         ('Bib_year', "Text", "annal:Text", "Year")
     })
     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]
                     head_field = head_fields[0].description[
                         'row_field_descs'][fid]
                     for fkey in ('field_id', 'field_name', 'field_label',
                                  'field_property_uri', 'field_render_type',
                                  'field_placement', 'field_value_type'):
                         self.assertEqual(item_field.description[fkey],
                                          head_field[fkey])
                     check_context_list_field_value(self, item_field,
                                                    f[fid])
                 break
         else:
             self.fail("Field %s not found in context" % f[0])
     return
Ejemplo n.º 53
0
 def test_get_default_all_list(self):
     # List all entities in current collection
     u = entitydata_list_all_url("testcoll", list_id="Default_list_all") + "?continuation_url=/xyzzy/"
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     list_label = "List entities with type information" 
     list_title = "List entities with type information - Collection testcoll"
     self.assertContains(r, "<title>%s</title>"%list_title, html=True)
     self.assertContains(r, '<h2 class="page-heading">%s</h2>'%list_label, html=True)
     self.assertMatch(r.content, r'<input.type="hidden".name="continuation_url".+value="/xyzzy/"/>')
     # log.info(r.content) #@@
     cont = uri_params({"continuation_url": u})
     #@@ cont = ""
     tooltip1 = "" # 'title="%s"'%r.context['fields'][0]['field_help']
     tooltip2 = "" # 'title="%s"'%r.context['fields'][1]['field_help']
     tooltip3 = "" # 'title="%s"'%r.context['fields'][2]['field_help']
     rowdata = """
         <div class="tbody row select-row">
           <div class="small-1 columns">
             <input type="checkbox" class="select-box right" name="entity_select"
                    value="testtype/entity1" />
           </div>
           <div class="small-11 columns">
             <div class="row view-listrow">
               <div class="view-value small-3 columns" %(tooltip1)s>
                 <a href="%(base)s/c/testcoll/d/testtype/entity1/%(cont)s">entity1</a>
               </div>
               <div class="view-value small-2 columns" %(tooltip2)s>
                 <a href="/testsite/c/testcoll/d/_type/testtype/%(cont)s">RecordType testcoll/testtype</a>
               </div>
               <div class="view-value small-7 columns" %(tooltip3)s>
                 <span>Entity testcoll/testtype/entity1</span>
               </div>
             </div>
           </div>
         </div>
         """%(
             { 'base':     TestBasePath
             , 'cont':     cont
             , 'tooltip1': tooltip1
             , 'tooltip2': tooltip2
             , 'tooltip3': tooltip3
             }
         )
     # log.info(r.content)
     # log.info(r.context["fields"])
     # log.info(r.context["List_rows"])
     self.assertContains(r, rowdata, html=True)
     # Test context
     self.assertEqual(r.context['title'],            list_title)
     self.assertEqual(r.context['heading'],          list_label)
     self.assertEqual(r.context['coll_id'],          "testcoll")
     self.assertEqual(r.context['type_id'],          "Default_type")
     self.assertEqual(r.context['continuation_url'], "/xyzzy/")
     list_choices = r.context['list_choices']
     self.assertEqual(set(list_choices.options),     set(self.list_ids))
     self.assertEqual(list_choices['field_value'],   "Default_list_all")
     # Unbound field descriptions
     head_fields = context_list_head_fields(r.context)
     self.assertEqual(len(head_fields), 1)       # One row of 3 cols..
     self.assertEqual(len(head_fields[0]['row_field_descs']), 3)
     f0 = context_view_field(r.context, 0, 0)
     f1 = context_view_field(r.context, 0, 1)
     f2 = context_view_field(r.context, 0, 2)
     self.assertEqual(f0['field_id'], 'Entity_id')
     self.assertEqual(f1['field_id'], 'Entity_type')
     self.assertEqual(f2['field_id'], 'Entity_label')
     # Entities and bound fields
     # log.info(entities)  #@@
     entities = context_list_entities(r.context)
     self.assertEqual(len(entities), 6)
     entity_fields = (
         [ {'entity_type_id': "_type",     'annal:id': "testtype",  'rdfs:label': "RecordType testcoll/testtype"}
         , {'entity_type_id': "_type",     'annal:id': "testtype2", 'rdfs:label': "RecordType testcoll/testtype2"}
         , {'entity_type_id': "testtype",  'annal:id': "entity1",   'rdfs:label': "Entity testcoll/testtype/entity1"}
         , {'entity_type_id': "testtype",  'annal:id': "entity2",   'rdfs:label': "Entity testcoll/testtype/entity2"}
         , {'entity_type_id': "testtype",  'annal:id': "entity3",   'rdfs:label': "Entity testcoll/testtype/entity3"}
         , {'entity_type_id': "testtype2", 'annal:id': "entity4",   'rdfs:label': "Entity testcoll/testtype2/entity4"}
         ])
     field_keys = ('annal:id', 'entity_type_id', 'rdfs:label')
     for eid in range(6):
         item_fields = context_list_item_fields(r.context, entities[eid])
         for fid in range(3):
             item_field = item_fields[fid]
             head_field = head_fields[0]['row_field_descs'][fid]
             # Check that row field descriptions match corresponding heading feld descriptions
             for fkey in (
                     'field_id', 'field_name', 'field_label', 
                     'field_property_uri', 'field_render_type',
                     'field_placement', 'field_value_type'):
                 self.assertEqual(item_field[fkey], head_field[fkey])
             # Check row field values
             fkey = field_keys[fid]
             self.assertEqual(item_field['field_value'],    entity_fields[eid][fkey])
             self.assertEqual(item_field['entity_type_id'], entity_fields[eid]['entity_type_id'])
     return
Ejemplo n.º 54
0
 def test_RenderRepeatGroup(self):
     # Create view with repeat-field and repeat-group
     testview        = self._create_testview()
     testrepeatfield = self._create_testrepeatfield(
         label_add="Add group",
         label_delete="Remove group")
     testrepeatgroup = self._create_testrepeatgroup()
     # Render view
     u = entitydata_edit_url("new", "testcoll", "testtype", view_id="testview")
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     # Test rendered values
     self.assertEqual(r.context['coll_id'],          "testcoll")
     self.assertEqual(r.context['type_id'],          "testtype")
     self.assertEqual(r.context['entity_id'],        "00000001")
     self.assertEqual(r.context['action'],           "new")
     # Fields
     self.assertEqual(len(r.context['fields']), 2)
     # 1st field - Id
     f0 = context_view_field(r.context, 0, 0)
     self.assertEqual(f0['field_id'], 'Entity_id')
     self.assertEqual(f0['field_name'], 'entity_id')
     self.assertEqual(f0['field_label'], 'Id')
     self.assertEqual(f0['field_value'], "00000001")
     # 2nd field - repeat group
     f1 = context_view_field(r.context, 1, 0)
     self.assertEqual(f1['field_id'],           "testrepeatfield")
     self.assertEqual(f1['field_name'],         "testrepeatfield")
     self.assertEqual(f1['field_label'],        "Test repeat field label")
     self.assertEqual(f1['field_render_type'],  "Group_Seq_Row")
     self.assertEqual(f1['field_value_mode'],   "Value_direct")
     self.assertEqual(f1['field_value_type'],  "annal:Field_group")
     self.assertEqual(f1['field_group_ref'],    "testrepeatgroup")
     self.assertEqual(f1['group_label'],        "Test repeat field label")
     self.assertEqual(f1['group_add_label'],    "Add group")
     self.assertEqual(f1['group_delete_label'], "Remove group")
     self.assertEqual(f1['field_property_uri'], "test:repeat_fields")
     self.assertEqual(len(f1['field_value']),   0)
     self.assertEqual(f1['field_value'],        "") #@@ Really?
     # Test rendered result
     field_vals = default_fields(
         coll_id="testcoll", type_id="testtype", entity_id="00000001",
         tooltip1=f0['field_help'],
         )
     formrow1 = """
         <div class="small-12 medium-6 columns" title="%(tooltip1)s">
           <div class="row view-value-row">
             <div class="%(label_classes)s">
               <span>Id</span>
             </div>
             <div class="%(input_classes)s">
                 <input type="text" size="64" name="entity_id" 
                        placeholder="(entity id)" value="00000001"/>
             </div>
           </div>
         </div>
         """%field_vals(width=6)
     formrow2a = """
         <div class="%(group_label_classes)s">
           <span>Test repeat field label</span>
         </div>
         """%field_vals(width=12)
     formrow2b = """
         <div class="%(group_row_head_classes)s">
           <div class="row">
             <div class="small-1 columns">
               &nbsp;
             </div>
             <div class="small-11 columns">
               <div class="edit-grouprow col-head row">
                 <div class="%(col_head_classes)s">
                   <span>Comment</span>
                 </div>
               </div>
             </div>
           </div>
         </div>
         """%field_vals(width=12)
     formrow2c = """
         <div class="%(group_buttons_classes)s">
           <div class="row">
             <div class="small-1 columns">
               &nbsp;
             </div>
             <div class="small-11 columns">
               <input type="submit" name="testrepeatfield__remove" value="Remove group" />
               <input type="submit" name="testrepeatfield__add"    value="Add group" />
               <input type="submit" name="testrepeatfield__up"     value="Move &#x2b06;" />
               <input type="submit" name="testrepeatfield__down"   value="Move &#x2b07;" />
             </div>
           </div>
         </div>
         """%field_vals(width=12)
     # log.info(r.content)
     self.assertContains(r, formrow1,  html=True)
     self.assertContains(r, formrow2a, html=True)
     self.assertContains(r, formrow2b, html=True)
     self.assertContains(r, formrow2c, html=True)
     return
Ejemplo n.º 55
0
 def test_get_form_rendering_view_bibentry(self):
     u = entitydata_edit_url(
         "edit", "testcoll", layout.VIEW_TYPEID, entity_id="BibEntry_view", 
         view_id="View_view"
         )
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     field_vals = default_fields(
         coll_id="testcoll", type_id=layout.VIEW_TYPEID, entity_id="BibEntry_view",
         tooltip1=context_view_field(r.context, 0, 0)['field_help'],
         tooltip2=context_view_field(r.context, 1, 0)['field_help'],
         tooltip3=context_view_field(r.context, 2, 0)['field_help'],
         tooltip4=context_view_field(r.context, 4, 0)['field_help'],
         tooltip5=context_view_field(r.context, 5, 0)._field_description['group_field_descs'][0]['field_help']
       )
     formrow1 = """
         <div class="small-12 medium-6 columns" title="%(tooltip1)s">
           <div class="row view-value-row">
             <div class="%(label_classes)s">
               <span>View Id</span>
             </div>
             <div class="%(input_classes)s">
               <input type="text" size="64" name="entity_id" 
                      placeholder="(view id)" value="%(entity_id)s"/>
             </div>
           </div>
         </div>
         """%field_vals(width=6)
     formrow2 = """
         <div class="small-12 columns" title="%(tooltip2)s">
           <div class="row view-value-row">
             <div class="%(label_classes)s">
               <span>Label</span>
             </div>
             <div class="%(input_classes)s">
               <input type="text" size="64" name="View_label"
                      placeholder="(view label)" 
                      value="Bibliographic metadata"/>
             </div>
           </div>
         </div>
         """%field_vals(width=12)
     formrow3 = """
         <div class="small-12 columns" title="%(tooltip3)s">
           <div class="row view-value-row">
             <div class="%(label_classes)s">
               <span>Help</span>
             </div>
             <div class="%(input_classes)s">
               <textarea cols="64" rows="6" name="View_comment" 
                         class="small-rows-4 medium-rows-8"
                         placeholder="(description of record view)">
                   Bibliography entries each contain some subset of standard data entries.
               </textarea>
             </div>
           </div>
         </div>
         """%field_vals(width=12)
     formrow4 = """
         <div class="small-12 medium-6 columns" title="%(tooltip4)s">
           <div class="row view-value-row">
             <div class="%(label_classes)s">
               <span>Editable view?</span>
             </div>
             <div class="%(input_classes)s">
               <input type="checkbox" name="View_edit_view" value="Yes" checked="checked" />
                <span class="value-placeholder">(edit view from edit entity form)</span>
             </div>
           </div>
         </div>
         """%field_vals(width=6)
     formrow5 = ("""
         <div class="small-12 medium-4 columns" title="%(tooltip5)s">
           <div class="row show-for-small-only">
             <div class="view-label small-12 columns">
               <span>Field id</span>
             </div>
           </div>
           <div class="row view-value-col">
             <div class="view-value small-12 columns">
             """+
               render_select_options(
                 "View_fields__0__Field_id", "Field id",
                 no_selection("(field sel)") + get_site_bibentry_fields_sorted(),
                 layout.FIELD_TYPEID+"/Entity_id",
                 placeholder="(field sel)"
                 )+
             """
             </div>
           </div>
         </div>
         """)%field_vals(width=4)
     formrow6 = """
         <div class="small-1 columns checkbox-in-edit-padding">
           <input type="checkbox" class="select-box right" 
                  name="View_fields__select_fields"
                  value="0" />
         </div>        
         """
     # log.info("*** BibEntry_view content: "+r.content)
     # log.info("*** %r"%(r.context['fields'][5]._field_description['field_help']))
     self.assertContains(r, formrow1, html=True)
     self.assertContains(r, formrow2, html=True)
     self.assertContains(r, formrow3, html=True)
     self.assertContains(r, formrow4, html=True)
     self.assertContains(r, formrow5, html=True)
     self.assertContains(r, formrow6, html=True)
     return
Ejemplo n.º 56
0
 def test_get_new_user_form_rendering(self):
     u = entitydata_edit_url("new", "testcoll", layout.USER_TYPEID, view_id="User_view")
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     field_vals = default_fields(
         coll_id="testcoll", type_id=layout.USER_TYPEID, entity_id="00000001",
         tooltip1=context_view_field(r.context, 0, 0)['field_help'],
         tooltip2=context_view_field(r.context, 1, 0)['field_help'],
         tooltip3=context_view_field(r.context, 2, 0)['field_help'],
         tooltip4=context_view_field(r.context, 3, 0)['field_help'],
         tooltip5=context_view_field(r.context, 4, 0)['field_help']
         )
     formrow1 = """
         <div class="small-12 medium-6 columns" title="%(tooltip1)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>User Id</span>
                 </div>
                 <div class="%(input_classes)s">
                     <input type="text" size="64" name="entity_id" 
                                placeholder="(user id)" 
                                value="00000001" />
                 </div>
             </div>
         </div>
         """%field_vals(width=6)
     formrow2 = """
         <div class="small-12 columns" title="%(tooltip2)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>User name</span>
                 </div>
                 <div class="%(input_classes)s">
                     <input type="text" size="64" name="User_name" 
                            placeholder="(user name)"
                            value="" />
                 </div>
             </div>
         </div>
         """%field_vals(width=12)
     formrow3 = """
         <div class="small-12 columns" title="%(tooltip3)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>Description</span>
                 </div>
                 <div class="%(input_classes)s">
                     <textarea cols="64" rows="6" name="User_description" 
                               class="small-rows-4 medium-rows-8"
                               placeholder="(user description)"
                               >
                     </textarea>
                 </div>
             </div>
         </div>
         """%field_vals(width=12)
     formrow4 = """
         <div class="small-12 columns" title="%(tooltip4)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>User URI</span>
                 </div>
                 <div class="%(input_classes)s">
                     <input type="text" size="64" name="User_uri" 
                            placeholder="(User URI - e.g. mailto:[email protected])"
                            value=""/>
                 </div>
             </div>
         </div>
         """%field_vals(width=12)
     formrow5 = """
         <div class="small-12 columns" title="%(tooltip5)s">
             <div class="row view-value-row">
                 <div class="%(label_classes)s">
                     <span>Permissions</span>
                 </div>
                 <div class="%(input_classes)s">
                     <input type="text" size="64" name="User_permissions" 
                            placeholder="(user permissions; e.g. &#39;VIEW CREATE UPDATE DELETE CONFIG&#39;)"
                            value=""/>
                 </div>
             </div>
         </div>
         """%field_vals(width=12)
     # log.info(r.content)
     self.assertContains(r, formrow1,  html=True)
     self.assertContains(r, formrow2,  html=True)
     self.assertContains(r, formrow3,  html=True)
     self.assertContains(r, formrow4,  html=True)
     self.assertContains(r, formrow5,  html=True)
     return
Ejemplo n.º 57
0
    def test_Ref_Multifield_edit(self):
        self._create_image_multifield_ref_and_view()

        # Render edit view of multifield reference
        u = entitydata_edit_url("edit", "testcoll", "ref_type", "Test_ref_entity", view_id="Test_refimg_view")
        response = self.client.get(u)
        self.assertEqual(response.status_code,   200)
        self.assertEqual(response.reason_phrase, "OK")

        # Check render context
        expect_context = self._create_refimg_view_context(
            entity_id="Test_ref_entity",
            entity_ref="Test_img_entity",
            action="edit",
            continuation_url=""
            )
        actual_context = context_bind_fields(response.context)
        self.assertEqual(len(response.context['fields']), 1)
        self.assertDictionaryMatch(actual_context, expect_context)

        # Test rendered result
        f0 = context_view_field(response.context, 0, 0)
        f1 = context_view_field(response.context, 0, 1)
        field_vals    = default_fields(
            coll_id="testcoll", type_id="ref_type", entity_id="Test_ref_entity", 
            view_id="Test_refimg_view",
            basepath=TestBasePath,
            tooltip1=f0['field_tooltip'],
            )
        formrow1 = """
            <div class="small-12 medium-6 columns" title="%(tooltip1)s">
              <div class="row view-value-row">
                <div class="%(label_classes)s">
                  <span>Id</span>
                </div>
                <div class="%(input_classes)s">
                  <input type="text" size="64" name="entity_id"
                         placeholder="(entity id)"
                         value="%(entity_id)s"/>
                </div>
              </div>
            </div>
            """%field_vals(width=6)

        tgt_field_vals = default_fields(
            coll_id="testcoll", type_id="img_type", entity_id="Test_img_entity",
            view_id="Test_refimg_view",
            field_id="Test_refimg_field",
            basepath=TestBasePath,
            tooltip2=f1['field_tooltip'],
            )
        formrow2 = ("""
            <div class="small-12 medium-6 columns" title="%(tooltip2)s">
              <div class="row view-value-row">
                <div class="%(label_classes)s">
                  <span>Image reference</span>
                </div>
                <div class="%(input_classes)s">
                """+
                render_select_options(
                    "%(field_id)s", 
                    "Image reference",
                    [FieldChoice("%(type_id)s/%(entity_id)s", label="Label %(entity_id)s")],
                    "%(type_id)s/%(entity_id)s"
                    )+
                """
                </div>
              </div>
            </div>
            """)%tgt_field_vals(width=6)
        # log.info(r.content)
        self.assertContains(response, formrow1,  html=True)
        self.assertContains(response, formrow2,  html=True)
        return
Ejemplo n.º 58
0
    def test_Repeat_Ref_Multifield_edit(self):
        self._create_image_multifield_repeat_ref_and_view()

        # Render view of multifield reference
        u = entitydata_edit_url("edit", "testcoll", "ref_type", "Test_rpt_entity", view_id="Test_rptimg_view")
        response = self.client.get(u)
        self.assertEqual(response.status_code,   200)
        self.assertEqual(response.reason_phrase, "OK")

        # Check render context
        expect_context = self._create_rptref_view_context(
            entity_id="Test_rpt_entity",
            action="edit",
            continuation_url=""
            )
        actual_context = context_bind_fields(response.context)
        self.assertEqual(len(response.context['fields']), 2)
        self.assertDictionaryMatch(actual_context, expect_context)

        f0 = context_view_field(response.context, 0, 0)
        f1 = context_view_field(response.context, 1, 0)

        # Test rendered result
        field_vals    = default_fields(
            coll_id="testcoll", type_id="ref_type", entity_id="Test_rpt_entity", 
            view_id="Test_rptimg_view",
            basepath=TestBasePath,
            tooltip1=f0['field_tooltip'],
            )
        formrow1 = """
            <div class="small-12 medium-6 columns" title="%(tooltip1)s">
              <div class="row view-value-row">
                <div class="%(label_classes)s">
                  <span>Id</span>
                </div>
                <div class="%(input_classes)s">
                    <input type="text" size="64" name="entity_id"
                           placeholder="(entity id)"
                           value="%(entity_id)s"/>
                </div>
              </div>
            </div>
            """%field_vals(width=6)
        formrow2a = """
            <div class="group-label small-12 medium-2 columns">
              <span>Repeat image reference</span>
            </div>
            """
        formrow2b = """
            <div class="small-12 medium-10 columns hide-for-small-only">
              <div class="row">
                <div class="small-1 columns">
                  &nbsp;
                </div>
                <div class="small-11 columns">
                  <div class="edit-grouprow col-head row">
                    <div class="%(col_head_classes)s">
                      <span>Image reference</span>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            """%field_vals(width=6)

        tgt_field_vals = default_fields(
            coll_id="testcoll", type_id="img_type", entity_id="Test_img_entity", 
            view_id="Test_rptimg_view",
            repeat_id="Test_rptref_field",
            field_id="Test_refimg_field",
            tooltip3b=f1._field_description['group_field_descs'][0]['field_tooltip_test']
            )
        formrow3a = """
            <div class="small-12 medium-2 columns hide-for-small-only">
              &nbsp;
            </div>
            """%tgt_field_vals(width=6)
        formrow3b = ("""
            <div class="small-12 medium-10 columns">
              <div class="tbody row select-row">
                <div class="small-1 columns checkbox-in-edit-padding">
                  <input type="checkbox" class="select-box right"
                         name="%(repeat_id)s__select_fields"
                         value="0" />
                </div>
                <div class="small-11 columns">
                  <div class="edit-grouprow row">
                    <div class="%(col_item_classes)s" title="%(tooltip3b)s">
                      <div class="row show-for-small-only">
                        <div class="view-label small-12 columns">
                          <span>Image reference</span>
                        </div>
                      </div>
                      <div class="row view-value-col">
                        <div class="view-value small-12 columns">
                        """+
                        render_select_options(
                            "%(repeat_id)s__0__%(field_id)s", 
                            "Image reference",
                            [FieldChoice("%(type_id)s/%(entity_id)s", label="Label %(entity_id)s")],
                            "%(type_id)s/%(entity_id)s"
                            )+
                        """
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            """)%tgt_field_vals(width=6)
        # log.info(r.content)
        self.assertContains(response, formrow1,  html=True)
        self.assertContains(response, formrow2a, html=True)
        self.assertContains(response, formrow2b, html=True)
        self.assertContains(response, formrow3a, html=True)
        self.assertContains(response, formrow3b, html=True)
        return
Ejemplo n.º 59
0
 def _check_context_fields(self, response, 
         action="",
         type_id="", orig_type_id=None,
         type_label="(?type_label)",
         type_uri="(?type_uri)",
         type_supertype_uris="",
         type_view="Default_view",
         type_list="Default_list"
         ):
     # Common entity attributes
     self.assertEqual(response.context['entity_id'],        type_id)
     self.assertEqual(response.context['orig_id'],          orig_type_id or type_id)
     self.assertEqual(response.context['type_id'],          layout.TYPE_TYPEID)
     self.assertEqual(response.context['orig_type'],        layout.TYPE_TYPEID)
     self.assertEqual(response.context['coll_id'],          'testcoll')
     self.assertEqual(response.context['action'],           action)
     self.assertEqual(response.context['view_id'],          'Type_view')
     # View fields
     self.assertEqual(len(response.context['fields']), 7)
     f0 = context_view_field(response.context, 0, 0)
     f1 = context_view_field(response.context, 1, 0)
     f2 = context_view_field(response.context, 2, 0)
     f3 = context_view_field(response.context, 3, 0)
     f4 = context_view_field(response.context, 4, 0)
     f5 = context_view_field(response.context, 5, 0)
     f6 = context_view_field(response.context, 5, 1)
     # 1st field - Id
     check_context_field(self, f0,
         field_id=           "Type_id",
         field_name=         "entity_id",
         field_label=        "Type Id",
         field_placeholder=  "(type id)",
         field_property_uri= "annal:id",
         field_render_type=  "EntityId",
         field_value_mode=   "Value_direct",
         field_value_type=   "annal:Slug",
         field_placement=    "small-12 medium-6 columns",
         field_value=        type_id,
         options=            self.no_options
         )
     # 2nd field - Label
     check_context_field(self, f1,
         field_id=           "Type_label",
         field_name=         "Type_label",
         field_label=        "Label",
         field_placeholder=  "(label)",
         field_property_uri= "rdfs:label",
         field_render_type=  "Text",
         field_value_mode=   "Value_direct",
         field_value_type=   "annal:Text",
         field_placement=    "small-12 columns",
         field_value=        type_label,
         options=            self.no_options
         )
     # 3rd field - comment
     type_comment_placeholder = (
         "(type description)"
         )
     check_context_field(self, f2,
         field_id=           "Type_comment",
         field_name=         "Type_comment",
         field_label=        "Comment",
         field_placeholder=  type_comment_placeholder,
         field_property_uri= "rdfs:comment",
         field_render_type=  "Markdown",
         field_value_mode=   "Value_direct",
         field_value_type=   "annal:Richtext",
         field_placement=    "small-12 columns",
         options=            self.no_options
         )
     # 4th field - URI
     type_uri_placeholder = (
         "(Type URI)"
         )
     check_context_field(self, f3,
         field_id=           "Type_uri",
         field_name=         "Type_uri",
         field_label=        "Type URI",
         field_placeholder=  type_uri_placeholder,
         field_property_uri= "annal:uri",
         field_render_type=  "Identifier",
         field_value_mode=   "Value_direct",
         field_value_type=   "annal:Identifier",
         field_value=        type_uri,
         options=            self.no_options
         )
     # 5th field - Supertype URIs
     type_supertype_uris_placeholder = (
         "(Supertype URIs or CURIEs)"
         )
     check_context_field(self, f4,
         field_id=           "Type_supertype_uris",
         field_name=         "Type_supertype_uris",
         field_label=        "Supertype URIs",
         field_placeholder=  type_supertype_uris_placeholder,
         field_property_uri= "annal:supertype_uri",
         field_render_type=  "Group_Seq_Row",
         field_value_mode=   "Value_direct",
         field_value_type=   "annal:Type_supertype_uri",
         field_value=        type_supertype_uris,
         options=            self.no_options
         )
     # 6th field - view id
     type_view_id_placeholder = (
         "(view id)"
         )
     check_context_field(self, f5,
         field_id=           "Type_view",
         field_name=         "Type_view",
         field_label=        "Default view",
         field_placeholder=  type_view_id_placeholder,
         field_property_uri= "annal:type_view",
         field_render_type=  "Enum_optional",
         field_value_mode=   "Value_direct",
         field_value_type=   "annal:View",
         field_placement=    "small-12 medium-6 columns",
         field_value=        type_view,
         options=            self.view_options
         )
     # 7th field - list id
     type_list_id_placeholder = (
         "(list id)"
         )
     check_context_field(self, f6,
         field_id=           "Type_list",
         field_name=         "Type_list",
         field_label=        "Default list",
         field_placeholder=  type_list_id_placeholder,
         field_property_uri= "annal:type_list",
         field_render_type=  "Enum_optional",
         field_value_mode=   "Value_direct",
         field_value_type=   "annal:List",
         field_placement=    "small-12 medium-6 columns",
         field_value=        type_list,
         options=            self.list_options
         )
     return