43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
from datetime import datetime
|
|
from typing import Optional
|
|
import uuid
|
|
from src.core.log_conf import logger
|
|
from kontor_model.db.models.admin import Assignment, Profile
|
|
from sqlalchemy.orm import Session
|
|
|
|
from kontor_model.schema.user.profile import ProfileModel
|
|
|
|
|
|
def create_new_profile(new_profile: ProfileModel, db: Session) -> Profile:
|
|
logger.info(f"create MediaActor with url {new_profile.username}")
|
|
profile: Profile = Profile()
|
|
profile.id = str(uuid.uuid4())
|
|
profile.user_name = new_profile.username
|
|
profile.first_name = new_profile.first_name
|
|
profile.last_name = new_profile.last_name
|
|
profile.created_date = datetime.now()
|
|
profile.last_modified_date = datetime.now()
|
|
profile.version = 0
|
|
db.add(profile)
|
|
db.commit()
|
|
db.refresh(profile)
|
|
logger.info(f"created {profile}")
|
|
return profile
|
|
|
|
def delete_profile(db: Session, profile_id: str):
|
|
logger.info(f"delete Profile with id {profile_id}")
|
|
profile: Optional[Profile] = db.get(Profile, profile_id)
|
|
if profile is not None:
|
|
assignments = profile.assignments
|
|
for assignment in assignments:
|
|
delete_assignment(db, assignment.id)
|
|
db.delete(profile)
|
|
db.commit()
|
|
|
|
def delete_assignment(db: Session, assignment_id: str) -> None:
|
|
logger.info(f"delete Assignment with id {assignment_id}")
|
|
assignment: Optional[Assignment] = db.get(Assignment, assignment_id)
|
|
if assignment is not None:
|
|
db.delete(assignment)
|
|
db.commit()
|