diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f4ce54bd..76bab405 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -40,7 +40,7 @@ jobs: - name: Install dependencies run: | sudo apt update - sudo apt install -y gdal-bin + sudo apt install -y gdal-bin graphviz libgraphviz-dev pkg-config python -m pip install --upgrade pip setuptools pip install -r requirements.txt - name: Test with pytest diff --git a/Dockerfile b/Dockerfile index 7ba12049..8adeb8ca 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,7 +20,8 @@ LABEL maintainer "DataMade " # https://docs.docker.com/develop/develop-images/dockerfile_best-practices RUN apt-get update && \ apt-get install -y --no-install-recommends \ - gettext binutils libproj-dev gdal-bin postgresql-client osm2pgsql make + gettext binutils libproj-dev gdal-bin postgresql-client osm2pgsql make \ + graphviz libgraphviz-dev pkg-config # Inside the container, create an app directory and switch into it RUN mkdir /app diff --git a/Makefile b/Makefile index afe94d8e..e38c0b56 100644 --- a/Makefile +++ b/Makefile @@ -44,4 +44,4 @@ recreate_db : import_directory flush_db import_docket_import clean : rm auth_models.json *errors.csv -include docket.mk +include docket.mk docs/erd.mk diff --git a/DEVELOPMENT.md b/docs/DEVELOPMENT.md similarity index 100% rename from DEVELOPMENT.md rename to docs/DEVELOPMENT.md diff --git a/SCHEMA_CHANGES.md b/docs/SCHEMA_CHANGES.md similarity index 100% rename from SCHEMA_CHANGES.md rename to docs/SCHEMA_CHANGES.md diff --git a/docs/diagrams/location_diagram.png b/docs/diagrams/location_diagram.png new file mode 100644 index 00000000..d32611b1 Binary files /dev/null and b/docs/diagrams/location_diagram.png differ diff --git a/docs/diagrams/organization_diagram.png b/docs/diagrams/organization_diagram.png new file mode 100644 index 00000000..19a4a787 Binary files /dev/null and b/docs/diagrams/organization_diagram.png differ diff --git a/docs/diagrams/person_diagram.png b/docs/diagrams/person_diagram.png new file mode 100644 index 00000000..4ab9eb85 Binary files /dev/null and b/docs/diagrams/person_diagram.png differ diff --git a/docs/diagrams/violation_diagram.png b/docs/diagrams/violation_diagram.png new file mode 100644 index 00000000..fd21c381 Binary files /dev/null and b/docs/diagrams/violation_diagram.png differ diff --git a/docs/erd.mk b/docs/erd.mk new file mode 100644 index 00000000..f1516e3e --- /dev/null +++ b/docs/erd.mk @@ -0,0 +1,15 @@ +person_models=Person,PersonName,PersonAlias,PersonDivisionId,MembershipPerson,MembershipPersonMember,MembershipPersonOrganization,MembershipPersonRole,MembershipPersonTitle,MembershipPersonRank,MembershipPersonFirstCitedDate,MembershipPersonLastCitedDate,Source +organization_models=Organization,OrganizationName,OrganizationAlias,OrganizationDivisionId,OrganizationClassification,OrganizationFirstCitedDate,OrganizationLastCitedDate,MembershipOrganization,MembershipOrganizationMember,MembershipOrganizationOrganization,MembershipOrganizationFirstCitedDate,MembershipOrganizationLastCitedDate,Composition,CompositionParent,CompositionChild,CompositionClassification,CompositionStartDate,CompositionEndDate,Source +location_models=Location,Organization,Association,AssociationArea,AssociationOrganization,AssociationTenure,AssociationStartDate,AssociationEndDate,Emplacement,EmplacementTenure,EmplacementOrganization,EmplacementSite,EmplacementStartDate,EmplacementEndDate,Source +violation_models=Violation,Person,Organization,Location,ViolationPerpetrator,ViolationPerpetratorOrganization,ViolationType,ViolationAdminLevel2,ViolationDivisionId,ViolationStartDate,ViolationEndDate,Source + + +.PHONY : diagrams clean_diagrams + +diagrams : $(patsubst %,docs/diagrams/%_diagram.png,person organization location violation) + +clean_diagrams : + rm docs/diagrams/* + +docs/diagrams/%_diagram.png : + python manage.py graph_models -a -I $($*_models) -o $@ diff --git a/requirements.txt b/requirements.txt index 501a3f76..c7b842f1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -26,3 +26,9 @@ django-debug-toolbar<2.0 pysolr==3.6.0 pytest-django==3.5.1 pytest-mock==1.10 + +# Entity relational mapping +django-extensions==3.1.0 +pygraphviz==1.5 +pyparsing==2.4.7 +pydot==1.4.2 diff --git a/sfm_pc/settings.py b/sfm_pc/settings.py index 4575e2b6..fb3f1ae9 100644 --- a/sfm_pc/settings.py +++ b/sfm_pc/settings.py @@ -63,6 +63,7 @@ 'django.contrib.humanize', 'django.contrib.sitemaps', 'haystack', + 'django_extensions', 'django_date_extensions', 'rosetta', 'languages_plus', @@ -362,3 +363,7 @@ 'DJANGO_HAYSTACK_SIGNAL_PROCESSOR', 'haystack.signals.RealtimeSignalProcessor' ) + +GRAPH_MODELS = { + 'group_models': True, +}