Skip to content

Commit

Permalink
Add django-simple-history (#599)
Browse files Browse the repository at this point in the history
* Add django-simple-history

* Fix: crash on permissions object

* Fix typo
  • Loading branch information
Andrew-Dickinson authored Sep 23, 2024
1 parent 4ffee77 commit 65eeea6
Show file tree
Hide file tree
Showing 23 changed files with 1,190 additions and 20 deletions.
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ dependencies = [
"six==1.16.0",
"django-flags==5.0.*",
"django-sql-explorer==5.2.*",
"django-simple-history==3.7.*",
]

[project.optional-dependencies]
Expand Down
24 changes: 22 additions & 2 deletions scripts/import_spreadsheet_dump.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,28 @@

DOCKER_PG_COMMAND="docker exec -i meshdb-postgres-1 psql -U meshdb"
DATA_DIR="./spreadsheet_data/"
tables=("meshapi_link" "meshapi_accesspoint" "meshapi_sector" "meshapi_device" "meshapi_building_nodes" "meshapi_node" "meshapi_install" "meshapi_building" "meshapi_member")
#tables=("meshapi_link" "meshapi_building_nodes" "meshapi_sector" "meshapi_device" "meshapi_install" "meshapi_member" "meshapi_building" "meshapi_node")
tables=(
"meshapi_los"
"meshapi_link"
"meshapi_accesspoint"
"meshapi_sector"
"meshapi_device"
"meshapi_building_nodes"
"meshapi_node"
"meshapi_install"
"meshapi_building"
"meshapi_member"
"meshapi_historicallos"
"meshapi_historicallink"
"meshapi_historicalaccesspoint"
"meshapi_historicalsector"
"meshapi_historicaldevice"
"meshapi_historicalbuilding_nodes"
"meshapi_historicalnode"
"meshapi_historicalinstall"
"meshapi_historicalbuilding"
"meshapi_historicalmember"
)
set -ex

# Make sure our files exist.
Expand Down
5 changes: 3 additions & 2 deletions src/meshapi/admin/models/access_point.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
from django.contrib.postgres.search import SearchVector
from django.forms import Field, ModelForm
from django.http import HttpRequest
from import_export.admin import ExportActionMixin, ImportExportModelAdmin
from import_export.admin import ExportActionMixin, ImportExportMixin
from simple_history.admin import SimpleHistoryAdmin

from meshapi.models import AccessPoint
from meshapi.widgets import AutoPopulateLocationWidget, DeviceIPAddressWidget, ExternalHyperlinkWidget
Expand Down Expand Up @@ -32,7 +33,7 @@ class Meta:


@admin.register(AccessPoint)
class AccessPointAdmin(RankedSearchMixin, ImportExportModelAdmin, ExportActionMixin):
class AccessPointAdmin(RankedSearchMixin, ImportExportMixin, ExportActionMixin, SimpleHistoryAdmin):
form = AccessPointAdminForm
search_fields = ["name__icontains", "@notes"]
search_vector = SearchVector("name", weight="A") + SearchVector("notes", weight="D")
Expand Down
5 changes: 3 additions & 2 deletions src/meshapi/admin/models/building.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
from django.db.models import QuerySet
from django.forms import ModelForm
from django.http import HttpRequest
from import_export.admin import ExportActionMixin, ImportExportModelAdmin
from import_export.admin import ExportActionMixin, ImportExportMixin
from simple_history.admin import SimpleHistoryAdmin

from meshapi.models import Building
from meshapi.widgets import AutoPopulateLocationWidget, PanoramaViewer
Expand Down Expand Up @@ -60,7 +61,7 @@ class Meta:


@admin.register(Building)
class BuildingAdmin(RankedSearchMixin, ImportExportModelAdmin, ExportActionMixin):
class BuildingAdmin(RankedSearchMixin, ImportExportMixin, ExportActionMixin, SimpleHistoryAdmin):
form = BuildingAdminForm
list_display = ["__str__", "street_address", "primary_node"]
search_fields = [
Expand Down
5 changes: 3 additions & 2 deletions src/meshapi/admin/models/device.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
from django.contrib.postgres.search import SearchVector
from django.db.models import QuerySet
from django.http import HttpRequest
from import_export.admin import ExportActionMixin, ImportExportModelAdmin
from import_export.admin import ExportActionMixin, ImportExportMixin
from simple_history.admin import SimpleHistoryAdmin

from meshapi.models import Device
from meshapi.widgets import ExternalHyperlinkWidget
Expand All @@ -30,7 +31,7 @@ class Meta:


@admin.register(Device)
class DeviceAdmin(RankedSearchMixin, ImportExportModelAdmin, ExportActionMixin):
class DeviceAdmin(RankedSearchMixin, ImportExportMixin, ExportActionMixin, SimpleHistoryAdmin):
form = DeviceAdminForm
search_fields = ["name__icontains", "@notes"]
search_vector = SearchVector("name", weight="A") + SearchVector("notes", weight="D")
Expand Down
5 changes: 3 additions & 2 deletions src/meshapi/admin/models/install.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
from django.db.models import QuerySet
from django.http import HttpRequest
from import_export import resources
from import_export.admin import ExportActionMixin, ImportExportModelAdmin
from import_export.admin import ExportActionMixin, ImportExportMixin
from simple_history.admin import SimpleHistoryAdmin

from meshapi.models import Install
from meshapi.widgets import ExternalHyperlinkWidget
Expand Down Expand Up @@ -43,7 +44,7 @@ class Meta:


@admin.register(Install)
class InstallAdmin(RankedSearchMixin, ImportExportModelAdmin, ExportActionMixin):
class InstallAdmin(RankedSearchMixin, ImportExportMixin, ExportActionMixin, SimpleHistoryAdmin):
form = InstallAdminForm
resource_classes = [InstallImportExportResource]
list_filter = [
Expand Down
5 changes: 3 additions & 2 deletions src/meshapi/admin/models/link.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from django import forms
from django.contrib import admin
from django.contrib.postgres.search import SearchVector
from import_export.admin import ExportActionMixin, ImportExportModelAdmin
from import_export.admin import ExportActionMixin, ImportExportMixin
from simple_history.admin import SimpleHistoryAdmin

from meshapi.models import Link

Expand All @@ -18,7 +19,7 @@ class Meta:


@admin.register(Link)
class LinkAdmin(RankedSearchMixin, ImportExportModelAdmin, ExportActionMixin):
class LinkAdmin(RankedSearchMixin, ImportExportMixin, ExportActionMixin, SimpleHistoryAdmin):
form = LinkAdminForm
search_fields = [
"from_device__node__name__icontains",
Expand Down
5 changes: 3 additions & 2 deletions src/meshapi/admin/models/los.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
from django.contrib.postgres.search import SearchVector
from django.forms import ModelForm
from django.http import HttpRequest
from import_export.admin import ExportActionMixin, ImportExportModelAdmin
from import_export.admin import ExportActionMixin, ImportExportMixin
from simple_history.admin import SimpleHistoryAdmin

from meshapi.models import LOS

Expand All @@ -20,7 +21,7 @@ class Meta:


@admin.register(LOS)
class LOSAdmin(RankedSearchMixin, ImportExportModelAdmin, ExportActionMixin):
class LOSAdmin(RankedSearchMixin, ImportExportMixin, ExportActionMixin, SimpleHistoryAdmin):
form = LOSAdminForm
search_fields = [
"from_building__nodes__network_number__iexact",
Expand Down
5 changes: 3 additions & 2 deletions src/meshapi/admin/models/member.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from django import forms
from django.contrib import admin
from django.contrib.postgres.search import SearchVector
from import_export.admin import ExportActionMixin, ImportExportModelAdmin
from import_export.admin import ExportActionMixin, ImportExportMixin
from simple_history.admin import SimpleHistoryAdmin

from meshapi.models import Member

Expand All @@ -22,7 +23,7 @@ class Meta:


@admin.register(Member)
class MemberAdmin(RankedSearchMixin, ImportExportModelAdmin, ExportActionMixin):
class MemberAdmin(RankedSearchMixin, ImportExportMixin, ExportActionMixin, SimpleHistoryAdmin):
form = MemberAdminForm
search_fields = [
# Search by name
Expand Down
3 changes: 2 additions & 1 deletion src/meshapi/admin/models/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from django.http import HttpRequest
from import_export import resources
from import_export.admin import ExportActionMixin, ImportExportModelAdmin
from simple_history.admin import SimpleHistoryAdmin

from meshapi.models import Building, Node
from meshapi.widgets import AutoPopulateLocationWidget
Expand Down Expand Up @@ -49,7 +50,7 @@ class Meta:


@admin.register(Node)
class NodeAdmin(RankedSearchMixin, ImportExportModelAdmin, ExportActionMixin):
class NodeAdmin(RankedSearchMixin, ExportActionMixin, ImportExportModelAdmin, SimpleHistoryAdmin):
form = NodeAdminForm
resource_classes = [NodeImportExportResource]
search_fields = [
Expand Down
5 changes: 3 additions & 2 deletions src/meshapi/admin/models/sector.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from django.contrib import admin
from django.contrib.postgres.search import SearchVector
from import_export.admin import ExportActionMixin, ImportExportModelAdmin
from import_export.admin import ExportActionMixin, ImportExportMixin
from simple_history.admin import SimpleHistoryAdmin

from meshapi.models import Sector
from meshapi.widgets import ExternalHyperlinkWidget
Expand All @@ -22,7 +23,7 @@ class Meta:


@admin.register(Sector)
class SectorAdmin(RankedSearchMixin, ImportExportModelAdmin, ExportActionMixin):
class SectorAdmin(RankedSearchMixin, ImportExportMixin, ExportActionMixin, SimpleHistoryAdmin):
form = SectorAdminForm
search_fields = ["name__icontains", "@notes"]
search_vector = SearchVector("name", weight="A") + SearchVector("notes", weight="D")
Expand Down
3 changes: 2 additions & 1 deletion src/meshapi/management/commands/create_groups.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ def create_base_groups(self) -> None:

for p in all_permissions:
code = p.codename
act, obj = code.split("_")

act, obj = code.split("_", maxsplit=1)

# read_only
if act == "view" and obj in models:
Expand Down
Loading

0 comments on commit 65eeea6

Please sign in to comment.