diff --git a/.gitignore b/.gitignore index 94b1e9d49..a707e38ec 100644 --- a/.gitignore +++ b/.gitignore @@ -44,8 +44,7 @@ spec/examples.txt # Ignore exports -/exports/* -!/exports/.keep + # Ignore RubyMine files .idea \ No newline at end of file diff --git a/app/controllers/catalog_admin/exports_controller.rb b/app/controllers/catalog_admin/exports_controller.rb index 11a6a204e..d7f156175 100644 --- a/app/controllers/catalog_admin/exports_controller.rb +++ b/app/controllers/catalog_admin/exports_controller.rb @@ -16,7 +16,6 @@ def create user: current_user, catalog: catalog, category: category, - file: false, status: "processing" ) redirect_to :back, :alert => @message diff --git a/app/models/export.rb b/app/models/export.rb index 2619802f6..bd4d1080e 100644 --- a/app/models/export.rb +++ b/app/models/export.rb @@ -2,14 +2,13 @@ # # Table name: exports # -# id :integer not null, primary key -# user_id :integer # catalog_id :integer # category :string -# status :string -# file :boolean # created_at :datetime not null +# id :integer not null, primary key +# status :string # updated_at :datetime not null +# user_id :integer # class Export < ActiveRecord::Base @@ -30,7 +29,8 @@ class Export < ActiveRecord::Base end def pathname - Rails.root.join('exports').to_s + "/#{id}_#{catalog.slug}.zip" + ext = Rails.env.test? ? "test" : "zip" + Rails.root.join('exports').to_s + "/#{id}_#{catalog.slug}.#{ext}" end def validity? @@ -42,7 +42,7 @@ def ready? end def file? - file + File.exist? pathname end def self.validity diff --git a/app/workers/export_worker.rb b/app/workers/export_worker.rb index 15c0578e8..94f55d766 100644 --- a/app/workers/export_worker.rb +++ b/app/workers/export_worker.rb @@ -12,7 +12,7 @@ def perform(export_id, category) when "catima" catima_export(export, dir) else - export.update(status: "error", file: false) + export.update(status: "error") end FileUtils.remove_entry dir @@ -21,14 +21,14 @@ def perform(export_id, category) private def catima_export(export, dir) - params = { :status => "ready", :file => true } + status = "ready" begin CatalogDump.new.dump(export.catalog.slug, dir) zip(dir, export.pathname) rescue StandardError - params[:status] = "error", params[:file] = false + status = "error" end - export.update(status: params[:status], file: params[:file]) + export.update(status: status) send_mail(export) end diff --git a/db/migrate/20180615090214_create_exports.rb b/db/migrate/20180615090214_create_exports.rb index e127718a1..0263633ab 100644 --- a/db/migrate/20180615090214_create_exports.rb +++ b/db/migrate/20180615090214_create_exports.rb @@ -5,7 +5,6 @@ def change t.references :catalog, index: true, foreign_key: true t.string :category t.string :status - t.boolean :file t.timestamps null: false end diff --git a/db/structure.sql b/db/structure.sql index 2da8af32e..d389730ea 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -375,7 +375,6 @@ CREATE TABLE exports ( catalog_id integer, category character varying, status character varying, - file boolean, created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone NOT NULL ); diff --git a/exports/.keep b/exports/.keep deleted file mode 100644 index e69de29bb..000000000 diff --git a/exports/1_one.test b/exports/1_one.test new file mode 100644 index 000000000..37aef4514 Binary files /dev/null and b/exports/1_one.test differ diff --git a/exports/2_two.test b/exports/2_two.test new file mode 100644 index 000000000..37aef4514 Binary files /dev/null and b/exports/2_two.test differ diff --git a/lib/tasks/export.rake b/lib/tasks/export.rake index cc9b569ba..50fbfc137 100644 --- a/lib/tasks/export.rake +++ b/lib/tasks/export.rake @@ -2,12 +2,11 @@ namespace :export do desc "Check catalog exports validity and delete export files when expired" task remove_expired: [:environment] do # Check all the exports created more than 1 week ago - exports = Export.where("created_at < ?", Export.validity.ago).where(:file => true) + exports = Export.where("created_at < ?", Export.validity.ago) # Remove all expired export files but keep the db records exports.each do |export| - FileUtils.rm_f(export.pathname) - export.update(file: false) + FileUtils.rm_f(export.pathname) if export.file? end end end diff --git a/test/fixtures/exports.yml b/test/fixtures/exports.yml index f92ef68b8..e7d175903 100644 --- a/test/fixtures/exports.yml +++ b/test/fixtures/exports.yml @@ -2,51 +2,48 @@ # # Table name: exports # -# id :integer not null, primary key -# user_id :integer # catalog_id :integer # category :string -# file :boolean +# created_at :datetime not null +# id :integer not null, primary key # status :string # updated_at :datetime not null -# created_at :datetime not null +# user_id :integer # -# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html - one: + id: 1 user: one_admin catalog: one category: "catima" status: "ready" - file: true + +two: + id: 2 + user: two_admin + catalog: two + category: "catima" + status: "ready" one_expired: + id: 3 user: one_admin catalog: one category: "catima" status: "ready" - file: false created_at: <%= Time.zone.now - 8.days %> updated_at: <%= Time.zone.now - 8.days %> one_processing: + id: 4 user: one_admin catalog: one category: "catima" status: "processing" - file: false one_error: + id: 5 user: one_admin catalog: one category: "catima" status: "error" - file: false - -two: - user: two_admin - catalog: two - category: "catima" - status: "ready" - file: true