Merge pull request '158_PIK' (#171) from 158_PIK into master
Reviewed-on: SGD-Nord/konova#171
This commit is contained in:
commit
58ce00a5a6
@ -6,6 +6,7 @@
|
|||||||
"title": "Test_compensation",
|
"title": "Test_compensation",
|
||||||
"is_cef": false,
|
"is_cef": false,
|
||||||
"is_coherence_keeping": false,
|
"is_coherence_keeping": false,
|
||||||
|
"is_pik": false,
|
||||||
"intervention": "MUST_BE_SET_IN_TEST",
|
"intervention": "MUST_BE_SET_IN_TEST",
|
||||||
"before_states": [
|
"before_states": [
|
||||||
],
|
],
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
"properties": {
|
"properties": {
|
||||||
"title": "Test_ecoaccount",
|
"title": "Test_ecoaccount",
|
||||||
"deductable_surface": 10000.0,
|
"deductable_surface": 10000.0,
|
||||||
|
"is_pik": false,
|
||||||
"responsible": {
|
"responsible": {
|
||||||
"conservation_office": null,
|
"conservation_office": null,
|
||||||
"conservation_file_number": null,
|
"conservation_file_number": null,
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
],
|
],
|
||||||
"properties": {
|
"properties": {
|
||||||
"title": "Test_ema",
|
"title": "Test_ema",
|
||||||
|
"is_pik": false,
|
||||||
"responsible": {
|
"responsible": {
|
||||||
"conservation_office": null,
|
"conservation_office": null,
|
||||||
"conservation_file_number": null,
|
"conservation_file_number": null,
|
||||||
|
@ -122,6 +122,7 @@ class APIV1GetTestCase(BaseAPIV1TestCase):
|
|||||||
props = geojson["properties"]
|
props = geojson["properties"]
|
||||||
props["is_cef"]
|
props["is_cef"]
|
||||||
props["is_coherence_keeping"]
|
props["is_coherence_keeping"]
|
||||||
|
props["is_pik"]
|
||||||
props["intervention"]
|
props["intervention"]
|
||||||
props["intervention"]["id"]
|
props["intervention"]["id"]
|
||||||
props["intervention"]["identifier"]
|
props["intervention"]["identifier"]
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
"title": "TEST_compensation_CHANGED",
|
"title": "TEST_compensation_CHANGED",
|
||||||
"is_cef": true,
|
"is_cef": true,
|
||||||
"is_coherence_keeping": true,
|
"is_coherence_keeping": true,
|
||||||
|
"is_pik": true,
|
||||||
"intervention": "CHANGE_BEFORE_RUN!!!",
|
"intervention": "CHANGE_BEFORE_RUN!!!",
|
||||||
"before_states": [],
|
"before_states": [],
|
||||||
"after_states": [],
|
"after_states": [],
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
"properties": {
|
"properties": {
|
||||||
"title": "TEST_account_CHANGED",
|
"title": "TEST_account_CHANGED",
|
||||||
"deductable_surface": "100000.0",
|
"deductable_surface": "100000.0",
|
||||||
|
"is_pik": true,
|
||||||
"responsible": {
|
"responsible": {
|
||||||
"conservation_office": null,
|
"conservation_office": null,
|
||||||
"conservation_file_number": "123-TEST",
|
"conservation_file_number": "123-TEST",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"detail": "TEST_HANDLER_CHANGED"
|
"detail": "TEST_HANDLER_CHANGED"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"is_pik": true,
|
||||||
"before_states": [],
|
"before_states": [],
|
||||||
"after_states": [],
|
"after_states": [],
|
||||||
"actions": [],
|
"actions": [],
|
||||||
|
@ -97,6 +97,7 @@ class APIV1UpdateTestCase(BaseAPIV1TestCase):
|
|||||||
self.assertNotEqual(modified_on, self.compensation.modified)
|
self.assertNotEqual(modified_on, self.compensation.modified)
|
||||||
self.assertEqual(put_props["is_cef"], self.compensation.is_cef)
|
self.assertEqual(put_props["is_cef"], self.compensation.is_cef)
|
||||||
self.assertEqual(put_props["is_coherence_keeping"], self.compensation.is_coherence_keeping)
|
self.assertEqual(put_props["is_coherence_keeping"], self.compensation.is_coherence_keeping)
|
||||||
|
self.assertEqual(put_props["is_pik"], self.compensation.is_pik)
|
||||||
self.assertEqual(len(put_props["actions"]), self.compensation.actions.count())
|
self.assertEqual(len(put_props["actions"]), self.compensation.actions.count())
|
||||||
self.assertEqual(len(put_props["before_states"]), self.compensation.before_states.count())
|
self.assertEqual(len(put_props["before_states"]), self.compensation.before_states.count())
|
||||||
self.assertEqual(len(put_props["after_states"]), self.compensation.after_states.count())
|
self.assertEqual(len(put_props["after_states"]), self.compensation.after_states.count())
|
||||||
|
@ -34,6 +34,7 @@ class CompensationAPISerializerV1(AbstractModelAPISerializerV1, AbstractCompensa
|
|||||||
def _extend_properties_data(self, entry):
|
def _extend_properties_data(self, entry):
|
||||||
self.properties_data["is_cef"] = entry.is_cef
|
self.properties_data["is_cef"] = entry.is_cef
|
||||||
self.properties_data["is_coherence_keeping"] = entry.is_coherence_keeping
|
self.properties_data["is_coherence_keeping"] = entry.is_coherence_keeping
|
||||||
|
self.properties_data["is_pik"] = entry.is_pik
|
||||||
self.properties_data["intervention"] = self.intervention_to_json(entry.intervention)
|
self.properties_data["intervention"] = self.intervention_to_json(entry.intervention)
|
||||||
self.properties_data["before_states"] = self._compensation_state_to_json(entry.before_states.all())
|
self.properties_data["before_states"] = self._compensation_state_to_json(entry.before_states.all())
|
||||||
self.properties_data["after_states"] = self._compensation_state_to_json(entry.after_states.all())
|
self.properties_data["after_states"] = self._compensation_state_to_json(entry.after_states.all())
|
||||||
@ -113,6 +114,7 @@ class CompensationAPISerializerV1(AbstractModelAPISerializerV1, AbstractCompensa
|
|||||||
obj.title = properties["title"]
|
obj.title = properties["title"]
|
||||||
obj.is_cef = properties["is_cef"]
|
obj.is_cef = properties["is_cef"]
|
||||||
obj.is_coherence_keeping = properties["is_coherence_keeping"]
|
obj.is_coherence_keeping = properties["is_coherence_keeping"]
|
||||||
|
obj.is_pik = properties.get("is_pik", False)
|
||||||
obj = self.set_intervention(obj, properties["intervention"], user)
|
obj = self.set_intervention(obj, properties["intervention"], user)
|
||||||
|
|
||||||
obj.geometry.save()
|
obj.geometry.save()
|
||||||
@ -149,6 +151,7 @@ class CompensationAPISerializerV1(AbstractModelAPISerializerV1, AbstractCompensa
|
|||||||
obj.title = properties["title"]
|
obj.title = properties["title"]
|
||||||
obj.is_cef = properties["is_cef"]
|
obj.is_cef = properties["is_cef"]
|
||||||
obj.is_coherence_keeping = properties["is_coherence_keeping"]
|
obj.is_coherence_keeping = properties["is_coherence_keeping"]
|
||||||
|
obj.is_pik = properties.get("is_pik", False)
|
||||||
obj.modified = update_action
|
obj.modified = update_action
|
||||||
obj.geometry.geom = self._create_geometry_from_json(json_model)
|
obj.geometry.geom = self._create_geometry_from_json(json_model)
|
||||||
obj.geometry.modified = update_action
|
obj.geometry.modified = update_action
|
||||||
|
@ -25,6 +25,7 @@ class EcoAccountAPISerializerV1(AbstractModelAPISerializerV1,
|
|||||||
model = EcoAccount
|
model = EcoAccount
|
||||||
|
|
||||||
def _extend_properties_data(self, entry):
|
def _extend_properties_data(self, entry):
|
||||||
|
self.properties_data["is_pik"] = entry.is_pik
|
||||||
self.properties_data["deductable_surface"] = entry.deductable_surface
|
self.properties_data["deductable_surface"] = entry.deductable_surface
|
||||||
self.properties_data["deductable_surface_available"] = entry.deductable_surface - entry.get_deductions_surface()
|
self.properties_data["deductable_surface_available"] = entry.deductable_surface - entry.get_deductions_surface()
|
||||||
self.properties_data["responsible"] = self._responsible_to_json(entry.responsible)
|
self.properties_data["responsible"] = self._responsible_to_json(entry.responsible)
|
||||||
@ -122,6 +123,7 @@ class EcoAccountAPISerializerV1(AbstractModelAPISerializerV1,
|
|||||||
properties = json_model["properties"]
|
properties = json_model["properties"]
|
||||||
obj.identifier = obj.generate_new_identifier()
|
obj.identifier = obj.generate_new_identifier()
|
||||||
obj.title = properties["title"]
|
obj.title = properties["title"]
|
||||||
|
obj.is_pik = properties.get("is_pik", False)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
obj.deductable_surface = float(properties["deductable_surface"])
|
obj.deductable_surface = float(properties["deductable_surface"])
|
||||||
@ -169,6 +171,7 @@ class EcoAccountAPISerializerV1(AbstractModelAPISerializerV1,
|
|||||||
# Fill in data to objects
|
# Fill in data to objects
|
||||||
properties = json_model["properties"]
|
properties = json_model["properties"]
|
||||||
obj.title = properties["title"]
|
obj.title = properties["title"]
|
||||||
|
obj.is_pik = properties.get("is_pik", False)
|
||||||
obj.deductable_surface = float(properties["deductable_surface"])
|
obj.deductable_surface = float(properties["deductable_surface"])
|
||||||
obj.modified = update_action
|
obj.modified = update_action
|
||||||
obj.geometry.geom = self._create_geometry_from_json(json_model)
|
obj.geometry.geom = self._create_geometry_from_json(json_model)
|
||||||
|
@ -21,6 +21,7 @@ class EmaAPISerializerV1(AbstractModelAPISerializerV1, AbstractCompensationAPISe
|
|||||||
model = Ema
|
model = Ema
|
||||||
|
|
||||||
def _extend_properties_data(self, entry):
|
def _extend_properties_data(self, entry):
|
||||||
|
self.properties_data["is_pik"] = entry.is_pik
|
||||||
self.properties_data["responsible"] = self._responsible_to_json(entry.responsible)
|
self.properties_data["responsible"] = self._responsible_to_json(entry.responsible)
|
||||||
self.properties_data["before_states"] = self._compensation_state_to_json(entry.before_states.all())
|
self.properties_data["before_states"] = self._compensation_state_to_json(entry.before_states.all())
|
||||||
self.properties_data["after_states"] = self._compensation_state_to_json(entry.after_states.all())
|
self.properties_data["after_states"] = self._compensation_state_to_json(entry.after_states.all())
|
||||||
@ -104,6 +105,7 @@ class EmaAPISerializerV1(AbstractModelAPISerializerV1, AbstractCompensationAPISe
|
|||||||
properties = json_model["properties"]
|
properties = json_model["properties"]
|
||||||
obj.identifier = obj.generate_new_identifier()
|
obj.identifier = obj.generate_new_identifier()
|
||||||
obj.title = properties["title"]
|
obj.title = properties["title"]
|
||||||
|
obj.is_pik = properties.get("is_pik", False)
|
||||||
obj = self._set_responsibility(obj, properties["responsible"])
|
obj = self._set_responsibility(obj, properties["responsible"])
|
||||||
|
|
||||||
obj.geometry.save()
|
obj.geometry.save()
|
||||||
@ -141,6 +143,7 @@ class EmaAPISerializerV1(AbstractModelAPISerializerV1, AbstractCompensationAPISe
|
|||||||
# Fill in data to objects
|
# Fill in data to objects
|
||||||
properties = json_model["properties"]
|
properties = json_model["properties"]
|
||||||
obj.title = properties["title"]
|
obj.title = properties["title"]
|
||||||
|
obj.is_pik = properties.get("is_pik", False)
|
||||||
obj.modified = update_action
|
obj.modified = update_action
|
||||||
obj.geometry.geom = self._create_geometry_from_json(json_model)
|
obj.geometry.geom = self._create_geometry_from_json(json_model)
|
||||||
obj.geometry.modified = update_action
|
obj.geometry.modified = update_action
|
||||||
|
@ -55,6 +55,7 @@ class CompensationAdmin(AbstractCompensationAdmin):
|
|||||||
return super().get_fields(request, obj) + [
|
return super().get_fields(request, obj) + [
|
||||||
"is_cef",
|
"is_cef",
|
||||||
"is_coherence_keeping",
|
"is_coherence_keeping",
|
||||||
|
"is_pik",
|
||||||
"intervention",
|
"intervention",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ class CheckboxCompensationTableFilter(CheckboxTableFilter):
|
|||||||
if not value:
|
if not value:
|
||||||
return queryset.filter(
|
return queryset.filter(
|
||||||
Q(intervention__users__in=[self.user]) | # requesting user has access
|
Q(intervention__users__in=[self.user]) | # requesting user has access
|
||||||
Q(intervention__teams__users__in=[self.user])
|
Q(intervention__teams__in=self.user.shared_teams)
|
||||||
).distinct()
|
).distinct()
|
||||||
else:
|
else:
|
||||||
return queryset
|
return queryset
|
||||||
|
@ -160,7 +160,23 @@ class CoherenceCompensationFormMixin(forms.Form):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class NewCompensationForm(AbstractCompensationForm, CEFCompensationFormMixin, CoherenceCompensationFormMixin):
|
class PikCompensationFormMixin(forms.Form):
|
||||||
|
""" A form mixin, providing PIK compensation field
|
||||||
|
|
||||||
|
"""
|
||||||
|
is_pik = forms.BooleanField(
|
||||||
|
label_suffix="",
|
||||||
|
label=_("Is PIK"),
|
||||||
|
help_text=_("Optionally: Whether this compensation is a compensation integrated in production?"),
|
||||||
|
required=False,
|
||||||
|
widget=forms.CheckboxInput()
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class NewCompensationForm(AbstractCompensationForm,
|
||||||
|
CEFCompensationFormMixin,
|
||||||
|
CoherenceCompensationFormMixin,
|
||||||
|
PikCompensationFormMixin):
|
||||||
""" Form for creating new compensations.
|
""" Form for creating new compensations.
|
||||||
|
|
||||||
Can be initialized with an intervention id for preselecting the related intervention.
|
Can be initialized with an intervention id for preselecting the related intervention.
|
||||||
@ -191,6 +207,7 @@ class NewCompensationForm(AbstractCompensationForm, CEFCompensationFormMixin, Co
|
|||||||
"identifier",
|
"identifier",
|
||||||
"title",
|
"title",
|
||||||
"intervention",
|
"intervention",
|
||||||
|
"is_pik",
|
||||||
"is_cef",
|
"is_cef",
|
||||||
"is_coherence_keeping",
|
"is_coherence_keeping",
|
||||||
"comment",
|
"comment",
|
||||||
@ -234,6 +251,7 @@ class NewCompensationForm(AbstractCompensationForm, CEFCompensationFormMixin, Co
|
|||||||
intervention = self.cleaned_data.get("intervention", None)
|
intervention = self.cleaned_data.get("intervention", None)
|
||||||
is_cef = self.cleaned_data.get("is_cef", None)
|
is_cef = self.cleaned_data.get("is_cef", None)
|
||||||
is_coherence_keeping = self.cleaned_data.get("is_coherence_keeping", None)
|
is_coherence_keeping = self.cleaned_data.get("is_coherence_keeping", None)
|
||||||
|
is_pik = self.cleaned_data.get("is_pik", None)
|
||||||
comment = self.cleaned_data.get("comment", None)
|
comment = self.cleaned_data.get("comment", None)
|
||||||
|
|
||||||
# Create log entry
|
# Create log entry
|
||||||
@ -249,6 +267,7 @@ class NewCompensationForm(AbstractCompensationForm, CEFCompensationFormMixin, Co
|
|||||||
created=action,
|
created=action,
|
||||||
is_cef=is_cef,
|
is_cef=is_cef,
|
||||||
is_coherence_keeping=is_coherence_keeping,
|
is_coherence_keeping=is_coherence_keeping,
|
||||||
|
is_pik=is_pik,
|
||||||
geometry=geometry,
|
geometry=geometry,
|
||||||
comment=comment,
|
comment=comment,
|
||||||
)
|
)
|
||||||
@ -281,6 +300,7 @@ class EditCompensationForm(NewCompensationForm):
|
|||||||
"intervention": self.instance.intervention,
|
"intervention": self.instance.intervention,
|
||||||
"is_cef": self.instance.is_cef,
|
"is_cef": self.instance.is_cef,
|
||||||
"is_coherence_keeping": self.instance.is_coherence_keeping,
|
"is_coherence_keeping": self.instance.is_coherence_keeping,
|
||||||
|
"is_pik": self.instance.is_pik,
|
||||||
"comment": self.instance.comment,
|
"comment": self.instance.comment,
|
||||||
}
|
}
|
||||||
disabled_fields = []
|
disabled_fields = []
|
||||||
@ -297,6 +317,7 @@ class EditCompensationForm(NewCompensationForm):
|
|||||||
intervention = self.cleaned_data.get("intervention", None)
|
intervention = self.cleaned_data.get("intervention", None)
|
||||||
is_cef = self.cleaned_data.get("is_cef", None)
|
is_cef = self.cleaned_data.get("is_cef", None)
|
||||||
is_coherence_keeping = self.cleaned_data.get("is_coherence_keeping", None)
|
is_coherence_keeping = self.cleaned_data.get("is_coherence_keeping", None)
|
||||||
|
is_pik = self.cleaned_data.get("is_pik", None)
|
||||||
comment = self.cleaned_data.get("comment", None)
|
comment = self.cleaned_data.get("comment", None)
|
||||||
|
|
||||||
# Create log entry
|
# Create log entry
|
||||||
@ -313,6 +334,7 @@ class EditCompensationForm(NewCompensationForm):
|
|||||||
self.instance.is_cef = is_cef
|
self.instance.is_cef = is_cef
|
||||||
self.instance.is_coherence_keeping = is_coherence_keeping
|
self.instance.is_coherence_keeping = is_coherence_keeping
|
||||||
self.instance.comment = comment
|
self.instance.comment = comment
|
||||||
|
self.instance.is_pik = is_pik
|
||||||
self.instance.modified = action
|
self.instance.modified = action
|
||||||
self.instance.save()
|
self.instance.save()
|
||||||
|
|
||||||
@ -322,7 +344,7 @@ class EditCompensationForm(NewCompensationForm):
|
|||||||
return self.instance
|
return self.instance
|
||||||
|
|
||||||
|
|
||||||
class NewEcoAccountForm(AbstractCompensationForm, CompensationResponsibleFormMixin):
|
class NewEcoAccountForm(AbstractCompensationForm, CompensationResponsibleFormMixin, PikCompensationFormMixin):
|
||||||
""" Form for creating eco accounts
|
""" Form for creating eco accounts
|
||||||
|
|
||||||
Inherits from basic AbstractCompensationForm and further form fields from CompensationResponsibleFormMixin
|
Inherits from basic AbstractCompensationForm and further form fields from CompensationResponsibleFormMixin
|
||||||
@ -363,6 +385,7 @@ class NewEcoAccountForm(AbstractCompensationForm, CompensationResponsibleFormMix
|
|||||||
"registration_date",
|
"registration_date",
|
||||||
"surface",
|
"surface",
|
||||||
"conservation_file_number",
|
"conservation_file_number",
|
||||||
|
"is_pik",
|
||||||
"handler_type",
|
"handler_type",
|
||||||
"handler_detail",
|
"handler_detail",
|
||||||
"comment",
|
"comment",
|
||||||
@ -392,6 +415,7 @@ class NewEcoAccountForm(AbstractCompensationForm, CompensationResponsibleFormMix
|
|||||||
surface = self.cleaned_data.get("surface", None)
|
surface = self.cleaned_data.get("surface", None)
|
||||||
conservation_office = self.cleaned_data.get("conservation_office", None)
|
conservation_office = self.cleaned_data.get("conservation_office", None)
|
||||||
conservation_file_number = self.cleaned_data.get("conservation_file_number", None)
|
conservation_file_number = self.cleaned_data.get("conservation_file_number", None)
|
||||||
|
is_pik = self.cleaned_data.get("is_pik", None)
|
||||||
comment = self.cleaned_data.get("comment", None)
|
comment = self.cleaned_data.get("comment", None)
|
||||||
|
|
||||||
# Create log entry
|
# Create log entry
|
||||||
@ -423,6 +447,7 @@ class NewEcoAccountForm(AbstractCompensationForm, CompensationResponsibleFormMix
|
|||||||
created=action,
|
created=action,
|
||||||
geometry=geometry,
|
geometry=geometry,
|
||||||
comment=comment,
|
comment=comment,
|
||||||
|
is_pik=is_pik,
|
||||||
legal=legal
|
legal=legal
|
||||||
)
|
)
|
||||||
acc.share_with_user(user)
|
acc.share_with_user(user)
|
||||||
@ -458,6 +483,7 @@ class EditEcoAccountForm(NewEcoAccountForm):
|
|||||||
"registration_date": reg_date,
|
"registration_date": reg_date,
|
||||||
"conservation_office": self.instance.responsible.conservation_office,
|
"conservation_office": self.instance.responsible.conservation_office,
|
||||||
"conservation_file_number": self.instance.responsible.conservation_file_number,
|
"conservation_file_number": self.instance.responsible.conservation_file_number,
|
||||||
|
"is_pik": self.instance.is_pik,
|
||||||
"comment": self.instance.comment,
|
"comment": self.instance.comment,
|
||||||
}
|
}
|
||||||
disabled_fields = []
|
disabled_fields = []
|
||||||
@ -478,6 +504,7 @@ class EditEcoAccountForm(NewEcoAccountForm):
|
|||||||
conservation_office = self.cleaned_data.get("conservation_office", None)
|
conservation_office = self.cleaned_data.get("conservation_office", None)
|
||||||
conservation_file_number = self.cleaned_data.get("conservation_file_number", None)
|
conservation_file_number = self.cleaned_data.get("conservation_file_number", None)
|
||||||
comment = self.cleaned_data.get("comment", None)
|
comment = self.cleaned_data.get("comment", None)
|
||||||
|
is_pik = self.cleaned_data.get("is_pik", None)
|
||||||
|
|
||||||
# Create log entry
|
# Create log entry
|
||||||
action = UserActionLogEntry.get_edited_action(user)
|
action = UserActionLogEntry.get_edited_action(user)
|
||||||
@ -503,6 +530,7 @@ class EditEcoAccountForm(NewEcoAccountForm):
|
|||||||
self.instance.deductable_surface = surface
|
self.instance.deductable_surface = surface
|
||||||
self.instance.geometry = geometry
|
self.instance.geometry = geometry
|
||||||
self.instance.comment = comment
|
self.instance.comment = comment
|
||||||
|
self.instance.is_pik = is_pik
|
||||||
self.instance.modified = action
|
self.instance.modified = action
|
||||||
self.instance.save()
|
self.instance.save()
|
||||||
|
|
||||||
|
23
compensation/migrations/0007_auto_20220531_1245.py
Normal file
23
compensation/migrations/0007_auto_20220531_1245.py
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Generated by Django 3.1.3 on 2022-05-31 10:45
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('compensation', '0006_ecoaccount_teams'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='compensation',
|
||||||
|
name='is_pik',
|
||||||
|
field=models.BooleanField(blank=True, default=False, help_text="Flag if compensation is a 'Produktonsintegrierte Kompensation'", null=True),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='ecoaccount',
|
||||||
|
name='is_pik',
|
||||||
|
field=models.BooleanField(blank=True, default=False, help_text="Flag if compensation is a 'Produktonsintegrierte Kompensation'", null=True),
|
||||||
|
),
|
||||||
|
]
|
@ -257,7 +257,22 @@ class CoherenceMixin(models.Model):
|
|||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
|
|
||||||
class Compensation(AbstractCompensation, CEFMixin, CoherenceMixin):
|
class PikMixin(models.Model):
|
||||||
|
""" Provides PIK flag as Mixin
|
||||||
|
|
||||||
|
"""
|
||||||
|
is_pik = models.BooleanField(
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
default=False,
|
||||||
|
help_text="Flag if compensation is a 'Produktonsintegrierte Kompensation'"
|
||||||
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
abstract = True
|
||||||
|
|
||||||
|
|
||||||
|
class Compensation(AbstractCompensation, CEFMixin, CoherenceMixin, PikMixin):
|
||||||
"""
|
"""
|
||||||
Regular compensation, linked to an intervention
|
Regular compensation, linked to an intervention
|
||||||
"""
|
"""
|
||||||
|
@ -17,14 +17,13 @@ from django.db.models import Sum, QuerySet
|
|||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from compensation.managers import EcoAccountManager, EcoAccountDeductionManager
|
from compensation.managers import EcoAccountManager, EcoAccountDeductionManager
|
||||||
from compensation.models.compensation import AbstractCompensation
|
from compensation.models.compensation import AbstractCompensation, PikMixin
|
||||||
from compensation.utils.quality import EcoAccountQualityChecker
|
from compensation.utils.quality import EcoAccountQualityChecker
|
||||||
from konova.models import ShareableObjectMixin, RecordableObjectMixin, AbstractDocument, BaseResource, \
|
from konova.models import ShareableObjectMixin, RecordableObjectMixin, AbstractDocument, BaseResource, \
|
||||||
generate_document_file_upload_path
|
generate_document_file_upload_path
|
||||||
from konova.settings import DEFAULT_SRID_RLP, LANIS_LINK_TEMPLATE
|
|
||||||
|
|
||||||
|
|
||||||
class EcoAccount(AbstractCompensation, ShareableObjectMixin, RecordableObjectMixin):
|
class EcoAccount(AbstractCompensation, ShareableObjectMixin, RecordableObjectMixin, PikMixin):
|
||||||
"""
|
"""
|
||||||
An eco account is a kind of 'prepaid' compensation. It can be compared to an account that already has been filled
|
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 deduct currency for current projects.
|
with some kind of currency. From this account one is able to deduct currency for current projects.
|
||||||
|
@ -39,6 +39,16 @@
|
|||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">{% trans 'Is PIK' %}</th>
|
||||||
|
<td class="align-middle">
|
||||||
|
{% if obj.is_pik %}
|
||||||
|
{% trans 'Yes' %}
|
||||||
|
{% else %}
|
||||||
|
{% trans 'No' %}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">{% trans 'Is CEF compensation' %}</th>
|
<th scope="row">{% trans 'Is CEF compensation' %}</th>
|
||||||
<td class="align-middle">
|
<td class="align-middle">
|
||||||
|
@ -70,6 +70,16 @@
|
|||||||
<th scope="row">{% trans 'Action handler' %}</th>
|
<th scope="row">{% trans 'Action handler' %}</th>
|
||||||
<td class="align-middle">{{obj.responsible.handler|default_if_none:""}}</td>
|
<td class="align-middle">{{obj.responsible.handler|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">{% trans 'Is PIK' %}</th>
|
||||||
|
<td class="align-middle">
|
||||||
|
{% if obj.is_pik %}
|
||||||
|
{% trans 'Yes' %}
|
||||||
|
{% else %}
|
||||||
|
{% trans 'No' %}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">{% trans 'Last modified' %}</th>
|
<th scope="row">{% trans 'Last modified' %}</th>
|
||||||
<td class="align-middle">
|
<td class="align-middle">
|
||||||
|
@ -20,6 +20,36 @@
|
|||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">{% trans 'Is PIK' %}</th>
|
||||||
|
<td class="align-middle">
|
||||||
|
{% if obj.is_pik %}
|
||||||
|
{% trans 'Yes' %}
|
||||||
|
{% else %}
|
||||||
|
{% trans 'No' %}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">{% trans 'Is CEF' %}</th>
|
||||||
|
<td class="align-middle">
|
||||||
|
{% if obj.is_cef %}
|
||||||
|
{% trans 'Yes' %}
|
||||||
|
{% else %}
|
||||||
|
{% trans 'No' %}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">{% trans 'Is coherence keeping' %}</th>
|
||||||
|
<td class="align-middle">
|
||||||
|
{% if obj.is_coherence_keeping %}
|
||||||
|
{% trans 'Yes' %}
|
||||||
|
{% else %}
|
||||||
|
{% trans 'No' %}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">{% trans 'Last modified' %}</th>
|
<th scope="row">{% trans 'Last modified' %}</th>
|
||||||
<td class="align-middle">
|
<td class="align-middle">
|
||||||
|
@ -20,6 +20,16 @@
|
|||||||
<th scope="row">{% trans 'Conservation office file number' %}</th>
|
<th scope="row">{% trans 'Conservation office file number' %}</th>
|
||||||
<td class="align-middle">{{obj.responsible.conservation_file_number|default_if_none:""}}</td>
|
<td class="align-middle">{{obj.responsible.conservation_file_number|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">{% trans 'Is PIK' %}</th>
|
||||||
|
<td class="align-middle">
|
||||||
|
{% if obj.is_pik %}
|
||||||
|
{% trans 'Yes' %}
|
||||||
|
{% else %}
|
||||||
|
{% trans 'No' %}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">{% trans 'Deductions for' %}</th>
|
<th scope="row">{% trans 'Deductions for' %}</th>
|
||||||
<td class="align-middle">
|
<td class="align-middle">
|
||||||
|
11
ema/forms.py
11
ema/forms.py
@ -12,14 +12,15 @@ from django.db import transaction
|
|||||||
from django.urls import reverse, reverse_lazy
|
from django.urls import reverse, reverse_lazy
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from compensation.forms.forms import AbstractCompensationForm, CompensationResponsibleFormMixin
|
from compensation.forms.forms import AbstractCompensationForm, CompensationResponsibleFormMixin, \
|
||||||
|
PikCompensationFormMixin
|
||||||
from ema.models import Ema, EmaDocument
|
from ema.models import Ema, EmaDocument
|
||||||
from intervention.models import Responsibility, Handler
|
from intervention.models import Responsibility, Handler
|
||||||
from konova.forms import SimpleGeomForm, NewDocumentModalForm
|
from konova.forms import SimpleGeomForm, NewDocumentModalForm
|
||||||
from user.models import UserActionLogEntry
|
from user.models import UserActionLogEntry
|
||||||
|
|
||||||
|
|
||||||
class NewEmaForm(AbstractCompensationForm, CompensationResponsibleFormMixin):
|
class NewEmaForm(AbstractCompensationForm, CompensationResponsibleFormMixin, PikCompensationFormMixin):
|
||||||
""" Form for creating new EMA objects.
|
""" Form for creating new EMA objects.
|
||||||
|
|
||||||
Inherits basic form fields from AbstractCompensationForm and additional from CompensationResponsibleFormMixin.
|
Inherits basic form fields from AbstractCompensationForm and additional from CompensationResponsibleFormMixin.
|
||||||
@ -31,6 +32,7 @@ class NewEmaForm(AbstractCompensationForm, CompensationResponsibleFormMixin):
|
|||||||
"title",
|
"title",
|
||||||
"conservation_office",
|
"conservation_office",
|
||||||
"conservation_file_number",
|
"conservation_file_number",
|
||||||
|
"is_pik",
|
||||||
"handler_type",
|
"handler_type",
|
||||||
"handler_detail",
|
"handler_detail",
|
||||||
"comment",
|
"comment",
|
||||||
@ -58,6 +60,7 @@ class NewEmaForm(AbstractCompensationForm, CompensationResponsibleFormMixin):
|
|||||||
handler_detail = self.cleaned_data.get("handler_detail", None)
|
handler_detail = self.cleaned_data.get("handler_detail", None)
|
||||||
conservation_office = self.cleaned_data.get("conservation_office", None)
|
conservation_office = self.cleaned_data.get("conservation_office", None)
|
||||||
conservation_file_number = self.cleaned_data.get("conservation_file_number", None)
|
conservation_file_number = self.cleaned_data.get("conservation_file_number", None)
|
||||||
|
is_pik = self.cleaned_data.get("is_pik", None)
|
||||||
comment = self.cleaned_data.get("comment", None)
|
comment = self.cleaned_data.get("comment", None)
|
||||||
|
|
||||||
# Create log entry
|
# Create log entry
|
||||||
@ -83,6 +86,7 @@ class NewEmaForm(AbstractCompensationForm, CompensationResponsibleFormMixin):
|
|||||||
created=action,
|
created=action,
|
||||||
geometry=geometry,
|
geometry=geometry,
|
||||||
comment=comment,
|
comment=comment,
|
||||||
|
is_pik=is_pik,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Add the creating user to the list of shared users
|
# Add the creating user to the list of shared users
|
||||||
@ -116,6 +120,7 @@ class EditEmaForm(NewEmaForm):
|
|||||||
"conservation_office": self.instance.responsible.conservation_office,
|
"conservation_office": self.instance.responsible.conservation_office,
|
||||||
"conservation_file_number": self.instance.responsible.conservation_file_number,
|
"conservation_file_number": self.instance.responsible.conservation_file_number,
|
||||||
"comment": self.instance.comment,
|
"comment": self.instance.comment,
|
||||||
|
"is_pik": self.instance.is_pik,
|
||||||
}
|
}
|
||||||
disabled_fields = []
|
disabled_fields = []
|
||||||
self.load_initial_data(
|
self.load_initial_data(
|
||||||
@ -133,6 +138,7 @@ class EditEmaForm(NewEmaForm):
|
|||||||
conservation_office = self.cleaned_data.get("conservation_office", None)
|
conservation_office = self.cleaned_data.get("conservation_office", None)
|
||||||
conservation_file_number = self.cleaned_data.get("conservation_file_number", None)
|
conservation_file_number = self.cleaned_data.get("conservation_file_number", None)
|
||||||
comment = self.cleaned_data.get("comment", None)
|
comment = self.cleaned_data.get("comment", None)
|
||||||
|
is_pik = self.cleaned_data.get("is_pik", None)
|
||||||
|
|
||||||
# Create log entry
|
# Create log entry
|
||||||
action = UserActionLogEntry.get_edited_action(user)
|
action = UserActionLogEntry.get_edited_action(user)
|
||||||
@ -152,6 +158,7 @@ class EditEmaForm(NewEmaForm):
|
|||||||
self.instance.title = title
|
self.instance.title = title
|
||||||
self.instance.geometry = geometry
|
self.instance.geometry = geometry
|
||||||
self.instance.comment = comment
|
self.instance.comment = comment
|
||||||
|
self.instance.is_pik = is_pik
|
||||||
self.instance.modified = action
|
self.instance.modified = action
|
||||||
self.instance.save()
|
self.instance.save()
|
||||||
|
|
||||||
|
18
ema/migrations/0004_ema_is_pik.py
Normal file
18
ema/migrations/0004_ema_is_pik.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 3.1.3 on 2022-05-31 10:45
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('ema', '0003_ema_teams'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='ema',
|
||||||
|
name='is_pik',
|
||||||
|
field=models.BooleanField(blank=True, default=False, help_text="Flag if compensation is a 'Produktonsintegrierte Kompensation'", null=True),
|
||||||
|
),
|
||||||
|
]
|
@ -13,15 +13,14 @@ from django.db.models import QuerySet
|
|||||||
from django.http import HttpRequest
|
from django.http import HttpRequest
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from compensation.models import AbstractCompensation
|
from compensation.models import AbstractCompensation, PikMixin
|
||||||
from ema.managers import EmaManager
|
from ema.managers import EmaManager
|
||||||
from ema.utils.quality import EmaQualityChecker
|
from ema.utils.quality import EmaQualityChecker
|
||||||
from konova.models import AbstractDocument, generate_document_file_upload_path, RecordableObjectMixin, ShareableObjectMixin
|
from konova.models import AbstractDocument, generate_document_file_upload_path, RecordableObjectMixin, ShareableObjectMixin
|
||||||
from konova.settings import DEFAULT_SRID_RLP, LANIS_LINK_TEMPLATE
|
|
||||||
from konova.utils.message_templates import DATA_UNSHARED_EXPLANATION, DOCUMENT_REMOVED_TEMPLATE
|
from konova.utils.message_templates import DATA_UNSHARED_EXPLANATION, DOCUMENT_REMOVED_TEMPLATE
|
||||||
|
|
||||||
|
|
||||||
class Ema(AbstractCompensation, ShareableObjectMixin, RecordableObjectMixin):
|
class Ema(AbstractCompensation, ShareableObjectMixin, RecordableObjectMixin, PikMixin):
|
||||||
"""
|
"""
|
||||||
EMA = Ersatzzahlungsmaßnahme
|
EMA = Ersatzzahlungsmaßnahme
|
||||||
(compensation actions from payments)
|
(compensation actions from payments)
|
||||||
|
@ -56,6 +56,16 @@
|
|||||||
<th scope="row">{% trans 'Action handler' %}</th>
|
<th scope="row">{% trans 'Action handler' %}</th>
|
||||||
<td class="align-middle">{{obj.responsible.handler|default_if_none:""}}</td>
|
<td class="align-middle">{{obj.responsible.handler|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">{% trans 'Is PIK' %}</th>
|
||||||
|
<td class="align-middle">
|
||||||
|
{% if obj.is_pik %}
|
||||||
|
{% trans 'Yes' %}
|
||||||
|
{% else %}
|
||||||
|
{% trans 'No' %}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">{% trans 'Last modified' %}</th>
|
<th scope="row">{% trans 'Last modified' %}</th>
|
||||||
<td class="align-middle">
|
<td class="align-middle">
|
||||||
|
@ -20,6 +20,16 @@
|
|||||||
<th scope="row">{% trans 'Conservation office file number' %}</th>
|
<th scope="row">{% trans 'Conservation office file number' %}</th>
|
||||||
<td class="align-middle">{{obj.responsible.conservation_file_number|default_if_none:""}}</td>
|
<td class="align-middle">{{obj.responsible.conservation_file_number|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">{% trans 'Is PIK' %}</th>
|
||||||
|
<td class="align-middle">
|
||||||
|
{% if obj.is_pik %}
|
||||||
|
{% trans 'Yes' %}
|
||||||
|
{% else %}
|
||||||
|
{% trans 'No' %}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">{% trans 'Last modified' %}</th>
|
<th scope="row">{% trans 'Last modified' %}</th>
|
||||||
<td class="align-middle">
|
<td class="align-middle">
|
||||||
|
@ -305,7 +305,7 @@ class ShareableTableFilterMixin(django_filters.FilterSet):
|
|||||||
if not value:
|
if not value:
|
||||||
return queryset.filter(
|
return queryset.filter(
|
||||||
Q(users__in=[self.user]) | # requesting user has access
|
Q(users__in=[self.user]) | # requesting user has access
|
||||||
Q(teams__users__in=[self.user])
|
Q(teams__in=self.user.shared_teams)
|
||||||
).distinct()
|
).distinct()
|
||||||
else:
|
else:
|
||||||
return queryset
|
return queryset
|
||||||
|
Binary file not shown.
@ -26,7 +26,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-05-30 11:51+0200\n"
|
"POT-Creation-Date: 2022-05-31 13:05+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@ -61,7 +61,7 @@ msgid "Select the responsible office"
|
|||||||
msgstr "Verantwortliche Stelle"
|
msgstr "Verantwortliche Stelle"
|
||||||
|
|
||||||
#: analysis/forms.py:58 compensation/forms/forms.py:88
|
#: analysis/forms.py:58 compensation/forms/forms.py:88
|
||||||
#: compensation/forms/forms.py:118 compensation/forms/forms.py:183
|
#: compensation/forms/forms.py:118 compensation/forms/forms.py:199
|
||||||
#: intervention/forms/forms.py:64 intervention/forms/forms.py:81
|
#: intervention/forms/forms.py:64 intervention/forms/forms.py:81
|
||||||
#: intervention/forms/forms.py:97 intervention/forms/forms.py:113
|
#: intervention/forms/forms.py:97 intervention/forms/forms.py:113
|
||||||
#: intervention/forms/forms.py:154 intervention/forms/modalForms.py:49
|
#: intervention/forms/forms.py:154 intervention/forms/modalForms.py:49
|
||||||
@ -139,7 +139,7 @@ msgstr "Zuständigkeitsbereich"
|
|||||||
#: analysis/templates/analysis/reports/includes/intervention/compensated_by.html:8
|
#: analysis/templates/analysis/reports/includes/intervention/compensated_by.html:8
|
||||||
#: analysis/templates/analysis/reports/includes/intervention/laws.html:17
|
#: analysis/templates/analysis/reports/includes/intervention/laws.html:17
|
||||||
#: compensation/tables.py:38
|
#: compensation/tables.py:38
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:64
|
#: compensation/templates/compensation/detail/compensation/view.html:74
|
||||||
#: intervention/tables.py:38
|
#: intervention/tables.py:38
|
||||||
#: intervention/templates/intervention/detail/view.html:68
|
#: intervention/templates/intervention/detail/view.html:68
|
||||||
#: user/models/user_action.py:21
|
#: user/models/user_action.py:21
|
||||||
@ -155,7 +155,7 @@ msgstr "Geprüft"
|
|||||||
#: analysis/templates/analysis/reports/includes/intervention/laws.html:20
|
#: analysis/templates/analysis/reports/includes/intervention/laws.html:20
|
||||||
#: analysis/templates/analysis/reports/includes/old_data/amount.html:18
|
#: analysis/templates/analysis/reports/includes/old_data/amount.html:18
|
||||||
#: compensation/tables.py:44 compensation/tables.py:219
|
#: compensation/tables.py:44 compensation/tables.py:219
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:83
|
#: compensation/templates/compensation/detail/compensation/view.html:93
|
||||||
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:31
|
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:31
|
||||||
#: compensation/templates/compensation/detail/eco_account/view.html:45
|
#: compensation/templates/compensation/detail/eco_account/view.html:45
|
||||||
#: ema/tables.py:44 ema/templates/ema/detail/view.html:35
|
#: ema/tables.py:44 ema/templates/ema/detail/view.html:35
|
||||||
@ -350,7 +350,7 @@ msgstr "Bezeichnung"
|
|||||||
msgid "An explanatory name"
|
msgid "An explanatory name"
|
||||||
msgstr "Aussagekräftiger Titel"
|
msgstr "Aussagekräftiger Titel"
|
||||||
|
|
||||||
#: compensation/forms/forms.py:50 ema/forms.py:50 ema/forms.py:108
|
#: compensation/forms/forms.py:50 ema/forms.py:52 ema/forms.py:112
|
||||||
msgid "Compensation XY; Location ABC"
|
msgid "Compensation XY; Location ABC"
|
||||||
msgstr "Kompensation XY; Flur ABC"
|
msgstr "Kompensation XY; Flur ABC"
|
||||||
|
|
||||||
@ -431,51 +431,64 @@ msgid ""
|
|||||||
"Optionally: Whether this compensation is a coherence keeping compensation?"
|
"Optionally: Whether this compensation is a coherence keeping compensation?"
|
||||||
msgstr "Optional: Handelt es sich um eine Kohärenzsicherungsmaßnahme?"
|
msgstr "Optional: Handelt es sich um eine Kohärenzsicherungsmaßnahme?"
|
||||||
|
|
||||||
#: compensation/forms/forms.py:174
|
#: compensation/forms/forms.py:169
|
||||||
|
#: compensation/templates/compensation/detail/compensation/view.html:44
|
||||||
|
#: compensation/templates/compensation/detail/eco_account/view.html:75
|
||||||
|
#: ema/templates/ema/detail/view.html:61
|
||||||
|
msgid "Is PIK"
|
||||||
|
msgstr "Ist PIK Maßnahme"
|
||||||
|
|
||||||
|
#: compensation/forms/forms.py:170
|
||||||
|
msgid ""
|
||||||
|
"Optionally: Whether this compensation is a compensation integrated in "
|
||||||
|
"production?"
|
||||||
|
msgstr "Optional: Handelt es sich um eine produktionsintegrierte Kompensation?"
|
||||||
|
|
||||||
|
#: compensation/forms/forms.py:190
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:36
|
#: compensation/templates/compensation/detail/compensation/view.html:36
|
||||||
#: compensation/templates/compensation/report/compensation/report.html:16
|
#: compensation/templates/compensation/report/compensation/report.html:16
|
||||||
msgid "compensates intervention"
|
msgid "compensates intervention"
|
||||||
msgstr "kompensiert Eingriff"
|
msgstr "kompensiert Eingriff"
|
||||||
|
|
||||||
#: compensation/forms/forms.py:176
|
#: compensation/forms/forms.py:192
|
||||||
msgid "Select the intervention for which this compensation compensates"
|
msgid "Select the intervention for which this compensation compensates"
|
||||||
msgstr "Wählen Sie den Eingriff, für den diese Kompensation bestimmt ist"
|
msgstr "Wählen Sie den Eingriff, für den diese Kompensation bestimmt ist"
|
||||||
|
|
||||||
#: compensation/forms/forms.py:202 compensation/views/compensation.py:110
|
#: compensation/forms/forms.py:219 compensation/views/compensation.py:110
|
||||||
msgid "New compensation"
|
msgid "New compensation"
|
||||||
msgstr "Neue Kompensation"
|
msgstr "Neue Kompensation"
|
||||||
|
|
||||||
#: compensation/forms/forms.py:273
|
#: compensation/forms/forms.py:292
|
||||||
msgid "Edit compensation"
|
msgid "Edit compensation"
|
||||||
msgstr "Bearbeite Kompensation"
|
msgstr "Bearbeite Kompensation"
|
||||||
|
|
||||||
#: compensation/forms/forms.py:334 compensation/utils/quality.py:84
|
#: compensation/forms/forms.py:356 compensation/utils/quality.py:84
|
||||||
msgid "Available Surface"
|
msgid "Available Surface"
|
||||||
msgstr "Verfügbare Fläche"
|
msgstr "Verfügbare Fläche"
|
||||||
|
|
||||||
#: compensation/forms/forms.py:337
|
#: compensation/forms/forms.py:359
|
||||||
msgid "The amount that can be used for deductions"
|
msgid "The amount that can be used for deductions"
|
||||||
msgstr "Die für Abbuchungen zur Verfügung stehende Menge"
|
msgstr "Die für Abbuchungen zur Verfügung stehende Menge"
|
||||||
|
|
||||||
#: compensation/forms/forms.py:346
|
#: compensation/forms/forms.py:368
|
||||||
#: compensation/templates/compensation/detail/eco_account/view.html:67
|
#: compensation/templates/compensation/detail/eco_account/view.html:67
|
||||||
#: compensation/utils/quality.py:72
|
#: compensation/utils/quality.py:72
|
||||||
msgid "Agreement date"
|
msgid "Agreement date"
|
||||||
msgstr "Vereinbarungsdatum"
|
msgstr "Vereinbarungsdatum"
|
||||||
|
|
||||||
#: compensation/forms/forms.py:348
|
#: compensation/forms/forms.py:370
|
||||||
msgid "When did the parties agree on this?"
|
msgid "When did the parties agree on this?"
|
||||||
msgstr "Wann wurde dieses Ökokonto offiziell vereinbart?"
|
msgstr "Wann wurde dieses Ökokonto offiziell vereinbart?"
|
||||||
|
|
||||||
#: compensation/forms/forms.py:373 compensation/views/eco_account.py:108
|
#: compensation/forms/forms.py:396 compensation/views/eco_account.py:108
|
||||||
msgid "New Eco-Account"
|
msgid "New Eco-Account"
|
||||||
msgstr "Neues Ökokonto"
|
msgstr "Neues Ökokonto"
|
||||||
|
|
||||||
#: compensation/forms/forms.py:382
|
#: compensation/forms/forms.py:405
|
||||||
msgid "Eco-Account XY; Location ABC"
|
msgid "Eco-Account XY; Location ABC"
|
||||||
msgstr "Ökokonto XY; Flur ABC"
|
msgstr "Ökokonto XY; Flur ABC"
|
||||||
|
|
||||||
#: compensation/forms/forms.py:442
|
#: compensation/forms/forms.py:467
|
||||||
msgid "Edit Eco-Account"
|
msgid "Edit Eco-Account"
|
||||||
msgstr "Ökokonto bearbeiten"
|
msgstr "Ökokonto bearbeiten"
|
||||||
|
|
||||||
@ -696,7 +709,7 @@ msgid "Open {}"
|
|||||||
msgstr "Öffne {}"
|
msgstr "Öffne {}"
|
||||||
|
|
||||||
#: compensation/tables.py:163
|
#: compensation/tables.py:163
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:86
|
#: compensation/templates/compensation/detail/compensation/view.html:96
|
||||||
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:58
|
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:58
|
||||||
#: compensation/templates/compensation/detail/eco_account/view.html:48
|
#: compensation/templates/compensation/detail/eco_account/view.html:48
|
||||||
#: ema/tables.py:130 ema/templates/ema/detail/view.html:38
|
#: ema/tables.py:130 ema/templates/ema/detail/view.html:38
|
||||||
@ -955,33 +968,39 @@ msgstr "Neuen Ausgangszustand hinzufügen"
|
|||||||
msgid "Missing surfaces according to states after: "
|
msgid "Missing surfaces according to states after: "
|
||||||
msgstr "Fehlende Flächenmengen laut Zielzustand: "
|
msgstr "Fehlende Flächenmengen laut Zielzustand: "
|
||||||
|
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:44
|
|
||||||
msgid "Is CEF compensation"
|
|
||||||
msgstr "Ist CEF Maßnahme"
|
|
||||||
|
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:47
|
#: compensation/templates/compensation/detail/compensation/view.html:47
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:57
|
#: compensation/templates/compensation/detail/compensation/view.html:57
|
||||||
|
#: compensation/templates/compensation/detail/compensation/view.html:67
|
||||||
|
#: compensation/templates/compensation/detail/eco_account/view.html:78
|
||||||
|
#: ema/templates/ema/detail/view.html:64
|
||||||
#: venv/lib/python3.7/site-packages/django/forms/widgets.py:710
|
#: venv/lib/python3.7/site-packages/django/forms/widgets.py:710
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Ja"
|
msgstr "Ja"
|
||||||
|
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:49
|
#: compensation/templates/compensation/detail/compensation/view.html:49
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:59
|
#: compensation/templates/compensation/detail/compensation/view.html:59
|
||||||
|
#: compensation/templates/compensation/detail/compensation/view.html:69
|
||||||
|
#: compensation/templates/compensation/detail/eco_account/view.html:80
|
||||||
|
#: ema/templates/ema/detail/view.html:66
|
||||||
#: venv/lib/python3.7/site-packages/django/forms/widgets.py:711
|
#: venv/lib/python3.7/site-packages/django/forms/widgets.py:711
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr "Nein"
|
msgstr "Nein"
|
||||||
|
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:54
|
#: compensation/templates/compensation/detail/compensation/view.html:54
|
||||||
|
msgid "Is CEF compensation"
|
||||||
|
msgstr "Ist CEF Maßnahme"
|
||||||
|
|
||||||
|
#: compensation/templates/compensation/detail/compensation/view.html:64
|
||||||
msgid "Is Coherence keeping compensation"
|
msgid "Is Coherence keeping compensation"
|
||||||
msgstr "Ist Kohärenzsicherungsmaßnahme"
|
msgstr "Ist Kohärenzsicherungsmaßnahme"
|
||||||
|
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:76
|
#: compensation/templates/compensation/detail/compensation/view.html:86
|
||||||
#: intervention/templates/intervention/detail/view.html:80
|
#: intervention/templates/intervention/detail/view.html:80
|
||||||
msgid "Checked on "
|
msgid "Checked on "
|
||||||
msgstr "Geprüft am "
|
msgstr "Geprüft am "
|
||||||
|
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:76
|
#: compensation/templates/compensation/detail/compensation/view.html:86
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:90
|
#: compensation/templates/compensation/detail/compensation/view.html:100
|
||||||
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:56
|
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:56
|
||||||
#: compensation/templates/compensation/detail/eco_account/view.html:52
|
#: compensation/templates/compensation/detail/eco_account/view.html:52
|
||||||
#: ema/templates/ema/detail/view.html:42
|
#: ema/templates/ema/detail/view.html:42
|
||||||
@ -990,27 +1009,27 @@ msgstr "Geprüft am "
|
|||||||
msgid "by"
|
msgid "by"
|
||||||
msgstr "von"
|
msgstr "von"
|
||||||
|
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:90
|
#: compensation/templates/compensation/detail/compensation/view.html:100
|
||||||
#: compensation/templates/compensation/detail/eco_account/view.html:52
|
#: compensation/templates/compensation/detail/eco_account/view.html:52
|
||||||
#: ema/templates/ema/detail/view.html:42
|
#: ema/templates/ema/detail/view.html:42
|
||||||
#: intervention/templates/intervention/detail/view.html:94
|
#: intervention/templates/intervention/detail/view.html:94
|
||||||
msgid "Recorded on "
|
msgid "Recorded on "
|
||||||
msgstr "Verzeichnet am"
|
msgstr "Verzeichnet am"
|
||||||
|
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:97
|
#: compensation/templates/compensation/detail/compensation/view.html:107
|
||||||
#: compensation/templates/compensation/detail/eco_account/view.html:75
|
#: compensation/templates/compensation/detail/eco_account/view.html:85
|
||||||
#: compensation/templates/compensation/report/compensation/report.html:24
|
#: compensation/templates/compensation/report/compensation/report.html:24
|
||||||
#: compensation/templates/compensation/report/eco_account/report.html:37
|
#: compensation/templates/compensation/report/eco_account/report.html:37
|
||||||
#: ema/templates/ema/detail/view.html:61
|
#: ema/templates/ema/detail/view.html:71
|
||||||
#: ema/templates/ema/report/report.html:24
|
#: ema/templates/ema/report/report.html:24
|
||||||
#: intervention/templates/intervention/detail/view.html:113
|
#: intervention/templates/intervention/detail/view.html:113
|
||||||
#: intervention/templates/intervention/report/report.html:87
|
#: intervention/templates/intervention/report/report.html:87
|
||||||
msgid "Last modified"
|
msgid "Last modified"
|
||||||
msgstr "Zuletzt bearbeitet"
|
msgstr "Zuletzt bearbeitet"
|
||||||
|
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:111
|
#: compensation/templates/compensation/detail/compensation/view.html:121
|
||||||
#: compensation/templates/compensation/detail/eco_account/view.html:89
|
#: compensation/templates/compensation/detail/eco_account/view.html:99
|
||||||
#: ema/templates/ema/detail/view.html:75
|
#: ema/templates/ema/detail/view.html:85
|
||||||
#: intervention/templates/intervention/detail/view.html:127
|
#: intervention/templates/intervention/detail/view.html:127
|
||||||
msgid "Shared with"
|
msgid "Shared with"
|
||||||
msgstr "Freigegeben für"
|
msgstr "Freigegeben für"
|
||||||
@ -1202,11 +1221,11 @@ msgstr "Freigabelink ungültig"
|
|||||||
msgid "Share settings updated"
|
msgid "Share settings updated"
|
||||||
msgstr "Freigabe Einstellungen aktualisiert"
|
msgstr "Freigabe Einstellungen aktualisiert"
|
||||||
|
|
||||||
#: ema/forms.py:41 ema/views.py:98
|
#: ema/forms.py:43 ema/views.py:98
|
||||||
msgid "New EMA"
|
msgid "New EMA"
|
||||||
msgstr "Neue EMA hinzufügen"
|
msgstr "Neue EMA hinzufügen"
|
||||||
|
|
||||||
#: ema/forms.py:102
|
#: ema/forms.py:106
|
||||||
msgid "Edit EMA"
|
msgid "Edit EMA"
|
||||||
msgstr "Bearbeite EMA"
|
msgstr "Bearbeite EMA"
|
||||||
|
|
||||||
@ -2548,11 +2567,11 @@ msgstr "Neuen Token generieren"
|
|||||||
msgid "A new token needs to be validated by an administrator!"
|
msgid "A new token needs to be validated by an administrator!"
|
||||||
msgstr "Neue Tokens müssen durch Administratoren freigeschaltet werden!"
|
msgstr "Neue Tokens müssen durch Administratoren freigeschaltet werden!"
|
||||||
|
|
||||||
#: user/forms.py:168 user/forms.py:172 user/forms.py:351 user/forms.py:356
|
#: user/forms.py:168 user/forms.py:172 user/forms.py:354 user/forms.py:359
|
||||||
msgid "Team name"
|
msgid "Team name"
|
||||||
msgstr "Team Name"
|
msgstr "Team Name"
|
||||||
|
|
||||||
#: user/forms.py:179 user/forms.py:364 user/templates/user/team/index.html:30
|
#: user/forms.py:179 user/forms.py:367 user/templates/user/team/index.html:30
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Beschreibung"
|
msgstr "Beschreibung"
|
||||||
|
|
||||||
@ -2604,7 +2623,7 @@ msgstr "Es muss mindestens einen Administrator für das Team geben."
|
|||||||
msgid "Edit team"
|
msgid "Edit team"
|
||||||
msgstr "Team bearbeiten"
|
msgstr "Team bearbeiten"
|
||||||
|
|
||||||
#: user/forms.py:336
|
#: user/forms.py:335
|
||||||
msgid ""
|
msgid ""
|
||||||
"ATTENTION!\n"
|
"ATTENTION!\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -2613,16 +2632,18 @@ msgid ""
|
|||||||
"\n"
|
"\n"
|
||||||
"Are you sure to remove this team?"
|
"Are you sure to remove this team?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"ACHTUNG!\n\n"
|
"ACHTUNG!\n"
|
||||||
"Wenn dieses Team gelöscht wird, verlieren alle Teammitglieder den Zugriff auf die Daten, die nur über dieses Team freigegeben sind!\n"
|
"\n"
|
||||||
|
"Wenn dieses Team gelöscht wird, verlieren alle Teammitglieder den Zugriff "
|
||||||
|
"auf die Daten, die nur über dieses Team freigegeben sind!\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Sind Sie sicher, dass Sie dieses Team löschen möchten?"
|
"Sind Sie sicher, dass Sie dieses Team löschen möchten?"
|
||||||
|
|
||||||
#: user/forms.py:342 user/templates/user/team/index.html:56
|
#: user/forms.py:345 user/templates/user/team/index.html:56
|
||||||
msgid "Leave team"
|
msgid "Leave team"
|
||||||
msgstr "Team verlassen"
|
msgstr "Team verlassen"
|
||||||
|
|
||||||
#: user/forms.py:375
|
#: user/forms.py:378
|
||||||
msgid "Team"
|
msgid "Team"
|
||||||
msgstr "Team"
|
msgstr "Team"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user