[Git][noosfero/noosfero][master] 13 commits: Adds exportable fields and a related hotspost
Rodrigo Souto
gitlab at mg.gitlab.com
Wed Jun 27 17:35:53 BRT 2018
Rodrigo Souto pushed to branch master at Noosfero / noosfero
Commits:
d701928f by Gabriel Silva at 2018-06-08T18:49:44Z
Adds exportable fields and a related hotspost
Signed-off-by: Gabriel Silva <gabriel93.silva at gmail.com>
- - - - -
3384150f by Gabriel Silva at 2018-06-08T18:49:44Z
[CustomForms] Adds field selector to export page
Signed-off-by: Gabriel Silva <gabriel93.silva at gmail.com>
- - - - -
fe8c8f29 by Matheus Richard at 2018-06-13T15:30:20Z
Updates user list exportation layout
- - - - -
595f6379 by Matheus Richard at 2018-06-14T14:42:27Z
Updates download users action to use selected fields
- - - - -
c074e21a by Matheus Richard at 2018-06-14T15:30:02Z
Adds test to export fields selection
- - - - -
b7e5754f by Matheus Richard at 2018-06-15T12:44:25Z
Merge branch 'master' of https://gitlab.com/noosfero/noosfero into custom-export-users
- - - - -
e4fb58e0 by Matheus Richard at 2018-06-18T14:44:08Z
Removes unnecessary tests
- - - - -
a2b8408c by Matheus Richard at 2018-06-22T01:45:39Z
Merge branch 'custom-export-2' of https://gitlab.com/gabrielssilva/noosfero into custom-export-users
- - - - -
96339a48 by Matheus Richard at 2018-06-25T14:55:52Z
Changes user fields selector description
- - - - -
2897968a by Matheus Richard at 2018-06-26T13:30:01Z
Orders exportable_fields before returning
- - - - -
111ff36d by Matheus Richard at 2018-06-26T16:03:20Z
Merge branch 'master' of https://gitlab.com/noosfero/noosfero into custom-export-users
- - - - -
ed42b14f by Matheus Richard at 2018-06-27T12:58:52Z
Merge branch 'master' of https://gitlab.com/noosfero/noosfero into custom-export-users
- - - - -
29514280 by Rodrigo Souto at 2018-06-27T20:35:48Z
Merge branch 'custom-export-users' into 'master'
Custom export users list
See merge request noosfero/noosfero!1528
- - - - -
10 changed files:
- app/controllers/admin/users_controller.rb
- app/models/person.rb
- app/models/profile.rb
- app/views/users/_index_buttons.html.erb
- public/javascripts/application.js
- + public/javascripts/manage-users.js
- public/stylesheets/application.scss
- + public/stylesheets/manage-users.scss
- test/functional/users_controller_test.rb
- test/unit/person_test.rb
Changes:
=====================================
app/controllers/admin/users_controller.rb
=====================================
--- a/app/controllers/admin/users_controller.rb
+++ b/app/controllers/admin/users_controller.rb
@@ -44,18 +44,17 @@ class UsersController < AdminController
end
def download
+ fields = { base: params[:fields], user: %w[last_login_at] }
users = filter_users(per_page: environment.users.count, page: nil)
- exporter = Exporter.new(users, Person.exportable_fields(environment))
+ exporter = Exporter.new(users, fields)
date = Time.current.strftime('%Y-%m-%d %Hh%Mm')
filename = _('%s people list - %s') % [environment.name, date]
- respond_to do |format|
- format.xml do
- send_data exporter.to_xml, type: 'text/xml', filename: "#{filename}.xml"
- end
- format.csv do
- send_data exporter.to_csv, type: 'text/csv', filename: "#{filename}.csv"
- end
+ case params[:format]
+ when 'csv'
+ send_data exporter.to_csv, type: 'text/csv', filename: "#{filename}.csv"
+ when 'xml'
+ send_data exporter.to_xml, type: 'text/xml', filename: "#{filename}.xml"
end
end
=====================================
app/models/person.rb
=====================================
--- a/app/models/person.rb
+++ b/app/models/person.rb
@@ -672,10 +672,4 @@ class Person < Profile
def pending_tasks
Task.to(self).pending
end
-
- def self.exportable_fields(environment)
- active_fields = environment.active_person_fields
- { base: %w[name updated_at created_at identifier lat lng] + active_fields,
- user: %w[email last_login_at] }
- end
end
=====================================
app/models/profile.rb
=====================================
--- a/app/models/profile.rb
+++ b/app/models/profile.rb
@@ -1325,7 +1325,11 @@ private :generate_url, :url_options
def exportable_fields
plugin_extra_fields = plugins.dispatch(:extra_exportable_fields, self)
- active_fields + DEFAULT_EXPORTABLE_FIELDS + plugin_extra_fields
+ fields = active_fields + DEFAULT_EXPORTABLE_FIELDS + plugin_extra_fields
+ first_fields = %w(id name email)
+ fields -= first_fields
+ fields.sort!
+ ordered_fields = first_fields + fields
end
private
=====================================
app/views/users/_index_buttons.html.erb
=====================================
--- a/app/views/users/_index_buttons.html.erb
+++ b/app/views/users/_index_buttons.html.erb
@@ -1,10 +1,25 @@
<%= button_bar do %>
- <%= button 'file-alt', _('People list [CSV]'),
- { action: 'download.csv', filter: @filter, q: @q },
- { id: "convert-csv" } %>
- <%= button 'file-code', _('People list [XML]'),
- { action: 'download.xml', filter: @filter, q: @q },
- { :id => "convert-xml" } %>
+ <%= button 'sort-amount-down', _('Export People list'), '#!', {class: 'export-people-list'} %>
<%= button :send, _('Send e-mail to users'), :action => 'send_mail' %>
<%= button :back, _('Back'), :controller => 'admin_panel' %>
<% end %>
+
+<div class="export-people-field" >
+ <%= form_tag({action: 'download', controller: 'users'}) do %>
+ <label>Select the file format</label>
+ <div class="download-format">
+ <label><%= radio_button_tag('format', 'xml', true) %> XML </label>
+ <label><%= radio_button_tag('format', 'csv', false) %> CSV </label>
+ </div>
+
+ <%= exportable_fields_selector(
+ "fields[]",
+ _('Select the fields to be included in the people list'),
+ current_person,
+ %w(name email)
+ ) %>
+
+ <%= submit_button 'download', _('Download') %>
+ <%= button('ban', _('Cancel'), '#!', {id: 'cancel-exportation'}) %>
+ <% end %>
+</div>
\ No newline at end of file
=====================================
public/javascripts/application.js
=====================================
--- a/public/javascripts/application.js
+++ b/public/javascripts/application.js
@@ -37,6 +37,7 @@
*= require add-and-join.js
*= require followers.js
*= require manage-followers.js
+*= require manage-users.js
*= require report-abuse.js
*= require require_login.js
*= require block-store.js
=====================================
public/javascripts/manage-users.js
=====================================
--- /dev/null
+++ b/public/javascripts/manage-users.js
@@ -0,0 +1,7 @@
+jQuery(function ($) {
+ $(".export-people-field").hide();
+
+ $(".export-people-list, #cancel-exportation").click(function () {
+ $(".export-people-field").slideToggle();
+ });
+});
=====================================
public/stylesheets/application.scss
=====================================
--- a/public/stylesheets/application.scss
+++ b/public/stylesheets/application.scss
@@ -56,6 +56,7 @@
@import 'admin-panel';
@import 'manage-plugins';
@import 'manage-fields';
+ at import 'manage-users';
@import 'environment-users';
@import 'quotas';
@import 'features';
=====================================
public/stylesheets/manage-users.scss
=====================================
--- /dev/null
+++ b/public/stylesheets/manage-users.scss
@@ -0,0 +1,3 @@
+.download-format {
+ margin: 5px 0 10px 0;
+}
\ No newline at end of file
=====================================
test/functional/users_controller_test.rb
=====================================
--- a/test/functional/users_controller_test.rb
+++ b/test/functional/users_controller_test.rb
@@ -113,14 +113,14 @@ class UsersControllerTest < ActionController::TestCase
should 'response as XML to export users' do
create_user('maryjane')
- get :download, :format => 'xml'
+ get :download, :format => 'xml', :fields => ['name']
assert_equal 'text/xml', @response.content_type
assert_match 'maryjane', @response.body
end
should 'response as CSV to export users' do
create_user('maryjane')
- get :download, :format => 'csv'
+ get :download, :format => 'csv', :fields => ['name']
assert_equal 'text/csv', @response.content_type
assert_match 'maryjane', @response.body
end
@@ -130,12 +130,21 @@ class UsersControllerTest < ActionController::TestCase
create_user('jhonbaz')
create_user('maryjane')
- get :download, format: 'csv', q: 'jhon'
+ get :download, format: 'csv', :fields => ['name'], q: 'jhon'
assert_match 'jhondoe', @response.body
assert_match 'jhonbaz', @response.body
assert_no_match 'maryjane', @response.body
end
+ should 'include only selected fields' do
+ create_user('jhondoe')
+
+ get :download, :format => 'csv', :fields => ['email']
+ assert_match 'jhondoe at noosfero.org', @response.body
+ assert_match 'last_login_at', @response.body
+ assert_no_match 'name', @response.body
+ end
+
should 'be able to remove a person' do
person = fast_create(Person, :environment_id => environment.id)
assert_difference 'Person.count', -1 do
@@ -182,5 +191,4 @@ class UsersControllerTest < ActionController::TestCase
process_delayed_job_queue
end
end
-
end
=====================================
test/unit/person_test.rb
=====================================
--- a/test/unit/person_test.rb
+++ b/test/unit/person_test.rb
@@ -2102,16 +2102,4 @@ class PersonTest < ActiveSupport::TestCase
person = create_user('mytestuser').person
assert_includes profile.available_blocks(person), CommunitiesBlock
end
-
- should 'return field as exportable if it is enabled in the environment' do
- env = Environment.default
- env.stubs(:active_person_fields).returns(%w[location])
- assert_includes Person.exportable_fields(env)[:base], 'location'
- end
-
- should 'not return field as exportable if it is disabled in the environment' do
- env = Environment.default
- env.stubs(:active_person_fields).returns([])
- assert_not_includes Person.exportable_fields(env)[:base], 'location'
- end
end
View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/c6c3da8c691f52ce5fffe39d93099afc0db3d7c6...2951428051d6a939b40939e225abf28acbb14ed1
--
View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/c6c3da8c691f52ce5fffe39d93099afc0db3d7c6...2951428051d6a939b40939e225abf28acbb14ed1
You're receiving this email because of your account on gitlab.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20180627/9d82ad8b/attachment-0001.html>
More information about the Noosfero-dev
mailing list