summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-07-05 21:59:37 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-07-05 21:59:37 +0300
commitd40b9ce26d9df5c9245d9a4f3c07c91dd1706f06 (patch)
treefc83e2bea851acd42ff6fae02fe9947a2d6562ff
parent369df86e710bd876b3d688472cdce987e27640a3 (diff)
downloadgitlab-ce-d40b9ce26d9df5c9245d9a4f3c07c91dd1706f06.tar.gz
Admin gitolite logs. Refactored project creation. Few style fixes.
-rw-r--r--app/assets/stylesheets/gitlab_bootstrap.scss7
-rw-r--r--app/controllers/admin/logs_controller.rb6
-rw-r--r--app/controllers/projects_controller.rb19
-rw-r--r--app/helpers/application_helper.rb1
-rw-r--r--app/models/project.rb19
-rw-r--r--app/views/admin/logs/show.html.haml6
-rw-r--r--app/views/events/_event_last_push.html.haml2
-rw-r--r--app/views/layouts/admin.html.haml2
-rw-r--r--app/views/projects/_form.html.haml9
-rw-r--r--app/views/projects/create.js.haml5
-rw-r--r--app/views/projects/edit.html.haml2
-rw-r--r--app/views/projects/new.html.haml2
-rw-r--r--config/routes.rb2
-rw-r--r--lib/gitlab/logger.rb6
-rw-r--r--spec/requests/projects_spec.rb2
15 files changed, 66 insertions, 24 deletions
diff --git a/app/assets/stylesheets/gitlab_bootstrap.scss b/app/assets/stylesheets/gitlab_bootstrap.scss
index 7f26f16aa41..1b86cddee39 100644
--- a/app/assets/stylesheets/gitlab_bootstrap.scss
+++ b/app/assets/stylesheets/gitlab_bootstrap.scss
@@ -627,3 +627,10 @@ h3.page_title {
font-weight: 600;
line-height: 28px;
}
+
+pre.logs {
+ .log {
+ font-size:12px;
+ line-height:18px;
+ }
+}
diff --git a/app/controllers/admin/logs_controller.rb b/app/controllers/admin/logs_controller.rb
new file mode 100644
index 00000000000..c130b4b85a5
--- /dev/null
+++ b/app/controllers/admin/logs_controller.rb
@@ -0,0 +1,6 @@
+class Admin::LogsController < ApplicationController
+ layout "admin"
+ before_filter :authenticate_user!
+ before_filter :authenticate_admin!
+end
+
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index ac70f651358..26b62cba9f9 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -21,20 +21,13 @@ class ProjectsController < ApplicationController
@project = Project.create_by_user(params[:project], current_user)
respond_to do |format|
- if @project.valid?
- format.html { redirect_to @project, notice: 'Project was successfully created.' }
- format.js
- else
- format.html { render action: "new" }
- format.js
+ format.html do
+ if @project.saved?
+ redirect_to(@project, notice: 'Project was successfully created.')
+ else
+ render action: "new"
+ end
end
- end
- rescue Gitlab::Gitolite::AccessDenied
- render :js => "location.href = '#{errors_githost_path}'" and return
- rescue StandardError => ex
- @project.errors.add(:base, "Cant save project. Please try again later")
- respond_to do |format|
- format.html { render action: "new" }
format.js
end
end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 2e4281ad436..2697fff433e 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -127,6 +127,7 @@ module ApplicationHelper
when :admin_projects; controller.controller_name == "projects"
when :admin_emails; controller.controller_name == 'mailer'
when :admin_resque; controller.controller_name == 'resque'
+ when :admin_logs; controller.controller_name == 'logs'
else
false
diff --git a/app/models/project.rb b/app/models/project.rb
index cfdaa3f9c72..ec4893e2b17 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -23,6 +23,8 @@ class Project < ActiveRecord::Base
has_many :wikis, :dependent => :destroy
has_many :protected_branches, :dependent => :destroy
+ attr_accessor :error_code
+
#
# Protected attributes
#
@@ -48,7 +50,7 @@ class Project < ActiveRecord::Base
Project.transaction do
project.owner = user
- return project unless project.save
+ project.save!
# Add user as project master
project.users_projects.create!(:project_access => UsersProject::MASTER, :user => user)
@@ -59,6 +61,21 @@ class Project < ActiveRecord::Base
end
project
+ rescue Gitlab::Gitolite::AccessDenied => ex
+ project.error_code = :gitolite
+ project
+ rescue => ex
+ project.error_code = :db
+ project.errors.add(:base, "Cant save project. Please try again later")
+ project
+ end
+
+ def git_error?
+ error_code == :gitolite
+ end
+
+ def saved?
+ id && valid?
end
#
diff --git a/app/views/admin/logs/show.html.haml b/app/views/admin/logs/show.html.haml
new file mode 100644
index 00000000000..7963e18adcd
--- /dev/null
+++ b/app/views/admin/logs/show.html.haml
@@ -0,0 +1,6 @@
+%h4
+ %i.icon-file
+ githost.log
+%pre.logs
+ - Gitlab::Logger.read_latest.each do |line|
+ %span.log= line
diff --git a/app/views/events/_event_last_push.html.haml b/app/views/events/_event_last_push.html.haml
index 6127e32ba24..fb4a728ed3e 100644
--- a/app/views/events/_event_last_push.html.haml
+++ b/app/views/events/_event_last_push.html.haml
@@ -12,5 +12,5 @@
= time_ago_in_words(event.created_at)
ago.
- = link_to new_mr_path_from_push_event(event), :title => "New Merge Request", :class => "btn small grouped primary" do
+ = link_to new_mr_path_from_push_event(event), :title => "New Merge Request", :class => "btn very_small primary" do
Create Merge Request
diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml
index fee77f1f11d..8de25821ee7 100644
--- a/app/views/layouts/admin.html.haml
+++ b/app/views/layouts/admin.html.haml
@@ -12,6 +12,8 @@
= link_to "Projects", admin_projects_path
%li{:class => tab_class(:admin_users)}
= link_to "Users", admin_users_path
+ %li{:class => tab_class(:admin_logs)}
+ = link_to "Logs", admin_logs_path
%li{:class => tab_class(:admin_emails)}
= link_to "Emails", admin_emails_path
%li{:class => tab_class(:admin_resque)}
diff --git a/app/views/projects/_form.html.haml b/app/views/projects/_form.html.haml
index e057155bcdd..6bc48df9183 100644
--- a/app/views/projects/_form.html.haml
+++ b/app/views/projects/_form.html.haml
@@ -10,17 +10,16 @@
.input
= f.text_field :name, :placeholder => "Example Project", :class => "xxlarge"
- %hr
+ %h5.page_title
.alert.alert-info
%h5 Advanced settings:
.clearfix
= f.label :path do
- Git Clone
+ Path
.input
.input-prepend
- %span.add-on= Gitlab.config.ssh_path
- = f.text_field :path, :placeholder => "example_project", :disabled => !@project.new_record?
- %span.add-on= ".git"
+ %strong
+ = text_field_tag :ppath, @project.path_to_repo, :class => "xlarge", :disabled => true
.clearfix
= f.label :code do
URL
diff --git a/app/views/projects/create.js.haml b/app/views/projects/create.js.haml
index 859c985a308..eeefc1729c8 100644
--- a/app/views/projects/create.js.haml
+++ b/app/views/projects/create.js.haml
@@ -1,7 +1,10 @@
-- if @project.valid?
+- if @project.saved?
:plain
location.href = "#{project_path(@project, :notice => 'Project was successfully created.')}";
- else
+ - if @project.git_error?
+ location.href = "#{errors_githost_path}";
+ -else
:plain
$('.project_new_holder').show();
$("#new_project").replaceWith("#{escape_javascript(render('new_form'))}");
diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml
index 53a0320b924..987d43ec540 100644
--- a/app/views/projects/edit.html.haml
+++ b/app/views/projects/edit.html.haml
@@ -1,6 +1,6 @@
= render "project_head"
.project_edit_holder
- %h3 Edit Project
+ %h3.page_title Edit Project
%hr
= render "projects/form"
%div.ajax_loader.hide
diff --git a/app/views/projects/new.html.haml b/app/views/projects/new.html.haml
index ef3e3ac4c08..0d119bd1d96 100644
--- a/app/views/projects/new.html.haml
+++ b/app/views/projects/new.html.haml
@@ -1,5 +1,5 @@
.project_new_holder
- %h3
+ %h3.page_title
New Project
%hr
= render 'new_form'
diff --git a/config/routes.rb b/config/routes.rb
index fa9a1b39c63..af99109883f 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -50,6 +50,8 @@ Gitlab::Application.routes.draw do
get 'mailer/preview_note'
get 'mailer/preview_user_new'
get 'mailer/preview_issue_new'
+
+ resource :logs
resource :resque, :controller => 'resque'
root :to => "dashboard#index"
end
diff --git a/lib/gitlab/logger.rb b/lib/gitlab/logger.rb
index 45a990713f2..e8d20ad90c2 100644
--- a/lib/gitlab/logger.rb
+++ b/lib/gitlab/logger.rb
@@ -2,7 +2,13 @@ module Gitlab
class Logger
def self.error(message)
@@logger ||= ::Logger.new(File.join(Rails.root, "log/githost.log"))
+ message = Time.now.to_s(:long) + " -> " + message
@@logger.error(message)
end
+
+ def self.read_latest
+ path = Rails.root.join("log/githost.log")
+ logs = `tail -n 50 #{path}`.split("\n")
+ end
end
end
diff --git a/spec/requests/projects_spec.rb b/spec/requests/projects_spec.rb
index b55a4db5706..c9c348469cc 100644
--- a/spec/requests/projects_spec.rb
+++ b/spec/requests/projects_spec.rb
@@ -120,7 +120,7 @@ describe "Projects" do
visit edit_project_path(@project)
fill_in 'project_name', :with => 'Awesome'
- fill_in 'project_path', :with => 'gitlabhq'
+ fill_in 'project_code', :with => 'gitlabhq'
click_button "Save"
@project = @project.reload
end