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. 'VIEW CREATE UPDATE DELETE CONFIG')" 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
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. 'VIEW CREATE UPDATE DELETE CONFIG')" value="VIEW CREATE UPDATE DELETE"/> </div> </div> </div> """%field_vals(width=12) # log.info(r.content) self.assertContains(r, formrow5, html=True) return
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. 'VIEW CREATE UPDATE DELETE CONFIG')" 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
def test_user_permissions_form_rendering(self): # Test rendering of permissions from list in entity u = entitydata_edit_url("edit", "testcoll", "_user", "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="_user", entity_id="testuser") formrow5 = """ <div class="small-12 columns"> <div class="row"> <div class="%(label_classes)s"> <p>Permissions</p> </div> <div class="%(input_classes)s"> <input type="text" size="64" name="User_permissions" placeholder="(user permissions; e.g. 'VIEW CREATE UPDATE DELETE')" value="VIEW CREATE UPDATE DELETE CONFIG ADMIN"/> </div> </div> </div> """ % field_vals(width=12) # log.info(r.content) self.assertContains(r, formrow5, html=True) return
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", "_user", "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="_user", entity_id="baduserperms") formrow5 = """ <div class="small-12 columns"> <div class="row"> <div class="%(label_classes)s"> <p>Permissions</p> </div> <div class="%(input_classes)s"> <input type="text" size="64" name="User_permissions" placeholder="(user permissions; e.g. 'VIEW CREATE UPDATE DELETE')" value="VIEW CREATE UPDATE DELETE"/> </div> </div> </div> """ % field_vals(width=12) # log.info(r.content) self.assertContains(r, formrow5, html=True) return
def test_RenderRepeatGroup_view_no_values(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() testentity = self._create_testentity() # Render view u = entitydata_edit_url("view", "testcoll", "testtype", entity_id="testentity", view_id="testview") v = entity_url("testcoll", "testtype", entity_id="testentity") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test rendered result cont_uri_param = "?continuation_url=" + u field_vals = default_fields( coll_id="testcoll", type_id="testtype", entity_id="00000001", view_url=v, cont_uri_param=cont_uri_param, tooltip1="", tooltip2="", ) formrow1 = """ <div class="small-12 medium-6 columns" %(tooltip1)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Id</span> </div> <div class="%(input_classes)s"> <a href="%(view_url)s%(cont_uri_param)s">testentity</a> </div> </div> </div> """ % field_vals(width=6) formrow2 = """ <div class="row"> <div class="%(group_label_classes)s"> <span>Test repeat field label</span> </div> <div class="group-placeholder %(group_row_body_classes)s"> <span>(None)</span> </div> </div> """ % field_vals(width=12) # log.info(r.content) #@@ self.assertContains(r, formrow1, html=True) self.assertContains(r, formrow2, html=True) return
def test_RenderRepeatGroup_view_no_values(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() testentity = self._create_testentity() # Render view u = entitydata_edit_url( "view", "testcoll", "testtype", entity_id="testentity", view_id="testview" ) v = entity_url("testcoll", "testtype", entity_id="testentity") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test rendered result cont_uri_param = "?continuation_url="+u field_vals = default_fields( coll_id="testcoll", type_id="testtype", entity_id="00000001", view_url=v, cont_uri_param=cont_uri_param, tooltip1="", tooltip2="", ) formrow1 = """ <div class="small-12 medium-6 columns" %(tooltip1)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Id</span> </div> <div class="%(input_classes)s"> <a href="%(view_url)s%(cont_uri_param)s">testentity</a> </div> </div> </div> """%field_vals(width=6) formrow2 = """ <div class="row"> <div class="%(group_label_classes)s"> <span>Test repeat field label</span> </div> <div class="group-placeholder %(group_row_body_classes)s"> <span>(None)</span> </div> </div> """%field_vals(width=12) # log.info(r.content) #@@ self.assertContains(r, formrow1, html=True) self.assertContains(r, formrow2, html=True) return
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
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
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"> </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"> </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
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
def test_get_new_user_form_rendering(self): u = entitydata_edit_url("new", "testcoll", "_user", view_id="User_view") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") self.assertContains(r, "<title>Collection testcoll</title>") self.assertContains(r, "<h3>'_user' data in collection 'testcoll'</h3>") field_vals = default_fields(coll_id="testcoll", type_id="_user", entity_id="00000001") formrow1 = """ <div class="small-12 medium-6 columns"> <div class="row"> <div class="%(label_classes)s"> <p>User Id</p> </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"> <div class="row"> <div class="%(label_classes)s"> <p>User name</p> </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"> <div class="row"> <div class="%(label_classes)s"> <p>Description</p> </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"> <div class="row"> <div class="%(label_classes)s"> <p>URI</p> </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"> <div class="row"> <div class="%(label_classes)s"> <p>Permissions</p> </div> <div class="%(input_classes)s"> <input type="text" size="64" name="User_permissions" placeholder="(user permissions; e.g. 'VIEW CREATE UPDATE DELETE')" value=""/> </div> </div> </div> """ % field_vals(width=12) formrow6 = (""" <div class="row"> <div class="%(space_classes)s"> <div class="row"> <div class="small-12 columns"> </div> </div> </div> <div class="%(button_wide_classes)s"> <div class="row"> <div class="%(button_left_classes)s"> <input type="submit" name="save" value="Save" /> <input type="submit" name="cancel" value="Cancel" /> </div> </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) self.assertContains(r, formrow6, html=True) return
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 '_initial_values' 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"> </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
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> </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> </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> </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> </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> </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
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"> </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"> </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 ⬆" /> <input type="submit" name="testrepeatfield__down" value="Move ⬇" /> </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
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"> </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"> </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 ⬆" /> <input type="submit" name="testrepeatfield__down" value="Move ⬇" /> </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
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") formrow1 = """ <!-- editable text field --> <div class="small-12 medium-6 columns"> <div class="row"> <div class="%(label_classes)s"> <p> Id </p> </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 = (""" <!-- record type dropdown --> <div class="small-12 medium-6 columns"> <div class="row"> <div class="%(label_classes)s"> <p> Type </p> </div> <div class="%(input_classes)s"> """ + render_select_options( "entity_type", "Type", get_site_types_sorted() + ["testtype"], "testtype") + """ </div> </div> </div> """) % field_vals(width=6) formrow3 = """ <!-- editable text field --> <div class="small-12 columns"> <div class="row"> <div class="%(label_classes)s"> <p> Label </p> </div> <div class="%(input_classes)s"> <!-- cf http://stackoverflow.com/questions/1480588/input-size-vs-width --> <input type="text" size="64" name="Entity_label" placeholder="(label)" value="%(default_label_esc)s"> </div> </div> </div> """ % field_vals(width=12) formrow4 = """ <!-- editable textarea field --> <div class="small-12 columns"> <div class="row"> <div class="%(label_classes)s"> <p> Comment </p> </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
def test_get_form_rendering(self): u = entitydata_edit_url("new", "testcoll", "_list", view_id="List_view") r = self.client.get(u + "?continuation_url=/xyzzy/") self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") self.assertContains(r, "<h3>'_list' data in collection 'testcoll'</h3>") field_vals = default_fields(coll_id="testcoll", type_id="_list", entity_id="00000001") formrow1a = """ <div class="small-12 medium-6 columns"> <div class="row"> <div class="%(label_classes)s"> <p>Id</p> </div> <div class="%(input_classes)s"> <input type="text" size="64" name="entity_id" placeholder="(list id)" value="00000001"/> </div> </div> </div> """ % field_vals(width=6) formrow1b = (""" <div class="small-12 medium-6 columns"> <div class="row"> <div class="%(label_classes)s"> <p>List display type</p> </div> <div class="%(input_classes)s"> """ + render_choice_options( "List_type", get_site_list_types_sorted(), "List") + """ </div> </div> </div> """) % field_vals(width=6) formrow2 = """ <div class="small-12 columns"> <div class="row"> <div class="%(label_classes)s"> <p>Label</p> </div> <div class="%(input_classes)s"> <input type="text" size="64" name="List_label" placeholder="(list label)" value="%(default_label_esc)s"/> </div> </div> </div> """ % field_vals(width=12) formrow3 = """ <div class="small-12 columns"> <div class="row"> <div class="%(label_classes)s"> <p>Help</p> </div> <div class="%(input_classes)s"> <textarea cols="64" rows="6" name="List_comment" class="small-rows-4 medium-rows-8" placeholder="(description of list view)"> %(default_comment_esc)s </textarea> </div> </div> </div> """ % field_vals(width=12) formrow4 = (""" <div class="small-6 columns"> <div class="row"> <div class="%(label_classes)s"> <p>Record type</p> </div> <div class="%(input_classes)s"> """ + render_select_options( "List_default_type", "Record type", get_site_types_sorted() + ["testtype"], "Default_type") + """ </div> </div> </div> """) % field_vals(width=6) formrow5 = (""" <div class="small-6 columns"> <div class="row"> <div class="%(label_classes)s"> <p>View</p> </div> <div class="%(input_classes)s"> """ + render_select_options("List_default_view", "View", sorted(get_site_views()), "Default_view") + """ </div> </div> </div> """) % field_vals(width=6) selector_text = ("(entity selector; " + "e.g. 'ALL', " + "'<type> in [@type]', " + "'[<field>]==<value>', " + "etc.)") formrow6 = """ <div class="small-12 columns"> <div class="row"> <div class="%(label_classes)s"> <p>Selector</p> </div> <div class="%(input_classes)s"> <input type="text" size="64" name="List_entity_selector" placeholder="%(selector_text)s" value="ALL"/> </div> </div> </div> """ % dict(field_vals(width=12), selector_text=selector_text) # 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, formrow5, html=True) self.assertContains(r, formrow6, html=True) return
def test_get_view_form_rendering(self): u = entitydata_edit_url("view", "testcoll", "testtype", entity_id="entity1", 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) #@@ entity_label = """Entity testcoll/testtype/entity1""" view_label = """Type definition""" permalink = """<a href="./" class="permalink">🔗</a>""" entity_title = "%s - %s - Collection testcoll" % (entity_label, view_label) self.assertContains(r, "<title>%s</title>" % (entity_title, )) self.assertContains(r, '<h2 class="page-heading">%s %s</h2>' % (view_label, permalink), html=True) cont_uri = "?continuation_url=%s" % u + "%3Fcontinuation_url=/xyzzy/" field_vals = default_fields( coll_id="testcoll", type_id="testtype", entity_id="00000001", entity_base="/testsite/c/testcoll/d/testtype/entity1", entity_url="/testsite/c/testcoll/d/testtype/entity1/" + cont_uri, default_view_url="/testsite/c/testcoll/d/_view/Default_view/" + cont_uri, default_list_url="/testsite/c/testcoll/d/_list/Default_list/" + cont_uri, 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'], tooltip4="", # 'title="%s"'%r.context['fields'][3]['field_help'], tooltip5="", # 'title="%s"'%r.context['fields'][4]['field_help'], tooltip6="", # 'title="%s"'%r.context['fields'][5]['field_help'], tooltip7="", # 'title="%s"'%r.context['fields'][6]['field_help'], button_subtype_tip="Create a subtype of the current type. " + "(View and list type identifiers are copied from the current type; " + "the URI of the current type is inserted as a supertype URI of the new type; " + "other fields are taken from the corresponding '_initial_values' record, " + "and may be extended or modified later.)" + "", ) formrow1 = """ <div class="small-12 medium-6 columns" %(tooltip1)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Type Id</span> </div> <div class="%(input_classes)s"> <a href="%(entity_url)s">entity1</a> </div> </div> </div> """ % field_vals(width=6) formrow2 = """ <div class="small-12 columns" %(tooltip2)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Label</span> </div> <div class="%(input_classes)s"> <span>Entity testcoll/testtype/entity1</span> </div> </div> </div> """ % field_vals(width=12) formrow3 = """ <div class="small-12 columns" %(tooltip3)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Comment</span> </div> <div class="%(input_classes)s"> <span class="markdown"> <p>Entity coll testcoll, type testtype, entity entity1</p> </span> </div> </div> </div> """ % field_vals(width=12) formrow4 = """ <div class="small-12 columns" %(tooltip4)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Type URI</span> </div> <div class="%(input_classes)s"> <span> </span> </div> </div> </div> """ % field_vals(width=12) formrow5 = """ <div class="small-12 columns" %(tooltip5)s> <div class="grouprow row"> <div class="%(group_label_classes)s"> <span>Supertype URIs</span> </div> <div class="%(group_placeholder_classes)s"> <span>(None specified)</span> </div> </div> </div> """ % field_vals(width=12) formrow6 = """ <div class="small-12 medium-6 columns" %(tooltip6)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Default view</span> </div> <div class="%(input_classes)s"> <a href="%(default_view_url)s">Default record view</a> </div> </div> </div> """ % field_vals(width=6) formrow7 = """ <div class="small-12 medium-6 columns" %(tooltip7)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Default list</span> </div> <div class="%(input_classes)s"> <a href="%(default_list_url)s">List entities</a> </div> </div> </div> """ % field_vals(width=6) formrow8a = """ <div class="%(space_classes)s"> <div class="row"> <div class="small-12 columns"> </div> </div> </div> """ % field_vals(width=2) formrow8b = """ <div class="%(button_wide_classes)s"> <div class="row"> <div class="%(button_left_classes)s"> <input type="submit" name="edit" value="Edit" title="Edit entity data." /> <input type="submit" name="copy" value="Copy" title="Copy, then edit entity data as new entity." /> <input type="submit" name="close" value="Close" title="Return to previous page." /> </div> </div> </div> """ % field_vals(width=4) formrow8c = """ <div class="%(button_wide_classes)s"> <div class="row"> <div class="%(button_r_med_up_classes)s"> <!-- <input type="submit" name="open_view" value="View description" /> --> <input type="submit" name="Define_subtype" value="Define subtype" title="%(button_subtype_tip)s" /> <input type="submit" name="default_view" value="Set default view" title="Select this display as the default view for collection 'testcoll'." /> <input type="submit" name="customize" value="Customize" title="Open 'Customize' view for collection 'testcoll'." /> </div> </div> </div> """ % field_vals(width=6) formrow9a = (""" <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Choose view</span> </div> <div class="%(input_classes)s"> <div class="row"> <div class="small-9 columns"> """ + render_choice_options("view_choice", self.view_options, "_view/Type_view") + """ </div> <div class="small-3 columns"> <input type="submit" name="use_view" value="Show view" /> </div> </div> </div> </div> """) % field_vals(width=6) formrow9b = (""" <div class="row view-value-row"> <div class="link-bar small-12 columns"> <a href="%(entity_base)s/entity_data.ttl" title="Retrieve underlying data as Turtle"> Turtle </a> <a href="%(entity_base)s/entity_data.jsonld" title="Retrieve underlying data as JSON-LD"> JSON-LD </a> <a href="%(entity_base)s/entity_data.jsonld?type=application/json" title="Display underlying JSON data"> <img src="/static/images/get_the_data_88x31.png" alt="get_the_data"> </a> </div> </div> """) % field_vals(width=6) formrow10 = """ <div class="%(button_right_classes)s"> <div class="row"> <div class="small-12 columns"> <input type="submit" name="new_type" value="New type" /> <input type="submit" name="new_view" value="New view" /> <input type="submit" name="new_field" value="New field type" /> <input type="submit" name="new_group" value="New field group" /> </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, formrow5, html=True) self.assertContains(r, formrow6, html=True) self.assertContains(r, formrow7, html=True) self.assertContains(r, formrow8a, html=True) self.assertContains(r, formrow8b, html=True) self.assertContains(r, formrow8c, html=True) self.assertContains(r, formrow9a, html=True) self.assertContains(r, formrow9b, html=True) # New buttons hidden (for now) # self.assertContains(r, formrow10, html=True) return
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_tooltip'], tooltip2=context_view_field(r.context, 1, 0)['field_tooltip'], tooltip3=context_view_field(r.context, 2, 0)['field_tooltip'], tooltip5=context_view_field(r.context, 4, 0)['field_tooltip'], tooltip6=context_view_field( r.context, 5, 0)._field_description['group_field_descs'][0] ['field_tooltip_test']) 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) formrow5 = """ <div class="small-12 medium-6 columns" title="%(tooltip5)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) formrow6 = (""" <div class="small-12 medium-4 columns" title="%(tooltip6)s"> <div class="row show-for-small-only"> <div class="view-label small-12 columns"> <span>Field ref</span> </div> </div> <div class="row view-value-col"> <div class="view-value small-12 columns"> """ + render_select_options("View_fields__0__View_field_sel", "Field ref", no_selection("(field reference)") + get_site_bibentry_fields_sorted(), layout.FIELD_TYPEID + "/Entity_id", placeholder="(field reference)") + """ </div> </div> </div> """) % field_vals(width=4) formrow7 = """ <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'])) # log.info("*** %r"%(r.context['fields'][5]._field_description['group_field_descs'][0]['field_tooltip_test'])) self.assertContains(r, formrow1, html=True) self.assertContains(r, formrow2, html=True) self.assertContains(r, formrow3, html=True) self.assertContains(r, formrow5, html=True) self.assertContains(r, formrow6, html=True) self.assertContains(r, formrow7, html=True) return
def test_get_form_rendering(self): u = entitydata_edit_url("new", "testcoll", layout.VOCAB_TYPEID, view_id="Vocab_view") r = self.client.get(u + "?continuation_url=/xyzzy/") self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") field_vals = default_fields( coll_id="testcoll", type_id=layout.VOCAB_TYPEID, entity_id="00000001", default_label="", default_comment=context_view_field(r.context, 2, 0)['field_value'], default_label_esc="", default_comment_esc=context_view_field(r.context, 2, 0)['field_value'], tooltip1=context_view_field(r.context, 0, 0)['field_tooltip'], tooltip2=context_view_field(r.context, 1, 0)['field_tooltip'], tooltip3=context_view_field(r.context, 2, 0)['field_tooltip'], tooltip4=context_view_field(r.context, 3, 0)['field_tooltip'], 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.", ) formrow1 = """ <div class="small-12 medium-6 columns" title="%(tooltip1)s"> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Prefix</span> </div> <div class="%(input_classes)s"> <input type="text" size="64" name="entity_id" placeholder="(vocabulary 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="Entity_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="Entity_comment" class="small-rows-4 medium-rows-8" placeholder="(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>Vocabulary URI</span> </div> <div class="%(input_classes)s"> <input type="text" size="64" name="Vocab_uri" placeholder="(Vocabulary namespace URI)" 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) return
def test_get_view_rendering(self): # Test view rendering # This checks for namespace prefix expansion in URL links. # Add test namespace vocab_id = "test_vocab" vocab_curie = "annal:test_vocab" annal_uri = ANNAL.mk_uri("") vocab_entity = RecordVocab.create( self.testcoll, vocab_id, recordvocab_create_values(vocab_id=vocab_id, vocab_uri=vocab_curie)) # View new namespace entity u = entitydata_edit_url("view", "testcoll", layout.VOCAB_TYPEID, entity_id=vocab_id, view_id="Vocab_view") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") default_comment = context_view_field(r.context, 2, 0)['field_value'] field_vals = default_fields( coll_id="testcoll", type_id=layout.VOCAB_TYPEID, entity_id=vocab_id, entity_view_url=u, rendered_label=context_view_field(r.context, 1, 0)['field_value'], rendered_comment=markdown.markdown( apply_substitutions(r.context, default_comment)), vocab_id=vocab_id, vocab_curie=vocab_curie, vocab_uri=annal_uri + vocab_id, urie=annal_uri + vocab_id, ) formrow1 = """ <div class="small-12 medium-6 columns"> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Prefix</span> </div> <div class="%(input_classes)s"> <a href="%(default_entity_url)s?continuation_url=%(entity_view_url)s">%(vocab_id)s</a> </div> </div> </div> """ % field_vals(width=6) # <div class="small-12 medium-6 columns"> # <div class="row view-value-row"> # <div class="view-label small-12 medium-4 columns"> # <span>Prefix</span> # </div> # <div class="view-value small-12 medium-8 columns"> # <a href="/testsite/c/testcoll/d/_vocab/test_vocab/ # ?continuation_url=/testsite/c/testcoll/v/Vocab_view/_vocab/test_vocab/!view">test_vocab</a> # </div> # </div> formrow2 = """ <div class="small-12 columns"> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Label</span> </div> <div class="%(input_classes)s"> <span>%(rendered_label)s</span> </div> </div> </div> """ % field_vals(width=12) formrow3 = """ <div class="small-12 columns"> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Comment</span> </div> <div class="%(input_classes)s"> <span class="markdown"> %(rendered_comment)s </span> </div> </div> </div> """ % field_vals(width=12) formrow4 = """ <div class="small-12 columns"> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Vocabulary URI</span> </div> <div class="%(input_classes)s"> <a href="%(vocab_uri)s" target="_blank">%(vocab_curie)s</a> </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) return
def test_Ref_Multifield_view(self): self._create_image_multifield_ref_and_view() # Render view of multifield imageb reference u = entitydata_edit_url( "view", "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="view", 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 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, ) 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(response, formrow1, html=True) self.assertContains(response, formrow2a, html=True) self.assertContains(response, formrow2b, html=True) return
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. 'VIEW CREATE UPDATE DELETE CONFIG')" 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
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") 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="view", continuation_url="" ) actual_context = context_bind_fields(response.context) self.assertEqual(len(response.context['fields']), 2) self.assertDictionaryMatch(actual_context, expect_context) # 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 group 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"> </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(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
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"> </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
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
def test_get_view_form_rendering(self): u = entitydata_edit_url("view", "testcoll", "testtype", entity_id="entity1", 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) #@@ entity_label = "Entity testcoll/testtype/entity1" view_label = "Type definition" entity_title = "%s - %s - Collection testcoll" % (entity_label, view_label) self.assertContains(r, "<title>%s</title>" % (entity_title, )) self.assertContains(r, '<h2 class="page-heading">%s</h2>' % (view_label, ), html=True) cont_uri = "?continuation_url=%s" % u + "%3Fcontinuation_url=/xyzzy/" field_vals = default_fields( coll_id="testcoll", type_id="testtype", entity_id="00000001", entity_url="/testsite/c/testcoll/d/testtype/entity1/" + cont_uri, default_view_url="/testsite/c/testcoll/d/_view/Default_view/" + cont_uri, default_list_url="/testsite/c/testcoll/d/_list/Default_list/" + cont_uri, 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'], tooltip4="", # 'title="%s"'%r.context['fields'][3]['field_help'], tooltip5="", # 'title="%s"'%r.context['fields'][4]['field_help'], tooltip6="", # 'title="%s"'%r.context['fields'][5]['field_help'], tooltip7="", # 'title="%s"'%r.context['fields'][6]['field_help'], ) formrow1 = """ <div class="small-12 medium-6 columns" %(tooltip1)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Type Id</span> </div> <div class="%(input_classes)s"> <a href="%(entity_url)s">entity1</a> </div> </div> </div> """ % field_vals(width=6) formrow2 = """ <div class="small-12 columns" %(tooltip2)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Label</span> </div> <div class="%(input_classes)s"> <span>Entity testcoll/testtype/entity1</span> </div> </div> </div> """ % field_vals(width=12) formrow3 = """ <div class="small-12 columns" %(tooltip3)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Comment</span> </div> <div class="%(input_classes)s"> <span class="markdown"> <p>Entity coll testcoll, type testtype, entity entity1</p> </span> </div> </div> </div> """ % field_vals(width=12) formrow4 = """ <div class="small-12 columns" %(tooltip4)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Type URI</span> </div> <div class="%(input_classes)s"> <span> </span> </div> </div> </div> """ % field_vals(width=12) formrow5 = """ <div class="small-12 columns" %(tooltip5)s> <div class="row"> <div class="%(group_label_classes)s"> <span>Supertype URIs</span> </div> <div class="%(group_placeholder_classes)s"> <span>(None)</span> </div> </div> </div> """ % field_vals(width=12) formrow6 = """ <div class="small-12 medium-6 columns" %(tooltip6)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Default view</span> </div> <div class="%(input_classes)s"> <a href="%(default_view_url)s">Default record view</a> </div> </div> </div> """ % field_vals(width=6) formrow7 = """ <div class="small-12 medium-6 columns" %(tooltip7)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Default list</span> </div> <div class="%(input_classes)s"> <a href="%(default_list_url)s">List entities</a> </div> </div> </div> """ % field_vals(width=6) formrow8a = """ <div class="%(space_classes)s"> <div class="row"> <div class="small-12 columns"> </div> </div> </div> """ % field_vals(width=2) formrow8b = """ <div class="%(button_wide_classes)s"> <div class="row"> <div class="%(button_left_classes)s"> <input type="submit" name="edit" value="Edit" title="Edit entity data." /> <input type="submit" name="copy" value="Copy" title="Copy, then edit entity data as new entity." /> <input type="submit" name="close" value="Close" title="Return to previous page." /> </div> </div> </div> """ % field_vals(width=4) formrow8c = """ <div class="%(button_wide_classes)s"> <div class="row"> <div class="%(button_r_med_up_classes)s"> <!-- <input type="submit" name="open_view" value="View description" /> --> <input type="submit" name="default_view" value="Set default view" title="Select this display as the default view for collection 'testcoll'." /> <input type="submit" name="customize" value="Customize" title="Open 'Customize' view for collection 'testcoll'." /> </div> </div> </div> """ % field_vals(width=6) formrow9 = (""" <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Choose view</span> </div> <div class="%(input_classes)s"> <div class="row"> <div class="small-9 columns"> """ + render_choice_options("view_choice", self.view_options, "_view/Type_view") + """ </div> <div class="small-3 columns"> <input type="submit" name="use_view" value="Show view" /> </div> </div> </div> </div> """) % field_vals(width=6) formrow10 = """ <div class="%(button_right_classes)s"> <div class="row"> <div class="small-12 columns"> <input type="submit" name="new_type" value="New type" /> <input type="submit" name="new_view" value="New view" /> <input type="submit" name="new_field" value="New field type" /> <input type="submit" name="new_group" value="New field group" /> </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, formrow5, html=True) self.assertContains(r, formrow6, html=True) self.assertContains(r, formrow7, html=True) self.assertContains(r, formrow8a, html=True) self.assertContains(r, formrow8b, html=True) self.assertContains(r, formrow8c, html=True) self.assertContains(r, formrow9, html=True) # New buttons hidden (for now) # self.assertContains(r, formrow10, html=True) return
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
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") # Render view u = entitydata_edit_url("new", "testcoll", "testtype", view_id="testview") response = self.client.get(u) self.assertEqual(response.status_code, 200) self.assertEqual(response.reason_phrase, "OK") # Check render context expect_context = self._create_repeat_group_view_context( entity_id="00000001", action="new", label_add="Add group", label_delete="Remove group", field_value="", continuation_url="" ) actual_context = context_bind_fields(response.context) self.assertEqual(len(response.context['fields']), 2) self.assertDictionaryMatch(actual_context, expect_context) # Test rendered result f0 = context_view_field(response.context, 0, 0) f1 = context_view_field(response.context, 1, 0) field_vals = default_fields( coll_id="testcoll", type_id="testtype", entity_id="00000001", 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="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"> </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"> </div> <div class="small-11 columns"> <input type="submit" name="Test_repeat_field__remove" value="Remove group" /> <input type="submit" name="Test_repeat_field__add" value="Add group" /> <input type="submit" name="Test_repeat_field__up" value="Move ⬆" /> <input type="submit" name="Test_repeat_field__down" value="Move ⬇" /> </div> </div> </div> """%field_vals(width=12) # 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, formrow2c, html=True) return
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"> </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"> </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
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> </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> </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> </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> </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> </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
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. 'VIEW CREATE UPDATE DELETE CONFIG')" 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
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 '_initial_values' 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"> </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
def test_get_form_rendering(self): u = entitydata_edit_url("new", "testcoll", "_type", 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) self.assertContains(r, "<title>Collection testcoll</title>") self.assertContains(r, "<h3>'_type' data in collection 'testcoll'</h3>") field_vals = default_fields(coll_id="testcoll", type_id="_type", entity_id="00000001") formrow1 = """ <div class="small-12 medium-6 columns"> <div class="row"> <div class="%(label_classes)s"> <p>Id</p> </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"> <div class="row"> <div class="%(label_classes)s"> <p>Label</p> </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"> <div class="row"> <div class="%(label_classes)s"> <p>Comment</p> </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"> <div class="row"> <div class="%(label_classes)s"> <p>URI</p> </div> <div class="%(input_classes)s"> <input type="text" size="64" name="Type_uri" placeholder="(URI)" value=""/> </div> </div> </div> """ % field_vals(width=12) formrow5 = (""" <div class="row"> <div class="%(space_classes)s"> <div class="row"> <div class="small-12 columns"> </div> </div> </div> <div class="%(button_wide_classes)s"> <div class="row"> <div class="%(button_left_classes)s"> <input type="submit" name="save" value="Save" /> <input type="submit" name="cancel" value="Cancel" /> </div> </div> </div> </div> """) % field_vals(width=12) 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
def test_get_view_form_rendering(self): u = entitydata_edit_url("view", "testcoll", "testtype", entity_id="entity1", 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) #@@ entity_label = "Entity testcoll/testtype/entity1" view_label = "Type definition" entity_title = "%s - %s - Collection testcoll"%(entity_label, view_label) self.assertContains(r, "<title>%s</title>"%(entity_title,)) self.assertContains(r, '<h2 class="page-heading">%s</h2>'%(view_label,), html=True) cont_uri = "?continuation_url=%s"%u + "%3Fcontinuation_url=/xyzzy/" field_vals = default_fields( coll_id="testcoll", type_id="testtype", entity_id="00000001", entity_url = "/testsite/c/testcoll/d/testtype/entity1/" + cont_uri, default_view_url = "/testsite/c/testcoll/d/_view/Default_view/" + cont_uri, default_list_url = "/testsite/c/testcoll/d/_list/Default_list/" + cont_uri, 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'], tooltip4="", # 'title="%s"'%r.context['fields'][3]['field_help'], tooltip5="", # 'title="%s"'%r.context['fields'][4]['field_help'], tooltip6="", # 'title="%s"'%r.context['fields'][5]['field_help'], tooltip7="", # 'title="%s"'%r.context['fields'][6]['field_help'], ) formrow1 = """ <div class="small-12 medium-6 columns" %(tooltip1)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Type Id</span> </div> <div class="%(input_classes)s"> <a href="%(entity_url)s">entity1</a> </div> </div> </div> """%field_vals(width=6) formrow2 = """ <div class="small-12 columns" %(tooltip2)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Label</span> </div> <div class="%(input_classes)s"> <span>Entity testcoll/testtype/entity1</span> </div> </div> </div> """%field_vals(width=12) formrow3 = """ <div class="small-12 columns" %(tooltip3)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Comment</span> </div> <div class="%(input_classes)s"> <span class="markdown"> <p>Entity coll testcoll, type testtype, entity entity1</p> </span> </div> </div> </div> """%field_vals(width=12) formrow4 = """ <div class="small-12 columns" %(tooltip4)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Type URI</span> </div> <div class="%(input_classes)s"> <span> </span> </div> </div> </div> """%field_vals(width=12) formrow5 = """ <div class="small-12 columns" %(tooltip5)s> <div class="row"> <div class="%(group_label_classes)s"> <span>Supertype URIs</span> </div> <div class="%(group_placeholder_classes)s"> <span>(None)</span> </div> </div> </div> """%field_vals(width=12) formrow6 = """ <div class="small-12 medium-6 columns" %(tooltip6)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Default view</span> </div> <div class="%(input_classes)s"> <a href="%(default_view_url)s">Default record view</a> </div> </div> </div> """%field_vals(width=6) formrow7 = """ <div class="small-12 medium-6 columns" %(tooltip7)s> <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Default list</span> </div> <div class="%(input_classes)s"> <a href="%(default_list_url)s">List entities</a> </div> </div> </div> """%field_vals(width=6) formrow8a = """ <div class="%(space_classes)s"> <div class="row"> <div class="small-12 columns"> </div> </div> </div> """%field_vals(width=2) formrow8b = """ <div class="%(button_wide_classes)s"> <div class="row"> <div class="%(button_left_classes)s"> <input type="submit" name="edit" value="Edit" title="Edit entity data." /> <input type="submit" name="copy" value="Copy" title="Copy, then edit entity data as new entity." /> <input type="submit" name="close" value="Close" title="Return to previous page." /> </div> </div> </div> """%field_vals(width=4) formrow8c = """ <div class="%(button_wide_classes)s"> <div class="row"> <div class="%(button_r_med_up_classes)s"> <!-- <input type="submit" name="open_view" value="View description" /> --> <input type="submit" name="default_view" value="Set default view" title="Select this display as the default view for collection 'testcoll'." /> <input type="submit" name="customize" value="Customize" title="Open 'Customize' view for collection 'testcoll'." /> </div> </div> </div> """%field_vals(width=6) formrow9 = (""" <div class="row view-value-row"> <div class="%(label_classes)s"> <span>Choose view</span> </div> <div class="%(input_classes)s"> <div class="row"> <div class="small-9 columns"> """+ render_choice_options( "view_choice", self.view_options, "_view/Type_view")+ """ </div> <div class="small-3 columns"> <input type="submit" name="use_view" value="Show view" /> </div> </div> </div> </div> """)%field_vals(width=6) formrow10 = """ <div class="%(button_right_classes)s"> <div class="row"> <div class="small-12 columns"> <input type="submit" name="new_type" value="New type" /> <input type="submit" name="new_view" value="New view" /> <input type="submit" name="new_field" value="New field type" /> <input type="submit" name="new_group" value="New field group" /> </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, formrow5, html=True) self.assertContains(r, formrow6, html=True) self.assertContains(r, formrow7, html=True) self.assertContains(r, formrow8a, html=True) self.assertContains(r, formrow8b, html=True) self.assertContains(r, formrow8c, html=True) self.assertContains(r, formrow9, html=True) # New buttons hidden (for now) # self.assertContains(r, formrow10, html=True) return