def update(self, data: Dict[str, Any], commit=True): if self.obj is None: raise RuntimeError('Database object is null') for k, v in data.items(): if hasattr(self.obj, k): setattr(self.obj, k, v) update_db(commit)
def create(cls, data: Dict, validate_unknown=True, commit=True) -> TaskService: if not data.get('project_id'): task_group = TaskGroup.query.get(data['task_group_id']) data['project_id'] = task_group.project_id if not data.get('team_id'): project = Project.query.get(data['project_id']) data['team_id'] = project.team_id if not data.get('state_id'): data['state_id'] = (State.query.filter( State.project_id == data['project_id']).order_by( State.rank).first().id) if validate_unknown: schema = TaskSchema() else: schema = TaskSchema(unknown=EXCLUDE) validation = schema.validate(data) if len(validation) > 0: raise ValueError(f'Invalid Data: {validation}') dbobject: Task = schema.load(data) db.session.add(dbobject) update_db(commit) return cls(dbobject)
def create(cls, data: Dict, validate_unknown=True, commit=True) -> ProjectService: if validate_unknown: schema = ProjectSchema() else: schema = ProjectSchema(unknown=EXCLUDE) validation = schema.validate(data) if len(validation) > 0: raise ValueError(f'Invalid Data: {validation}') dbobject: Project = schema.load(data) db.session.add(dbobject) update_db(False) # Create states default_states: List[DefaultState] = (DefaultState.query.filter( DefaultState.team_id == dbobject.team_id).order_by( DefaultState.rank).all()) for rank, default_state in enumerate(default_states): db.session.add( State(name=default_state.name, rank=rank, project_id=dbobject.id)) update_db(commit) return cls(dbobject)
def update_state(self, state_id: Union[str, UUID], commit=True) -> bool: if self.obj is None: raise RuntimeError('Database object is null') if str(self.obj.state_id) == str(state_id): return False self.obj.state_id = state_id update_db(commit) return True
def create(cls, data: Dict, validate_unknown=True, commit=True) -> TaskGroupService: if validate_unknown: schema = TaskGroupSchema() else: schema = TaskGroupSchema(unknown=EXCLUDE) validation = schema.validate(data) if len(validation) > 0: raise ValueError(f'Invalid Data: {validation}') dbobject: TaskGroup = schema.load(data) db.session.add(dbobject) update_db(commit) return cls(dbobject)
def upsert_profile(self, profile_data: Dict[str, Any], commit: bool = True) -> Dict[str, Any]: profile = UserProfile.query.filter( UserProfile.user_id == self.obj.id).first() if 'user_id' in profile_data: del profile_data['user_id'] if profile: for k, v in profile_data.items(): if hasattr(profile, k): setattr(profile, k, v) else: schema = UserProfileSchema(unknown=EXCLUDE) profile_data['user_id'] = self.obj.id profile = schema.load(profile_data) db.session.add(profile) update_db(commit) return UserProfileSchema().dump(profile)
def create(cls, data: Dict, validate_unknown=True, commit=True) -> TeamService: if validate_unknown: schema = TeamSchema() else: schema = TeamSchema(unknown=EXCLUDE) validation = schema.validate(data) if len(validation) > 0: raise ValueError(f'Invalid Data: {validation}') dbobject: Team = schema.load(data) db.session.add(dbobject) update_db(False) db.session.add(UserTeams(user_id=dbobject.user_id, team_id=dbobject.id)) update_db(False) db.session.add( DefaultState(name='default-state', rank=0, team_id=dbobject.id)) update_db(commit) return cls(dbobject)
def delete(self, commit=True): if self.obj is None: raise RuntimeError('Database object is null') db.session.delete(self.obj) update_db(commit) self.obj = None
def add_user(self, user_id: Union[str, UUID], commit=True) -> bool: if self.obj is None: raise RuntimeError('Database object is null') user_team = UserTeams(user_id=user_id, team_id=self.obj.id) db.session.add(user_team) update_db(commit)
def update_states(self, states: List[str], commit: bool = True): DefaultState.query.filter(DefaultState.team_id == self.obj.id).delete() for rank, state in enumerate(states): db.session.add( DefaultState(name=state, rank=rank, team_id=self.obj.id)) update_db(commit)