sumaq/backend/app/models/activity.py

40 lines
1.6 KiB
Python

from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, Text, Enum
from sqlalchemy.orm import relationship
from app.db.database import Base
import datetime
import enum
class ActivityType(str, enum.Enum):
INSPECTION = "inspection"
MEETING = "meeting"
VIRTUAL_MEETING = "virtual_meeting"
COORDINATION = "coordination"
TEST = "test"
OTHER = "other"
class Activity(Base):
__tablename__ = "activities"
id = Column(Integer, primary_key=True, index=True)
project_id = Column(Integer, ForeignKey("projects.id"))
specialty_id = Column(Integer, ForeignKey("specialties.id"))
contractor_id = Column(Integer, ForeignKey("contractors.id"), nullable=True)
user_id = Column(Integer, ForeignKey("users.id")) # Reporter
date = Column(DateTime, default=datetime.datetime.utcnow)
end_date = Column(DateTime, nullable=True)
type = Column(Enum(ActivityType), default=ActivityType.INSPECTION)
area = Column(String) # Frente de obra / Linea
description = Column(Text)
observations = Column(Text)
audio_transcription = Column(Text, nullable=True)
status = Column(String, default="completed")
project = relationship("app.models.project.Project", back_populates="activities")
specialty = relationship("app.models.specialty.Specialty")
contractor = relationship("app.models.contractor.Contractor")
reporter = relationship("app.models.user.User")
non_conformities = relationship("NonConformity", back_populates="activity")
evidences = relationship("Evidence", back_populates="activity")