Skip to content

Commit

Permalink
Added permission check for new gl_account field
Browse files Browse the repository at this point in the history
  • Loading branch information
mhewel committed Nov 13, 2024
1 parent e73e0f8 commit aea582a
Show file tree
Hide file tree
Showing 5 changed files with 127 additions and 101 deletions.
129 changes: 75 additions & 54 deletions members/admin/union_admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,81 @@ class UnionAdmin(admin.ModelAdmin):

actions = ["export_csv_union_info"]

def get_fieldsets(self, request, obj=None):
# 20241113: https://stackoverflow.com/questions/16102222/djangoremove-superuser-checkbox-from-django-admin-panel-when-login-staff-users

if not obj:
print("not obj")
return self.add_fieldsets

info_fields = (
"bank_main_org",
"bank_account",
"statues",
"founded_at",
"closed_at",
"gl_account",
)

if not request.user.has_perm("members.showledgeraccount"):
print("no perm")
info_fields = (
"bank_main_org",
"bank_account",
"statues",
"founded_at",
"closed_at",
)

print(f"info:{info_fields}")

return [
(
"Navn og Adresse",
{
"fields": ("name", "email", "address"),
"description": "<p>Udfyld navnet på foreningen (f.eks København, \
vestjylland) og adressen<p>",
},
),
(
"Bestyrelsen nye felter",
{
"fields": (
"chairman",
"second_chair",
"cashier",
"secretary",
"board_members",
)
},
),
(
"Bestyrelsen gamle felter",
{
"fields": (
"chairman_old",
"chairman_email_old",
"second_chair_old",
"second_chair_email_old",
"cashier_old",
"cashier_email_old",
"secretary_old",
"secretary_email_old",
"board_members_old",
)
},
),
(
"Info",
{
"fields": info_fields,
"description": "Indsæt et link til jeres vedtægter, hvornår I er stiftet (har holdt stiftende \
generalforsamling) og jeres bankkonto hvis I har sådan en til foreningen.",
},
),
]

# Solution found on https://stackoverflow.com/questions/57056994/django-model-form-with-only-view-permission-puts-all-fields-on-exclude
# formfield_for_foreignkey described in documentation here: https://docs.djangoproject.com/en/4.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_for_foreignkey
def formfield_for_foreignkey(self, db_field, request, **kwargs):
Expand All @@ -121,60 +196,6 @@ def get_queryset(self, request):
return qs
return qs.filter(adminuserinformation__user=request.user)

fieldsets = [
(
"Navn og Adresse",
{
"fields": ("name", "email", "address"),
"description": "<p>Udfyld navnet på foreningen (f.eks København, \
vestjylland) og adressen<p>",
},
),
(
"Bestyrelsen nye felter",
{
"fields": (
"chairman",
"second_chair",
"cashier",
"secretary",
"board_members",
)
},
),
(
"Bestyrelsen gamle felter",
{
"fields": (
"chairman_old",
"chairman_email_old",
"second_chair_old",
"second_chair_email_old",
"cashier_old",
"cashier_email_old",
"secretary_old",
"secretary_email_old",
"board_members_old",
)
},
),
(
"Info",
{
"fields": (
"bank_main_org",
"bank_account",
"statues",
"founded_at",
"closed_at",
"gl_account",
),
"description": "Indsæt et link til jeres vedtægter, hvornår I er stiftet (har holdt stiftende \
generalforsamling) og jeres bankkonto hvis I har sådan en til foreningen.",
},
),
]

def union_link(self, item):
url = reverse("admin:members_union_change", args=[item.id])
link = '<a href="%s">%s</a>' % (url, escape(item.name))
Expand Down
23 changes: 0 additions & 23 deletions members/migrations/0048_union_gl_account.py

This file was deleted.

23 changes: 0 additions & 23 deletions members/migrations/0049_alter_union_gl_account.py

This file was deleted.

42 changes: 42 additions & 0 deletions members/migrations/0058_alter_union_options_union_gl_account.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Generated by Django 4.2.11 on 2024-11-13 19:56

import django.core.validators
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("members", "0057_municipality"),
]

operations = [
migrations.AlterModelOptions(
name="union",
options={
"ordering": ["name"],
"permissions": (
("view_all_unions", "Can view all Foreninger"),
("showledgeraccount", "Show General Ledger Account"),
),
"verbose_name": "Forening",
"verbose_name_plural": "Foreninger",
},
),
migrations.AddField(
model_name="union",
name="gl_account",
field=models.CharField(
blank=True,
help_text="Kontonummer i formatet 1234",
max_length=4,
validators=[
django.core.validators.RegexValidator(
message="Indtast kontonummer i det rigtige format.",
regex="^[0-9]{4}",
)
],
verbose_name="Finanskonto:",
),
),
]
11 changes: 10 additions & 1 deletion members/models/union.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ class Meta:
verbose_name_plural = "Foreninger"
verbose_name = "Forening"
ordering = ["name"]
permissions = (("view_all_unions", "Can view all Foreninger"),)
permissions = (
("view_all_unions", "Can view all Foreninger"),
("showledgeraccount", "Show General Ledger Account"),
)

help_union = """Vi tilføjer automatisk "Coding Pirates" foran navnet når vi nævner det de fleste steder på siden."""
name = models.CharField("Foreningens navn", max_length=200, help_text=help_union)
Expand Down Expand Up @@ -93,6 +96,12 @@ class Meta:
max_length=4,
blank=True,
help_text="Kontonummer i formatet 1234",
validators=[
RegexValidator(
regex="^[0-9]{4}",
message="Indtast kontonummer i det rigtige format.",
)
],
)

def __str__(self):
Expand Down

0 comments on commit aea582a

Please sign in to comment.