diff --git a/src/annalist_root/annalist/tests/entity_testentitydata.py b/src/annalist_root/annalist/tests/entity_testentitydata.py
index 202c077b6..146927a89 100644
--- a/src/annalist_root/annalist/tests/entity_testentitydata.py
+++ b/src/annalist_root/annalist/tests/entity_testentitydata.py
@@ -65,6 +65,8 @@ def entity_url(coll_id="testcoll", type_id="testtype", entity_id="entity_id"):
"""
URI for entity data; also view using default entity view
"""
+ if not valid_id(entity_id):
+ entity_id = "___"
return collection_entity_view_url(coll_id=coll_id, type_id=type_id, entity_id=entity_id)
#@@
# viewname = "AnnalistEntityAccessView"
@@ -146,7 +148,7 @@ def entitydata_create_values(entity_id, update="Entity", coll_id="testcoll", typ
"""
Data used when creating entity test data
"""
- typeuri = hosturi + entity_url(coll_id, "_type", type_id)
+ typeuri = entity_url(coll_id, "_type", type_id)
types = [entitydata_type(type_id), typeuri]
# log.info('entitydata_create_values: types %r'%(types,))
return (
@@ -157,8 +159,8 @@ def entitydata_create_values(entity_id, update="Entity", coll_id="testcoll", typ
})
def entitydata_values(entity_id, update="Entity", coll_id="testcoll", type_id="testtype", hosturi=TestHostUri):
- typeuri = hosturi + entity_url(coll_id, "_type", type_id)
- dataurl = hosturi + entity_url(coll_id, type_id, entity_id)
+ typeuri = entity_url(coll_id, "_type", type_id)
+ dataurl = entity_url(coll_id, type_id, entity_id)
d = entitydata_create_values(
entity_id, update=update, coll_id=coll_id, type_id=type_id, hosturi=hosturi
).copy() #@@ copy needed here?
@@ -169,6 +171,7 @@ def entitydata_values(entity_id, update="Entity", coll_id="testcoll", type_id="t
, 'annal:url': dataurl
, 'annal:uri': dataurl
})
+ # log.info("entitydata_values %r"%(d,))
return d
def entitydata_context_data(
@@ -367,7 +370,7 @@ def entitydata_default_view_form_data(
action=None, cancel=None, update="Entity",
add_view_field=None, use_view=None,
new_view=None, new_field=None, new_type=None):
- # log.info("entitydata_recordtype_view_form_data: entity_id %s"%(entity_id))
+ # log.info("entitydata_default_view_form_data: entity_id %s"%(entity_id))
form_data_dict = (
{ 'Entity_label': '%s data ... (%s/%s)'%(update, coll_id, type_id)
, 'Entity_comment': '%s description ... (%s/%s)'%(update, coll_id, type_id)
@@ -469,7 +472,7 @@ def entitydata_recordtype_view_context_data(
context_dict['fields'][0]['field_value'] = entity_id
context_dict['fields'][1]['field_value'] = '%s testcoll/testtype/%s'%(update,entity_id)
context_dict['fields'][2]['field_value'] = '%s coll testcoll, type testtype, entity %s'%(update,entity_id)
- context_dict['fields'][3]['field_value'] = TestBaseUri + "/c/%s/d/%s/%s/"%("testcoll", "testtype", entity_id)
+ context_dict['fields'][3]['field_value'] = TestBasePath + "/c/%s/d/%s/%s/"%("testcoll", "testtype", entity_id)
context_dict['orig_id'] = entity_id
if orig_id:
context_dict['orig_id'] = orig_id
@@ -491,10 +494,12 @@ def entitydata_recordtype_view_form_data(
, 'continuation_url': entitydata_list_type_url(coll_id, orig_type or type_id)
})
if entity_id and type_id:
+ type_url = entity_url(coll_id=coll_id, type_id=type_id, entity_id=entity_id)
+ type_url = type_url.replace("___", entity_id) # Preserve bad type in form data
form_data_dict['entity_id'] = entity_id
form_data_dict['Type_label'] = '%s %s/%s/%s'%(update, coll_id, type_id, entity_id)
form_data_dict['Type_comment'] = '%s coll %s, type %s, entity %s'%(update, coll_id, type_id, entity_id)
- form_data_dict['Type_uri'] = TestBaseUri + "/c/%s/d/%s/%s/"%(coll_id, type_id, entity_id)
+ form_data_dict['Type_uri'] = type_url
form_data_dict['orig_id'] = entity_id
if type_id:
form_data_dict['entity_type'] = type_id
diff --git a/src/annalist_root/annalist/tests/test_entitygenericedit.py b/src/annalist_root/annalist/tests/test_entitygenericedit.py
index 4cd95452c..53d945574 100644
--- a/src/annalist_root/annalist/tests/test_entitygenericedit.py
+++ b/src/annalist_root/annalist/tests/test_entitygenericedit.py
@@ -44,6 +44,7 @@
site_dir, collection_dir,
continuation_url_param,
collection_edit_url,
+ collection_entity_view_url,
site_title,
render_select_options,
create_test_user
@@ -115,6 +116,7 @@ def _create_entity_data(self, entity_id, update="Entity"):
def _check_entity_data_values(self, entity_id, type_id="testtype", update="Entity", update_dict=None):
"Helper function checks content of form-updated record type entry with supplied entity_id"
+ # log.info("_check_entity_data_values: type_id %s, entity_id %s"%(type_id, entity_id))
typeinfo = EntityTypeInfo(self.testsite, self.testcoll, type_id)
self.assertTrue(typeinfo.entityclass.exists(typeinfo.entityparent, entity_id))
e = typeinfo.entityclass.load(typeinfo.entityparent, entity_id)
@@ -244,7 +246,7 @@ def test_get_form_rendering(self):
+ value="%(default_entity_url)s"/>
@@ -317,11 +319,12 @@ def test_get_new(self):
self.assertEqual(r.status_code, 200)
self.assertEqual(r.reason_phrase, "OK")
# Test context
+ view_url = collection_entity_view_url(coll_id="testcoll", type_id="testtype", entity_id="00000001")
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['orig_id'], "00000001")
- self.assertEqual(r.context['entity_url'], TestHostUri + entity_url(entity_id="00000001"))
+ self.assertEqual(r.context['entity_url'], view_url)
self.assertEqual(r.context['action'], "new")
self.assertEqual(r.context['continuation_url'], "/xyzzy/")
# Fields
@@ -390,7 +393,7 @@ def test_get_new(self):
self.assertEqual(r.context['fields'][3]['field_render_edit'], "field/annalist_edit_identifier.html")
self.assertEqual(r.context['fields'][3]['field_placement'].field, "small-12 columns")
self.assertEqual(r.context['fields'][3]['field_value_type'], "annal:Identifier")
- self.assertEqual(r.context['fields'][3]['field_value'], TestBaseUri + "/c/testcoll/d/testtype/00000001/")
+ self.assertEqual(r.context['fields'][3]['field_value'], view_url)
self.assertEqual(r.context['fields'][3]['options'], self.no_options)
# 5th field - view id
view_id_help = (
@@ -432,11 +435,12 @@ def test_get_new_no_continuation(self):
self.assertEqual(r.status_code, 200)
self.assertEqual(r.reason_phrase, "OK")
# Test context
+ view_url = collection_entity_view_url(coll_id="testcoll", type_id="testtype", entity_id="00000001")
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['orig_id'], "00000001")
- self.assertEqual(r.context['entity_url'], TestHostUri + entity_url(entity_id="00000001"))
+ self.assertEqual(r.context['entity_url'], view_url)
self.assertEqual(r.context['action'], "new")
self.assertEqual(r.context['continuation_url'], "")
return
@@ -449,11 +453,12 @@ def test_get_edit(self):
self.assertEqual(r.reason_phrase, "OK")
self.assertContains(r, "'testtype' data in collection 'testcoll'
")
# Test context
+ view_url = collection_entity_view_url(coll_id="testcoll", type_id="testtype", entity_id="entity1")
self.assertEqual(r.context['coll_id'], "testcoll")
self.assertEqual(r.context['type_id'], "testtype")
self.assertEqual(r.context['entity_id'], "entity1")
self.assertEqual(r.context['orig_id'], "entity1")
- self.assertEqual(r.context['entity_url'], TestHostUri + entity_url("testcoll", "testtype", "entity1"))
+ self.assertEqual(r.context['entity_url'], view_url)
self.assertEqual(r.context['action'], "edit")
self.assertEqual(r.context['continuation_url'], "/xyzzy/")
# Fields
@@ -526,7 +531,7 @@ def test_get_edit(self):
self.assertEqual(r.context['fields'][3]['field_render_edit'], "field/annalist_edit_identifier.html")
self.assertEqual(r.context['fields'][3]['field_placement'].field, "small-12 columns")
self.assertEqual(r.context['fields'][3]['field_value_type'], "annal:Identifier")
- self.assertEqual(r.context['fields'][3]['field_value'], TestBaseUri + "/c/testcoll/d/testtype/entity1/")
+ self.assertEqual(r.context['fields'][3]['field_value'], view_url)
self.assertEqual(r.context['fields'][3]['options'], self.no_options)
# 5th field - view id
type_uri_help = (
@@ -708,6 +713,7 @@ def test_new_entity_default_type(self):
# Check new entity data created
self._check_entity_data_values("newentity", type_id="Default_type", update_dict=
{ '@type': ['annal:Default_type', 'annal:EntityData']
+ , 'annal:uri': f['Type_uri'] # because using Type_view
})
return
@@ -726,13 +732,13 @@ def create_new_type(self, coll_id, type_id):
self.assertTrue(RecordType.exists(self.testcoll, type_id))
return
- def test_new_entity_new_typedata(self):
+ def test_new_entity_new_recorddata(self):
# Checks logic for creating an entity which may require creation of new recorddata
self.create_new_type("testcoll", "newtype")
# Create new entity
self.assertFalse(EntityData.exists(self.testdata, "newentity"))
- f = entitydata_recordtype_view_form_data(entity_id="newentity", type_id="newtype", action="new")
- u = entitydata_edit_url("new", "testcoll", "newtype", view_id="Type_view")
+ f = entitydata_default_view_form_data(entity_id="newentity", type_id="newtype", action="new")
+ u = entitydata_edit_url("new", "testcoll", "newtype", view_id="Default_view")
r = self.client.post(u, f)
self.assertEqual(r.status_code, 302)
self.assertEqual(r.reason_phrase, "FOUND")
diff --git a/src/annalist_root/annalist/views/entityedit.py b/src/annalist_root/annalist/views/entityedit.py
index 15d9c297c..3e6f8210f 100644
--- a/src/annalist_root/annalist/views/entityedit.py
+++ b/src/annalist_root/annalist/views/entityedit.py
@@ -543,7 +543,7 @@ def save_entity(self,
else:
new_typeinfo = typeinfo
new_parent = orig_parent
- # log.info("new_parent%r"%(new_parent))
+ # log.info("new_parent %r"%(new_parent.get_id()))
# Check existence of entity to save according to action performed
if (action in ["new", "copy"]) or entity_id_changed:
@@ -567,6 +567,7 @@ def save_entity(self,
# Note: form data is applied as update to original entity data so that
# values not in view are preserved.
entity_values = orig_entity.get_values() if orig_entity else {}
+ # log.info("orig entity_values %r"%(entity_values,))
if new_typeinfo.recordtype and ANNAL.CURIE.uri in new_typeinfo.recordtype:
typeuri = new_typeinfo.recordtype.get(ANNAL.CURIE.uri, None)
entity_values['@type'] = typeuri # NOTE: previous types not carried forward
@@ -578,8 +579,7 @@ def save_entity(self,
entity_values.update(entityvaluemap.map_form_data_to_values(form_data))
entity_values[ANNAL.CURIE.type_id] = entity_type_id
entity_values[ANNAL.CURIE.type] = new_typeinfo.entityclass._entitytype
- # log.info("orig_entity values%r"%(entity_values))
- # log.info("entity_values%r"%(entity_values))
+ # log.info("save entity_values%r"%(entity_values))
# If saving view description, ensure all property URIs are unique
#