Skip to content

Commit b175bf3

Browse files
Improve ResourceXResource field and related names #11869 (#11976)
Co-authored-by: Galen <[email protected]>
1 parent 4967576 commit b175bf3

File tree

14 files changed

+271
-155
lines changed

14 files changed

+271
-155
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
# Generated by Django 5.2 on 2025-04-15 09:08
2+
3+
import django.db.models.deletion
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
("models", "11873_model_ordering"),
11+
]
12+
13+
operations = [
14+
migrations.RenameField(
15+
model_name="resourcexresource",
16+
old_name="nodeid",
17+
new_name="node",
18+
),
19+
migrations.RenameField(
20+
model_name="resourcexresource",
21+
old_name="resourceinstanceidfrom",
22+
new_name="from_resource",
23+
),
24+
migrations.RenameField(
25+
model_name="resourcexresource",
26+
old_name="resourceinstancefrom_graphid",
27+
new_name="from_resource_graph",
28+
),
29+
migrations.RenameField(
30+
model_name="resourcexresource",
31+
old_name="resourceinstanceidto",
32+
new_name="to_resource",
33+
),
34+
migrations.RenameField(
35+
model_name="resourcexresource",
36+
old_name="resourceinstanceto_graphid",
37+
new_name="to_resource_graph",
38+
),
39+
migrations.RenameField(
40+
model_name="resourcexresource",
41+
old_name="tileid",
42+
new_name="tile",
43+
),
44+
migrations.AlterField(
45+
model_name="resourcexresource",
46+
name="node",
47+
field=models.ForeignKey(
48+
blank=True,
49+
db_column="nodeid",
50+
null=True,
51+
on_delete=django.db.models.deletion.CASCADE,
52+
related_name="resxres",
53+
to="models.node",
54+
),
55+
),
56+
migrations.AlterField(
57+
model_name="resourcexresource",
58+
name="from_resource",
59+
field=models.ForeignKey(
60+
blank=True,
61+
db_column="resourceinstanceidfrom",
62+
db_constraint=False,
63+
null=True,
64+
on_delete=django.db.models.deletion.CASCADE,
65+
related_name="from_resxres",
66+
to="models.resourceinstance",
67+
),
68+
),
69+
migrations.AlterField(
70+
model_name="resourcexresource",
71+
name="from_resource_graph",
72+
field=models.ForeignKey(
73+
blank=True,
74+
db_column="resourceinstancefrom_graphid",
75+
db_constraint=False,
76+
null=True,
77+
on_delete=django.db.models.deletion.CASCADE,
78+
related_name="from_resxres",
79+
to="models.graphmodel",
80+
),
81+
),
82+
migrations.AlterField(
83+
model_name="resourcexresource",
84+
name="to_resource",
85+
field=models.ForeignKey(
86+
blank=True,
87+
db_column="resourceinstanceidto",
88+
db_constraint=False,
89+
null=True,
90+
on_delete=django.db.models.deletion.CASCADE,
91+
related_name="to_resxres",
92+
to="models.resourceinstance",
93+
),
94+
),
95+
migrations.AlterField(
96+
model_name="resourcexresource",
97+
name="to_resource_graph",
98+
field=models.ForeignKey(
99+
blank=True,
100+
db_column="resourceinstanceto_graphid",
101+
db_constraint=False,
102+
null=True,
103+
on_delete=django.db.models.deletion.CASCADE,
104+
related_name="to_resxres",
105+
to="models.graphmodel",
106+
),
107+
),
108+
migrations.AlterField(
109+
model_name="resourcexresource",
110+
name="tile",
111+
field=models.ForeignKey(
112+
blank=True,
113+
db_column="tileid",
114+
null=True,
115+
on_delete=django.db.models.deletion.CASCADE,
116+
related_name="resxres",
117+
to="models.tilemodel",
118+
),
119+
),
120+
migrations.RemoveField(
121+
model_name="resourcexresource",
122+
name="datestarted",
123+
),
124+
migrations.RemoveField(
125+
model_name="resourcexresource",
126+
name="dateended",
127+
),
128+
]

arches/app/models/models.py

+18-20
Original file line numberDiff line numberDiff line change
@@ -1241,93 +1241,91 @@ class ResourceXResource(SaveSupportsBlindOverwriteMixin, models.Model):
12411241
resourcexid = models.UUIDField(
12421242
primary_key=True, default=uuid.uuid4, db_default=UUID4()
12431243
)
1244-
resourceinstanceidfrom = models.ForeignKey(
1244+
from_resource = models.ForeignKey(
12451245
"ResourceInstance",
12461246
db_column="resourceinstanceidfrom",
12471247
blank=True,
12481248
null=True,
1249-
related_name="resxres_resource_instance_ids_from",
1249+
related_name="from_resxres",
12501250
on_delete=models.CASCADE,
12511251
db_constraint=False,
12521252
)
1253-
resourceinstancefrom_graphid = models.ForeignKey(
1253+
from_resource_graph = models.ForeignKey(
12541254
"GraphModel",
12551255
db_column="resourceinstancefrom_graphid",
12561256
blank=True,
12571257
null=True,
1258-
related_name="resxres_resource_instance_fom_graph_id",
1258+
related_name="from_resxres",
12591259
on_delete=models.CASCADE,
12601260
db_constraint=False,
12611261
)
1262-
resourceinstanceidto = models.ForeignKey(
1262+
to_resource = models.ForeignKey(
12631263
"ResourceInstance",
12641264
db_column="resourceinstanceidto",
12651265
blank=True,
12661266
null=True,
1267-
related_name="resxres_resource_instance_ids_to",
1267+
related_name="to_resxres",
12681268
on_delete=models.CASCADE,
12691269
db_constraint=False,
12701270
)
1271-
resourceinstanceto_graphid = models.ForeignKey(
1271+
to_resource_graph = models.ForeignKey(
12721272
"GraphModel",
12731273
db_column="resourceinstanceto_graphid",
12741274
blank=True,
12751275
null=True,
1276-
related_name="resxres_resource_instance_to_graph_id",
1276+
related_name="to_resxres",
12771277
on_delete=models.CASCADE,
12781278
db_constraint=False,
12791279
)
12801280

12811281
notes = models.TextField(blank=True, null=True)
12821282
relationshiptype = models.TextField(blank=True, null=True)
12831283
inverserelationshiptype = models.TextField(blank=True, null=True)
1284-
tileid = models.ForeignKey(
1284+
tile = models.ForeignKey(
12851285
"TileModel",
12861286
db_column="tileid",
12871287
blank=True,
12881288
null=True,
1289-
related_name="resxres_tile_id",
1289+
related_name="resxres",
12901290
on_delete=models.CASCADE,
12911291
)
1292-
nodeid = models.ForeignKey(
1292+
node = models.ForeignKey(
12931293
"Node",
12941294
db_column="nodeid",
12951295
blank=True,
12961296
null=True,
1297-
related_name="resxres_node_id",
1297+
related_name="resxres",
12981298
on_delete=models.CASCADE,
12991299
)
1300-
datestarted = models.DateField(blank=True, null=True)
1301-
dateended = models.DateField(blank=True, null=True)
13021300
created = models.DateTimeField()
13031301
modified = models.DateTimeField()
13041302

13051303
def delete(self, *args, **kwargs):
13061304
# update the resource-instance tile by removing any references to a deleted resource
13071305
deletedResourceId = kwargs.pop("deletedResourceId", None)
1308-
if deletedResourceId and self.tileid and self.nodeid:
1306+
if deletedResourceId and self.tile and self.node:
13091307
newTileData = []
1310-
data = self.tileid.data[str(self.nodeid_id)]
1308+
data = self.tile.data[str(self.node_id)]
13111309
if type(data) != list:
13121310
data = [data]
13131311
for relatedresourceItem in data:
13141312
if relatedresourceItem:
13151313
if relatedresourceItem["resourceId"] != str(deletedResourceId):
13161314
newTileData.append(relatedresourceItem)
1317-
self.tileid.data[str(self.nodeid_id)] = newTileData
1318-
self.tileid.save()
1315+
self.tile.data[str(self.node_id)] = newTileData
1316+
self.tile.save()
13191317

13201318
super(ResourceXResource, self).delete()
13211319

13221320
def save(self, **kwargs):
13231321
# during package/csv load the ResourceInstance models are not always available
13241322
try:
1325-
self.resourceinstancefrom_graphid = self.resourceinstanceidfrom.graph
1323+
self.from_resource_graph = self.from_resource.graph
13261324
except:
13271325
pass
13281326

13291327
try:
1330-
self.resourceinstanceto_graphid = self.resourceinstanceidto.graph
1328+
self.to_resource_graph = self.to_resource.graph
13311329
except:
13321330
pass
13331331

arches/app/models/resource.py

+23-23
Original file line numberDiff line numberDiff line change
@@ -713,8 +713,8 @@ def delete(self, user={}, index=True, transaction_id=None):
713713

714714
if permit_deletion is True:
715715
for related_resource in models.ResourceXResource.objects.filter(
716-
Q(resourceinstanceidfrom=self.resourceinstanceid)
717-
| Q(resourceinstanceidto=self.resourceinstanceid)
716+
Q(from_resource_id=self.resourceinstanceid)
717+
| Q(to_resource_id=self.resourceinstanceid)
718718
):
719719
related_resource.delete(deletedResourceId=self.resourceinstanceid)
720720

@@ -875,17 +875,17 @@ def get_relations(
875875
limit,
876876
resourceinstance_graphid=None,
877877
):
878-
final_query = Q(resourceinstanceidfrom_id=resourceinstanceid) | Q(
879-
resourceinstanceidto_id=resourceinstanceid
878+
final_query = Q(from_resource_id=resourceinstanceid) | Q(
879+
to_resource_id=resourceinstanceid
880880
)
881881

882882
if resourceinstance_graphid:
883-
to_graph_id_filter = Q(
884-
resourceinstancefrom_graphid_id=str(self.graph_id)
885-
) & Q(resourceinstanceto_graphid_id=resourceinstance_graphid)
883+
to_graph_id_filter = Q(from_resource_graph_id=str(self.graph_id)) & Q(
884+
to_resource_graph_id=resourceinstance_graphid
885+
)
886886
from_graph_id_filter = Q(
887-
resourceinstancefrom_graphid_id=resourceinstance_graphid
888-
) & Q(resourceinstanceto_graphid_id=str(self.graph_id))
887+
from_resource_graph_id=resourceinstance_graphid
888+
) & Q(to_resource_graph_id=str(self.graph_id))
889889
final_query = final_query & (to_graph_id_filter | from_graph_id_filter)
890890

891891
return (
@@ -916,8 +916,8 @@ def get_relations(
916916
)
917917
all_resource_ids = set()
918918
for relation in resource_relations["relations"]:
919-
all_resource_ids.add(str(relation.resourceinstanceidto_id))
920-
all_resource_ids.add(str(relation.resourceinstanceidfrom_id))
919+
all_resource_ids.add(str(relation.to_resource_id))
920+
all_resource_ids.add(str(relation.from_resource_id))
921921
exclusive_set, filtered_instances = get_filtered_instances(
922922
user, se, resources=list(all_resource_ids)
923923
)
@@ -926,13 +926,13 @@ def get_relations(
926926

927927
for relation in resource_relations["relations"]:
928928
relation = model_to_dict(relation)
929-
resourceid_to = relation["resourceinstanceidto"]
930-
resourceid_from = relation["resourceinstanceidfrom"]
931-
resourceinstanceto_graphid = relation["resourceinstanceto_graphid"]
932-
resourceinstancefrom_graphid = relation["resourceinstancefrom_graphid"]
929+
to_resource = relation["to_resource"]
930+
from_resource = relation["from_resource"]
931+
to_resource_graph = relation["to_resource_graph"]
932+
from_resource_graph = relation["from_resource_graph"]
933933

934-
resourceid_to_permission = str(resourceid_to) not in filtered_instances
935-
resourceid_from_permission = str(resourceid_from) not in filtered_instances
934+
resourceid_to_permission = str(to_resource) not in filtered_instances
935+
resourceid_from_permission = str(from_resource) not in filtered_instances
936936

937937
if exclusive_set:
938938
resourceid_to_permission = not (resourceid_to_permission)
@@ -941,8 +941,8 @@ def get_relations(
941941
if (
942942
resourceid_to_permission
943943
and resourceid_from_permission
944-
and str(resourceinstanceto_graphid) in readable_graphids
945-
and str(resourceinstancefrom_graphid) in readable_graphids
944+
and str(to_resource_graph) in readable_graphids
945+
and str(from_resource_graph) in readable_graphids
946946
):
947947
permitted_relation_dicts.append(relation)
948948
else:
@@ -991,8 +991,8 @@ def get_relations(
991991
)
992992

993993
ret["resource_relationships"].append(relation)
994-
instanceids.add(str(resourceid_to))
995-
instanceids.add(str(resourceid_from))
994+
instanceids.add(str(to_resource))
995+
instanceids.add(str(from_resource))
996996

997997
if str(self.resourceinstanceid) in instanceids:
998998
instanceids.remove(str(self.resourceinstanceid))
@@ -1009,8 +1009,8 @@ def get_relations(
10091009
models.ResourceInstance.objects.filter(pk__in=related_resource_ids)
10101010
.annotate(
10111011
total_relations=(
1012-
Count("resxres_resource_instance_ids_from", distinct=True)
1013-
+ Count("resxres_resource_instance_ids_to", distinct=True)
1012+
Count("from_resxres", distinct=True)
1013+
+ Count("to_resxres", distinct=True)
10141014
)
10151015
)
10161016
.only("pk")

arches/app/utils/data_management/resources/formats/csvfile.py

+8-19
Original file line numberDiff line numberDiff line change
@@ -305,15 +305,13 @@ def write_resource_relations(self, file_name):
305305
dest = StringIO()
306306
csv_header = [
307307
"resourcexid",
308-
"resourceinstanceidfrom",
309-
"resourceinstanceidto",
308+
"from_resource",
309+
"to_resource",
310310
"relationshiptype",
311-
"resourceinstancefrom_graphid",
312-
"resourceinstanceto_graphid",
313-
"nodeid",
314-
"tileid",
315-
"datestarted",
316-
"dateended",
311+
"from_resource_graph",
312+
"to_resource_graph",
313+
"node",
314+
"tile",
317315
"notes",
318316
]
319317
csvwriter = csv.DictWriter(dest, delimiter=",", fieldnames=csv_header)
@@ -322,19 +320,10 @@ def write_resource_relations(self, file_name):
322320
relations_file.append({"name": csv_name, "outputfile": dest})
323321

324322
relations = ResourceXResource.objects.filter(
325-
Q(resourceinstanceidfrom__in=resourceids)
326-
| Q(resourceinstanceidto__in=resourceids),
327-
tileid__isnull=True,
323+
Q(from_resource_id__in=resourceids) | Q(to_resource_id__in=resourceids),
324+
tile__isnull=True,
328325
).values(*csv_header)
329326
for relation in relations:
330-
relation["datestarted"] = (
331-
relation["datestarted"]
332-
if relation["datestarted"] is not None
333-
else ""
334-
)
335-
relation["dateended"] = (
336-
relation["dateended"] if relation["dateended"] is not None else ""
337-
)
338327
relation["notes"] = (
339328
relation["notes"] if relation["notes"] is not None else ""
340329
)

0 commit comments

Comments
 (0)