Skip to content

Commit

Permalink
add SitePermissions as inline table to a users haztrak profile, remove
Browse files Browse the repository at this point in the history
admin_rcrainfo_profile from HaztrakProfile
  • Loading branch information
dpgraham4401 committed Nov 8, 2023
1 parent 706f4be commit 3ac6fda
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 50 deletions.
2 changes: 0 additions & 2 deletions server/apps/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,11 +93,9 @@ def haztrak_profile_factory(db, user_factory):

def create_profile(
user: Optional[User] = None,
admin_rcrainfo_profile: Optional[RcraProfile] = None,
) -> HaztrakProfile:
return HaztrakProfile.objects.create(
user=user or user_factory(),
admin_rcrainfo_profile=admin_rcrainfo_profile,
)

yield create_profile
Expand Down
55 changes: 51 additions & 4 deletions server/apps/core/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
from django.urls import reverse
from django.utils.html import format_html, urlencode

from .models import HaztrakProfile, HaztrakUser
from ..sites.models import RcraSitePermissions, SitePermissions
from .models import HaztrakProfile, HaztrakUser, RcraProfile


class HiddenListView(admin.ModelAdmin):
Expand All @@ -17,9 +18,6 @@ def has_module_permission(self, request):
return False


admin.site.register(HaztrakProfile)


@admin.register(HaztrakUser)
class HaztrakUserAdmin(UserAdmin):
list_display = ["username", "related_profile", "email", "is_staff", "is_superuser"]
Expand All @@ -32,6 +30,55 @@ def related_profile(self, user: HaztrakUser) -> str:
return format_html("<a href='{}'>{}</a>", url, user.haztrak_profile)


class RcraSitePermissionInline(admin.TabularInline):
model = RcraSitePermissions
extra = 0

ordering = ["site"]

def has_change_permission(self, request, obj=None):
return False

def has_delete_permission(self, request, obj=None):
return False


class SitePermissionsInline(admin.TabularInline):
model = SitePermissions
extra = 0
ordering = ["site"]


@admin.register(HaztrakProfile)
class HaztrakProfileAdmin(admin.ModelAdmin):
list_display = ["__str__", "number_of_sites"]
search_fields = ["user__username"]
inlines = [SitePermissionsInline]

@staticmethod
def number_of_sites(profile: HaztrakProfile) -> str:
# return ", ".join([str(site) for site in profile.sit])
return str(profile.site_permissions.all().count())


@admin.register(RcraProfile)
class RcraProfileAdmin(admin.ModelAdmin):
list_display = ["__str__", "related_user", "rcra_username", "api_user"]
search_fields = ["user__username", "rcra_username"]
inlines = [RcraSitePermissionInline]

def related_user(self, user):
url = reverse("admin:core_haztrakuser_changelist") + "?" + urlencode({"q": str(user.id)})
return format_html("<a href='{}'>{}</a>", url, user)

def api_user(self, profile: RcraProfile) -> bool:
return profile.has_api_credentials

api_user.boolean = True
api_user.short_description = "Rcrainfo API User"
related_user.short_description = "User"


try:
from rest_framework.authtoken.models import TokenProxy as DRFToken
except ImportError:
Expand Down
41 changes: 0 additions & 41 deletions server/apps/sites/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
Contact,
HaztrakSite,
RcraSite,
RcraSitePermissions,
SitePermissions,
)

Expand All @@ -21,15 +20,6 @@ class HandlerAdmin(admin.ModelAdmin):
search_fields = ["epa_id"]


# admin.site.register(SitePermissions)
@admin.register(SitePermissions)
class SitePermissionAdmin(admin.ModelAdmin):
list_display = ["__str__", "site", "emanifest"]
list_filter = ["site", "profile"]
search_fields = ["site"]
search_help_text = "Search by user or site"


@admin.register(HaztrakSite)
class SiteAdmin(admin.ModelAdmin):
list_display = ["__str__", "related_handler", "last_rcrainfo_manifest_sync"]
Expand All @@ -45,37 +35,6 @@ def related_handler(self, site: HaztrakSite) -> str:
return format_html("<a href='{}'>{}</a>", url, site.rcra_site.epa_id)


class RcraSitePermissionInline(admin.TabularInline):
model = RcraSitePermissions
extra = 0

ordering = ["site"]

def has_change_permission(self, request, obj=None):
return False

def has_delete_permission(self, request, obj=None):
return False


@admin.register(RcraProfile)
class RcraProfileAdmin(admin.ModelAdmin):
list_display = ["__str__", "related_user", "rcra_username", "api_user"]
search_fields = ["user__username", "rcra_username"]
inlines = [RcraSitePermissionInline]

def related_user(self, user):
url = reverse("admin:core_haztrakuser_changelist") + "?" + urlencode({"q": str(user.id)})
return format_html("<a href='{}'>{}</a>", url, user)

def api_user(self, profile: RcraProfile) -> bool:
return profile.has_api_credentials

api_user.boolean = True
api_user.short_description = "Rcrainfo API User"
related_user.short_description = "User"


# Register models That should only be edited within the context of another form here.
admin.site.register(Contact, HiddenListView)
admin.site.register(Address, HiddenListView)
2 changes: 1 addition & 1 deletion server/apps/sites/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@


@pytest.fixture
def site_access_factory(db, haztrak_site_factory, haztrak_profile_factory):
def haztrak_site_permission_factory(db, haztrak_site_factory, haztrak_profile_factory):
"""Abstract factory for Haztrak RcraSitePermissions model"""

def create_permission(
Expand Down
4 changes: 2 additions & 2 deletions server/apps/sites/tests/test_site_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ class TestSiteDetailsApi:
def local_site_factory(
self,
haztrak_profile_factory,
site_access_factory,
haztrak_site_permission_factory,
rcra_site_factory,
user_factory,
haztrak_site_factory,
Expand All @@ -83,7 +83,7 @@ def create_site_and_related(
if site is None:
site = haztrak_site_factory(rcra_site=rcra_site)
if rcra_site_permission is None:
site_access_factory(site=site, profile=profile)
haztrak_site_permission_factory(site=site, profile=profile)
return site

return create_site_and_related
Expand Down

0 comments on commit 3ac6fda

Please sign in to comment.