class Koordinat(FikspunktregisterObjekt): __tablename__ = "koordinat" sridid = Column(Integer, ForeignKey("sridtype.sridid"), nullable=False) srid = relationship("Srid", lazy="joined") sx = Column(Float) sy = Column(Float) sz = Column(Float) t = Column(TIMESTAMP(timezone=True), default=func.current_timestamp()) transformeret = Column(StringEnum(Boolean), nullable=False, default=Boolean.FALSE) _fejlmeldt = Column("fejlmeldt", StringEnum(Boolean), nullable=False, default=Boolean.FALSE) artskode = Column(IntEnum(Artskode), nullable=True, default=Artskode.NULL) x = Column(Float) y = Column(Float) z = Column(Float) sagseventfraid = Column(String, ForeignKey("sagsevent.id"), nullable=False) sagsevent = relationship("Sagsevent", foreign_keys=[sagseventfraid], back_populates="koordinater") sagseventtilid = Column(String, ForeignKey("sagsevent.id"), nullable=True) slettet = relationship( "Sagsevent", foreign_keys=[sagseventtilid], back_populates="koordinater_slettede", ) punktid = Column(String(36), ForeignKey("punkt.id"), nullable=False) punkt = relationship("Punkt", back_populates="koordinater") beregninger = relationship("Beregning", secondary=beregning_koordinat, back_populates="koordinater") tidsserier = relationship( "Tidsserie", order_by="Tidsserie.objektid", viewonly=True, secondary=tidsserie_koordinat, ) @property def fejlmeldt(self): return self._fejlmeldt == Boolean.TRUE @fejlmeldt.setter def fejlmeldt(self, value: Boolean): if value: self._fejlmeldt = Boolean.TRUE else: self._fejlmeldt = Boolean.FALSE
class ObservationsType(DeclarativeBase): __tablename__ = "observationstype" objektid = Column(Integer, primary_key=True) observationstypeid = Column(Integer, unique=True, nullable=False) name = Column("observationstype", String(4000), nullable=False) beskrivelse = Column(String(4000), nullable=False) value1 = Column(String, nullable=False) value2 = Column(String) value3 = Column(String) value4 = Column(String) value5 = Column(String) value6 = Column(String) value7 = Column(String) value8 = Column(String) value9 = Column(String) value10 = Column(String) value11 = Column(String) value12 = Column(String) value13 = Column(String) value14 = Column(String) value15 = Column(String) sigtepunkt = Column(StringEnum(Boolean), nullable=False, default=Boolean.FALSE) observationer = relationship( "Observation", order_by="Observation.objektid", back_populates="observationstype", )
class Sagsinfo(RegisteringTidObjekt): __tablename__ = "sagsinfo" aktiv = Column(StringEnum(Boolean), nullable=False, default=Boolean.TRUE) journalnummer = Column(String) behandler = Column(String, nullable=False) beskrivelse = Column(String) sagsid = Column(String, ForeignKey("sag.id"), nullable=False) sag = relationship("Sag", back_populates="sagsinfos")
class Grafik(FikspunktregisterObjekt): __tablename__ = "grafik" sagseventfraid = Column(String, ForeignKey("sagsevent.id"), nullable=False) sagsevent = relationship("Sagsevent", foreign_keys=[sagseventfraid], back_populates="grafikker") sagseventtilid = Column(String, ForeignKey("sagsevent.id"), nullable=True) slettet = relationship( "Sagsevent", foreign_keys=[sagseventtilid], back_populates="grafikker_slettede", ) objektid = Column(Integer, primary_key=True) grafik = Column(LargeBinary, nullable=False) type = Column(StringEnum(GrafikType), nullable=False) mimetype = Column(String(3), nullable=False) filnavn = Column(String(100), nullable=False) punktid = Column(String(36), ForeignKey("punkt.id"), nullable=False) punkt = relationship("Punkt", back_populates="grafikker") @classmethod def fra_fil(cls, punkt: Punkt, sti: Path): """Opret Grafik ud fra en billedfil.""" with open(sti, "rb") as f: blob = f.read() (mimetype, _) = mimetypes.guess_type(sti) if mimetype not in ("image/png", "image/jpeg"): raise ValueError( f"Filen {sti} kan ikke læses, forkert MIME type: {mimetype}") # antag at en png-fil er en skitse if mimetype == "image/png": grafiktype = GrafikType.SKITSE.value else: grafiktype = GrafikType.FOTO.value filnavn = sti.name return cls( punkt=punkt, grafik=blob, type=grafiktype, mimetype=mimetype, filnavn=filnavn, )