Merge branch 'refs/heads/master' into missing_migrations
This commit is contained in:
		
						commit
						dd77e6c16e
					
				@ -1,5 +1,6 @@
 | 
			
		||||
# Generated by Django 5.0.7 on 2024-08-06 13:40
 | 
			
		||||
 | 
			
		||||
from django.core.exceptions import ObjectDoesNotExist
 | 
			
		||||
from django.db import migrations
 | 
			
		||||
from django.db.models import Q
 | 
			
		||||
 | 
			
		||||
@ -10,9 +11,12 @@ def migrate_975_to_288(apps, schema_editor):
 | 
			
		||||
    KonovaCodeList = apps.get_model('codelist', 'KonovaCodeList')
 | 
			
		||||
    CompensationState = apps.get_model('compensation', 'CompensationState')
 | 
			
		||||
 | 
			
		||||
    list_288 = KonovaCodeList.objects.get(
 | 
			
		||||
        id=CODELIST_BIOTOPES_EXTRA_CODES_FULL_ID
 | 
			
		||||
    ).codes.all()
 | 
			
		||||
    try:
 | 
			
		||||
        list_288 = KonovaCodeList.objects.get(
 | 
			
		||||
            id=CODELIST_BIOTOPES_EXTRA_CODES_FULL_ID
 | 
			
		||||
        ).codes.all()
 | 
			
		||||
    except ObjectDoesNotExist:
 | 
			
		||||
        raise AssertionError("KonovaCodeList 288 does not exist. Did you run 'update_codelist' before migrating?")
 | 
			
		||||
 | 
			
		||||
    states_with_extra_code = CompensationState.objects.filter(
 | 
			
		||||
        ~Q(biotope_type_details=None)
 | 
			
		||||
@ -42,8 +46,15 @@ class Migration(migrations.Migration):
 | 
			
		||||
 | 
			
		||||
    dependencies = [
 | 
			
		||||
        ('codelist', '0001_initial'),
 | 
			
		||||
        ('compensation', '0003_auto_20220202_0846'),
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    operations = [
 | 
			
		||||
        migrations.RunPython(migrate_975_to_288)
 | 
			
		||||
    ]
 | 
			
		||||
    # If migration of codelist is not necessary, this variable can shut down the logic whilst not disturbing the
 | 
			
		||||
    # migration history
 | 
			
		||||
    EXECUTE_CODELIST_MIGRATION = True
 | 
			
		||||
 | 
			
		||||
    operations = []
 | 
			
		||||
 | 
			
		||||
    if EXECUTE_CODELIST_MIGRATION:
 | 
			
		||||
        operations.append(migrations.RunPython(migrate_975_to_288))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:new-action' obj.id %}" title="{% trans 'Add new action' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'seedling' %}
 | 
			
		||||
@ -34,7 +34,7 @@
 | 
			
		||||
                <th scope="col">
 | 
			
		||||
                    {% trans 'Comment' %}
 | 
			
		||||
                </th>
 | 
			
		||||
                {% if is_default_member and has_access %}
 | 
			
		||||
                {% if is_default_member and is_entry_shared %}
 | 
			
		||||
                <th class="w-10" scope="col">
 | 
			
		||||
                    <span class="float-right">
 | 
			
		||||
                        {% trans 'Action' %}
 | 
			
		||||
@ -64,7 +64,7 @@
 | 
			
		||||
                    </div>
 | 
			
		||||
                </td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button data-form-url="{% url 'compensation:action-edit' obj.id action.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit action' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@
 | 
			
		||||
            {% fa5_icon 'file-alt' %}
 | 
			
		||||
        </button>
 | 
			
		||||
    </a>
 | 
			
		||||
    {% if has_access %}
 | 
			
		||||
    {% if is_entry_shared %}
 | 
			
		||||
        <button class="btn btn-default btn-modal mr-2" title="{% trans 'Resubmission' %}" data-form-url="{% url 'compensation:resubmission-create' obj.id %}">
 | 
			
		||||
            {% fa5_icon 'bell' %}
 | 
			
		||||
        </button>
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:new-deadline' obj.id %}" title="{% trans 'Add new deadline' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'calendar-check' %}
 | 
			
		||||
@ -38,7 +38,7 @@
 | 
			
		||||
                <th scope="col">
 | 
			
		||||
                    {% trans 'Comment' %}
 | 
			
		||||
                </th>
 | 
			
		||||
                {% if is_default_member and has_access %}
 | 
			
		||||
                {% if is_default_member and is_entry_shared %}
 | 
			
		||||
                    <th class="w-10" scope="col">
 | 
			
		||||
                        <span class="float-right">
 | 
			
		||||
                            {% trans 'Action' %}
 | 
			
		||||
@ -60,7 +60,7 @@
 | 
			
		||||
                    </div>
 | 
			
		||||
                </td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button data-form-url="{% url 'compensation:deadline-edit' obj.id deadline.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit deadline' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:new-doc' obj.id %}" title="{% trans 'Add new document' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'file' %}
 | 
			
		||||
@ -33,7 +33,7 @@
 | 
			
		||||
                <th scope="col">
 | 
			
		||||
                    {% trans 'Comment' %}
 | 
			
		||||
                </th>
 | 
			
		||||
                {% if is_default_member and has_access %}
 | 
			
		||||
                {% if is_default_member and is_entry_shared %}
 | 
			
		||||
                    <th class="w-10" scope="col">
 | 
			
		||||
                        <span class="float-right">
 | 
			
		||||
                            {% trans 'Action' %}
 | 
			
		||||
@ -59,7 +59,7 @@
 | 
			
		||||
                    </div>
 | 
			
		||||
                </td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button data-form-url="{% url 'compensation:edit-doc' obj.id doc.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit document' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:new-state' obj.id %}" title="{% trans 'Add new state after' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'layer-group' %}
 | 
			
		||||
@ -35,7 +35,7 @@
 | 
			
		||||
                <th scope="col">
 | 
			
		||||
                    {% trans 'Surface' %}
 | 
			
		||||
                </th>
 | 
			
		||||
                {% if is_default_member and has_access %}
 | 
			
		||||
                {% if is_default_member and is_entry_shared %}
 | 
			
		||||
                <th class="w-10" scope="col">
 | 
			
		||||
                    <span class="float-right">
 | 
			
		||||
                        {% trans 'Action' %}
 | 
			
		||||
@ -58,7 +58,7 @@
 | 
			
		||||
                </td>
 | 
			
		||||
                <td>{{ state.surface|floatformat:2 }} m²</td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button data-form-url="{% url 'compensation:state-edit' obj.id state.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit state' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:new-state' obj.id %}?before=true" title="{% trans 'Add new state before' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'layer-group' %}
 | 
			
		||||
@ -35,7 +35,7 @@
 | 
			
		||||
                <th scope="col">
 | 
			
		||||
                    {% trans 'Surface' %}
 | 
			
		||||
                </th>
 | 
			
		||||
                {% if is_default_member and has_access %}
 | 
			
		||||
                {% if is_default_member and is_entry_shared %}
 | 
			
		||||
                <th class="w-10" scope="col">
 | 
			
		||||
                    <span class="float-right">
 | 
			
		||||
                        {% trans 'Action' %}
 | 
			
		||||
@ -58,7 +58,7 @@
 | 
			
		||||
                </td>
 | 
			
		||||
                <td>{{ state.surface|floatformat:2 }} m²</td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button data-form-url="{% url 'compensation:state-edit' obj.id state.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit state' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -123,7 +123,7 @@
 | 
			
		||||
                                {% include 'user/includes/team_data_modal_button.html' %}
 | 
			
		||||
                            {% endfor %}
 | 
			
		||||
                            <hr>
 | 
			
		||||
                            {% if has_access %}
 | 
			
		||||
                            {% if is_entry_shared %}
 | 
			
		||||
                                {% for user in obj.intervention.shared_users %}
 | 
			
		||||
                                    {% include 'user/includes/contact_modal_button.html' %}
 | 
			
		||||
                                {% endfor %}
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:acc:new-action' obj.id %}" title="{% trans 'Add new action' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'seedling' %}
 | 
			
		||||
@ -33,7 +33,7 @@
 | 
			
		||||
                <th scope="col">
 | 
			
		||||
                    {% trans 'Comment' %}
 | 
			
		||||
                </th>
 | 
			
		||||
                {% if is_default_member and has_access %}
 | 
			
		||||
                {% if is_default_member and is_entry_shared %}
 | 
			
		||||
                    <th class="w-10" scope="col">
 | 
			
		||||
                        <span class="float-right">
 | 
			
		||||
                            {% trans 'Action' %}
 | 
			
		||||
@ -63,7 +63,7 @@
 | 
			
		||||
                    </div>
 | 
			
		||||
                </td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button data-form-url="{% url 'compensation:acc:action-edit' obj.id action.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit action' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@
 | 
			
		||||
            {% fa5_icon 'file-alt' %}
 | 
			
		||||
        </button>
 | 
			
		||||
    </a>
 | 
			
		||||
    {% if has_access %}
 | 
			
		||||
    {% if is_entry_shared %}
 | 
			
		||||
        <button class="btn btn-default btn-modal mr-2" title="{% trans 'Resubmission' %}" data-form-url="{% url 'compensation:acc:resubmission-create' obj.id %}">
 | 
			
		||||
            {% fa5_icon 'bell' %}
 | 
			
		||||
        </button>
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:acc:new-deadline' obj.id %}" title="{% trans 'Add new deadline' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'calendar-check' %}
 | 
			
		||||
@ -58,7 +58,7 @@
 | 
			
		||||
                    </div>
 | 
			
		||||
                </td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button data-form-url="{% url 'compensation:acc:deadline-edit' obj.id deadline.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit deadline' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -61,7 +61,7 @@
 | 
			
		||||
                <td class="align-middle">{{ deduction.surface|floatformat:2|intcomma }} m²</td>
 | 
			
		||||
                <td class="align-middle">{{ deduction.created.timestamp|default_if_none:""|naturalday}}</td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access or is_default_member and user in deduction.intervention.shared_users  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared or is_default_member and user in deduction.intervention.shared_users  %}
 | 
			
		||||
                    <button data-form-url="{% url 'compensation:acc:edit-deduction' deduction.account.id deduction.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit Deduction' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:acc:new-doc' obj.id %}" title="{% trans 'Add new document' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'file' %}
 | 
			
		||||
@ -57,7 +57,7 @@
 | 
			
		||||
                    </div>
 | 
			
		||||
                </td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button data-form-url="{% url 'compensation:acc:edit-doc' obj.id doc.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit document' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:acc:new-state' obj.id %}" title="{% trans 'Add new state after' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'layer-group' %}
 | 
			
		||||
@ -35,7 +35,7 @@
 | 
			
		||||
                <th scope="col">
 | 
			
		||||
                    {% trans 'Surface' %}
 | 
			
		||||
                </th>
 | 
			
		||||
                {% if is_default_member and has_access %}
 | 
			
		||||
                {% if is_default_member and is_entry_shared %}
 | 
			
		||||
                <th class="w-10" scope="col">
 | 
			
		||||
                    <span class="float-right">
 | 
			
		||||
                        {% trans 'Action' %}
 | 
			
		||||
@ -58,7 +58,7 @@
 | 
			
		||||
                </td>
 | 
			
		||||
                <td>{{ state.surface|floatformat:2 }} m²</td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button data-form-url="{% url 'compensation:acc:state-edit' obj.id state.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit state' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:acc:new-state' obj.id %}?before=true" title="{% trans 'Add new state before' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'layer-group' %}
 | 
			
		||||
@ -35,7 +35,7 @@
 | 
			
		||||
                <th scope="col">
 | 
			
		||||
                    {% trans 'Surface' %}
 | 
			
		||||
                </th>
 | 
			
		||||
                {% if is_default_member and has_access %}
 | 
			
		||||
                {% if is_default_member and is_entry_shared %}
 | 
			
		||||
                <th class="w-10" scope="col">
 | 
			
		||||
                    <span class="float-right">
 | 
			
		||||
                        {% trans 'Action' %}
 | 
			
		||||
@ -58,7 +58,7 @@
 | 
			
		||||
                </td>
 | 
			
		||||
                <td>{{ state.surface|floatformat:2 }} m²</td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button data-form-url="{% url 'compensation:acc:state-edit' obj.id state.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit state' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -101,7 +101,7 @@
 | 
			
		||||
                                {% include 'user/includes/team_data_modal_button.html' %}
 | 
			
		||||
                            {% endfor %}
 | 
			
		||||
                            <hr>
 | 
			
		||||
                            {% if has_access %}
 | 
			
		||||
                            {% if is_entry_shared %}
 | 
			
		||||
                                {% for user in obj.users.all %}
 | 
			
		||||
                                    {% include 'user/includes/contact_modal_button.html' %}
 | 
			
		||||
                                {% endfor %}
 | 
			
		||||
 | 
			
		||||
@ -259,7 +259,7 @@ def detail_view(request: HttpRequest, id: str):
 | 
			
		||||
        "last_checked_tooltip": last_checked_tooltip,
 | 
			
		||||
        "geom_form": geom_form,
 | 
			
		||||
        "parcels": parcels,
 | 
			
		||||
        "has_access": is_data_shared,
 | 
			
		||||
        "is_entry_shared": is_data_shared,
 | 
			
		||||
        "actions": actions,
 | 
			
		||||
        "before_states": before_states,
 | 
			
		||||
        "after_states": after_states,
 | 
			
		||||
 | 
			
		||||
@ -67,7 +67,7 @@ def report_view(request: HttpRequest, id: str):
 | 
			
		||||
            "img": qrcode_img_lanis,
 | 
			
		||||
            "url": qrcode_lanis_url,
 | 
			
		||||
        },
 | 
			
		||||
        "has_access": False,  # disables action buttons during rendering
 | 
			
		||||
        "is_entry_shared": False,  # disables action buttons during rendering
 | 
			
		||||
        "before_states": before_states,
 | 
			
		||||
        "after_states": after_states,
 | 
			
		||||
        "geom_form": geom_form,
 | 
			
		||||
 | 
			
		||||
@ -237,7 +237,7 @@ def detail_view(request: HttpRequest, id: str):
 | 
			
		||||
        "obj": acc,
 | 
			
		||||
        "geom_form": geom_form,
 | 
			
		||||
        "parcels": parcels,
 | 
			
		||||
        "has_access": is_data_shared,
 | 
			
		||||
        "is_entry_shared": is_data_shared,
 | 
			
		||||
        "before_states": before_states,
 | 
			
		||||
        "after_states": after_states,
 | 
			
		||||
        "sum_before_states": sum_before_states,
 | 
			
		||||
 | 
			
		||||
@ -73,7 +73,7 @@ def report_view(request: HttpRequest, id: str):
 | 
			
		||||
            "img": qrcode_img_lanis,
 | 
			
		||||
            "url": qrcode_lanis_url,
 | 
			
		||||
        },
 | 
			
		||||
        "has_access": False,  # disables action buttons during rendering
 | 
			
		||||
        "is_entry_shared": False,  # disables action buttons during rendering
 | 
			
		||||
        "before_states": before_states,
 | 
			
		||||
        "after_states": after_states,
 | 
			
		||||
        "geom_form": geom_form,
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'ema:new-action' obj.id %}" title="{% trans 'Add new action' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'seedling' %}
 | 
			
		||||
@ -61,7 +61,7 @@
 | 
			
		||||
                    </div>
 | 
			
		||||
                </td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button data-form-url="{% url 'ema:action-edit' obj.id action.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit action' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@
 | 
			
		||||
            {% fa5_icon 'file-alt' %}
 | 
			
		||||
        </button>
 | 
			
		||||
    </a>
 | 
			
		||||
    {% if has_access %}
 | 
			
		||||
    {% if is_entry_shared %}
 | 
			
		||||
        <button class="btn btn-default btn-modal mr-2" title="{% trans 'Resubmission' %}" data-form-url="{% url 'ema:resubmission-create' obj.id %}">
 | 
			
		||||
            {% fa5_icon 'bell' %}
 | 
			
		||||
        </button>
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'ema:new-deadline' obj.id %}" title="{% trans 'Add new deadline' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'calendar-check' %}
 | 
			
		||||
@ -58,7 +58,7 @@
 | 
			
		||||
                    </div>
 | 
			
		||||
                </td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button data-form-url="{% url 'ema:deadline-edit' obj.id deadline.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit deadline' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'ema:new-doc' obj.id %}" title="{% trans 'Add new document' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'file' %}
 | 
			
		||||
@ -57,7 +57,7 @@
 | 
			
		||||
                    </div>
 | 
			
		||||
                </td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button data-form-url="{% url 'ema:edit-doc' obj.id doc.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit document' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'ema:new-state' obj.id %}" title="{% trans 'Add new state after' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'layer-group' %}
 | 
			
		||||
@ -56,7 +56,7 @@
 | 
			
		||||
                </td>
 | 
			
		||||
                <td>{{ state.surface|floatformat:2 }} m²</td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button data-form-url="{% url 'ema:state-edit' obj.id state.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit state' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'ema:new-state' obj.id %}?before=true" title="{% trans 'Add new state before' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'layer-group' %}
 | 
			
		||||
@ -56,7 +56,7 @@
 | 
			
		||||
                </td>
 | 
			
		||||
                <td>{{ state.surface|floatformat:2 }} m²</td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button data-form-url="{% url 'ema:state-edit' obj.id state.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit state' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -87,7 +87,7 @@
 | 
			
		||||
                                {% include 'user/includes/team_data_modal_button.html' %}
 | 
			
		||||
                            {% endfor %}
 | 
			
		||||
                            <hr>
 | 
			
		||||
                            {% if has_access %}
 | 
			
		||||
                            {% if is_entry_shared %}
 | 
			
		||||
                                {% for user in obj.users.all %}
 | 
			
		||||
                                    {% include 'user/includes/contact_modal_button.html' %}
 | 
			
		||||
                                {% endfor %}
 | 
			
		||||
 | 
			
		||||
@ -142,7 +142,7 @@ def detail_view(request: HttpRequest, id: str):
 | 
			
		||||
    geom_form = SimpleGeomForm(instance=ema)
 | 
			
		||||
    parcels = ema.get_underlying_parcels()
 | 
			
		||||
    _user = request.user
 | 
			
		||||
    is_data_shared = ema.is_shared_with(_user)
 | 
			
		||||
    is_entry_shared = ema.is_shared_with(_user)
 | 
			
		||||
 | 
			
		||||
    # Order states according to surface
 | 
			
		||||
    before_states = ema.before_states.all().order_by("-surface")
 | 
			
		||||
@ -167,7 +167,7 @@ def detail_view(request: HttpRequest, id: str):
 | 
			
		||||
        "obj": ema,
 | 
			
		||||
        "geom_form": geom_form,
 | 
			
		||||
        "parcels": parcels,
 | 
			
		||||
        "has_access": is_data_shared,
 | 
			
		||||
        "is_entry_shared": is_entry_shared,
 | 
			
		||||
        "before_states": before_states,
 | 
			
		||||
        "after_states": after_states,
 | 
			
		||||
        "sum_before_states": sum_before_states,
 | 
			
		||||
 | 
			
		||||
@ -67,7 +67,7 @@ def report_view(request:HttpRequest, id: str):
 | 
			
		||||
            "img": qrcode_img_lanis,
 | 
			
		||||
            "url": qrcode_lanis_url
 | 
			
		||||
        },
 | 
			
		||||
        "has_access": False,  # disables action buttons during rendering
 | 
			
		||||
        "is_entry_shared": False,  # disables action buttons during rendering
 | 
			
		||||
        "before_states": before_states,
 | 
			
		||||
        "after_states": after_states,
 | 
			
		||||
        "geom_form": geom_form,
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <a href="{% url 'compensation:new' obj.id %}" title="{% trans 'Add new compensation' %}">
 | 
			
		||||
                        <button class="btn btn-outline-default">
 | 
			
		||||
                            {% fa5_icon 'plus' %}
 | 
			
		||||
@ -32,7 +32,7 @@
 | 
			
		||||
                <th scope="col">
 | 
			
		||||
                    {% trans 'Title' %}
 | 
			
		||||
                </th>
 | 
			
		||||
                {% if is_default_member and has_access %}
 | 
			
		||||
                {% if is_default_member and is_entry_shared %}
 | 
			
		||||
                    <th class="w-10" scope="col">
 | 
			
		||||
                        <span class="float-right">
 | 
			
		||||
                            {% trans 'Action' %}
 | 
			
		||||
@ -51,7 +51,7 @@
 | 
			
		||||
                </td>
 | 
			
		||||
                <td class="align-middle">{{ comp.title }}</td>
 | 
			
		||||
                <td>
 | 
			
		||||
                {% if is_default_member and has_access %}
 | 
			
		||||
                {% if is_default_member and is_entry_shared %}
 | 
			
		||||
                    <button data-form-url="{% url 'intervention:remove-compensation' obj.id comp.id %}" class="btn btn-default btn-modal float-right" title="{% trans 'Remove compensation' %}">
 | 
			
		||||
                        {% fa5_icon 'trash' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@
 | 
			
		||||
            {% fa5_icon 'file-alt' %}
 | 
			
		||||
        </button>
 | 
			
		||||
    </a>
 | 
			
		||||
    {% if has_access %}
 | 
			
		||||
    {% if is_entry_shared %}
 | 
			
		||||
        <button class="btn btn-default btn-modal mr-2" title="{% trans 'Resubmission' %}" data-form-url="{% url 'intervention:resubmission-create' obj.id %}">
 | 
			
		||||
            {% fa5_icon 'bell' %}
 | 
			
		||||
        </button>
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'intervention:new-deduction' obj.id %}" title="{% trans 'Add new deduction' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'tree' %}
 | 
			
		||||
@ -33,7 +33,7 @@
 | 
			
		||||
                <th scope="col">
 | 
			
		||||
                    {% trans 'Created' %}
 | 
			
		||||
                </th>
 | 
			
		||||
                {% if is_default_member and has_access %}
 | 
			
		||||
                {% if is_default_member and is_entry_shared %}
 | 
			
		||||
                    <th class="w-10" scope="col">
 | 
			
		||||
                        <span class="float-right">
 | 
			
		||||
                            {% trans 'Action' %}
 | 
			
		||||
@ -56,7 +56,7 @@
 | 
			
		||||
                <td class="align-middle">{{ deduction.surface|floatformat:2|intcomma }} m²</td>
 | 
			
		||||
                <td class="align-middle">{{ deduction.created.timestamp|default_if_none:""|naturalday}}</td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button data-form-url="{% url 'intervention:edit-deduction' obj.id deduction.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit Deduction' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'intervention:new-doc' obj.id %}" title="{% trans 'Add new document' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'file' %}
 | 
			
		||||
@ -38,7 +38,7 @@
 | 
			
		||||
                <th scope="col">
 | 
			
		||||
                    {% trans 'Comment' %}
 | 
			
		||||
                </th>
 | 
			
		||||
                {% if is_default_member and has_access %}
 | 
			
		||||
                {% if is_default_member and is_entry_shared %}
 | 
			
		||||
                    <th class="w-10" scope="col">
 | 
			
		||||
                        <span class="float-right">
 | 
			
		||||
                            {% trans 'Action' %}
 | 
			
		||||
@ -66,7 +66,7 @@
 | 
			
		||||
                    </div>
 | 
			
		||||
                </td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button data-form-url="{% url 'intervention:edit-doc' obj.id doc.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit document' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:pay:new' obj.id %}" title="{% trans 'Add new payment' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'money-bill-wave' %}
 | 
			
		||||
@ -33,7 +33,7 @@
 | 
			
		||||
                <th class="w-50" scope="col">
 | 
			
		||||
                    {% trans 'Comment' %}
 | 
			
		||||
                </th>
 | 
			
		||||
                {% if is_default_member and has_access %}
 | 
			
		||||
                {% if is_default_member and is_entry_shared %}
 | 
			
		||||
                    <th class="w-10" scope="col">
 | 
			
		||||
                        <span class="float-right">
 | 
			
		||||
                            {% trans 'Action' %}
 | 
			
		||||
@ -46,16 +46,24 @@
 | 
			
		||||
            {% for pay in obj.payments.all %}
 | 
			
		||||
            <tr>
 | 
			
		||||
                <td class="align-middle">
 | 
			
		||||
                    {{ pay.amount|floatformat:2 }} €
 | 
			
		||||
                    {% if is_entry_shared %}
 | 
			
		||||
                        {{ pay.amount|floatformat:2 }} €
 | 
			
		||||
                    {% else %}
 | 
			
		||||
                        ***
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                </td>
 | 
			
		||||
                <td class="align-middle">{{ pay.due_on|default_if_none:"---" }}</td>
 | 
			
		||||
                <td class="align-middle">
 | 
			
		||||
                    <div class="scroll-150">
 | 
			
		||||
                        {{ pay.comment }}
 | 
			
		||||
                        {% if is_entry_shared %}
 | 
			
		||||
                            {{ pay.comment }}
 | 
			
		||||
                        {% else %}
 | 
			
		||||
                            {% trans 'This data is not shared with you' %}
 | 
			
		||||
                        {% endif %}
 | 
			
		||||
                    </div>
 | 
			
		||||
                </td>
 | 
			
		||||
                <td class="align-middle float-right">
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                    <button data-form-url="{% url 'compensation:pay:edit' obj.id pay.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit payment' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
@ -13,7 +13,7 @@
 | 
			
		||||
                    {% comment %}
 | 
			
		||||
                        Only show add-button if no revocation exists, yet.
 | 
			
		||||
                    {% endcomment %}
 | 
			
		||||
                    {% if is_default_member and has_access and not obj.legal.revocation %}
 | 
			
		||||
                    {% if is_default_member and is_entry_shared and not obj.legal.revocation %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'intervention:new-revocation' obj.id %}" title="{% trans 'Add revocation' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'ban' %}
 | 
			
		||||
@ -36,7 +36,7 @@
 | 
			
		||||
                <th scope="col">
 | 
			
		||||
                    {% trans 'Comment' %}
 | 
			
		||||
                </th>
 | 
			
		||||
                {% if is_default_member and has_access %}
 | 
			
		||||
                {% if is_default_member and is_entry_shared %}
 | 
			
		||||
                    <th class="w-10" scope="col">
 | 
			
		||||
                        <span class="float-right">
 | 
			
		||||
                            {% trans 'Action' %}
 | 
			
		||||
@ -64,7 +64,7 @@
 | 
			
		||||
                        </div>
 | 
			
		||||
                    </td>
 | 
			
		||||
                    <td class="align-middle float-right">
 | 
			
		||||
                        {% if is_default_member and has_access  %}
 | 
			
		||||
                        {% if is_default_member and is_entry_shared  %}
 | 
			
		||||
                        <button data-form-url="{% url 'intervention:edit-revocation' obj.id rev.id %}" class="btn btn-default btn-modal" title="{% trans 'Edit revocation' %}">
 | 
			
		||||
                            {% fa5_icon 'edit' %}
 | 
			
		||||
                        </button>
 | 
			
		||||
 | 
			
		||||
@ -129,7 +129,7 @@
 | 
			
		||||
                                {% include 'user/includes/team_data_modal_button.html' %}
 | 
			
		||||
                            {% endfor %}
 | 
			
		||||
                            <hr>
 | 
			
		||||
                            {% if has_access %}
 | 
			
		||||
                            {% if is_entry_shared %}
 | 
			
		||||
                                {% for user in obj.users.all %}
 | 
			
		||||
                                    {% include 'user/includes/contact_modal_button.html' %}
 | 
			
		||||
                                {% endfor %}
 | 
			
		||||
 | 
			
		||||
@ -185,7 +185,7 @@ def detail_view(request: HttpRequest, id: str):
 | 
			
		||||
        "last_checked": last_checked,
 | 
			
		||||
        "last_checked_tooltip": last_checked_tooltip,
 | 
			
		||||
        "compensations": compensations,
 | 
			
		||||
        "has_access": is_data_shared,
 | 
			
		||||
        "is_entry_shared": is_data_shared,
 | 
			
		||||
        "geom_form": geom_form,
 | 
			
		||||
        "is_default_member": _user.in_group(DEFAULT_GROUP),
 | 
			
		||||
        "is_zb_member": _user.in_group(ZB_GROUP),
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										55
									
								
								konova/filters/mixins/user_log.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								konova/filters/mixins/user_log.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,55 @@
 | 
			
		||||
"""
 | 
			
		||||
Author: Michel Peltriaux
 | 
			
		||||
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
 | 
			
		||||
Contact: ksp-servicestelle@sgdnord.rlp.de
 | 
			
		||||
Created on: 19.08.24
 | 
			
		||||
 | 
			
		||||
"""
 | 
			
		||||
import django_filters
 | 
			
		||||
from django import forms
 | 
			
		||||
from django.db.models import QuerySet, Q
 | 
			
		||||
from django.utils.translation import gettext_lazy as _
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class UserLoggedTableFilterMixin(django_filters.FilterSet):
 | 
			
		||||
    ul = django_filters.CharFilter(
 | 
			
		||||
        method="filter_user_log",
 | 
			
		||||
        label=_(""),
 | 
			
		||||
        label_suffix=_(""),
 | 
			
		||||
        widget=forms.TextInput(
 | 
			
		||||
            attrs={
 | 
			
		||||
                "placeholder": _("Logged user"),
 | 
			
		||||
                "title": _("Search for entries where this person has been participated according to log history"),
 | 
			
		||||
                "class": "form-control",
 | 
			
		||||
            }
 | 
			
		||||
        ),
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
        abstract = True
 | 
			
		||||
 | 
			
		||||
    def filter_user_log(self, queryset, name, value) -> QuerySet:
 | 
			
		||||
        """ Filters queryset depending on value of input
 | 
			
		||||
 | 
			
		||||
        Args:
 | 
			
		||||
            queryset (QuerySet): Incoming (prefiltered) queryset
 | 
			
		||||
            name (str): Name of input field
 | 
			
		||||
            value (str): Value of input field
 | 
			
		||||
 | 
			
		||||
        Returns:
 | 
			
		||||
 | 
			
		||||
        """
 | 
			
		||||
        value = value.replace(",", " ")
 | 
			
		||||
        value = value.strip()
 | 
			
		||||
        values = value.split(" ")
 | 
			
		||||
 | 
			
		||||
        q = Q()
 | 
			
		||||
        for val in values:
 | 
			
		||||
            q &= (
 | 
			
		||||
                    Q(log__user__username__icontains=val) |
 | 
			
		||||
                    Q(log__user__first_name__icontains=val) |
 | 
			
		||||
                    Q(log__user__last_name__icontains=val)
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
        queryset = queryset.filter(q)
 | 
			
		||||
        return queryset
 | 
			
		||||
@ -14,6 +14,7 @@ from konova.filters.mixins.office import ConservationOfficeTableFilterMixin, Reg
 | 
			
		||||
from konova.filters.mixins.record import RecordableTableFilterMixin
 | 
			
		||||
from konova.filters.mixins.self_created import SelfCreatedTableFilterMixin
 | 
			
		||||
from konova.filters.mixins.share import ShareableTableFilterMixin
 | 
			
		||||
from konova.filters.mixins.user_log import UserLoggedTableFilterMixin
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class AbstractTableFilter(django_filters.FilterSet):
 | 
			
		||||
@ -40,7 +41,8 @@ class SelectionTableFilter(RegistrationOfficeTableFilterMixin,
 | 
			
		||||
 | 
			
		||||
class QueryTableFilter(KeywordTableFilterMixin,
 | 
			
		||||
                       FileNumberTableFilterMixin,
 | 
			
		||||
                       GeoReferencedTableFilterMixin):
 | 
			
		||||
                       GeoReferencedTableFilterMixin,
 | 
			
		||||
                       UserLoggedTableFilterMixin):
 | 
			
		||||
    """ TableFilter holding different filter options for query related filtering
 | 
			
		||||
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
@ -216,11 +216,11 @@ class TableRenderMixin:
 | 
			
		||||
 | 
			
		||||
        """
 | 
			
		||||
        html = ""
 | 
			
		||||
        has_access = record.is_shared_with(self.user)
 | 
			
		||||
        is_entry_shared = record.is_shared_with(self.user)
 | 
			
		||||
 | 
			
		||||
        html += self.render_icn(
 | 
			
		||||
            tooltip=_("Full access granted") if has_access else _("Access not granted"),
 | 
			
		||||
            icn_class="fas fa-edit rlp-r-inv" if has_access else "far fa-edit",
 | 
			
		||||
            tooltip=_("Full access granted") if is_entry_shared else _("Access not granted"),
 | 
			
		||||
            icn_class="fas fa-edit rlp-r-inv" if is_entry_shared else "far fa-edit",
 | 
			
		||||
        )
 | 
			
		||||
        return format_html(html)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@ -29,6 +29,7 @@
 | 
			
		||||
#: konova/filters/mixins/office.py:25 konova/filters/mixins/office.py:56
 | 
			
		||||
#: konova/filters/mixins/office.py:57 konova/filters/mixins/record.py:23
 | 
			
		||||
#: konova/filters/mixins/self_created.py:24 konova/filters/mixins/share.py:23
 | 
			
		||||
#: konova/filters/mixins/user_log.py:17 konova/filters/mixins/user_log.py:18
 | 
			
		||||
#: konova/forms/geometry_form.py:32 konova/forms/modals/document_form.py:26
 | 
			
		||||
#: konova/forms/modals/document_form.py:36
 | 
			
		||||
#: konova/forms/modals/document_form.py:50
 | 
			
		||||
@ -43,7 +44,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PACKAGE VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2024-02-16 09:49+0100\n"
 | 
			
		||||
"POT-Creation-Date: 2024-08-19 10:32+0200\n"
 | 
			
		||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
			
		||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
			
		||||
"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
			
		||||
@ -259,7 +260,7 @@ msgstr ""
 | 
			
		||||
 | 
			
		||||
#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:14
 | 
			
		||||
#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:16
 | 
			
		||||
#: compensation/forms/modals/state.py:58
 | 
			
		||||
#: compensation/forms/modals/state.py:59
 | 
			
		||||
#: compensation/templates/compensation/detail/compensation/includes/states-after.html:36
 | 
			
		||||
#: compensation/templates/compensation/detail/compensation/includes/states-before.html:36
 | 
			
		||||
#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:36
 | 
			
		||||
@ -447,7 +448,7 @@ msgid "Select the intervention for which this compensation compensates"
 | 
			
		||||
msgstr "Wählen Sie den Eingriff, für den diese Kompensation bestimmt ist"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms/compensation.py:114
 | 
			
		||||
#: compensation/views/compensation/compensation.py:119
 | 
			
		||||
#: compensation/views/compensation/compensation.py:120
 | 
			
		||||
msgid "New compensation"
 | 
			
		||||
msgstr "Neue Kompensation"
 | 
			
		||||
 | 
			
		||||
@ -474,7 +475,7 @@ msgid "When did the parties agree on this?"
 | 
			
		||||
msgstr "Wann wurde dieses Ökokonto offiziell vereinbart?"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms/eco_account.py:72
 | 
			
		||||
#: compensation/views/eco_account/eco_account.py:100
 | 
			
		||||
#: compensation/views/eco_account/eco_account.py:101
 | 
			
		||||
msgid "New Eco-Account"
 | 
			
		||||
msgstr "Neues Ökokonto"
 | 
			
		||||
 | 
			
		||||
@ -696,46 +697,46 @@ msgid "If there is no date you can enter, please explain why."
 | 
			
		||||
msgstr "Falls Sie kein Datum angeben können, erklären Sie bitte weshalb."
 | 
			
		||||
 | 
			
		||||
#: compensation/forms/modals/payment.py:108
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/payments.html:59
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/payments.html:67
 | 
			
		||||
msgid "Edit payment"
 | 
			
		||||
msgstr "Zahlung bearbeiten"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms/modals/state.py:32
 | 
			
		||||
#: compensation/forms/modals/state.py:33
 | 
			
		||||
msgid "Biotope Type"
 | 
			
		||||
msgstr "Biotoptyp"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms/modals/state.py:35
 | 
			
		||||
#: compensation/forms/modals/state.py:36
 | 
			
		||||
msgid "Select the biotope type"
 | 
			
		||||
msgstr "Biotoptyp wählen"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms/modals/state.py:39 compensation/forms/modals/state.py:51
 | 
			
		||||
#: compensation/forms/modals/state.py:40 compensation/forms/modals/state.py:52
 | 
			
		||||
msgid "Biotope additional type"
 | 
			
		||||
msgstr "Zusatzbezeichnung"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms/modals/state.py:42
 | 
			
		||||
#: compensation/forms/modals/state.py:43
 | 
			
		||||
msgid "Select an additional biotope type"
 | 
			
		||||
msgstr "Zusatzbezeichnung wählen"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms/modals/state.py:61
 | 
			
		||||
#: compensation/forms/modals/state.py:62
 | 
			
		||||
#: intervention/forms/modals/deduction.py:49
 | 
			
		||||
msgid "in m²"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: compensation/forms/modals/state.py:72
 | 
			
		||||
#: compensation/forms/modals/state.py:73
 | 
			
		||||
#: compensation/tests/compensation/unit/test_forms.py:175
 | 
			
		||||
msgid "New state"
 | 
			
		||||
msgstr "Neuer Zustand"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms/modals/state.py:73
 | 
			
		||||
#: compensation/forms/modals/state.py:74
 | 
			
		||||
#: compensation/tests/compensation/unit/test_forms.py:176
 | 
			
		||||
msgid "Insert data for the new state"
 | 
			
		||||
msgstr "Geben Sie die Daten des neuen Zustandes ein"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms/modals/state.py:90 konova/forms/modals/base_form.py:32
 | 
			
		||||
#: compensation/forms/modals/state.py:91 konova/forms/modals/base_form.py:32
 | 
			
		||||
msgid "Object removed"
 | 
			
		||||
msgstr "Objekt entfernt"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms/modals/state.py:145
 | 
			
		||||
#: compensation/forms/modals/state.py:146
 | 
			
		||||
#: compensation/templates/compensation/detail/compensation/includes/states-after.html:62
 | 
			
		||||
#: compensation/templates/compensation/detail/compensation/includes/states-before.html:62
 | 
			
		||||
#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:62
 | 
			
		||||
@ -1287,44 +1288,44 @@ msgstr ""
 | 
			
		||||
msgid "Responsible data"
 | 
			
		||||
msgstr "Daten zu den verantwortlichen Stellen"
 | 
			
		||||
 | 
			
		||||
#: compensation/views/compensation/compensation.py:57
 | 
			
		||||
#: compensation/views/compensation/compensation.py:58
 | 
			
		||||
msgid "Compensations - Overview"
 | 
			
		||||
msgstr "Kompensationen - Übersicht"
 | 
			
		||||
 | 
			
		||||
#: compensation/views/compensation/compensation.py:180
 | 
			
		||||
#: compensation/views/compensation/compensation.py:181
 | 
			
		||||
#: konova/utils/message_templates.py:40
 | 
			
		||||
msgid "Compensation {} edited"
 | 
			
		||||
msgstr "Kompensation {} bearbeitet"
 | 
			
		||||
 | 
			
		||||
#: compensation/views/compensation/compensation.py:195
 | 
			
		||||
#: compensation/views/eco_account/eco_account.py:172 ema/views/ema.py:230
 | 
			
		||||
#: intervention/views/intervention.py:251
 | 
			
		||||
#: compensation/views/compensation/compensation.py:196
 | 
			
		||||
#: compensation/views/eco_account/eco_account.py:173 ema/views/ema.py:232
 | 
			
		||||
#: intervention/views/intervention.py:253
 | 
			
		||||
msgid "Edit {}"
 | 
			
		||||
msgstr "Bearbeite {}"
 | 
			
		||||
 | 
			
		||||
#: compensation/views/compensation/report.py:34
 | 
			
		||||
#: compensation/views/eco_account/report.py:34 ema/views/report.py:34
 | 
			
		||||
#: intervention/views/report.py:37
 | 
			
		||||
#: intervention/views/report.py:35
 | 
			
		||||
msgid "Report {}"
 | 
			
		||||
msgstr "Bericht {}"
 | 
			
		||||
 | 
			
		||||
#: compensation/views/eco_account/eco_account.py:52
 | 
			
		||||
#: compensation/views/eco_account/eco_account.py:53
 | 
			
		||||
msgid "Eco-account - Overview"
 | 
			
		||||
msgstr "Ökokonten - Übersicht"
 | 
			
		||||
 | 
			
		||||
#: compensation/views/eco_account/eco_account.py:85
 | 
			
		||||
#: compensation/views/eco_account/eco_account.py:86
 | 
			
		||||
msgid "Eco-Account {} added"
 | 
			
		||||
msgstr "Ökokonto {} hinzugefügt"
 | 
			
		||||
 | 
			
		||||
#: compensation/views/eco_account/eco_account.py:157
 | 
			
		||||
#: compensation/views/eco_account/eco_account.py:158
 | 
			
		||||
msgid "Eco-Account {} edited"
 | 
			
		||||
msgstr "Ökokonto {} bearbeitet"
 | 
			
		||||
 | 
			
		||||
#: compensation/views/eco_account/eco_account.py:286
 | 
			
		||||
#: compensation/views/eco_account/eco_account.py:288
 | 
			
		||||
msgid "Eco-account removed"
 | 
			
		||||
msgstr "Ökokonto entfernt"
 | 
			
		||||
 | 
			
		||||
#: ema/forms.py:42 ema/tests/unit/test_forms.py:27 ema/views/ema.py:101
 | 
			
		||||
#: ema/forms.py:42 ema/tests/unit/test_forms.py:27 ema/views/ema.py:102
 | 
			
		||||
msgid "New EMA"
 | 
			
		||||
msgstr "Neue EMA hinzufügen"
 | 
			
		||||
 | 
			
		||||
@ -1352,19 +1353,19 @@ msgstr ""
 | 
			
		||||
msgid "Payment funded compensation"
 | 
			
		||||
msgstr "Ersatzzahlungsmaßnahme"
 | 
			
		||||
 | 
			
		||||
#: ema/views/ema.py:52
 | 
			
		||||
#: ema/views/ema.py:53
 | 
			
		||||
msgid "EMAs - Overview"
 | 
			
		||||
msgstr "EMAs - Übersicht"
 | 
			
		||||
 | 
			
		||||
#: ema/views/ema.py:85
 | 
			
		||||
#: ema/views/ema.py:86
 | 
			
		||||
msgid "EMA {} added"
 | 
			
		||||
msgstr "EMA {} hinzugefügt"
 | 
			
		||||
 | 
			
		||||
#: ema/views/ema.py:215
 | 
			
		||||
#: ema/views/ema.py:217
 | 
			
		||||
msgid "EMA {} edited"
 | 
			
		||||
msgstr "EMA {} bearbeitet"
 | 
			
		||||
 | 
			
		||||
#: ema/views/ema.py:254
 | 
			
		||||
#: ema/views/ema.py:256
 | 
			
		||||
msgid "EMA removed"
 | 
			
		||||
msgstr "EMA entfernt"
 | 
			
		||||
 | 
			
		||||
@ -1428,7 +1429,7 @@ msgstr "Datum Bestandskraft bzw. Rechtskraft"
 | 
			
		||||
 | 
			
		||||
#: intervention/forms/intervention.py:216
 | 
			
		||||
#: intervention/tests/unit/test_forms.py:36
 | 
			
		||||
#: intervention/views/intervention.py:104
 | 
			
		||||
#: intervention/views/intervention.py:105
 | 
			
		||||
msgid "New intervention"
 | 
			
		||||
msgstr "Neuer Eingriff"
 | 
			
		||||
 | 
			
		||||
@ -1597,7 +1598,12 @@ msgctxt "money"
 | 
			
		||||
msgid "Amount"
 | 
			
		||||
msgstr "Betrag"
 | 
			
		||||
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/payments.html:62
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/payments.html:61
 | 
			
		||||
#: konova/utils/message_templates.py:25
 | 
			
		||||
msgid "This data is not shared with you"
 | 
			
		||||
msgstr "Diese Daten sind für Sie nicht freigegeben"
 | 
			
		||||
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/payments.html:70
 | 
			
		||||
msgid "Remove payment"
 | 
			
		||||
msgstr "Zahlung entfernen"
 | 
			
		||||
 | 
			
		||||
@ -1659,19 +1665,19 @@ msgstr ""
 | 
			
		||||
msgid "Check performed"
 | 
			
		||||
msgstr "Prüfung durchgeführt"
 | 
			
		||||
 | 
			
		||||
#: intervention/views/intervention.py:56
 | 
			
		||||
#: intervention/views/intervention.py:57
 | 
			
		||||
msgid "Interventions - Overview"
 | 
			
		||||
msgstr "Eingriffe - Übersicht"
 | 
			
		||||
 | 
			
		||||
#: intervention/views/intervention.py:89
 | 
			
		||||
#: intervention/views/intervention.py:90
 | 
			
		||||
msgid "Intervention {} added"
 | 
			
		||||
msgstr "Eingriff {} hinzugefügt"
 | 
			
		||||
 | 
			
		||||
#: intervention/views/intervention.py:234
 | 
			
		||||
#: intervention/views/intervention.py:236
 | 
			
		||||
msgid "Intervention {} edited"
 | 
			
		||||
msgstr "Eingriff {} bearbeitet"
 | 
			
		||||
 | 
			
		||||
#: intervention/views/intervention.py:276
 | 
			
		||||
#: intervention/views/intervention.py:278
 | 
			
		||||
msgid "{} removed"
 | 
			
		||||
msgstr "{} entfernt"
 | 
			
		||||
 | 
			
		||||
@ -1781,6 +1787,17 @@ msgstr ""
 | 
			
		||||
"Wenn aktiviert werden auch Einträge angezeigt, die nicht für Sie freigegeben "
 | 
			
		||||
"sind"
 | 
			
		||||
 | 
			
		||||
#: konova/filters/mixins/user_log.py:21
 | 
			
		||||
msgid "Logged user"
 | 
			
		||||
msgstr "Bearbeitender Nutzer"
 | 
			
		||||
 | 
			
		||||
#: konova/filters/mixins/user_log.py:22
 | 
			
		||||
msgid ""
 | 
			
		||||
"Search for entries where this person has been participated according to log "
 | 
			
		||||
"history"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Sucht nach Einträgen, an denen diese Person gearbeitet hat"
 | 
			
		||||
 | 
			
		||||
#: konova/forms/base_form.py:23 templates/form/collapsable/form.html:62
 | 
			
		||||
msgid "Save"
 | 
			
		||||
msgstr "Speichern"
 | 
			
		||||
@ -1911,11 +1928,11 @@ msgstr "Kontrolle am"
 | 
			
		||||
msgid "Other"
 | 
			
		||||
msgstr "Sonstige"
 | 
			
		||||
 | 
			
		||||
#: konova/sub_settings/django_settings.py:166
 | 
			
		||||
#: konova/sub_settings/django_settings.py:157
 | 
			
		||||
msgid "German"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: konova/sub_settings/django_settings.py:167
 | 
			
		||||
#: konova/sub_settings/django_settings.py:158
 | 
			
		||||
msgid "English"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -2091,10 +2108,6 @@ msgstr ""
 | 
			
		||||
"Eintrag ist verzeichnet. Um Daten zu bearbeiten, muss der Eintrag erst "
 | 
			
		||||
"entzeichnet werden."
 | 
			
		||||
 | 
			
		||||
#: konova/utils/message_templates.py:25
 | 
			
		||||
msgid "This data is not shared with you"
 | 
			
		||||
msgstr "Diese Daten sind für Sie nicht freigegeben"
 | 
			
		||||
 | 
			
		||||
#: konova/utils/message_templates.py:26
 | 
			
		||||
msgid ""
 | 
			
		||||
"Remember: This data has not been shared with you, yet. This means you can "
 | 
			
		||||
@ -2817,11 +2830,17 @@ msgstr "Mehr"
 | 
			
		||||
msgid "Reports"
 | 
			
		||||
msgstr "Berichte"
 | 
			
		||||
 | 
			
		||||
#: templates/navbars/navbar.html:56 user/templates/user/index.html:31
 | 
			
		||||
#: templates/navbars/navbar.html:57
 | 
			
		||||
#, fuzzy
 | 
			
		||||
#| msgid "Admins"
 | 
			
		||||
msgid "Admin"
 | 
			
		||||
msgstr "Administratoren"
 | 
			
		||||
 | 
			
		||||
#: templates/navbars/navbar.html:59 user/templates/user/index.html:31
 | 
			
		||||
msgid "Settings"
 | 
			
		||||
msgstr "Einstellungen"
 | 
			
		||||
 | 
			
		||||
#: templates/navbars/navbar.html:57
 | 
			
		||||
#: templates/navbars/navbar.html:60
 | 
			
		||||
msgid "Logout"
 | 
			
		||||
msgstr "Abmelden"
 | 
			
		||||
 | 
			
		||||
@ -3032,7 +3051,7 @@ msgid "Manage teams"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: user/templates/user/index.html:53 user/templates/user/team/index.html:19
 | 
			
		||||
#: user/views.py:171
 | 
			
		||||
#: user/views/views.py:171
 | 
			
		||||
msgid "Teams"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -3084,43 +3103,43 @@ msgstr "Token noch nicht freigeschaltet"
 | 
			
		||||
msgid "Valid until"
 | 
			
		||||
msgstr "Läuft ab am"
 | 
			
		||||
 | 
			
		||||
#: user/views.py:35
 | 
			
		||||
#: user/views/views.py:35
 | 
			
		||||
msgid "User settings"
 | 
			
		||||
msgstr "Einstellungen"
 | 
			
		||||
 | 
			
		||||
#: user/views.py:61
 | 
			
		||||
#: user/views/views.py:61
 | 
			
		||||
msgid "Notifications edited"
 | 
			
		||||
msgstr "Benachrichtigungen bearbeitet"
 | 
			
		||||
 | 
			
		||||
#: user/views.py:73
 | 
			
		||||
#: user/views/views.py:73
 | 
			
		||||
msgid "User notifications"
 | 
			
		||||
msgstr "Benachrichtigungen"
 | 
			
		||||
 | 
			
		||||
#: user/views.py:96
 | 
			
		||||
#: user/views/views.py:96
 | 
			
		||||
msgid "New token generated. Administrators need to validate."
 | 
			
		||||
msgstr "Neuer Token generiert. Administratoren sind informiert."
 | 
			
		||||
 | 
			
		||||
#: user/views.py:107
 | 
			
		||||
#: user/views/views.py:107
 | 
			
		||||
msgid "User API token"
 | 
			
		||||
msgstr "API Nutzer Token"
 | 
			
		||||
 | 
			
		||||
#: user/views.py:183
 | 
			
		||||
#: user/views/views.py:183
 | 
			
		||||
msgid "New team added"
 | 
			
		||||
msgstr "Neues Team hinzugefügt"
 | 
			
		||||
 | 
			
		||||
#: user/views.py:198
 | 
			
		||||
#: user/views/views.py:198
 | 
			
		||||
msgid "Team edited"
 | 
			
		||||
msgstr "Team bearbeitet"
 | 
			
		||||
 | 
			
		||||
#: user/views.py:213
 | 
			
		||||
#: user/views/views.py:213
 | 
			
		||||
msgid "Team removed"
 | 
			
		||||
msgstr "Team gelöscht"
 | 
			
		||||
 | 
			
		||||
#: user/views.py:228
 | 
			
		||||
#: user/views/views.py:228
 | 
			
		||||
msgid "You are not a member of this team"
 | 
			
		||||
msgstr "Sie sind kein Mitglied dieses Teams"
 | 
			
		||||
 | 
			
		||||
#: user/views.py:235
 | 
			
		||||
#: user/views/views.py:235
 | 
			
		||||
msgid "Left Team"
 | 
			
		||||
msgstr "Team verlassen"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user