Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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)
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
 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
Ejemplo n.º 9
0
 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)
Ejemplo n.º 10
0
 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)