Skip to content

Commit

Permalink
Merge pull request #49 from CentreForDigitalHumanities/feature/source…
Browse files Browse the repository at this point in the history
…-description-split-2-contd

source description split (gifts, letters)
  • Loading branch information
lukavdplas authored Apr 18, 2024
2 parents 5dd7556 + 4f19004 commit 2ec47c5
Show file tree
Hide file tree
Showing 14 changed files with 625 additions and 214 deletions.
22 changes: 12 additions & 10 deletions backend/conftest.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import pytest
from case_study.models import CaseStudy
from letter.models import Letter
from letter.models import LetterDescription
from event.models import (
EpistolaryEvent,
LetterAction,
Expand All @@ -18,10 +18,12 @@ def source(db):


@pytest.fixture()
def letter(db):
letter = Letter.objects.create()
letter.name = "letter for testing"
letter.save()
def letter_description(db, source, agent_description):
letter = LetterDescription.objects.create(
name="Bert's letter",
source=source,
)
letter.senders.add(agent_description)
return letter


Expand Down Expand Up @@ -62,9 +64,9 @@ def agent_group_description(db, source, historical_person, historical_person_2):


@pytest.fixture()
def letter_action_writing(db, letter):
def letter_action_writing(db, letter_description):
letter_action = LetterAction.objects.create()
letter_action.letters.add(letter)
# letter_action.letters.add(letter_description)
# letter_action.actors.add(agent)

LetterActionCategory.objects.create(
Expand All @@ -80,9 +82,9 @@ def letter_action_writing(db, letter):


@pytest.fixture()
def letter_action_reading(db, letter):
def letter_action_reading(db, letter_description):
letter_action = LetterAction.objects.create()
letter_action.letters.add(letter)
# letter_action.letters.add(letter_description)
# letter_action.actors.add(agent_2)

LetterActionCategory.objects.create(
Expand All @@ -104,7 +106,7 @@ def case_study(db):


@pytest.fixture()
def epistolary_event(db, letter, case_study):
def epistolary_event(db, letter_description, case_study):
epistolary_event = EpistolaryEvent.objects.create(
name="Test Epistolary event", note="Test note"
)
Expand Down
10 changes: 10 additions & 0 deletions backend/core/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,13 @@
"source_location",
"source_terminology",
] + field_fields


class EntityDescriptionAdmin(admin.ModelAdmin):
list_display = ["name", "description", "source"]
list_filter = ["source"]
search_fields = ["name", "description"]
fieldsets = [
named_fieldset,
description_source_fieldset,
]
4 changes: 2 additions & 2 deletions backend/core/management/commands/create_dev_dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -257,9 +257,9 @@ def _create_letters(self, fake: Faker, *args, **kwargs):
@track_progress
def _create_letter_actions(self, fake: Faker, *args, **kwargs):
action = LetterAction.objects.create()
action.letters.set(get_random_model_objects(Letter, min_amount=1, max_amount=5))
# action.letters.set(get_random_model_objects(Letter, min_amount=1, max_amount=5))

action.gifts.set(get_random_model_objects(Gift, min_amount=0, max_amount=5))
# action.gifts.set(get_random_model_objects(Gift, min_amount=0, max_amount=5))

action.epistolary_events.set(
get_random_model_objects(EpistolaryEvent, min_amount=0, max_amount=5)
Expand Down
26 changes: 13 additions & 13 deletions backend/event/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,26 +32,26 @@ class EventDateAdmin(admin.StackedInline):
# verbose_name_plural = "agents/roles involved"


class LetterActionLettersAdmin(admin.StackedInline):
model = models.LetterAction.letters.through
extra = 0
verbose_name = "letter"
verbose_name_plural = "letters"
# class LetterActionLettersAdmin(admin.StackedInline):
# model = models.LetterAction.letters.through
# extra = 0
# verbose_name = "letter"
# verbose_name_plural = "letters"

class LetterActionGiftsAdmin(admin.StackedInline):
model = models.LetterAction.gifts.through
extra = 0
verbose_name = "gift"
verbose_name_plural = "gifts"
# class LetterActionGiftsAdmin(admin.StackedInline):
# model = models.LetterAction.gifts.through
# extra = 0
# verbose_name = "gift"
# verbose_name_plural = "gifts"

@admin.register(models.LetterAction)
class LetterActionAdmin(admin.ModelAdmin):
filter_horizontal = ["epistolary_events", "gifts", "space_descriptions"]
filter_horizontal = ["epistolary_events", "space_descriptions"]
list_display=["description", "display_date"]
inlines = [
LetterActionLettersAdmin,
# LetterActionLettersAdmin,
LetterActionCategoryAdmin,
LetterActionGiftsAdmin,
# LetterActionGiftsAdmin,
EventDateAdmin,
# RoleAdmin,
]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Generated by Django 4.2.7 on 2024-04-10 12:52

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('event', '0010_remove_letteraction_actors_delete_role'),
]

operations = [
migrations.RemoveField(
model_name='letteraction',
name='gifts',
),
migrations.RemoveField(
model_name='letteraction',
name='letters',
),
]
28 changes: 14 additions & 14 deletions backend/event/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from core.models import Field, LettercraftDate
from case_study.models import CaseStudy
# from person.models import Agent
from letter.models import Gift, Letter
# from letter.models import Gift, Letter
from space.models import SpaceDescription

class EpistolaryEvent(models.Model):
Expand Down Expand Up @@ -59,11 +59,11 @@ class LetterAction(models.Model):
These can be grouped into epistolary events.
"""

letters = models.ManyToManyField(
to=Letter,
related_name="events",
help_text="letters involved in this event",
)
# letters = models.ManyToManyField(
# to=Letter,
# related_name="events",
# help_text="letters involved in this event",
# )

# actors = models.ManyToManyField(
# to=Agent,
Expand All @@ -77,12 +77,12 @@ class LetterAction(models.Model):
help_text="epistolary events this letter action belongs to",
)

gifts = models.ManyToManyField(
to=Gift,
related_name="letter_actions",
help_text="Gifts associated to this letter action",
blank=True,
)
# gifts = models.ManyToManyField(
# to=Gift,
# related_name="letter_actions",
# help_text="Gifts associated to this letter action",
# blank=True,
# )

space_descriptions = models.ManyToManyField(
to=SpaceDescription,
Expand All @@ -101,8 +101,8 @@ def description(self):
categories = self.categories.all()
category_names = [category.get_value_display() for category in categories]
category_desc = ", ".join(category_names)
letters = ", ".join(letter.__str__() for letter in self.letters.all())
return f"{category_desc} of {letters}"
# letters = ", ".join(letter.__str__() for letter in self.letters.all())
return f"{category_desc}"

def __str__(self):
return f"{self.description} ({self.display_date})"
Expand Down
20 changes: 10 additions & 10 deletions backend/event/tests/test_event_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,32 @@
)


def test_letter_action_name(letter, letter_action_writing):
def test_letter_action_name(letter_description, letter_action_writing):
letter_action_writing.date.year_exact = 500
letter_action_writing.save()
action_str = str(letter_action_writing)

assert str(action_str) == f"writing of {str(letter)} (500)"
# assert str(action_str) == f"writing of {str(letter_description)} (500)"


def test_letter_event_date_with_exact_date(letter_action_reading):
letter_action_reading.date.year_exact = 500
letter_action_reading.save()
assert (
str(letter_action_reading)
== f"reading of {str(letter_action_reading.letters.first())} (500)"
)
# assert (
# str(letter_action_reading)
# == f"reading of {str(letter_action_reading.letters.first())} (500)"
# )


def test_letter_event_date_with_date_range(letter_action_reading):
letter_action_reading.date.year_lower = 500
letter_action_reading.date.year_upper = 600
letter_action_reading.save()

assert (
str(letter_action_reading)
== f"reading of {str(letter_action_reading.letters.first())} (c. 500–600)"
)
# assert (
# str(letter_action_reading)
# == f"reading of {str(letter_action_reading.letters.first())} (c. 500–600)"
# )


def test_world_event(world_event):
Expand Down
101 changes: 70 additions & 31 deletions backend/letter/admin.py
Original file line number Diff line number Diff line change
@@ -1,53 +1,92 @@
from django.contrib import admin
from . import models
from core import admin as core_admin


@admin.register(models.GiftCategory)
class GiftCategoryAdmin(admin.ModelAdmin):
pass


class GiftDescriptionCategoryAdmin(admin.StackedInline):
model = models.GiftDescriptionCategory
fields = ["category"] + core_admin.description_field_fields
extra = 0
verbose_name = "category"
verbose_name_plural = "categories"


class GiftDescriptionSenderAdmin(admin.StackedInline):
model = models.GiftDescriptionSender
fields = ["agent"] + core_admin.description_field_fields
extra = 0
verbose_name = "sender"


class GiftDescriptionAddresseeAdmin(admin.StackedInline):
model = models.GiftDescriptionAddressee
fields = ["agent"] + core_admin.description_field_fields
extra = 0
verbose_name = "addressee"


@admin.register(models.GiftDescription)
class GiftDescriptionAdmin(core_admin.EntityDescriptionAdmin, admin.ModelAdmin):
inlines = [
GiftDescriptionCategoryAdmin,
GiftDescriptionSenderAdmin,
GiftDescriptionAddresseeAdmin,
]


@admin.register(models.Category)
class CategoryAdmin(admin.ModelAdmin):
fields = ["label", "description"]


class LetterMaterialAdmin(admin.StackedInline):
model = models.LetterMaterial
fields = ["surface", "certainty", "note"]


class LetterCategoryAdmin(admin.StackedInline):
model = models.LetterCategory
fields = ["letter", "category", "certainty", "note"]
class LetterDescriptionCategoryAdmin(admin.StackedInline):
model = models.LetterDescriptionCategory
fields = ["category"] + core_admin.description_field_fields
extra = 0
verbose_name = "category"
verbose_name_plural = "categories"


# class LetterSenderAdmin(admin.StackedInline):
# model = models.LetterSenders
# fields = ["letter", "senders", "certainty", "note"]
# filter_horizontal = ["senders"]
class LetterDescriptionSenderAdmin(admin.StackedInline):
model = models.LetterDescriptionSender
fields = ["agent"] + core_admin.description_field_fields
extra = 0
verbose_name = "sender"


# class LetterAddresseesAdmin(admin.StackedInline):
# model = models.LetterAddressees
# fields = ["letter", "addressees", "certainty", "note"]
# filter_horizontal = ["addressees"]
class LetterDescriptionAddresseeAdmin(admin.StackedInline):
model = models.LetterDescriptionAddressee
fields = ["agent"] + core_admin.description_field_fields
extra = 0
verbose_name = "addressee"


@admin.register(models.Letter)
class LetterAdmin(admin.ModelAdmin):
readonly_fields = ["date_active", "date_written"]
@admin.register(models.LetterDescription)
class LetterDescriptionAdmin(core_admin.EntityDescriptionAdmin, admin.ModelAdmin):
inlines = [
LetterCategoryAdmin,
# LetterMaterialAdmin,
# LetterSenderAdmin,
# LetterAddresseesAdmin,
LetterDescriptionCategoryAdmin,
LetterDescriptionSenderAdmin,
LetterDescriptionAddresseeAdmin,
]


class GiftLetterActionInline(admin.StackedInline):
model = models.Gift.letter_actions.through
class PreservedLetterRoleAdmin(admin.StackedInline):
model = models.PreservedLetterRole
fields = ["letter", "person"] + core_admin.field_fields
extra = 0
verbose_name_plural = "letter actions"
verbose_name = "relationship between a gift and an associated letter action"
verbose_name = "involved historical person"
verbose_name_plural = "involved historical persons"


@admin.register(models.Gift)
class GiftAdmin(admin.ModelAdmin):
fields = ["name", "description", "material"]
filter_horizontal = ["letter_actions"]
@admin.register(models.PreservedLetter)
class PreservedLetterAdmin(admin.ModelAdmin):
list_display = ["name", "description"]
fields = ["name", "description"]
inlines = [
PreservedLetterRoleAdmin,
]
Loading

0 comments on commit 2ec47c5

Please sign in to comment.