BigW Consortium Gitlab

Commit 8ddbc435 by Z.J. van de Weg

Improve DRYness of views

parent b4244efa
......@@ -29,6 +29,7 @@ class GroupsController < Groups::ApplicationController
end
def create
byebug
@group = Groups::CreateService.new(current_user, group_params).execute
if @group.persisted?
......@@ -81,6 +82,7 @@ class GroupsController < Groups::ApplicationController
end
def update
byebug
if Groups::UpdateService.new(@group, current_user, group_params).execute
redirect_to edit_group_path(@group), notice: "Group '#{@group.name}' was successfully updated."
else
......@@ -143,7 +145,8 @@ class GroupsController < Groups::ApplicationController
:share_with_group_lock,
:visibility_level,
:parent_id
:create_chat_team
:create_chat_team,
:chat_team_name
]
end
......
......@@ -6,6 +6,7 @@ module Groups
def execute
create_chat_team = params.delete(:create_chat_team)
team_name = params.delete(:chat_team_name)
@group = Group.new(params)
......@@ -26,7 +27,8 @@ module Groups
@group.add_owner(current_user)
if create_chat_team && Gitlab.config.mattermost.enabled
Mattermost::CreateTeamWorker.perform_async(@group.id, current_user.id)
options = team_name ? { name: team_name } : {}
Mattermost::CreateTeamWorker.perform_async(@group.id, current_user.id, options)
end
@group
......
module Groups
class UpdateService < Groups::BaseService
def execute
if params.delete(:create_chat_team) == '1'
chat_name = params[:chat_team_name]
options = chat_name ? { name: chat_name } : {}
end
# check that user is allowed to set specified visibility_level
new_visibility = params[:visibility_level]
if new_visibility && new_visibility.to_i != group.visibility_level
......
.form-group
= f.label :name, class: 'control-label' do
%span.mattermost-icon
= custom_icon('icon_mattermost')
Mattermost
.col-sm-10
.checkbox
= f.label :name do
= f.check_box :create_chat_team, checked: true
Link the group to a new Mattermost team
.form-group
= f.label :chat_team, class: 'control-label' do
Chat Team name
.col-sm-10
= f.text_field :chat_team, placeholder: @group.name, class: 'form-control mattermost-team-name'
Leave blank to match your group name
......@@ -22,25 +22,7 @@
= render 'shared/visibility_level', f: f, visibility_level: @group.visibility_level, can_change_visibility_level: can_change_group_visibility_level?(@group), form_model: @group
.form-group
= f.label :name, class: 'control-label' do
%span.mattermost-icon
= custom_icon('icon_mattermost')
Mattermost
.col-sm-10
.checkbox
= f.label :name do
= f.check_box :name, checked: true
Link the group to a new or existing Mattermost team
- enabled = Gitlab.config.mattermost.enabled
- if enabled
.form-group
.col-sm-offset-2.col-sm-10
= f.text_field :name, placeholder: "FILL WITH TEAM NAME", class: 'form-control mattermost-team-name'
%span.mattermost-info
Team URL: INSERT TEAM URL
= render 'create_chat_team', f: f if Gitlab.config.mattermost.enabled
.form-group
.col-sm-offset-2.col-sm-10
......
......@@ -16,22 +16,7 @@
= render 'shared/visibility_level', f: f, visibility_level: default_group_visibility, can_change_visibility_level: true, form_model: @group
.form-group
= f.label :create_chat_team, class: 'control-label' do
%span.mattermost-icon
= custom_icon('icon_mattermost')
Mattermost
.col-sm-10
.checkbox
= f.label :chat_team do
= f.check_box :chat_team
Link the group to a new or existing Mattermost team
- enabled = Gitlab.config.mattermost.enabled
- if enabled
.form-group
.col-sm-offset-2.col-sm-10
= f.text_field :name, placeholder: 'Mattermost team name', class: 'form-control mattermost-team-name'
= render 'create_chat_team', f: f if Gitlab.config.mattermost.enabled
.form-group
.col-sm-offset-2.col-sm-10
......
......@@ -7,17 +7,18 @@ module Mattermost
# Add 5 seconds so the first retry isn't 1 second later
sidekiq_retry_in do |count|
5 + 5 ** n
5 + 5**n
end
def perform(group_id, current_user_id, options = {})
group = Group.find(group_id)
current_user = User.find(current_user_id)
group = Group.find_by(id: group_id)
current_user = User.find_by(id: current_user_id)
return unless group && current_user
# The user that creates the team will be Team Admin
response = Mattermost::Team.new(current_user).create(group, options)
ChatTeam.create(namespace: group, name: response['name'], team_id: response['id'])
group.create_chat_team(name: response['name'], team_id: response['id'])
end
end
end
......@@ -5,13 +5,13 @@ class CreateChatTeams < ActiveRecord::Migration
def change
create_table :chat_teams do |t|
t.integer :namespace_id, index: true
t.integer :group_id, index: true
t.string :team_id
t.string :name
t.timestamps null: false
end
add_foreign_key :chat_teams, :namespaces, on_delete: :cascade
add_foreign_key :chat_teams, :groups, on_delete: :cascade
end
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment