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()
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
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.")
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))
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
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])
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.")
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
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])