From f72f255d15cef8687aba18cf5500f0e0f60a7416 Mon Sep 17 00:00:00 2001 From: decabeza Date: Fri, 17 Jul 2020 22:21:52 +0200 Subject: [PATCH] Filter erased users and show erase reason in admin --- app/controllers/admin/users_controller.rb | 5 +++- app/views/admin/users/_users.html.erb | 32 ++++++++++++++++------- config/i18n-tasks.yml | 1 + config/locales/en/admin.yml | 6 +++++ config/locales/es/admin.yml | 6 +++++ spec/system/admin/users_spec.rb | 22 ++++++++++++++++ 6 files changed, 61 insertions(+), 11 deletions(-) diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index 883976311..72905b1e3 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -1,8 +1,11 @@ class Admin::UsersController < Admin::BaseController load_and_authorize_resource + has_filters %w[active erased], only: :index + def index - @users = User.by_username_email_or_document_number(params[:search]) if params[:search] + @users = @users.send(@current_filter) + @users = @users.by_username_email_or_document_number(params[:search]) if params[:search] @users = @users.page(params[:page]) respond_to do |format| format.html diff --git a/app/views/admin/users/_users.html.erb b/app/views/admin/users/_users.html.erb index f6993470a..5334d1c11 100644 --- a/app/views/admin/users/_users.html.erb +++ b/app/views/admin/users/_users.html.erb @@ -1,24 +1,36 @@ +<%= render "shared/filter_subnav", i18n_namespace: "admin.users.index" %> + <% if @users.any? %>

<%= page_entries_info @users %>

- - - - - + <% if @current_filter == "erased" %> + + + <% else %> + + + + + + <% end %> <% @users.each do |user| %> - - - - - + <% if @current_filter == "erased" %> + + + <% else %> + + + + + + <% end %> <% end %> diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml index 6f184c17e..2211b04d5 100644 --- a/config/i18n-tasks.yml +++ b/config/i18n-tasks.yml @@ -159,6 +159,7 @@ ignore_unused: - "admin.homepage.*" - "admin.dashboard.administrator_tasks.index.filter*" - "admin.dashboard.actions.index.default.*" + - "admin.users.index.filter*" - "moderation.comments.index.filter*" - "moderation.comments.index.order*" - "moderation.debates.index.filter*" diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml index f2f3f42ba..bcb660316 100644 --- a/config/locales/en/admin.yml +++ b/config/locales/en/admin.yml @@ -1439,6 +1439,8 @@ en: help: "When a user creates a proposal, the following topics are suggested as default tags." users: columns: + id: ID + erase_reason: Erase reason name: Name email: Email document_number: Document number @@ -1447,6 +1449,10 @@ en: index: title: User no_users: There are no users. + filter: Filter + filters: + active: Active + erased: Erased search: placeholder: Search user by email, name or document number search: Search diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml index e8adfaff4..7dd749506 100644 --- a/config/locales/es/admin.yml +++ b/config/locales/es/admin.yml @@ -1438,6 +1438,8 @@ es: help: "Cuando un usuario crea una propuesta se le sugieren como etiquetas por defecto los siguientes temas." users: columns: + id: ID + erase_reason: Razón de la baja name: Nombre email: Email document_number: Número de documento @@ -1446,6 +1448,10 @@ es: index: title: Usuarios no_users: No hay usuarios. + filter: Filtro + filters: + active: Activos + erased: Borrados search: placeholder: Buscar usuario por email, nombre o DNI search: Buscar diff --git a/spec/system/admin/users_spec.rb b/spec/system/admin/users_spec.rb index 0461e244e..4cdc4dec5 100644 --- a/spec/system/admin/users_spec.rb +++ b/spec/system/admin/users_spec.rb @@ -22,6 +22,28 @@ describe "Admin users" do expect(page).to have_current_path(user_path(user)) end + scenario "Show active or erased users using filters" do + erased_user = create(:user, username: "Erased") + erased_user.erase("I don't like this site.") + + visit admin_users_path + + expect(page).not_to have_link("#{erased_user.id}", href: user_path(erased_user)) + expect(page).to have_link("Erased") + + click_link "Erased" + + expect(page).to have_link("Active") + expect(page).to have_link("#{erased_user.id}", href: user_path(erased_user)) + expect(page).to have_content "I don't like this site." + expect(page).to have_content("Erased") + + fill_in :search, with: "Erased" + click_button "Search" + + expect(page).to have_content "There are no users." + end + scenario "Search" do fill_in :search, with: "Luis" click_button "Search"
<%= t("admin.users.columns.name") %><%= t("admin.users.columns.email") %><%= t("admin.users.columns.document_number") %><%= t("admin.users.columns.roles") %><%= t("admin.users.columns.verification_level") %><%= t("admin.users.columns.id") %><%= t("admin.users.columns.erase_reason") %><%= t("admin.users.columns.name") %><%= t("admin.users.columns.email") %><%= t("admin.users.columns.document_number") %><%= t("admin.users.columns.roles") %><%= t("admin.users.columns.verification_level") %>
<%= link_to user.name, user_path(user), target: "_blank" %><%= user.email %><%= user.document_number %><%= display_user_roles(user) %><%= user.user_type %><%= link_to user.id, user_path(user), target: "_blank" %><%= user.erase_reason %><%= link_to user.name, user_path(user), target: "_blank" %><%= user.email %><%= user.document_number %><%= display_user_roles(user) %><%= user.user_type %>