Exemplo n.º 1
0
def guess_task_type(department_name, task_type_name):
    criterions = {"name": task_type_name}
    if len(department_name) > 0:
        criterions["department_id"] = Department.get_by(
            name=department_name).id

    return TaskType.get_by(**criterions)
Exemplo n.º 2
0
 def update_data(self, data):
     name = data.get("name", None)
     task_type = Department.get_by(name=name)
     if task_type is not None:
         raise ArgumentsException(
             "A department type with similar name already exists")
     return data
Exemplo n.º 3
0
 def update_data(self, data, instance_id):
     name = data.get("name", None)
     if name is not None:
         department = Department.get_by(name=name)
         if department is not None and instance_id != str(department.id):
             raise ArgumentsException(
                 "A department with similar name already exists")
     return data
Exemplo n.º 4
0
def get_or_create_department(name):
    departmemt = Department.get_by(name=name)
    if departmemt is None:
        departmemt = Department(
            name=name,
            color="#000000"
        )
        departmemt.save()
    return departmemt
Exemplo n.º 5
0
def get_or_create_department(name):
    """
    Create a new department it doesn't exist. If it exists, it returns the
    department from database.
    """
    department = Department.get_by(name=name)
    if department is None:
        department = Department(name=name, color="#000000")
        department.save()
        events.emit("department:new", {"department_id": department.id})
    return department.serialize()
Exemplo n.º 6
0
 def save_department(self, data):
     department = Department.get_by(name=data["department_name"])
     if department is None:
         department_data = {
             "name": data["department_name"],
             "color": data["color"],
         }
         department = Department(**department_data)
         department.save()
         current_app.logger.info("Department created: %s" % department)
     del data["department_name"]
     return department
Exemplo n.º 7
0
    def import_entry(self, data):
        # remove departments. It needs to be created using the DepartmentLink
        # table.
        imported_department = data.pop("department")

        if data["email"] != "*****@*****.**":
            person = Person.get_by(shotgun_id=data["shotgun_id"])
            if person is None:
                person = Person.get_by(email=data["email"])

            if person is None:
                data["password"] = auth.encrypt_password("default")
                person = Person(**data)
                person.save()
                current_app.logger.info("Person created: %s" % person)
            else:
                if person.password is None or len(person.password) == 0:
                    data["password"] = auth.encrypt_password("default")

            # create or update a department/person link if needed
            if imported_department:
                department_person_link = (
                    db.session.query(DepartmentLink)
                    .filter_by(person_id=person.id)
                    .first()
                )
                department = Department.get_by(id=imported_department["id"])

                if department_person_link is None:
                    person.departments.append(department)
                    current_app.logger.info(
                        "Department Person Link created: %s-%s"
                        % (department.name, person.full_name())
                    )
                elif person.departments != [
                    department,
                ]:
                    person.departments = [
                        department,
                    ]
                    current_app.logger.info(
                        "Department Person Link updated: %s-%s"
                        % (department.name, person.full_name())
                    )

                person.save()

            return person

        else:
            raise ShotgunEntryImportFailed("This entry is not a real person.")