From beefcf6f836a57da3efbd20ca5b625c54f93ffbf Mon Sep 17 00:00:00 2001 From: Christian Proust <christian.proust@grenoble-inp.org> Date: Wed, 29 Nov 2017 21:59:04 +0100 Subject: [PATCH] Implement the feature --- app/tasks/export.rb | 37 +++++++++++++++++++++++++++---------- lib/tasks/export.rake | 13 +++++++++++++ 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/app/tasks/export.rb b/app/tasks/export.rb index a4dd9947..7e84fc60 100644 --- a/app/tasks/export.rb +++ b/app/tasks/export.rb @@ -1,18 +1,19 @@ class Export def self.members_list(export_file) - # Get the template for file list - template = File.read(File.join( - "#{Rails.root}", 'app', 'views', 'members', 'list.text.erb')) + _members_list(export_file, Member) + end - # Generate file content - @members = Member.all - result = ERB.new(template, nil, '-').result(binding) + def self.vpn_members_list(export_file) + _members_list(export_file, Member.includes(:services).where(services: { + type: 'VpnService', active: true + })) + end - # Write file content - File.open(export_file, 'w') do |f| - f.write(result) - end + def self.radio_members_list(export_file) + _members_list(export_file, Member.includes(:services).where(services: { + type: 'RadioService', active: true + })) end def self.tunnel_radius(export_path) @@ -50,4 +51,20 @@ class Export digest = OpenSSL::Digest::SHA256.file(export_file) File.open(export_file + ".sha256", 'w') {|f| f.write(digest.to_s) } end + + private + def self._members_list(export_file, members) + # Get the template for file list + template = File.read(File.join( + "#{Rails.root}", 'app', 'views', 'members', 'list.text.erb')) + + # Generate file content + @members = members.uniq.order(:id) + result = ERB.new(template, nil, '-').result(binding) + + # Write file content + File.open(export_file, 'w') do |f| + f.write(result) + end + end end diff --git a/lib/tasks/export.rake b/lib/tasks/export.rake index 40696556..896f965e 100644 --- a/lib/tasks/export.rake +++ b/lib/tasks/export.rake @@ -6,6 +6,19 @@ namespace :export do Export.members_list export_file end + desc "Export the radio members list" + task :radio_members_list, [:export_file] => :environment do |t, args| + export_file = args[:export_file].to_s + abort "Empty export file given" if export_file.empty? + Export.radio_members_list export_file + end + + desc "Export the vpn members list" + task :vpn_members_list, [:export_file] => :environment do |t, args| + export_file = args[:export_file].to_s + abort "Empty export file given" if export_file.empty? + Export.vpn_members_list export_file + end desc "Generate the vpn data export for the radius" task :tunnel_radius, [:export_path] => :environment do |t, args| -- GitLab