Exemplo n.º 1
0
def get_person_by_desktop_login(desktop_login):
    """
    Return person that matches given desktop login as a dictionary. It is useful
    to authenticate user from their desktop session login.
    """
    try:
        person = Person.get_by(desktop_login=desktop_login)
    except StatementError:
        raise PersonNotFoundException()

    if person is None:
        raise PersonNotFoundException()
    return person.serialize()
Exemplo n.º 2
0
 def generate_fixture_person(self,
                             first_name="John",
                             last_name="Doe",
                             desktop_login="******",
                             email="*****@*****.**"):
     self.person = Person.get_by(email=email)
     if self.person is None:
         self.person = Person.create(
             first_name=first_name,
             last_name=last_name,
             desktop_login=desktop_login,
             email=email,
             password=auth.encrypt_password("mypassword"))
     return self.person
Exemplo n.º 3
0
    def import_entry(self, data):
        if data["email"] != "*****@*****.**":
            person = Person.get_by(shotgun_id=data["shotgun_id"])

            if person is None:
                person = Person(**data)
                person.save()
                current_app.logger.info("Person created: %s" % person)
            else:
                person.update(data)
                current_app.logger.info("Person updated: %s" % person)

            return person

        else:
            raise ShotgunEntryImportFailed("This entry is not a real person.")
Exemplo n.º 4
0
    def test_import_version(self):
        sg_version = {
            "code": "S01_Animation",
            "description": "description test",
            "id": 2,
            "user": {"id": 1, "name": "Jhon Doe", "type": "HumanUser"},
            "entity": {"id": 1, "name": "SH01", "type": "Shot"},
            "project": {"id": 1, "name": "Cosmos Landromat", "type": "Project"},
            "sg_task": {"id": 1, "name": "Animation", "type": "Task"},
            "sg_uploaded_movie": {
                "content_type": "video/mp4",
                "id": 1,
                "link_type": "upload",
                "name": "movie_new.mp4",
                "type": "Attachment",
                "url": "https://sg-media.amazonaws.com/9e73/movie_new.mp4",
            },
            "type": "Version",
        }

        api_path = "/import/shotgun/versions"
        self.preview_files = self.post(api_path, [sg_version], 200)
        self.assertEqual(len(self.preview_files), 1)

        self.preview_files = self.get("data/preview-files")
        self.assertEqual(len(self.preview_files), 1)
        preview_file = self.preview_files[0]

        task = Task.get_by(shotgun_id=sg_version["sg_task"]["id"])
        person = Person.get_by(shotgun_id=sg_version["user"]["id"])

        self.assertEqual(preview_file["name"], sg_version["code"])
        self.assertEqual(preview_file["source"], "Shotgun")
        self.assertEqual(preview_file["task_id"], str(task.id))

        self.assertEqual(preview_file["name"], sg_version["code"])
        self.assertEqual(preview_file["description"], sg_version["description"])
        self.assertEqual(preview_file["shotgun_id"], sg_version["id"])
        self.assertEqual(
            preview_file["uploaded_movie_url"],
            sg_version["sg_uploaded_movie"]["url"],
        )
        self.assertEqual(
            preview_file["uploaded_movie_url"],
            sg_version["sg_uploaded_movie"]["url"],
        )
        self.assertEqual(preview_file["person_id"], str(person.id))
Exemplo n.º 5
0
    def import_row(self, row):
        first_name = row["First Name"]
        last_name = row["Last Name"]
        email = row["Email"]
        phone = row["Phone"]

        try:
            password = auth.encrypt_password("default")
            person = Person.create(email=email,
                                   password=password,
                                   first_name=first_name,
                                   last_name=last_name,
                                   phone=phone)
        except IntegrityError:
            person = Person.get_by(email=email)

        return person
Exemplo n.º 6
0
    def test_import_note(self):
        self.load_note()
        self.assertEqual(len(self.notes), 1)

        self.comments = self.get("data/comments")
        self.assertEqual(len(self.comments), 1)

        note = self.comments[0]
        task = Task.get_by(shotgun_id=self.sg_note["tasks"][0]["id"])
        person = Person.get_by(shotgun_id=self.sg_note["user"]["id"])

        self.assertEqual(note["text"], self.sg_note["content"])
        self.assertEqual(note["object_type"], "Task")
        self.assertEqual(note["shotgun_id"], self.sg_note["id"])
        self.assertEqual(note["object_id"], str(task.id))
        self.assertEqual(note["person_id"], str(person.id))
        self.assertEqual(note["created_at"][:19],
                         self.sg_note["created_at"][:19])
Exemplo n.º 7
0
    def import_entry(self, data):
        if data["email"] != "*****@*****.**":
            person = Person.get_by(shotgun_id=data["shotgun_id"])

            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")
                person.update(data)
                current_app.logger.info("Person updated: %s" % person)
            return person

        else:
            raise ShotgunEntryImportFailed("This entry is not a real person.")
Exemplo n.º 8
0
    def import_entry(self, data):
        project_person_link = ProjectPersonLink.query.filter(
            ProjectPersonLink.shotgun_id == data["shotgun_id"]).first()

        if project_person_link is None:
            project = Project.get_by(shotgun_id=data["project_shotgun_id"])
            person = Person.get_by(shotgun_id=data["person_shotgun_id"])

            if project is not None and person is not None:
                project.team.append(person)
                project.save()
                current_app.logger.info("Project Person Link created: %s" %
                                        project)
        else:
            project.update(data)
            current_app.logger.info("Project updated: %s" % project)

        return project
Exemplo n.º 9
0
    def test_import_tasks(self):
        path = "/data/import/csv/tasks"
        file_path_fixture = self.get_fixture_file_path(
            os.path.join("csv", "tasks.csv")
        )
        self.upload_file(path, file_path_fixture)

        task_types = TaskType.query.all()
        self.assertEqual(len(task_types), 3)
        tasks = Task.query.all()
        self.assertEqual(len(tasks), 3)
        task_statuses = TaskStatus.query.all()
        self.assertEqual(len(task_statuses), 2)

        task = tasks[0]
        self.assertEqual(task.duration, 40 * 3600)
        self.assertEqual(
            task.start_date,
            datetime.datetime(2017, 3, 19, 0, 0, 0)
        )
        self.assertEqual(task.end_date, datetime.datetime(2017, 3, 19, 0, 0))
        person = Person.get_by(last_name="Doe")
        self.assertEqual(task.assignees, [person])