Files
vergabe-teilnahme/vergabe_teilnahme/apps/partner/models.py
2026-05-08 14:26:48 +02:00

89 lines
3.2 KiB
Python

from django.db import models
from vergabe_teilnahme.apps.core.models import FlexibleModel
class Dienstleistertyp(FlexibleModel):
name = models.CharField(max_length=200)
beschreibung = models.TextField(blank=True)
typische_leistungen = models.TextField(blank=True)
typische_nachweise = models.TextField(blank=True)
relevante_standards = models.TextField(blank=True)
typische_preisbestandteile = models.TextField(blank=True)
bemerkungen = models.TextField(blank=True)
class Meta:
verbose_name = 'Dienstleistertyp'
verbose_name_plural = 'Dienstleistertypen'
ordering = ['name']
def __str__(self):
return self.name
class Subunternehmer(FlexibleModel):
PRAEFERENZ_CHOICES = [
('bevorzugt', 'Bevorzugt'),
('zugelassen', 'Zugelassen'),
('gesperrt', 'Gesperrt'),
]
name = models.CharField(max_length=300)
kurzname = models.CharField(max_length=100, blank=True)
dienstleistertyp = models.ForeignKey(
Dienstleistertyp, on_delete=models.SET_NULL,
null=True, blank=True, related_name='subunternehmer'
)
praeferenz = models.CharField(max_length=20, choices=PRAEFERENZ_CHOICES, default='zugelassen')
strasse = models.CharField(max_length=200, blank=True)
plz = models.CharField(max_length=10, blank=True)
ort = models.CharField(max_length=100, blank=True)
land = models.CharField(max_length=100, default='Deutschland')
telefon = models.CharField(max_length=50, blank=True)
mobilnummer = models.CharField(max_length=50, blank=True)
email = models.EmailField(blank=True)
website = models.URLField(blank=True)
ansprechpartner = models.CharField(max_length=200, blank=True)
ansprechpartner_email = models.EmailField(blank=True)
ansprechpartner_telefon = models.CharField(max_length=50, blank=True)
leistungsprofil = models.TextField(blank=True)
bewertung = models.TextField(blank=True)
bisherige_ausschreibungen = models.ManyToManyField(
'ausschreibungen.Ausschreibung',
blank=True,
through='SubunternehmerZuordnung',
related_name='subunternehmer',
)
class Meta:
verbose_name = 'Subunternehmer'
verbose_name_plural = 'Subunternehmer'
ordering = ['name']
def __str__(self):
return self.name
class SubunternehmerZuordnung(models.Model):
subunternehmer = models.ForeignKey(
Subunternehmer, on_delete=models.CASCADE, related_name='zuordnungen'
)
ausschreibung = models.ForeignKey(
'ausschreibungen.Ausschreibung', on_delete=models.CASCADE
)
los = models.ForeignKey(
'lose.Los', on_delete=models.SET_NULL, null=True, blank=True
)
konkrete_leistung = models.CharField(max_length=300, blank=True)
zusage_vorhanden = models.BooleanField(default=False)
nachweis_eingegangen = models.BooleanField(default=False)
preis_vorhanden = models.BooleanField(default=False)
kommentar = models.TextField(blank=True)
class Meta:
verbose_name = 'Subunternehmer-Zuordnung'
verbose_name_plural = 'Subunternehmer-Zuordnungen'
def __str__(self):
return f'{self.subunternehmer}{self.ausschreibung}'