Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/work_items/type.rb')
-rw-r--r--app/models/work_items/type.rb88
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