Skip to content

Commit ba20179

Browse files
Merge pull request #794 from open5e/461-determine-a-structure-for-equivalent-concepts-across-systems
461 determine a structure for equivalent concepts across systems
2 parents b2eac29 + 129d872 commit ba20179

File tree

74 files changed

+2916
-792
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+2916
-792
lines changed

api_v2/admin.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ class LanguageAdmin(admin.ModelAdmin):
9090
admin.site.register(GameSystem)
9191

9292
admin.site.register(DamageType)
93+
admin.site.register(DamageTypeDescription)
9394

9495
admin.site.register(Language)
9596

@@ -100,13 +101,6 @@ class LanguageAdmin(admin.ModelAdmin):
100101

101102
admin.site.register(Condition)
102103

103-
class ConditionConceptAdmin(admin.ModelAdmin):
104-
list_display = ['key', 'name']
105-
filter_horizontal = ['conditions']
106-
search_fields = ['key', 'name', 'desc']
107-
108-
admin.site.register(ConditionConcept, ConditionConceptAdmin)
109-
110104
admin.site.register(ClassFeatureItem)
111105
admin.site.register(ClassFeature, admin_class=ClassFeatureAdmin)
112106
admin.site.register(CharacterClass)

api_v2/management/commands/export.py

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,6 @@ def handle(self, *args, **options) -> None:
124124

125125
for model in app_models:
126126
SKIPPED_MODEL_NAMES = ['Document', 'GameSystem', 'License', 'Publisher','SearchResult']
127-
CONCEPT_MODEL_NAMES = ['ConditionConcept'] # These are synthetic/concept models not tied to documents
128127
CHILD_MODEL_NAMES = ['SpeciesTrait', 'FeatBenefit', 'BackgroundBenefit', 'ClassFeatureItem', 'SpellCastingOption','CreatureAction', 'CreatureTrait']
129128
CHILD_CHILD_MODEL_NAMES = ['CreatureActionAttack']
130129

@@ -148,23 +147,6 @@ def handle(self, *args, **options) -> None:
148147
self.stdout.write(self.style.SUCCESS(
149148
'Wrote {} to {}'.format(doc.key, doc_path)))
150149

151-
# Export concept models (synthetic objects that aggregate across systems)
152-
concept_models = ['ConditionConcept'] # Add other concept models here as they're created
153-
for concept_model_name in concept_models:
154-
try:
155-
model = apps.get_model('api_v2', concept_model_name)
156-
concept_queryset = model.objects.all().order_by('pk')
157-
concept_path = get_filepath_by_model(
158-
concept_model_name,
159-
'api_v2',
160-
base_path=options['dir'],
161-
format=options['format'])
162-
write_queryset_data(concept_path, concept_queryset, format=options['format'])
163-
self.stdout.write(self.style.SUCCESS(f'Exported {concept_model_name} concept objects'))
164-
except LookupError:
165-
# Model doesn't exist yet, skip it
166-
self.stdout.write(self.style.WARNING(f'Concept model {concept_model_name} not found, skipping'))
167-
168150
self.stdout.write(self.style.SUCCESS('Data for v2 data complete.'))
169151

170152

@@ -176,7 +158,7 @@ def get_filepath_by_model(model_name, app_label, pub_key=None, doc_key=None, bas
176158

177159
if app_label == "api_v2":
178160
root_folder_name = 'v2'
179-
root_models = ['License', 'GameSystem', 'ConditionConcept'] # Concept models are exported at root level
161+
root_models = ['License', 'GameSystem'] # Concept models are exported at root level
180162
pub_models = ['Publisher']
181163

182164
if model_name in root_models:

api_v2/management/commands/populate_concepts.py

Lines changed: 0 additions & 75 deletions
This file was deleted.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Generated by Django 5.2.1 on 2025-09-01 11:12
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+
('api_v2', '0052_merge_20250615_2121'),
11+
]
12+
13+
operations = [
14+
migrations.RemoveField(
15+
model_name='damagetype',
16+
name='desc',
17+
),
18+
migrations.CreateModel(
19+
name='DamageTypeDescription',
20+
fields=[
21+
('desc', models.TextField(help_text='Description of the game content item. Markdown.')),
22+
('key', models.CharField(help_text='Unique key for the Item.', max_length=100, primary_key=True, serialize=False)),
23+
('describes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api_v2.damagetype')),
24+
('document', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api_v2.document')),
25+
],
26+
options={
27+
'abstract': False,
28+
},
29+
),
30+
]
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Generated by Django 5.2.1 on 2025-09-01 11:55
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+
('api_v2', '0053_remove_damagetype_desc_damagetypedescription'),
11+
]
12+
13+
operations = [
14+
migrations.RemoveField(
15+
model_name='creaturetype',
16+
name='desc',
17+
),
18+
migrations.CreateModel(
19+
name='CreatureTypeDescription',
20+
fields=[
21+
('desc', models.TextField(help_text='Description of the game content item. Markdown.')),
22+
('key', models.CharField(help_text='Unique key for the Item.', max_length=100, primary_key=True, serialize=False)),
23+
('describes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api_v2.creaturetype')),
24+
('document', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api_v2.document')),
25+
],
26+
options={
27+
'abstract': False,
28+
},
29+
),
30+
]
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Generated by Django 5.2.1 on 2025-09-01 12:13
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+
('api_v2', '0054_remove_creaturetype_desc_creaturetypedescription'),
11+
]
12+
13+
operations = [
14+
migrations.RemoveField(
15+
model_name='ability',
16+
name='desc',
17+
),
18+
migrations.RemoveField(
19+
model_name='skill',
20+
name='desc',
21+
),
22+
migrations.CreateModel(
23+
name='AbilityDescription',
24+
fields=[
25+
('desc', models.TextField(help_text='Description of the game content item. Markdown.')),
26+
('key', models.CharField(help_text='Unique key for the Item.', max_length=100, primary_key=True, serialize=False)),
27+
('describes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api_v2.ability')),
28+
('document', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api_v2.document')),
29+
],
30+
options={
31+
'abstract': False,
32+
},
33+
),
34+
migrations.CreateModel(
35+
name='SkillDescription',
36+
fields=[
37+
('desc', models.TextField(help_text='Description of the game content item. Markdown.')),
38+
('key', models.CharField(help_text='Unique key for the Item.', max_length=100, primary_key=True, serialize=False)),
39+
('describes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api_v2.skill')),
40+
('document', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api_v2.document')),
41+
],
42+
options={
43+
'abstract': False,
44+
},
45+
),
46+
]
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Generated by Django 5.2.1 on 2025-09-01 12:37
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+
('api_v2', '0055_remove_ability_desc_remove_skill_desc_and_more'),
11+
]
12+
13+
operations = [
14+
migrations.RemoveField(
15+
model_name='alignment',
16+
name='desc',
17+
),
18+
migrations.CreateModel(
19+
name='AlignmentTypeDescription',
20+
fields=[
21+
('desc', models.TextField(help_text='Description of the game content item. Markdown.')),
22+
('key', models.CharField(help_text='Unique key for the Item.', max_length=100, primary_key=True, serialize=False)),
23+
('describes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api_v2.alignment')),
24+
('document', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api_v2.document')),
25+
],
26+
options={
27+
'abstract': False,
28+
},
29+
),
30+
]
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Generated by Django 5.2.1 on 2025-09-01 12:44
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('api_v2', '0056_remove_alignment_desc_alignmenttypedescription'),
10+
]
11+
12+
operations = [
13+
migrations.RenameModel(
14+
old_name='AlignmentTypeDescription',
15+
new_name='AlignmentDescription',
16+
),
17+
]
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Generated by Django 5.2.1 on 2025-09-20 20:40
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('api_v2', '0057_rename_alignmenttypedescription_alignmentdescription'),
10+
]
11+
12+
operations = [
13+
migrations.DeleteModel(
14+
name='ConditionConcept',
15+
),
16+
]
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Generated by Django 5.2.1 on 2025-09-20 21:05
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+
('api_v2', '0058_delete_conditionconcept'),
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name='ConditionDescription',
16+
fields=[
17+
('desc', models.TextField(help_text='Description of the game content item. Markdown.')),
18+
('key', models.CharField(help_text='Unique key for the Item.', max_length=100, primary_key=True, serialize=False)),
19+
('describes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api_v2.condition')),
20+
('document', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api_v2.document')),
21+
],
22+
options={
23+
'abstract': False,
24+
},
25+
),
26+
]

0 commit comments

Comments
 (0)