112_Restructure_CompensationAction #115
@ -405,7 +405,7 @@ class NewActionModalForm(BaseModalForm):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
from compensation.models import UnitChoices
|
from compensation.models import UnitChoices
|
||||||
action_type = forms.ModelChoiceField(
|
action_type = forms.ModelMultipleChoiceField(
|
||||||
label=_("Action Type"),
|
label=_("Action Type"),
|
||||||
label_suffix="",
|
label_suffix="",
|
||||||
required=True,
|
required=True,
|
||||||
@ -415,7 +415,7 @@ class NewActionModalForm(BaseModalForm):
|
|||||||
is_leaf=True,
|
is_leaf=True,
|
||||||
code_lists__in=[CODELIST_COMPENSATION_ACTION_ID],
|
code_lists__in=[CODELIST_COMPENSATION_ACTION_ID],
|
||||||
),
|
),
|
||||||
widget=autocomplete.ModelSelect2(
|
widget=autocomplete.ModelSelect2Multiple(
|
||||||
url="codes-compensation-action-autocomplete",
|
url="codes-compensation-action-autocomplete",
|
||||||
attrs={
|
attrs={
|
||||||
"data-placeholder": _("Action"),
|
"data-placeholder": _("Action"),
|
||||||
@ -496,7 +496,7 @@ class EditCompensationActionModalForm(NewActionModalForm):
|
|||||||
self.action = kwargs.pop("action", None)
|
self.action = kwargs.pop("action", None)
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
form_data = {
|
form_data = {
|
||||||
"action_type": self.action.action_type,
|
"action_type": self.action.action_type.all(),
|
||||||
"action_type_details": self.action.action_type_details.all(),
|
"action_type_details": self.action.action_type_details.all(),
|
||||||
"amount": self.action.amount,
|
"amount": self.action.amount,
|
||||||
"unit": self.action.unit,
|
"unit": self.action.unit,
|
||||||
@ -506,7 +506,7 @@ class EditCompensationActionModalForm(NewActionModalForm):
|
|||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
action = self.action
|
action = self.action
|
||||||
action.action_type = self.cleaned_data.get("action_type", None)
|
action.action_type.set(self.cleaned_data.get("action_type", []))
|
||||||
action.action_type_details.set(self.cleaned_data.get("action_type_details", []))
|
action.action_type_details.set(self.cleaned_data.get("action_type_details", []))
|
||||||
action.amount = self.cleaned_data.get("amount", None)
|
action.amount = self.cleaned_data.get("amount", None)
|
||||||
action.unit = self.cleaned_data.get("unit", None)
|
action.unit = self.cleaned_data.get("unit", None)
|
||||||
|
@ -8,17 +8,6 @@ Created on: 14.10.21
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
class CompensationActionManager(models.Manager):
|
|
||||||
""" Holds default db fetch setting for this model type
|
|
||||||
|
|
||||||
"""
|
|
||||||
def get_queryset(self):
|
|
||||||
return super().get_queryset().select_related(
|
|
||||||
"action_type",
|
|
||||||
"action_type__parent"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class CompensationStateManager(models.Manager):
|
class CompensationStateManager(models.Manager):
|
||||||
""" Holds default db fetch setting for this model type
|
""" Holds default db fetch setting for this model type
|
||||||
|
|
||||||
|
39
compensation/migrations/0004_auto_20220210_1402.py
Normal file
39
compensation/migrations/0004_auto_20220210_1402.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# Generated by Django 3.1.3 on 2022-02-10 13:02
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
def migrate_actions(apps, schema_editor):
|
||||||
|
CompensationAction = apps.get_model('compensation', 'CompensationAction')
|
||||||
|
actions = CompensationAction.objects.all()
|
||||||
|
|
||||||
|
for action in actions:
|
||||||
|
action_type = action.action_type or []
|
||||||
|
action.action_type_tmp.set(action_type)
|
||||||
|
action.save()
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('codelist', '0001_initial'),
|
||||||
|
('compensation', '0003_auto_20220202_0846'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='compensationaction',
|
||||||
|
name='action_type_tmp',
|
||||||
|
field=models.ManyToManyField(blank=True, limit_choices_to={'code_lists__in': [1026], 'is_archived': False, 'is_selectable': True}, related_name='_compensationaction_action_type_+', to='codelist.KonovaCode'),
|
||||||
|
),
|
||||||
|
migrations.RunPython(migrate_actions),
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='compensationaction',
|
||||||
|
name='action_type',
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='compensationaction',
|
||||||
|
old_name='action_type_tmp',
|
||||||
|
new_name='action_type',
|
||||||
|
)
|
||||||
|
]
|
@ -10,9 +10,7 @@ from django.utils.translation import gettext_lazy as _
|
|||||||
|
|
||||||
from codelist.models import KonovaCode
|
from codelist.models import KonovaCode
|
||||||
from codelist.settings import CODELIST_COMPENSATION_ACTION_ID, CODELIST_COMPENSATION_ACTION_DETAIL_ID
|
from codelist.settings import CODELIST_COMPENSATION_ACTION_ID, CODELIST_COMPENSATION_ACTION_DETAIL_ID
|
||||||
from compensation.managers import CompensationActionManager
|
|
||||||
from konova.models import BaseResource
|
from konova.models import BaseResource
|
||||||
from konova.utils.message_templates import COMPENSATION_ACTION_REMOVED
|
|
||||||
|
|
||||||
|
|
||||||
class UnitChoices(models.TextChoices):
|
class UnitChoices(models.TextChoices):
|
||||||
@ -31,10 +29,8 @@ class CompensationAction(BaseResource):
|
|||||||
"""
|
"""
|
||||||
Compensations include actions like planting trees, refreshing rivers and so on.
|
Compensations include actions like planting trees, refreshing rivers and so on.
|
||||||
"""
|
"""
|
||||||
action_type = models.ForeignKey(
|
action_type = models.ManyToManyField(
|
||||||
KonovaCode,
|
KonovaCode,
|
||||||
on_delete=models.SET_NULL,
|
|
||||||
null=True,
|
|
||||||
blank=True,
|
blank=True,
|
||||||
limit_choices_to={
|
limit_choices_to={
|
||||||
"code_lists__in": [CODELIST_COMPENSATION_ACTION_ID],
|
"code_lists__in": [CODELIST_COMPENSATION_ACTION_ID],
|
||||||
@ -57,10 +53,8 @@ class CompensationAction(BaseResource):
|
|||||||
unit = models.CharField(max_length=100, null=True, blank=True, choices=UnitChoices.choices)
|
unit = models.CharField(max_length=100, null=True, blank=True, choices=UnitChoices.choices)
|
||||||
comment = models.TextField(blank=True, null=True, help_text="Additional comment")
|
comment = models.TextField(blank=True, null=True, help_text="Additional comment")
|
||||||
|
|
||||||
objects = CompensationActionManager()
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self.action_type} | {self.amount} {self.unit}"
|
return f"{self.action_type.all()} | {self.amount} {self.unit}"
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def unit_humanize(self):
|
def unit_humanize(self):
|
||||||
|
@ -104,12 +104,12 @@ class AbstractCompensation(BaseObject, GeoReferencedMixin):
|
|||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
user_action = UserActionLogEntry.get_created_action(user)
|
user_action = UserActionLogEntry.get_created_action(user)
|
||||||
comp_action = CompensationAction.objects.create(
|
comp_action = CompensationAction.objects.create(
|
||||||
action_type=form_data["action_type"],
|
|
||||||
amount=form_data["amount"],
|
amount=form_data["amount"],
|
||||||
unit=form_data["unit"],
|
unit=form_data["unit"],
|
||||||
comment=form_data["comment"],
|
comment=form_data["comment"],
|
||||||
created=user_action,
|
created=user_action,
|
||||||
)
|
)
|
||||||
|
comp_action.action_type.set(form_data.get("action_type", []))
|
||||||
comp_action_details = form_data["action_type_details"]
|
comp_action_details = form_data["action_type_details"]
|
||||||
comp_action.action_type_details.set(comp_action_details)
|
comp_action.action_type_details.set(comp_action_details)
|
||||||
self.actions.add(comp_action)
|
self.actions.add(comp_action)
|
||||||
|
@ -47,7 +47,11 @@
|
|||||||
{% for action in actions %}
|
{% for action in actions %}
|
||||||
<tr>
|
<tr>
|
||||||
<td class="">
|
<td class="">
|
||||||
<span>{{ action.action_type }}</span>
|
<ul>
|
||||||
|
{% for type in action.action_type.all %}
|
||||||
|
<li> {{type}} </li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
{% if action.action_type_details.count > 0 %}
|
{% if action.action_type_details.count > 0 %}
|
||||||
<br>
|
<br>
|
||||||
{% for detail in action.action_type_details.all %}
|
{% for detail in action.action_type_details.all %}
|
||||||
|
@ -46,7 +46,11 @@
|
|||||||
{% for action in actions %}
|
{% for action in actions %}
|
||||||
<tr>
|
<tr>
|
||||||
<td class="">
|
<td class="">
|
||||||
<span>{{ action.action_type }}</span>
|
<ul>
|
||||||
|
{% for type in action.action_type.all%}
|
||||||
|
<li> {{type.long_name}} </li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
{% if action.action_type_details.count > 0 %}
|
{% if action.action_type_details.count > 0 %}
|
||||||
<br>
|
<br>
|
||||||
{% for detail in action.action_type_details.all %}
|
{% for detail in action.action_type_details.all %}
|
||||||
|
@ -44,7 +44,11 @@
|
|||||||
{% for action in obj.actions.all %}
|
{% for action in obj.actions.all %}
|
||||||
<tr>
|
<tr>
|
||||||
<td class="">
|
<td class="">
|
||||||
<span>{{ action.action_type }}</span>
|
<ul>
|
||||||
|
{% for type in action.action_type.all%}
|
||||||
|
<li> {{type}} </li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
{% if action.action_type_details.count > 0 %}
|
{% if action.action_type_details.count > 0 %}
|
||||||
<br>
|
<br>
|
||||||
{% for detail in action.action_type_details.all %}
|
{% for detail in action.action_type_details.all %}
|
||||||
|
Loading…
Reference in New Issue
Block a user