| 61 | return |
| 62 | |
| 63 | def attach_element(self, session: object, element: dict, add_to_session = True, flush_session = True): |
| 64 | element_id = element.get('id') |
| 65 | if element_id is None: |
| 66 | return |
| 67 | issue_relation = None |
| 68 | if element_id is None: |
| 69 | logger.error('Missing ID for element attach to issue {}. Element: '.format(self.id, str(element))) |
| 70 | return |
| 71 | if element['type'] == 'instance': |
| 72 | issue_relation = discussion_relation_models.DiscussionRelation.new( |
| 73 | session, |
| 74 | instance_id = element_id, |
| 75 | type = element['type'], |
| 76 | discussion_id = self.id |
| 77 | ) |
| 78 | elif element['type'] == 'file': |
| 79 | issue_relation = discussion_relation_models.DiscussionRelation.new( |
| 80 | session, |
| 81 | file_id = element_id, |
| 82 | type = element['type'], |
| 83 | discussion_id = self.id |
| 84 | ) |
| 85 | elif element['type'] == 'job': |
| 86 | issue_relation = discussion_relation_models.DiscussionRelation.new( |
| 87 | session, |
| 88 | job_id = element_id, |
| 89 | type = element['type'], |
| 90 | discussion_id = self.id |
| 91 | ) |
| 92 | elif element['type'] == 'task': |
| 93 | issue_relation = discussion_relation_models.DiscussionRelation.new( |
| 94 | session, |
| 95 | task_id = element_id, |
| 96 | type = element['type'], |
| 97 | discussion_id = self.id |
| 98 | ) |
| 99 | elif element['type'] == 'project': |
| 100 | issue_relation = discussion_relation_models.DiscussionRelation.new( |
| 101 | session, |
| 102 | project_id = element_id, |
| 103 | type = element['type'], |
| 104 | discussion_id = self.id |
| 105 | ) |
| 106 | else: |
| 107 | raise Exception('Invalid IssueRelation type') |
| 108 | if add_to_session: |
| 109 | session.add(issue_relation) |
| 110 | if flush_session: |
| 111 | session.flush() |
| 112 | return issue_relation |
| 113 | |
| 114 | def update_attached_instances(self, |
| 115 | session: object, |