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):
""" Form for creating new compensations.
Can be initialized with an intervention id for preselecting the related intervention.
"""
identifier = forms.CharField(
label=_("Identifier"),
label_suffix="",
@ -150,53 +145,3 @@ class NewCompensationForm(BaseForm):
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 %}
{% if obj.comment %}
{% if intervention.comment %}
<div class="w-100">
<div class="card mt-3">
<div class="card-header rlp-r">

View File

@ -13,7 +13,7 @@
</a>
{% if has_access %}
{% 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' %}">
{% fa5_icon 'edit' %}
</button>

View File

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

View File

@ -1,10 +1,10 @@
from django.contrib.auth.decorators import login_required
from django.db.models import Sum
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 compensation.forms.forms import NewCompensationForm, EditCompensationForm
from compensation.forms.forms import NewCompensationForm
from compensation.forms.modalForms import NewStateModalForm, NewDeadlineModalForm, NewActionModalForm
from compensation.models import Compensation, CompensationState, CompensationAction, CompensationDocument
from compensation.tables import CompensationTable
@ -110,38 +110,8 @@ def new_id_view(request: HttpRequest):
@login_required
@default_group_required
def edit_view(request: HttpRequest, id: str):
"""
Renders a view for editing compensations
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)
# ToDo
pass
@login_required

View File

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