Zum Inhalt

Breeding-App-Referenz

Die Breeding-App verwaltet Königinnenzuchtprogramme und Völkervermehrungsverfolgung, einschließlich Umlarven, Aufzucht, Völkerteilungsoperationen und Status-Audit-Protokollierung.

Übersicht

Speicherort: app/breeding/

Zweck: Königinnenzuchtprogramme und Völkervermehrung

Wichtige Modelle: QueenBreeding, ColonySplit, BreedingStatusChange, SplitStatusChange


Dateistruktur

breeding/
├── models.py              # 4 Modelle (QueenBreeding, ColonySplit, BreedingStatusChange, SplitStatusChange)
├── views.py               # 8 View-Klassen
├── forms.py               # 4 Formulare (2 Modell-Formulare + 2 Filter-Formulare)
├── urls.py                # 8 URL-Patterns
├── signals_status.py      # 4 Signal-Handler (Statusänderungsverfolgung)
├── apps.py                # AppConfig mit Signal-Import
├── admin.py               # Django-Admin-Konfiguration
├── tests/                 # Integrationstests
│   └── test_breeding_integration.py
└── templates/breeding/    # Zucht- und Ableger-Templates

Modelle

Siehe Datenbankmodelle - Breeding-App für vollständige Feldreferenz.

QueenBreeding

Erfasst Königinnenzuchtsitzungen von der Planung bis zum Legen. Verwendet OrgPermissionMixin mit breeder als Berechtigungsinhaber-Feld.

Zuchtmethoden: Konfigurierbar über Systemkonfiguration (Kategorie breeding_method)

Statusverlauf:

Planning → Grafted → Accepted → Capped → Emerged → Mated → Laying
    ↓          ↓          ↓         ↓         ↓         ↓
  Failed     Failed     Failed   Failed    Failed    Failed

Jeder Status kann in jeder Phase zu "Failed" wechseln. Sowohl "Laying" als auch "Failed" sind Endstatus.

Wichtige Felder:

  • Zeitleiste: breeding_date, graft_date, emergence_date, mating_flight_date, first_laying_date
  • Ergebnisse: cells_started, cells_accepted, queens_emerged, queens_mated, queens_successfully_laying
  • Genetik: mother_hive (genetische Quelle), breeding_hive (Arbeits-Zuchtstock), drone_source, breed_line
  • Bewertung: quality_rating (konfigurierbar über Systemkonfiguration)

Property: success_rate -- Berechnet als (cells_accepted / cells_started) * 100

Konzeptionelle Trennung:

  • mother_hive (Hive): Produktionsstock, der genetisches Material liefert (Larven/Eier)
  • breeding_hive (BreedingHive): Dedizierter Zucht-Arbeitsbereich, in dem die Königinnenaufzucht stattfindet

Wichtige Methoden:

  • get_status_display() -- Gibt die lesbare Statusbezeichnung aus der Systemkonfiguration zurück
  • clean() -- Validiert Statusübergänge gegen erlaubte Regeln
  • save(skip_validation=False) -- Führt vollständige Validierung vor dem Speichern aus; skip_validation=True für Admin-Überschreibungen

ColonySplit

Erfasst Völkerteilungsoperationen. Verwendet OrgPermissionMixin mit split_by als Berechtigungsinhaber-Feld.

Ablegertypen: Konfigurierbar über Systemkonfiguration (Kategorie split_type)

Statusverlauf:

Planned → Completed → Queenright
    ↓          ↓     → Queenless → Combined
  Failed       ↓                → Failed
             Combined

"Failed" und "Combined" sind Endstatus.

Wichtige Felder:

  • parent_hive, new_hive -- Quell- und Ziel-Bienenstock
  • frames_transferred, brood_frames, honey_frames -- Wabenanzahlen
  • Königinnenverwaltung: queen_included, queen_cell_added, queen_introduced
  • Zeitleiste: queen_introduction_date, queen_accepted_date, first_eggs_seen
  • Aktivitätsverfolgung: assigned_to, scheduled_date, completed_date, priority, cost
  • is_successful -- Endergebnis

Validierung: Zuchtstöcke können nicht als parent_hive oder new_hive bei Teilungen verwendet werden. Dies wird sowohl auf Modellebene (clean()) als auch auf Formularebene (ColonySplitForm.clean()) erzwungen.

BreedingStatusChange

Verfolgt historische Änderungen des Königinnenzuchtstatus. Erbt von AbstractStatusChange und verwendet DelegatedPermissionMixin, um Berechtigungen an den übergeordneten Zuchtdatensatz zu delegieren.

Felder: breeding (FK zu QueenBreeding), old_status, new_status, changed_at, changed_by, notes

SplitStatusChange

Verfolgt historische Änderungen des Völkerteilungsstatus. Erbt von AbstractStatusChange und verwendet DelegatedPermissionMixin, um Berechtigungen an den übergeordneten Teilungsdatensatz zu delegieren.

Felder: split (FK zu ColonySplit), old_status, new_status, changed_at, changed_by, notes


Views

Königinnenzucht

View Zweck
BreedingListView Zuchteinträge mit Organisations-/Methoden-/Status-/Datumsfiltern und sortierbaren Spalten auflisten
BreedingDetailView Zuchtdetails mit Berechtigungsprüfung anzeigen
BreedingCreateView Zuchtdatensatz erstellen, Organisation und Züchter werden automatisch gesetzt
BreedingUpdateView Zuchtdatensatz mit Berechtigungsprüfung aktualisieren

Völkerteilungen

View Zweck
SplitListView Ableger mit Organisations-/Typ-/Status-/Erfolgs-/Datumsfiltern und sortierbaren Spalten auflisten
SplitDetailView Ablegerdetails mit Berechtigungsprüfung anzeigen
SplitCreateView Ableger-Datensatz erstellen, Organisation und Teiler werden automatisch gesetzt
SplitUpdateView Ableger-Datensatz mit Berechtigungsprüfung aktualisieren

Alle Listenansichten verwenden SortableListMixin für Spaltensortierung und unterstützen Paginierung (20 Einträge pro Seite).


Formulare

QueenBreedingForm

Modellformular zum Erstellen und Bearbeiten von Königinnenzuchtdatensätzen. Befüllt Auswahlfelder aus der Systemkonfiguration:

  • breeding_method aus der Kategorie breeding_method
  • status aus der Kategorie breeding_status
  • quality_rating aus der Kategorie breeding_quality

Filtert mother_hive- und breeding_hive-Abfragen auf die Organisationen des Benutzers. Validiert alle Auswahlwerte gegen die Systemkonfiguration.

ColonySplitForm

Modellformular zum Erstellen und Bearbeiten von Völkerteilungsdatensätzen. Befüllt Auswahlfelder aus der Systemkonfiguration:

  • split_type aus der Kategorie split_type
  • status aus der Kategorie split_status
  • priority aus der Kategorie operation_priority

Filtert parent_hive- und new_hive-Abfragen auf die Organisationen des Benutzers. Verhindert, dass Zuchtstöcke als Elternstock bei Teilungen verwendet werden.

BreedingListFilterForm

Filter: Organisation, Zuchtmethode, Status, Startdatum, Enddatum. Standarddatumsbereich ist die letzten 365 Tage.

SplitListFilterForm

Filter: Organisation, Ablegertyp, Status, Erfolg, Startdatum, Enddatum. Standarddatumsbereich ist die letzten 365 Tage.


URL-Patterns

breeding/                        → BreedingListView (breeding-list)
breeding/<int:pk>/               → BreedingDetailView (breeding-detail)
breeding/new/                    → BreedingCreateView (breeding-create)
breeding/<int:pk>/edit/          → BreedingUpdateView (breeding-update)
breeding/splits/                 → SplitListView (split-list)
breeding/split/<int:pk>/         → SplitDetailView (split-detail)
breeding/split/new/              → SplitCreateView (split-create)
breeding/split/<int:pk>/edit/    → SplitUpdateView (split-update)

Signale

Die Breeding-App verwendet vier Signal-Handler in signals_status.py, um Statusänderungen automatisch zu verfolgen:

Signal Auslöser Zweck
track_breeding_status_pre_save QueenBreeding pre_save Speichert vorherigen Status zur Änderungserkennung
track_breeding_status_change QueenBreeding post_save Erstellt BreedingStatusChange-Audit-Datensatz
track_split_status_pre_save ColonySplit pre_save Speichert vorherigen Status zur Änderungserkennung
track_split_status_change ColonySplit post_save Erstellt SplitStatusChange-Audit-Datensatz

Signal-Handler werden in apps.py geladen, wenn die App bereit ist.


Integration mit Hives-App

Königinnen-Abstammung

Königinnen, die durch Zuchtprogramme erstellt werden, verlinken zurück via breeding_record und mother_queen:

queen = Queen.objects.create(
    hive=new_hive,
    breeding_record=breeding,   # Verlinkt zu QueenBreeding
    mother_queen=source_queen,  # Verlinkt zu Mutter für Abstammung
    origin='bred_here',
)

Völkerteilung

Ableger erfordern, dass zuerst der neue Bienenstock erstellt wird, dann die Teilung erfasst wird:

new_hive = Hive.objects.create(name="Ableger-1", organization=org)
split = ColonySplit.objects.create(
    parent_hive=existing_hive,
    new_hive=new_hive,
    frames_transferred=5,
)

Zuchtstock-Schutz

Zuchtstöcke (BreedingHive-Modell) können nicht für Völkerteilungen verwendet werden. Dies wird sowohl auf Modell- als auch auf Formularebene validiert, um ein versehentliches Teilen dedizierter Zuchtausrüstung zu verhindern.


Systemkonfigurations-Kategorien

Die Breeding-App verwendet die folgenden konfigurierbaren Auswahlkategorien:

Kategorie-Code Verwendet von Zweck
breeding_method QueenBreeding.breeding_method Verfügbare Zuchtmethoden
breeding_status QueenBreeding.status Verfügbare Zuchtstatus
breeding_quality QueenBreeding.quality_rating Qualitätsbewertungsoptionen
split_type ColonySplit.split_type Verfügbare Ablegertypen
split_status ColonySplit.status Verfügbare Ablegerstatus
operation_priority ColonySplit.priority Prioritätsstufen

Siehe auch