Created|Deleted refactoring
* refactors base attributes created and deleted into UserActionLogEntry foreign keys * refactors all related queries and process logic * fixes binding_on into binding_date in intervention/detail/view.html * adds basic __str__ for some models *
This commit is contained in:
@@ -37,8 +37,7 @@ class CompensationAdmin(admin.ModelAdmin):
|
||||
"id",
|
||||
"identifier",
|
||||
"title",
|
||||
"created_on",
|
||||
"created_by",
|
||||
"created",
|
||||
]
|
||||
|
||||
|
||||
@@ -47,8 +46,6 @@ class EcoAccountAdmin(admin.ModelAdmin):
|
||||
"id",
|
||||
"identifier",
|
||||
"title",
|
||||
"created_on",
|
||||
"created_by",
|
||||
]
|
||||
|
||||
|
||||
@@ -57,8 +54,6 @@ class PaymentAdmin(admin.ModelAdmin):
|
||||
"id",
|
||||
"amount",
|
||||
"due_on",
|
||||
"created_by",
|
||||
"created_on",
|
||||
]
|
||||
|
||||
|
||||
@@ -68,8 +63,6 @@ class EcoAccountWithdrawAdmin(admin.ModelAdmin):
|
||||
"account",
|
||||
"intervention",
|
||||
"amount",
|
||||
"created_by",
|
||||
"created_on",
|
||||
]
|
||||
|
||||
|
||||
|
||||
@@ -10,7 +10,9 @@ from django.db import transaction
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from compensation.models import Payment
|
||||
from konova.enums import UserActionLogEntryEnum
|
||||
from konova.forms import BaseForm, BaseModalForm
|
||||
from user.models import UserActionLogEntry
|
||||
|
||||
|
||||
class NewCompensationForm(BaseForm):
|
||||
@@ -56,8 +58,12 @@ class NewPaymentForm(BaseModalForm):
|
||||
|
||||
def save(self):
|
||||
with transaction.atomic():
|
||||
action = UserActionLogEntry.objects.create(
|
||||
user=self.user,
|
||||
action=UserActionLogEntryEnum.CREATED.value,
|
||||
)
|
||||
pay = Payment.objects.create(
|
||||
created_by=self.user,
|
||||
created=action,
|
||||
amount=self.cleaned_data.get("amount", -1),
|
||||
due_on=self.cleaned_data.get("due", None),
|
||||
comment=self.cleaned_data.get("transfer_note", None),
|
||||
|
||||
@@ -8,14 +8,17 @@ Created on: 17.11.20
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.gis.db import models
|
||||
from django.core.validators import MinValueValidator, MaxValueValidator
|
||||
from django.db import transaction
|
||||
from django.utils import timezone
|
||||
from django.utils.timezone import now
|
||||
|
||||
from compensation.settings import COMPENSATION_IDENTIFIER_LENGTH, COMPENSATION_IDENTIFIER_TEMPLATE
|
||||
from intervention.models import Intervention, ResponsibilityData
|
||||
from konova.enums import UserActionLogEntryEnum
|
||||
from konova.models import BaseObject, BaseResource, Geometry, UuidModel
|
||||
from konova.utils.generators import generate_random_string
|
||||
from organisation.models import Organisation
|
||||
from user.models import UserActionLogEntry
|
||||
|
||||
|
||||
class Payment(BaseResource):
|
||||
@@ -68,10 +71,11 @@ class CompensationAction(BaseResource):
|
||||
control = models.ForeignKey(CompensationControl, on_delete=models.SET_NULL, null=True, blank=True)
|
||||
|
||||
|
||||
class Compensation(BaseObject):
|
||||
class AbstractCompensation(BaseObject):
|
||||
"""
|
||||
The compensation holds information about which actions have to be performed until which date, who is in charge
|
||||
of this, which legal authority is the point of contact, and so on.
|
||||
Abstract compensation model which holds basic attributes, shared by subclasses like the regular Compensation
|
||||
or EcoAccount.
|
||||
|
||||
"""
|
||||
responsible = models.OneToOneField(
|
||||
ResponsibilityData,
|
||||
@@ -93,6 +97,14 @@ class Compensation(BaseObject):
|
||||
# Holds which intervention is simply a newer version of this dataset
|
||||
next_version = models.ForeignKey("Compensation", null=True, blank=True, on_delete=models.DO_NOTHING)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class Compensation(AbstractCompensation):
|
||||
"""
|
||||
Regular compensation, linked to an intervention
|
||||
"""
|
||||
intervention = models.ForeignKey(
|
||||
Intervention,
|
||||
on_delete=models.CASCADE,
|
||||
@@ -101,6 +113,9 @@ class Compensation(BaseObject):
|
||||
related_name='compensations'
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return "{}".format(self.identifier)
|
||||
|
||||
@staticmethod
|
||||
def _generate_new_identifier() -> str:
|
||||
""" Generates a new identifier for the intervention object
|
||||
@@ -131,9 +146,16 @@ class Compensation(BaseObject):
|
||||
"""
|
||||
_now = timezone.now()
|
||||
_user = kwargs.get("user", None)
|
||||
self.deleted_on = _now
|
||||
self.deleted_by = _user
|
||||
self.save()
|
||||
with transaction.atomic():
|
||||
action = UserActionLogEntry.objects.create(
|
||||
user=_user,
|
||||
timestamp=_now,
|
||||
action=UserActionLogEntryEnum.DELETED.value
|
||||
)
|
||||
self.deleted = action
|
||||
#self.deleted_on = _now
|
||||
#self.deleted_by = _user
|
||||
self.save()
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if self.identifier is None or len(self.identifier) == 0:
|
||||
@@ -145,13 +167,17 @@ class Compensation(BaseObject):
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
|
||||
class EcoAccount(Compensation):
|
||||
class EcoAccount(AbstractCompensation):
|
||||
"""
|
||||
An eco account is a kind of 'prepaid' compensation. It can be compared to an account that already has been filled
|
||||
with some kind of currency. From this account one is able to 'withdraw' currency for current projects.
|
||||
"""
|
||||
# Users having access on this object
|
||||
users = models.ManyToManyField(User)
|
||||
# Not needed in regular Compensation since their access is defined by the linked intervention's access
|
||||
users = models.ManyToManyField(
|
||||
User,
|
||||
help_text="Users having access"
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return "{}".format(self.identifier)
|
||||
|
||||
@@ -51,7 +51,7 @@ class CompensationTable(BaseTable):
|
||||
lm = tables.Column(
|
||||
verbose_name=_("Last edit"),
|
||||
orderable=True,
|
||||
accessor="created_on",
|
||||
accessor="created__timestamp",
|
||||
)
|
||||
|
||||
class Meta(BaseTable.Meta):
|
||||
@@ -173,7 +173,7 @@ class EcoAccountTable(BaseTable):
|
||||
d = tables.Column(
|
||||
verbose_name=_("Created on"),
|
||||
orderable=True,
|
||||
accessor="created_on",
|
||||
accessor="created__timestamp",
|
||||
)
|
||||
ac = tables.Column(
|
||||
verbose_name=_("Actions"),
|
||||
|
||||
@@ -28,7 +28,7 @@ def index_view(request: HttpRequest):
|
||||
template = "generic_index.html"
|
||||
user = request.user
|
||||
compensations = Compensation.objects.filter(
|
||||
deleted_on=None,
|
||||
deleted=None,
|
||||
)
|
||||
table = CompensationTable(
|
||||
request=request,
|
||||
@@ -92,7 +92,7 @@ def account_index_view(request: HttpRequest):
|
||||
template = "generic_index.html"
|
||||
user = request.user
|
||||
eco_accounts = EcoAccount.objects.filter(
|
||||
deleted_on=None,
|
||||
deleted=None,
|
||||
)
|
||||
table = EcoAccountTable(
|
||||
request=request,
|
||||
|
||||
Reference in New Issue
Block a user