From 54bf468c53a3150278aaa8d88f608d7ec7db437f Mon Sep 17 00:00:00 2001 From: Stiftung Development Date: Sat, 6 Sep 2025 20:54:20 +0200 Subject: [PATCH] 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. --- app/stiftung/models.py | 4 ++-- app/stiftung/views.py | 27 ++++++++++++++------------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/app/stiftung/models.py b/app/stiftung/models.py index 3e4adcf..870d0eb 100644 --- a/app/stiftung/models.py +++ b/app/stiftung/models.py @@ -1128,8 +1128,8 @@ class DokumentLink(models.Model): """Gibt die verknüpfte Verpachtung zurück""" if self.verpachtung_id: try: - return Verpachtung.objects.get(pk=self.verpachtung_id) - except Verpachtung.DoesNotExist: + return LandVerpachtung.objects.get(pk=self.verpachtung_id) + except LandVerpachtung.DoesNotExist: return None return None diff --git a/app/stiftung/views.py b/app/stiftung/views.py index ff877d5..0560e2a 100644 --- a/app/stiftung/views.py +++ b/app/stiftung/views.py @@ -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():

PDF Export Not Available

PDF generation requires additional system dependencies that are not installed.

-

Error: {str(e)}

+

Error: {error_message}

Please install WeasyPrint dependencies or use CSV export instead.

@@ -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')