From c2ee6862c8538c967ba04fa72b702198f31f876c Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Fri, 3 Jul 2015 16:50:21 +0200 Subject: API to set application settings for admin Signed-off-by: Dmitriy Zaporozhets --- lib/api/api.rb | 1 + lib/api/entities.rb | 22 ++++++++++++++++++++++ lib/api/settings.rb | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 lib/api/settings.rb (limited to 'lib/api') diff --git a/lib/api/api.rb b/lib/api/api.rb index d2a35c78fc1..eebd44ea5b6 100644 --- a/lib/api/api.rb +++ b/lib/api/api.rb @@ -49,5 +49,6 @@ module API mount Namespaces mount Branches mount Labels + mount Settings end end diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 14a8f929d76..31202fa8c1f 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -277,5 +277,27 @@ module API class BroadcastMessage < Grape::Entity expose :message, :starts_at, :ends_at, :color, :font end + + class ApplicationSetting < Grape::Entity + expose :id + expose :default_projects_limit + expose :signup_enabled + expose :signin_enabled + expose :gravatar_enabled + expose :sign_in_text + expose :created_at + expose :updated_at + expose :home_page_url + expose :default_branch_protection + expose :twitter_sharing_enabled + expose :restricted_visibility_levels + expose :max_attachment_size + expose :session_expire_delay + expose :default_project_visibility + expose :default_snippet_visibility + expose :restricted_signup_domains + expose :user_oauth_applications + expose :after_sign_out_path + end end end diff --git a/lib/api/settings.rb b/lib/api/settings.rb new file mode 100644 index 00000000000..28c7a05c629 --- /dev/null +++ b/lib/api/settings.rb @@ -0,0 +1,35 @@ +module API + class Settings < Grape::API + before { authenticate! } + before { authorize_admin_project } + + helpers do + def current_settings + @current_setting ||= ApplicationSetting.current + end + end + + # Get current applicaiton settings + # + # Example Request: + # GET /application/settings + get "application/settings" do + present current_settings, with: Entities::ApplicationSetting + end + + # Modify applicaiton settings + # + # Example Request: + # PUT /application/settings + put "application/settings" do + attributes = current_settings.attributes.keys - ["id"] + attrs = attributes_for_keys(attributes) + + if current_settings.update_attributes(attrs) + present current_settings, with: Entities::ApplicationSetting + else + render_validation_error!(current_settings) + end + end + end +end -- cgit v1.2.1 From b28714b6a9bf71fac64a0423091fb7eab244fd7f Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 6 Jul 2015 15:53:08 +0200 Subject: Add docs and empty specs for applicaiton settings API Signed-off-by: Dmitriy Zaporozhets --- lib/api/settings.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'lib/api') diff --git a/lib/api/settings.rb b/lib/api/settings.rb index 28c7a05c629..4aa81bf8bab 100644 --- a/lib/api/settings.rb +++ b/lib/api/settings.rb @@ -1,7 +1,6 @@ module API class Settings < Grape::API - before { authenticate! } - before { authorize_admin_project } + before { authenticated_as_admin! } helpers do def current_settings -- cgit v1.2.1 From 603ceea21a0144ff1900106efa0c17e759eeceef Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 6 Jul 2015 16:47:19 +0200 Subject: Add tests and improve logic Signed-off-by: Dmitriy Zaporozhets --- lib/api/settings.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib/api') diff --git a/lib/api/settings.rb b/lib/api/settings.rb index 4aa81bf8bab..c885fcd7ea3 100644 --- a/lib/api/settings.rb +++ b/lib/api/settings.rb @@ -4,7 +4,8 @@ module API helpers do def current_settings - @current_setting ||= ApplicationSetting.current + @current_setting ||= + (ApplicationSetting.current || ApplicationSetting.create_from_defaults) end end -- cgit v1.2.1 From dd4fee5fdbda07fbc09234c4b043c3c9939a6a9b Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 12 Mar 2015 12:55:02 -0400 Subject: api: add 'system', 'upvote', and 'downvote' fields to note queries --- lib/api/entities.rb | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lib/api') diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 31202fa8c1f..27d60e881ec 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -190,6 +190,9 @@ module API expose :attachment_identifier, as: :attachment expose :author, using: Entities::UserBasic expose :created_at + expose :system + expose :upvote?, as: :upvote + expose :downvote?, as: :downvote end class MRNote < Grape::Entity -- cgit v1.2.1 From 4c586dc7c217b3e43956919fa752a8fa4e16acb9 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Thu, 9 Jul 2015 12:35:53 -0700 Subject: Revert "api: add 'system', 'upvote', and 'downvote' fields to note queries" This reverts commit dd4fee5fdbda07fbc09234c4b043c3c9939a6a9b. --- lib/api/entities.rb | 3 --- 1 file changed, 3 deletions(-) (limited to 'lib/api') diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 27d60e881ec..31202fa8c1f 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -190,9 +190,6 @@ module API expose :attachment_identifier, as: :attachment expose :author, using: Entities::UserBasic expose :created_at - expose :system - expose :upvote?, as: :upvote - expose :downvote?, as: :downvote end class MRNote < Grape::Entity -- cgit v1.2.1 From 414cacd7f47c8c89a6a270928bbf9c8d8dcbd3ab Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 9 Jul 2015 13:21:37 -0400 Subject: api: expose work_in_progress flag --- lib/api/entities.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/api') diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 31202fa8c1f..ecf1412dee5 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -171,6 +171,7 @@ module API expose :source_project_id, :target_project_id expose :label_names, as: :labels expose :description + expose :work_in_progress?, as: :work_in_progress expose :milestone, using: Entities::Milestone end -- cgit v1.2.1 From b93053695a94822801a87ff2b1850999130842c1 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Thu, 2 Jul 2015 14:31:25 +0200 Subject: Fix transferring of project to another group using the API. --- lib/api/groups.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/api') diff --git a/lib/api/groups.rb b/lib/api/groups.rb index e88b6e31775..024aeec2e14 100644 --- a/lib/api/groups.rb +++ b/lib/api/groups.rb @@ -74,9 +74,9 @@ module API # POST /groups/:id/projects/:project_id post ":id/projects/:project_id" do authenticated_as_admin! - group = Group.find(params[:id]) + group = Group.find_by(id: params[:id]) project = Project.find(params[:project_id]) - result = ::Projects::TransferService.new(project, current_user, namespace_id: group.id).execute + result = ::Projects::TransferService.new(project, current_user).execute(group) if result present group -- cgit v1.2.1