diff options
Diffstat (limited to 'app/models/work_items/type.rb')
-rw-r--r-- | app/models/work_items/type.rb | 88 |
1 files changed, 72 insertions, 16 deletions
diff --git a/app/models/work_items/type.rb b/app/models/work_items/type.rb index dc30899d24f..e1f6a13f7a7 100644 --- a/app/models/work_items/type.rb +++ b/app/models/work_items/type.rb @@ -10,31 +10,86 @@ module WorkItems include CacheMarkdownField + # type name is used in restrictions DB seeder to assure restrictions for + # default types are pre-filled + TYPE_NAMES = { + issue: 'Issue', + incident: 'Incident', + test_case: 'Test Case', + requirement: 'Requirement', + task: 'Task', + objective: 'Objective', + key_result: 'Key Result' + }.freeze + # Base types need to exist on the DB on app startup # This constant is used by the DB seeder # TODO - where to add new icon names created? BASE_TYPES = { - issue: { name: 'Issue', icon_name: 'issue-type-issue', enum_value: 0 }, - incident: { name: 'Incident', icon_name: 'issue-type-incident', enum_value: 1 }, - test_case: { name: 'Test Case', icon_name: 'issue-type-test-case', enum_value: 2 }, ## EE-only - requirement: { name: 'Requirement', icon_name: 'issue-type-requirements', enum_value: 3 }, ## EE-only - task: { name: 'Task', icon_name: 'issue-type-task', enum_value: 4 }, - objective: { name: 'Objective', icon_name: 'issue-type-objective', enum_value: 5 }, ## EE-only - key_result: { name: 'Key Result', icon_name: 'issue-type-keyresult', enum_value: 6 } ## EE-only + issue: { name: TYPE_NAMES[:issue], icon_name: 'issue-type-issue', enum_value: 0 }, + incident: { name: TYPE_NAMES[:incident], icon_name: 'issue-type-incident', enum_value: 1 }, + test_case: { name: TYPE_NAMES[:test_case], icon_name: 'issue-type-test-case', enum_value: 2 }, ## EE-only + requirement: { name: TYPE_NAMES[:requirement], icon_name: 'issue-type-requirements', enum_value: 3 }, ## EE-only + task: { name: TYPE_NAMES[:task], icon_name: 'issue-type-task', enum_value: 4 }, + objective: { name: TYPE_NAMES[:objective], icon_name: 'issue-type-objective', enum_value: 5 }, ## EE-only + key_result: { name: TYPE_NAMES[:key_result], icon_name: 'issue-type-keyresult', enum_value: 6 } ## EE-only }.freeze WIDGETS_FOR_TYPE = { - issue: [Widgets::Assignees, Widgets::Labels, Widgets::Description, Widgets::Hierarchy, Widgets::StartAndDueDate, - Widgets::Milestone], - incident: [Widgets::Description, Widgets::Hierarchy], - test_case: [Widgets::Description], - requirement: [Widgets::Description], - task: [Widgets::Assignees, Widgets::Labels, Widgets::Description, Widgets::Hierarchy, Widgets::StartAndDueDate, - Widgets::Milestone], - objective: [Widgets::Assignees, Widgets::Labels, Widgets::Description, Widgets::Hierarchy, Widgets::Milestone], - key_result: [Widgets::Assignees, Widgets::Labels, Widgets::Description, Widgets::StartAndDueDate] + issue: [ + Widgets::Assignees, + Widgets::Labels, + Widgets::Description, + Widgets::Hierarchy, + Widgets::StartAndDueDate, + Widgets::Milestone, + Widgets::Notes + ], + incident: [ + Widgets::Description, + Widgets::Hierarchy, + Widgets::Notes + ], + test_case: [ + Widgets::Description, + Widgets::Notes + ], + requirement: [ + Widgets::Description, + Widgets::Notes + ], + task: [ + Widgets::Assignees, + Widgets::Labels, + Widgets::Description, + Widgets::Hierarchy, + Widgets::StartAndDueDate, + Widgets::Milestone, + Widgets::Notes + ], + objective: [ + Widgets::Assignees, + Widgets::Labels, + Widgets::Description, + Widgets::Hierarchy, + Widgets::Milestone, + Widgets::Notes + ], + key_result: [ + Widgets::Assignees, + Widgets::Labels, + Widgets::Description, + Widgets::Hierarchy, + Widgets::StartAndDueDate, + Widgets::Notes + ] }.freeze + # A list of types user can change between - both original and new + # type must be included in this list. This is needed for legacy issues + # where it's possible to switch between issue and incident. + CHANGEABLE_BASE_TYPES = %w[issue incident test_case].freeze + WI_TYPES_WITH_CREATED_HEADER = %w[issue incident].freeze cache_markdown_field :description, pipeline: :single_line @@ -66,6 +121,7 @@ module WorkItems return found_type if found_type Gitlab::DatabaseImporters::WorkItems::BaseTypeImporter.upsert_types + Gitlab::DatabaseImporters::WorkItems::HierarchyRestrictionsImporter.upsert_restrictions find_by(namespace_id: nil, base_type: type) end |