(session,
name: str,
project_string_id: str,
goal: str,
user,
member_created,
)
| 135 | |
| 136 | @staticmethod |
| 137 | def new(session, |
| 138 | name: str, |
| 139 | project_string_id: str, |
| 140 | goal: str, |
| 141 | user, |
| 142 | member_created, |
| 143 | ): |
| 144 | |
| 145 | # Avoid circular import |
| 146 | # Maybe in future Project_permissions class could be part of project |
| 147 | from shared.permissions.project_permissions import Project_permissions |
| 148 | |
| 149 | project = Project( # Base object |
| 150 | name = name, |
| 151 | project_string_id = project_string_id, |
| 152 | goal = goal, |
| 153 | user_primary = user, # Assumed to be primary |
| 154 | member_created = member_created |
| 155 | ) |
| 156 | |
| 157 | # Permissions and user associations |
| 158 | user.projects.append(project) |
| 159 | user.current_project_string_id = project_string_id |
| 160 | user.project_current = project |
| 161 | |
| 162 | log = regular_log.default() |
| 163 | permission_result, log = Project_permissions.add( |
| 164 | session = session, |
| 165 | permission = "admin", |
| 166 | user = user, |
| 167 | sub_type = project_string_id, |
| 168 | log = log) |
| 169 | if regular_log.log_has_error(log): |
| 170 | logger.error(log) |
| 171 | return None |
| 172 | |
| 173 | session.add(user, project) |
| 174 | |
| 175 | session.flush() |
| 176 | |
| 177 | schema = LabelSchema.new( |
| 178 | session = session, |
| 179 | name = 'Default Schema', |
| 180 | project_id = project.id, |
| 181 | member_created_id = member_created.id, |
| 182 | is_default = True |
| 183 | ) |
| 184 | |
| 185 | member_id = user.member_id |
| 186 | |
| 187 | Event.new( |
| 188 | session = session, |
| 189 | kind = "new_project", |
| 190 | member_id = member_id, |
| 191 | success = True, |
| 192 | project_id = project.id, |
| 193 | email = user.email # Caution, assumes user object is available |
| 194 | ) |
no test coverage detected