Compare commits

..

No commits in common. "46e1a9af86d5afab150de228269935bbc4c14838" and "3d31a13508c41ce42e013c02b4c81abac2e9bb7b" have entirely different histories.

6 changed files with 11 additions and 114 deletions

View File

@ -22,11 +22,6 @@ from user.models import UserActionLogEntry, UserAction
class NewCompensationForm(BaseForm): class NewCompensationForm(BaseForm):
""" Form for creating new compensations.
Can be initialized with an intervention id for preselecting the related intervention.
"""
identifier = forms.CharField( identifier = forms.CharField(
label=_("Identifier"), label=_("Identifier"),
label_suffix="", label_suffix="",
@ -150,53 +145,3 @@ class NewCompensationForm(BaseForm):
return comp return comp
class EditCompensationForm(NewCompensationForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.form_title = _("Edit compensation")
self.action_url = reverse("compensation:edit", args=(self.instance.id,))
self.cancel_redirect = reverse("compensation:open", args=(self.instance.id,))
# Initialize form data
form_data = {
"identifier": self.instance.identifier,
"title": self.instance.title,
"intervention": self.instance.intervention,
"fundings": self.instance.fundings.all(),
"comment": self.instance.comment,
}
disabled_fields = []
self.load_initial_data(
form_data,
disabled_fields
)
def save(self, user: User, geom_form: SimpleGeomForm):
with transaction.atomic():
# Fetch data from cleaned POST values
identifier = self.cleaned_data.get("identifier", None)
title = self.cleaned_data.get("title", None)
fundings = self.cleaned_data.get("fundings", None)
intervention = self.cleaned_data.get("intervention", None)
comment = self.cleaned_data.get("comment", None)
# Create log entry
action = UserActionLogEntry.objects.create(
user=user,
action=UserAction.EDITED,
)
# Process the geometry form
geometry = geom_form.save(action)
# Finally create main object
self.instance.identifier = identifier
self.instance.title = title
self.instance.intervention = intervention
self.instance.geometry = geometry
self.instance.comment = comment
self.instance.fundings.set(fundings)
self.instance.save()
self.instance.log.add(action)
return self.instance

View File

@ -1,6 +1,6 @@
{% load i18n fontawesome_5 %} {% load i18n fontawesome_5 %}
{% if obj.comment %} {% if intervention.comment %}
<div class="w-100"> <div class="w-100">
<div class="card mt-3"> <div class="card mt-3">
<div class="card-header rlp-r"> <div class="card-header rlp-r">

View File

@ -13,7 +13,7 @@
</a> </a>
{% if has_access %} {% if has_access %}
{% if is_default_member %} {% if is_default_member %}
<a href="{% url 'compensation:edit' obj.id %}" class="mr-2"> <a href="{% url 'home' %}" class="mr-2">
<button class="btn btn-default" title="{% trans 'Edit' %}"> <button class="btn btn-default" title="{% trans 'Edit' %}">
{% fa5_icon 'edit' %} {% fa5_icon 'edit' %}
</button> </button>

View File

@ -75,7 +75,7 @@
</div> </div>
<br> <br>
{% empty %} {% empty %}
{% trans 'None' %} None
{% endfor %} {% endfor %}
</td> </td>
</tr> </tr>

View File

@ -1,10 +1,10 @@
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.db.models import Sum from django.db.models import Sum
from django.http import HttpRequest, JsonResponse from django.http import HttpRequest, JsonResponse
from django.shortcuts import render from django.shortcuts import render, get_object_or_404
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from compensation.forms.forms import NewCompensationForm, EditCompensationForm from compensation.forms.forms import NewCompensationForm
from compensation.forms.modalForms import NewStateModalForm, NewDeadlineModalForm, NewActionModalForm from compensation.forms.modalForms import NewStateModalForm, NewDeadlineModalForm, NewActionModalForm
from compensation.models import Compensation, CompensationState, CompensationAction, CompensationDocument from compensation.models import Compensation, CompensationState, CompensationAction, CompensationDocument
from compensation.tables import CompensationTable from compensation.tables import CompensationTable
@ -110,38 +110,8 @@ def new_id_view(request: HttpRequest):
@login_required @login_required
@default_group_required @default_group_required
def edit_view(request: HttpRequest, id: str): def edit_view(request: HttpRequest, id: str):
""" # ToDo
Renders a view for editing compensations pass
Args:
request (HttpRequest): The incoming request
Returns:
"""
template = "compensation/new/view.html"
# Get object from db
comp = get_object_or_404(Compensation, id=id)
# Create forms, initialize with values from db/from POST request
data_form = EditCompensationForm(request.POST or None, instance=comp)
geom_form = SimpleGeomForm(request.POST or None, read_only=False, instance=comp)
if request.method == "POST":
if data_form.is_valid() and geom_form.is_valid():
# The data form takes the geom form for processing, as well as the performing user
comp = data_form.save(request.user, geom_form)
messages.success(request, _("Compensation {} edited").format(comp.identifier))
return redirect("compensation:open", id=comp.id)
else:
messages.error(request, FORM_INVALID)
else:
# For clarification: nothing in this case
pass
context = {
"form": data_form,
"geom_form": geom_form,
}
context = BaseContext(request, context).context
return render(request, template, context)
@login_required @login_required

View File

@ -275,28 +275,10 @@ class SimpleGeomForm(BaseForm):
self.fields["geom"].disabled = True self.fields["geom"].disabled = True
def save(self, action: UserActionLogEntry): def save(self, action: UserActionLogEntry):
""" Saves the form's geometry geometry = Geometry.objects.create(
geom=self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID)),
Creates a new geometry entry if none is set, yet created=action,
)
Args:
action ():
Returns:
"""
if self.instance.geometry is None:
geometry = Geometry.objects.create(
geom=self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID)),
created=action,
)
self.instance.geometry = geometry
self.instance.save()
else:
geometry = self.instance.geometry
geometry.geom = self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID))
geometry.modified = action
geometry.save()
return geometry return geometry