Commit 8543313bf5396afe3bdf5851a84c688eacc8156f
1 parent
68bfcd05
Exists in
master
and in
4 other branches
Few more filters for admin / projects
Showing
3 changed files
with
25 additions
and
1 deletions
Show diff stats
app/controllers/admin/projects_controller.rb
| @@ -5,6 +5,8 @@ class Admin::ProjectsController < AdminController | @@ -5,6 +5,8 @@ class Admin::ProjectsController < AdminController | ||
| 5 | @projects = Project.scoped | 5 | @projects = Project.scoped |
| 6 | @projects = @projects.where(namespace_id: params[:namespace_id]) if params[:namespace_id].present? | 6 | @projects = @projects.where(namespace_id: params[:namespace_id]) if params[:namespace_id].present? |
| 7 | @projects = @projects.where(public: true) if params[:public_only].present? | 7 | @projects = @projects.where(public: true) if params[:public_only].present? |
| 8 | + @projects = @projects.joins(:events).where('events.action = ?', Event::Pushed) if params[:with_push].present? | ||
| 9 | + @projects = @projects.abandoned if params[:abandoned].present? | ||
| 8 | @projects = @projects.where(namespace_id: nil) if params[:namespace_id] == Namespace.global_id | 10 | @projects = @projects.where(namespace_id: nil) if params[:namespace_id] == Namespace.global_id |
| 9 | @projects = @projects.search(params[:name]) if params[:name].present? | 11 | @projects = @projects.search(params[:name]) if params[:name].present? |
| 10 | @projects = @projects.includes(:namespace).order("namespaces.path, projects.name ASC").page(params[:page]).per(20) | 12 | @projects = @projects.includes(:namespace).order("namespaces.path, projects.name ASC").page(params[:page]).per(20) |
app/models/project.rb
| @@ -84,6 +84,14 @@ class Project < ActiveRecord::Base | @@ -84,6 +84,14 @@ class Project < ActiveRecord::Base | ||
| 84 | scope :public, where(public: true) | 84 | scope :public, where(public: true) |
| 85 | 85 | ||
| 86 | class << self | 86 | class << self |
| 87 | + def abandoned | ||
| 88 | + project_ids = Event.select('max(created_at) as latest_date, project_id'). | ||
| 89 | + group('project_id'). | ||
| 90 | + having('latest_date < ?', 6.months.ago).map(&:project_id) | ||
| 91 | + | ||
| 92 | + where(id: project_ids) | ||
| 93 | + end | ||
| 94 | + | ||
| 87 | def active | 95 | def active |
| 88 | joins(:issues, :notes, :merge_requests).order("issues.created_at, notes.created_at, merge_requests.created_at DESC") | 96 | joins(:issues, :notes, :merge_requests).order("issues.created_at, notes.created_at, merge_requests.created_at DESC") |
| 89 | end | 97 | end |
app/views/admin/projects/index.html.haml
| @@ -21,6 +21,20 @@ | @@ -21,6 +21,20 @@ | ||
| 21 | = label_tag :public_only, 'Public Only', class: 'control-label' | 21 | = label_tag :public_only, 'Public Only', class: 'control-label' |
| 22 | .controls | 22 | .controls |
| 23 | = check_box_tag :public_only, 1, params[:public_only] | 23 | = check_box_tag :public_only, 1, params[:public_only] |
| 24 | + .control-group | ||
| 25 | + = label_tag :with_push, 'Not empty', class: 'control-label' | ||
| 26 | + .controls | ||
| 27 | + = check_box_tag :with_push, 1, params[:with_push] | ||
| 28 | + | ||
| 29 | + %span.light Projects with push events | ||
| 30 | + .control-group | ||
| 31 | + = label_tag :abandoned, 'Abandoned', class: 'control-label' | ||
| 32 | + .controls | ||
| 33 | + = check_box_tag :abandoned, 1, params[:abandoned] | ||
| 34 | + | ||
| 35 | + %span.light No activity over 6 month | ||
| 36 | + | ||
| 37 | + | ||
| 24 | 38 | ||
| 25 | .form-actions | 39 | .form-actions |
| 26 | = submit_tag "Search", class: "btn submit primary" | 40 | = submit_tag "Search", class: "btn submit primary" |
| @@ -44,4 +58,4 @@ | @@ -44,4 +58,4 @@ | ||
| 44 | %p.nothing_here_message 0 projects matches | 58 | %p.nothing_here_message 0 projects matches |
| 45 | - else | 59 | - else |
| 46 | %li.bottom | 60 | %li.bottom |
| 47 | - = paginate @projects, theme: "admin" | 61 | + = paginate @projects, theme: "gitlab" |