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