Add endpoint for creating local contacts with access control
Introduced a new `local_contact_router` to handle creation of local contacts. The endpoint enforces role-based access control and ensures no duplication of email addresses. Updated the router exports for consistency and cleaned up a large test file to improve readability.
This commit is contained in:
@ -45,6 +45,17 @@ class Contact(Base):
|
||||
shipments = relationship("Shipment", back_populates="contact")
|
||||
|
||||
|
||||
class LocalContact(Base):
|
||||
__tablename__ = "local_contacts"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True, autoincrement=True)
|
||||
status = Column(String(255), default="active")
|
||||
firstname = Column(String(255), nullable=False)
|
||||
lastname = Column(String(255), nullable=False)
|
||||
phone_number = Column(String(255), nullable=False)
|
||||
email = Column(String(255), nullable=False)
|
||||
|
||||
|
||||
class Address(Base):
|
||||
__tablename__ = "addresses"
|
||||
|
||||
@ -103,6 +114,10 @@ class Dewar(Base):
|
||||
slot = relationship("Slot", back_populates="dewar")
|
||||
events = relationship("LogisticsEvent", back_populates="dewar")
|
||||
beamline_location = None
|
||||
local_contact_id = Column(Integer, ForeignKey("local_contacts.id"), nullable=True)
|
||||
local_contact = relationship("LocalContact")
|
||||
beamtime = relationship("Beamtime", back_populates="dewars")
|
||||
beamtime_id = Column(Integer, ForeignKey("beamtimes.id"), nullable=True)
|
||||
|
||||
@property
|
||||
def number_of_pucks(self) -> int:
|
||||
@ -216,6 +231,24 @@ class PuckEvent(Base):
|
||||
puck = relationship("Puck", back_populates="events")
|
||||
|
||||
|
||||
class Beamtime(Base):
|
||||
__tablename__ = "beamtimes"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True, autoincrement=True)
|
||||
pgroups = Column(String(255), nullable=False)
|
||||
beamtime_name = Column(String(255), index=True)
|
||||
beamline = Column(String(255), nullable=True)
|
||||
start_date = Column(Date, nullable=True)
|
||||
end_date = Column(Date, nullable=True)
|
||||
status = Column(String(255), nullable=True)
|
||||
comments = Column(String(200), nullable=True)
|
||||
proposal_id = Column(Integer, ForeignKey("proposals.id"), nullable=True)
|
||||
local_contact_id = Column(Integer, ForeignKey("local_contacts.id"), nullable=False)
|
||||
|
||||
local_contact = relationship("LocalContact")
|
||||
dewars = relationship("Dewar", back_populates="beamtime")
|
||||
|
||||
|
||||
# class Results(Base):
|
||||
# __tablename__ = "results"
|
||||
#
|
||||
|
Reference in New Issue
Block a user