Commit 34cc2a8e authored by Z.J. van de Weg's avatar Z.J. van de Weg

Improve DRYness of views

parent 571f3412
...@@ -27,6 +27,7 @@ class GroupsController < Groups::ApplicationController ...@@ -27,6 +27,7 @@ class GroupsController < Groups::ApplicationController
end end
def create def create
byebug
@group = Groups::CreateService.new(current_user, group_params).execute @group = Groups::CreateService.new(current_user, group_params).execute
if @group.persisted? if @group.persisted?
...@@ -81,6 +82,7 @@ class GroupsController < Groups::ApplicationController ...@@ -81,6 +82,7 @@ class GroupsController < Groups::ApplicationController
end end
def update def update
byebug
if Groups::UpdateService.new(@group, current_user, group_params).execute if Groups::UpdateService.new(@group, current_user, group_params).execute
redirect_to edit_group_path(@group), notice: "Group '#{@group.name}' was successfully updated." redirect_to edit_group_path(@group), notice: "Group '#{@group.name}' was successfully updated."
else else
...@@ -139,7 +141,8 @@ class GroupsController < Groups::ApplicationController ...@@ -139,7 +141,8 @@ class GroupsController < Groups::ApplicationController
:request_access_enabled, :request_access_enabled,
:share_with_group_lock, :share_with_group_lock,
:visibility_level, :visibility_level,
:create_chat_team :create_chat_team,
:chat_team_name
] ]
end end
......
...@@ -6,6 +6,7 @@ module Groups ...@@ -6,6 +6,7 @@ module Groups
def execute def execute
create_chat_team = params.delete(:create_chat_team) create_chat_team = params.delete(:create_chat_team)
team_name = params.delete(:chat_team_name)
@group = Group.new(params) @group = Group.new(params)
...@@ -26,7 +27,8 @@ module Groups ...@@ -26,7 +27,8 @@ module Groups
@group.add_owner(current_user) @group.add_owner(current_user)
if create_chat_team && Gitlab.config.mattermost.enabled 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 end
@group @group
......
module Groups module Groups
class UpdateService < Groups::BaseService class UpdateService < Groups::BaseService
def execute 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 # check that user is allowed to set specified visibility_level
new_visibility = params[:visibility_level] new_visibility = params[:visibility_level]
if new_visibility && new_visibility.to_i != group.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 @@ ...@@ -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 = 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 = render 'create_chat_team', f: f if Gitlab.config.mattermost.enabled
= 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
.form-group .form-group
.col-sm-offset-2.col-sm-10 .col-sm-offset-2.col-sm-10
......
...@@ -16,22 +16,7 @@ ...@@ -16,22 +16,7 @@
= render 'shared/visibility_level', f: f, visibility_level: default_group_visibility, can_change_visibility_level: true, form_model: @group = render 'shared/visibility_level', f: f, visibility_level: default_group_visibility, can_change_visibility_level: true, form_model: @group
.form-group = render 'create_chat_team', f: f if Gitlab.config.mattermost.enabled
= 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'
.form-group .form-group
.col-sm-offset-2.col-sm-10 .col-sm-offset-2.col-sm-10
......
...@@ -7,17 +7,18 @@ module Mattermost ...@@ -7,17 +7,18 @@ module Mattermost
# Add 5 seconds so the first retry isn't 1 second later # Add 5 seconds so the first retry isn't 1 second later
sidekiq_retry_in do |count| sidekiq_retry_in do |count|
5 + 5 ** n 5 + 5**n
end end
def perform(group_id, current_user_id, options = {}) def perform(group_id, current_user_id, options = {})
group = Group.find(group_id) group = Group.find_by(id: group_id)
current_user = User.find(current_user_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 # The user that creates the team will be Team Admin
response = Mattermost::Team.new(current_user).create(group, options) 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 end
end end
...@@ -5,13 +5,13 @@ class CreateChatTeams < ActiveRecord::Migration ...@@ -5,13 +5,13 @@ class CreateChatTeams < ActiveRecord::Migration
def change def change
create_table :chat_teams do |t| create_table :chat_teams do |t|
t.integer :namespace_id, index: true t.integer :group_id, index: true
t.string :team_id t.string :team_id
t.string :name t.string :name
t.timestamps null: false t.timestamps null: false
end end
add_foreign_key :chat_teams, :namespaces, on_delete: :cascade add_foreign_key :chat_teams, :groups, on_delete: :cascade
end end
end end
...@@ -109,6 +109,7 @@ ActiveRecord::Schema.define(version: 20170204181513) do ...@@ -109,6 +109,7 @@ ActiveRecord::Schema.define(version: 20170204181513) do
t.boolean "html_emails_enabled", default: true t.boolean "html_emails_enabled", default: true
t.string "plantuml_url" t.string "plantuml_url"
t.boolean "plantuml_enabled" t.boolean "plantuml_enabled"
t.integer "max_pages_size", default: 100, null: false
t.integer "terminal_max_session_time", default: 0, null: false t.integer "terminal_max_session_time", default: 0, null: false
end end
...@@ -867,6 +868,17 @@ ActiveRecord::Schema.define(version: 20170204181513) do ...@@ -867,6 +868,17 @@ ActiveRecord::Schema.define(version: 20170204181513) do
add_index "oauth_applications", ["owner_id", "owner_type"], name: "index_oauth_applications_on_owner_id_and_owner_type", using: :btree add_index "oauth_applications", ["owner_id", "owner_type"], name: "index_oauth_applications_on_owner_id_and_owner_type", using: :btree
add_index "oauth_applications", ["uid"], name: "index_oauth_applications_on_uid", unique: true, using: :btree add_index "oauth_applications", ["uid"], name: "index_oauth_applications_on_uid", unique: true, using: :btree
create_table "pages_domains", force: :cascade do |t|
t.integer "project_id"
t.text "certificate"
t.text "encrypted_key"
t.string "encrypted_key_iv"
t.string "encrypted_key_salt"
t.string "domain"
end
add_index "pages_domains", ["domain"], name: "index_pages_domains_on_domain", unique: true, using: :btree
create_table "personal_access_tokens", force: :cascade do |t| create_table "personal_access_tokens", force: :cascade do |t|
t.integer "user_id", null: false t.integer "user_id", null: false
t.string "token", null: false t.string "token", null: false
......
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