feat: Add complete Verpachtung management system
- Add LandVerpachtung model with Land and Paechter relationships - Implement full CRUD operations for Verpachtungen - Add responsive Bootstrap templates with JavaScript calculations - Integrate document linking functionality similar to other entities - Add navigation links and URL patterns - Include CSV import support for Paechter data - Fix template encoding issues for proper UTF-8 support - Enhance administration interface with Verpachtung CSV import This implements the complete Verpachtung management feature requested, allowing users to manage land lease agreements with proper relationships to properties (Laenderei) and tenants (Paechter), following the same patterns as Foerderung/Destinataer relationships.
This commit is contained in:
@@ -1,125 +1,129 @@
|
||||
{% extends 'base.html' %}
|
||||
{% extends 'base.html' %}
|
||||
{% load static %}
|
||||
|
||||
{% block title %}{{ title }} - {{ block.super }}{% endblock %}
|
||||
{% block title %}{{ title }} - Stiftung Management{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
<h4 class="mb-0">
|
||||
<i class="fas fa-file-alt text-primary me-2"></i>{{ title }}
|
||||
</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="{{ form.paperless_document_id.id_for_label }}" class="form-label">
|
||||
{{ form.paperless_document_id.label }} *
|
||||
</label>
|
||||
{{ form.paperless_document_id }}
|
||||
{% if form.paperless_document_id.errors %}
|
||||
<div class="invalid-feedback d-block">
|
||||
{{ form.paperless_document_id.errors.0 }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<small class="form-text text-muted">
|
||||
Die Dokument-ID aus Paperless (z.B. aus der URL: /documents/12345/)
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="{{ form.kontext.id_for_label }}" class="form-label">
|
||||
{{ form.kontext.label }} *
|
||||
</label>
|
||||
{{ form.kontext }}
|
||||
{% if form.kontext.errors %}
|
||||
<div class="invalid-feedback d-block">
|
||||
{{ form.kontext.errors.0 }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="row">
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
<h4 class="mb-0">
|
||||
<i class="fas fa-file-alt text-primary me-2"></i>{{ title }}
|
||||
</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
<!-- Verknüpfungsanzeigen -->
|
||||
{% if form.land_verpachtung_id.value %}
|
||||
<div class="alert alert-info">
|
||||
<i class="fas fa-info-circle me-2"></i>
|
||||
<strong>Verknüpfung:</strong> Dieses Dokument wird mit einer Verpachtung verknüpft.
|
||||
</div>
|
||||
{% elif form.verpachtung_id.value %}
|
||||
<div class="alert alert-info">
|
||||
<i class="fas fa-info-circle me-2"></i>
|
||||
<strong>Verknüpfung:</strong> Dieses Dokument wird mit einer Verpachtung (Legacy) verknüpft.
|
||||
</div>
|
||||
{% elif form.land_id.value %}
|
||||
<div class="alert alert-info">
|
||||
<i class="fas fa-info-circle me-2"></i>
|
||||
<strong>Verknüpfung:</strong> Dieses Dokument wird mit einer Länderei verknüpft.
|
||||
</div>
|
||||
{% elif form.paechter_id.value %}
|
||||
<div class="alert alert-info">
|
||||
<i class="fas fa-info-circle me-2"></i>
|
||||
<strong>Verknüpfung:</strong> Dieses Dokument wird mit einem Pächter verknüpft.
|
||||
</div>
|
||||
{% elif form.destinataer_id.value %}
|
||||
<div class="alert alert-info">
|
||||
<i class="fas fa-info-circle me-2"></i>
|
||||
<strong>Verknüpfung:</strong> Dieses Dokument wird mit einem Destinatär verknüpft.
|
||||
</div>
|
||||
{% elif form.foerderung_id.value %}
|
||||
<div class="alert alert-info">
|
||||
<i class="fas fa-info-circle me-2"></i>
|
||||
<strong>Verknüpfung:</strong> Dieses Dokument wird mit einer Förderung verknüpft.
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="{{ form.paperless_document_id.id_for_label }}" class="form-label">
|
||||
{{ form.paperless_document_id.label }} *
|
||||
</label>
|
||||
{{ form.paperless_document_id }}
|
||||
{% if form.paperless_document_id.errors %}
|
||||
<div class="invalid-feedback d-block">
|
||||
{{ form.paperless_document_id.errors.0 }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<small class="form-text text-muted">
|
||||
Die Dokument-ID aus Paperless (z.B. aus der URL: /documents/12345/)
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="{{ form.titel.id_for_label }}" class="form-label">
|
||||
{{ form.titel.label }} *
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="{{ form.kontext.id_for_label }}" class="form-label">
|
||||
{{ form.kontext.label }} *
|
||||
</label>
|
||||
{{ form.titel }}
|
||||
{% if form.titel.errors %}
|
||||
{{ form.kontext }}
|
||||
{% if form.kontext.errors %}
|
||||
<div class="invalid-feedback d-block">
|
||||
{{ form.titel.errors.0 }}
|
||||
{{ form.kontext.errors.0 }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="{{ form.beschreibung.id_for_label }}" class="form-label">
|
||||
{{ form.beschreibung.label }}
|
||||
</label>
|
||||
{{ form.beschreibung }}
|
||||
{% if form.beschreibung.errors %}
|
||||
<div class="invalid-feedback d-block">
|
||||
{{ form.beschreibung.errors.0 }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<!-- Versteckte Verknüpfungsfelder -->
|
||||
{{ form.verpachtung_id }}
|
||||
{{ form.land_id }}
|
||||
{{ form.paechter_id }}
|
||||
{{ form.destinataer_id }}
|
||||
{{ form.foerderung_id }}
|
||||
|
||||
<!-- Verknüpfungsinfo anzeigen -->
|
||||
{% if form.verpachtung_id.value %}
|
||||
<div class="alert alert-info">
|
||||
<i class="fas fa-info-circle me-2"></i>
|
||||
<strong>Verknüpfung:</strong> Dieses Dokument wird mit einer Verpachtung verknüpft.
|
||||
</div>
|
||||
{% elif form.land_id.value %}
|
||||
<div class="alert alert-info">
|
||||
<i class="fas fa-info-circle me-2"></i>
|
||||
<strong>Verknüpfung:</strong> Dieses Dokument wird mit einer Länderei verknüpft.
|
||||
</div>
|
||||
{% elif form.paechter_id.value %}
|
||||
<div class="alert alert-info">
|
||||
<i class="fas fa-info-circle me-2"></i>
|
||||
<strong>Verknüpfung:</strong> Dieses Dokument wird mit einem Pächter verknüpft.
|
||||
</div>
|
||||
{% elif form.destinataer_id.value %}
|
||||
<div class="alert alert-info">
|
||||
<i class="fas fa-info-circle me-2"></i>
|
||||
<strong>Verknüpfung:</strong> Dieses Dokument wird mit einem Destinatär verknüpft.
|
||||
</div>
|
||||
{% elif form.foerderung_id.value %}
|
||||
<div class="alert alert-info">
|
||||
<i class="fas fa-info-circle me-2"></i>
|
||||
<strong>Verknüpfung:</strong> Dieses Dokument wird mit einer Förderung verknüpft.
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="{{ form.titel.id_for_label }}" class="form-label">
|
||||
{{ form.titel.label }} *
|
||||
</label>
|
||||
{{ form.titel }}
|
||||
{% if form.titel.errors %}
|
||||
<div class="invalid-feedback d-block">
|
||||
{{ form.titel.errors.0 }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="d-flex justify-content-between">
|
||||
<a href="{% url 'stiftung:dokument_list' %}" class="btn btn-outline-secondary">
|
||||
<i class="fas fa-arrow-left me-1"></i>Zurück zur Liste
|
||||
</a>
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<i class="fas fa-save me-1"></i>
|
||||
{% if dokument %}Aktualisieren{% else %}Verknüpfen{% endif %}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="{{ form.beschreibung.id_for_label }}" class="form-label">
|
||||
{{ form.beschreibung.label }}
|
||||
</label>
|
||||
{{ form.beschreibung }}
|
||||
{% if form.beschreibung.errors %}
|
||||
<div class="invalid-feedback d-block">
|
||||
{{ form.beschreibung.errors.0 }}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<!-- Versteckte Verknüpfungsfelder -->
|
||||
{{ form.land_verpachtung_id }}
|
||||
{{ form.verpachtung_id }}
|
||||
{{ form.land_id }}
|
||||
{{ form.paechter_id }}
|
||||
{{ form.destinataer_id }}
|
||||
{{ form.foerderung_id }}
|
||||
|
||||
<div class="d-flex justify-content-between">
|
||||
<a href="{% url 'stiftung:dokument_list' %}" class="btn btn-outline-secondary">
|
||||
<i class="fas fa-arrow-left me-1"></i>Zurück zur Liste
|
||||
</a>
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<i class="fas fa-save me-1"></i>
|
||||
{% if dokument %}Aktualisieren{% else %}Verknüpfen{% endif %}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block extra_css %}
|
||||
@@ -132,4 +136,4 @@
|
||||
box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user