Commit d40b9ce26d9df5c9245d9a4f3c07c91dd1706f06

Authored by Dmitriy Zaporozhets
1 parent 369df86e

Admin gitolite logs. Refactored project creation. Few style fixes.

app/assets/stylesheets/gitlab_bootstrap.scss
@@ -627,3 +627,10 @@ h3.page_title { @@ -627,3 +627,10 @@ h3.page_title {
627 font-weight: 600; 627 font-weight: 600;
628 line-height: 28px; 628 line-height: 28px;
629 } 629 }
  630 +
  631 +pre.logs {
  632 + .log {
  633 + font-size:12px;
  634 + line-height:18px;
  635 + }
  636 +}
app/controllers/admin/logs_controller.rb 0 → 100644
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
  1 +class Admin::LogsController < ApplicationController
  2 + layout "admin"
  3 + before_filter :authenticate_user!
  4 + before_filter :authenticate_admin!
  5 +end
  6 +
app/controllers/projects_controller.rb
@@ -21,20 +21,13 @@ class ProjectsController &lt; ApplicationController @@ -21,20 +21,13 @@ class ProjectsController &lt; ApplicationController
21 @project = Project.create_by_user(params[:project], current_user) 21 @project = Project.create_by_user(params[:project], current_user)
22 22
23 respond_to do |format| 23 respond_to do |format|
24 - if @project.valid?  
25 - format.html { redirect_to @project, notice: 'Project was successfully created.' }  
26 - format.js  
27 - else  
28 - format.html { render action: "new" }  
29 - format.js 24 + format.html do
  25 + if @project.saved?
  26 + redirect_to(@project, notice: 'Project was successfully created.')
  27 + else
  28 + render action: "new"
  29 + end
30 end 30 end
31 - end  
32 - rescue Gitlab::Gitolite::AccessDenied  
33 - render :js => "location.href = '#{errors_githost_path}'" and return  
34 - rescue StandardError => ex  
35 - @project.errors.add(:base, "Cant save project. Please try again later")  
36 - respond_to do |format|  
37 - format.html { render action: "new" }  
38 format.js 31 format.js
39 end 32 end
40 end 33 end
app/helpers/application_helper.rb
@@ -127,6 +127,7 @@ module ApplicationHelper @@ -127,6 +127,7 @@ module ApplicationHelper
127 when :admin_projects; controller.controller_name == "projects" 127 when :admin_projects; controller.controller_name == "projects"
128 when :admin_emails; controller.controller_name == 'mailer' 128 when :admin_emails; controller.controller_name == 'mailer'
129 when :admin_resque; controller.controller_name == 'resque' 129 when :admin_resque; controller.controller_name == 'resque'
  130 + when :admin_logs; controller.controller_name == 'logs'
130 131
131 else 132 else
132 false 133 false
app/models/project.rb
@@ -23,6 +23,8 @@ class Project &lt; ActiveRecord::Base @@ -23,6 +23,8 @@ class Project &lt; ActiveRecord::Base
23 has_many :wikis, :dependent => :destroy 23 has_many :wikis, :dependent => :destroy
24 has_many :protected_branches, :dependent => :destroy 24 has_many :protected_branches, :dependent => :destroy
25 25
  26 + attr_accessor :error_code
  27 +
26 # 28 #
27 # Protected attributes 29 # Protected attributes
28 # 30 #
@@ -48,7 +50,7 @@ class Project &lt; ActiveRecord::Base @@ -48,7 +50,7 @@ class Project &lt; ActiveRecord::Base
48 Project.transaction do 50 Project.transaction do
49 project.owner = user 51 project.owner = user
50 52
51 - return project unless project.save 53 + project.save!
52 54
53 # Add user as project master 55 # Add user as project master
54 project.users_projects.create!(:project_access => UsersProject::MASTER, :user => user) 56 project.users_projects.create!(:project_access => UsersProject::MASTER, :user => user)
@@ -59,6 +61,21 @@ class Project &lt; ActiveRecord::Base @@ -59,6 +61,21 @@ class Project &lt; ActiveRecord::Base
59 end 61 end
60 62
61 project 63 project
  64 + rescue Gitlab::Gitolite::AccessDenied => ex
  65 + project.error_code = :gitolite
  66 + project
  67 + rescue => ex
  68 + project.error_code = :db
  69 + project.errors.add(:base, "Cant save project. Please try again later")
  70 + project
  71 + end
  72 +
  73 + def git_error?
  74 + error_code == :gitolite
  75 + end
  76 +
  77 + def saved?
  78 + id && valid?
62 end 79 end
63 80
64 # 81 #
app/views/admin/logs/show.html.haml 0 → 100644
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
  1 +%h4
  2 + %i.icon-file
  3 + githost.log
  4 +%pre.logs
  5 + - Gitlab::Logger.read_latest.each do |line|
  6 + %span.log= line
app/views/events/_event_last_push.html.haml
@@ -12,5 +12,5 @@ @@ -12,5 +12,5 @@
12 = time_ago_in_words(event.created_at) 12 = time_ago_in_words(event.created_at)
13 ago. 13 ago.
14 14
15 - = link_to new_mr_path_from_push_event(event), :title => "New Merge Request", :class => "btn small grouped primary" do 15 + = link_to new_mr_path_from_push_event(event), :title => "New Merge Request", :class => "btn very_small primary" do
16 Create Merge Request 16 Create Merge Request
app/views/layouts/admin.html.haml
@@ -12,6 +12,8 @@ @@ -12,6 +12,8 @@
12 = link_to "Projects", admin_projects_path 12 = link_to "Projects", admin_projects_path
13 %li{:class => tab_class(:admin_users)} 13 %li{:class => tab_class(:admin_users)}
14 = link_to "Users", admin_users_path 14 = link_to "Users", admin_users_path
  15 + %li{:class => tab_class(:admin_logs)}
  16 + = link_to "Logs", admin_logs_path
15 %li{:class => tab_class(:admin_emails)} 17 %li{:class => tab_class(:admin_emails)}
16 = link_to "Emails", admin_emails_path 18 = link_to "Emails", admin_emails_path
17 %li{:class => tab_class(:admin_resque)} 19 %li{:class => tab_class(:admin_resque)}
app/views/projects/_form.html.haml
@@ -10,17 +10,16 @@ @@ -10,17 +10,16 @@
10 .input 10 .input
11 = f.text_field :name, :placeholder => "Example Project", :class => "xxlarge" 11 = f.text_field :name, :placeholder => "Example Project", :class => "xxlarge"
12 12
13 - %hr 13 + %h5.page_title
14 .alert.alert-info 14 .alert.alert-info
15 %h5 Advanced settings: 15 %h5 Advanced settings:
16 .clearfix 16 .clearfix
17 = f.label :path do 17 = f.label :path do
18 - Git Clone 18 + Path
19 .input 19 .input
20 .input-prepend 20 .input-prepend
21 - %span.add-on= Gitlab.config.ssh_path  
22 - = f.text_field :path, :placeholder => "example_project", :disabled => !@project.new_record?  
23 - %span.add-on= ".git" 21 + %strong
  22 + = text_field_tag :ppath, @project.path_to_repo, :class => "xlarge", :disabled => true
24 .clearfix 23 .clearfix
25 = f.label :code do 24 = f.label :code do
26 URL 25 URL
app/views/projects/create.js.haml
1 -- if @project.valid? 1 +- if @project.saved?
2 :plain 2 :plain
3 location.href = "#{project_path(@project, :notice => 'Project was successfully created.')}"; 3 location.href = "#{project_path(@project, :notice => 'Project was successfully created.')}";
4 - else 4 - else
  5 + - if @project.git_error?
  6 + location.href = "#{errors_githost_path}";
  7 + -else
5 :plain 8 :plain
6 $('.project_new_holder').show(); 9 $('.project_new_holder').show();
7 $("#new_project").replaceWith("#{escape_javascript(render('new_form'))}"); 10 $("#new_project").replaceWith("#{escape_javascript(render('new_form'))}");
app/views/projects/edit.html.haml
1 = render "project_head" 1 = render "project_head"
2 .project_edit_holder 2 .project_edit_holder
3 - %h3 Edit Project 3 + %h3.page_title Edit Project
4 %hr 4 %hr
5 = render "projects/form" 5 = render "projects/form"
6 %div.ajax_loader.hide 6 %div.ajax_loader.hide
app/views/projects/new.html.haml
1 .project_new_holder 1 .project_new_holder
2 - %h3 2 + %h3.page_title
3 New Project 3 New Project
4 %hr 4 %hr
5 = render 'new_form' 5 = render 'new_form'
config/routes.rb
@@ -50,6 +50,8 @@ Gitlab::Application.routes.draw do @@ -50,6 +50,8 @@ Gitlab::Application.routes.draw do
50 get 'mailer/preview_note' 50 get 'mailer/preview_note'
51 get 'mailer/preview_user_new' 51 get 'mailer/preview_user_new'
52 get 'mailer/preview_issue_new' 52 get 'mailer/preview_issue_new'
  53 +
  54 + resource :logs
53 resource :resque, :controller => 'resque' 55 resource :resque, :controller => 'resque'
54 root :to => "dashboard#index" 56 root :to => "dashboard#index"
55 end 57 end
lib/gitlab/logger.rb
@@ -2,7 +2,13 @@ module Gitlab @@ -2,7 +2,13 @@ module Gitlab
2 class Logger 2 class Logger
3 def self.error(message) 3 def self.error(message)
4 @@logger ||= ::Logger.new(File.join(Rails.root, "log/githost.log")) 4 @@logger ||= ::Logger.new(File.join(Rails.root, "log/githost.log"))
  5 + message = Time.now.to_s(:long) + " -> " + message
5 @@logger.error(message) 6 @@logger.error(message)
6 end 7 end
  8 +
  9 + def self.read_latest
  10 + path = Rails.root.join("log/githost.log")
  11 + logs = `tail -n 50 #{path}`.split("\n")
  12 + end
7 end 13 end
8 end 14 end
spec/requests/projects_spec.rb
@@ -120,7 +120,7 @@ describe &quot;Projects&quot; do @@ -120,7 +120,7 @@ describe &quot;Projects&quot; do
120 visit edit_project_path(@project) 120 visit edit_project_path(@project)
121 121
122 fill_in 'project_name', :with => 'Awesome' 122 fill_in 'project_name', :with => 'Awesome'
123 - fill_in 'project_path', :with => 'gitlabhq' 123 + fill_in 'project_code', :with => 'gitlabhq'
124 click_button "Save" 124 click_button "Save"
125 @project = @project.reload 125 @project = @project.reload
126 end 126 end