fix: resolve Python code quality issues

- Fix undefined variable 'e' in PDF generator error handling
- Replace undefined 'Verpachtung' model references with 'LandVerpachtung'
- Fix all import and object access references to use correct model name
- Resolve all flake8 F821 undefined name errors

This addresses all code quality failures that were blocking CI pipeline.
This commit is contained in:
Stiftung Development
2025-09-06 20:54:20 +02:00
parent 4acb5885e8
commit 54bf468c53
2 changed files with 16 additions and 15 deletions

View File

@@ -20,13 +20,15 @@ from django.conf import settings
from .models import Person, Paechter, Destinataer, DokumentLink, Foerderung, Land, CSVImport, LandAbrechnung, LandVerpachtung, AppConfiguration, DestinataerUnterstuetzung, UnterstuetzungWiederkehrend
import json
# Lazy import for PDF generator to avoid startup errors
def get_pdf_generator():
"""Lazy load PDF generator to handle missing dependencies gracefully"""
try:
from .utils.pdf_generator import pdf_generator
return pdf_generator
except ImportError as e:
# Store the error message for use in MockPDFGenerator
error_message = str(e)
# Return a mock generator if dependencies are missing
class MockPDFGenerator:
def is_available(self):
@@ -40,7 +42,7 @@ def get_pdf_generator():
<body>
<h1>PDF Export Not Available</h1>
<p>PDF generation requires additional system dependencies that are not installed.</p>
<p>Error: {str(e)}</p>
<p>Error: {error_message}</p>
<p>Please install WeasyPrint dependencies or use CSV export instead.</p>
</body>
</html>
@@ -1418,7 +1420,7 @@ def verpachtung_list(request):
# Get unique gemeinden and statuses for filters
gemeinden = Land.objects.values_list('gemeinde', flat=True).distinct().order_by('gemeinde')
status_choices = Verpachtung.STATUS_CHOICES
status_choices = LandVerpachtung.STATUS_CHOICES
context = {
'page_obj': page_obj,
@@ -2055,7 +2057,7 @@ def land_stats_api(request):
stats = {
'total_count': lands.count(),
'total_flaeche': float(lands.aggregate(total=Sum('groesse_qm'))['total'] or 0),
'total_verpachtet': float(Verpachtung.objects.filter(status='aktiv', land__in=lands).aggregate(
'total_verpachtet': float(LandVerpachtung.objects.filter(status='aktiv', land__in=lands).aggregate(
total=Sum('verpachtete_flaeche')
)['total'] or 0),
'avg_verpachtungsgrad': 0,
@@ -2685,8 +2687,7 @@ def link_document_create(request):
entity = Foerderung.objects.get(id=link_id)
target_name = f"{entity.destinataer.get_full_name() if entity.destinataer else 'Unbekannt'} - {entity.jahr}"
elif link_type == 'verpachtung':
from stiftung.models import Verpachtung
entity = Verpachtung.objects.get(id=link_id)
entity = LandVerpachtung.objects.get(id=link_id)
target_name = str(entity)
elif link_type == 'rentmeister':
from stiftung.models import Rentmeister
@@ -2918,7 +2919,7 @@ def link_document_update(request):
# Cleanup: Entferne verwaiste Pächter-Verknüpfungen wenn von Verpachtung weg geändert
if old_verpachtung_id and link_type != 'verpachtung':
try:
old_verpachtung = Verpachtung.objects.select_related('paechter').get(id=old_verpachtung_id)
old_verpachtung = LandVerpachtung.objects.select_related('paechter').get(id=old_verpachtung_id)
if old_verpachtung.paechter:
# Prüfe ob noch andere Verpachtungs-Links für diesen Pächter existieren
other_verpachtung_links = DokumentLink.objects.filter(
@@ -2933,7 +2934,7 @@ def link_document_update(request):
paechter_id=old_verpachtung.paechter.id,
kontext='paechter'
).delete()
except (Verpachtung.DoesNotExist, Exception):
except (LandVerpachtung.DoesNotExist, Exception):
pass
message = 'Verknüpfung aktualisiert'
@@ -2990,9 +2991,9 @@ def link_document_delete(request, link_id):
elif link.verpachtung_id:
target_type = "verpachtung"
try:
entity = Verpachtung.objects.get(id=link.verpachtung_id)
entity = LandVerpachtung.objects.get(id=link.verpachtung_id)
target_name = str(entity)
except Verpachtung.DoesNotExist:
except LandVerpachtung.DoesNotExist:
target_name = f"Verpachtung ID {link.verpachtung_id}"
elif link.rentmeister_id:
target_type = "rentmeister"
@@ -3020,7 +3021,7 @@ def link_document_delete(request, link_id):
# Cleanup NACH der Haupttransaktion: Wenn eine Verpachtungs-Verknüpfung gelöscht wurde, prüfe Pächter-Links
if verpachtung_id_for_cleanup:
try:
verpachtung = Verpachtung.objects.select_related('paechter').get(id=verpachtung_id_for_cleanup)
verpachtung = LandVerpachtung.objects.select_related('paechter').get(id=verpachtung_id_for_cleanup)
if verpachtung.paechter:
# Prüfe ob noch andere Verpachtungs-Links für diesen Pächter existieren
other_verpachtung_links = DokumentLink.objects.filter(
@@ -3035,7 +3036,7 @@ def link_document_delete(request, link_id):
paechter_id=verpachtung.paechter.id,
kontext='paechter'
).delete()
except (Verpachtung.DoesNotExist, Exception):
except (LandVerpachtung.DoesNotExist, Exception):
pass
return Response({'success': True})
@@ -4384,7 +4385,7 @@ def verpachtung_export(request, pk):
import os
from django.http import HttpResponse
verpachtung = get_object_or_404(Verpachtung, pk=pk)
verpachtung = get_object_or_404(LandVerpachtung, pk=pk)
# Create a temporary file for the ZIP
temp_file = tempfile.NamedTemporaryFile(delete=False, suffix='.zip')