remove double-change count, and only increment for actual changes

This commit is contained in:
Kyle Drake 2014-06-04 18:26:17 -07:00
parent da9d1e4eb3
commit 7eee0f062d
4 changed files with 22 additions and 10 deletions

View file

@ -2,7 +2,7 @@ source 'https://rubygems.org'
gem 'sinatra'
gem 'redis'
gem 'sequel'
gem 'sequel', '4.8.0'
gem 'slim'
gem 'bcrypt'
gem 'sinatra-flash', require: 'sinatra/flash'

View file

@ -134,6 +134,7 @@ GEM
rmagick (2.13.2)
rubyzip (1.1.2)
safe_yaml (1.0.1)
sass (3.3.8)
screencap (0.1.1)
phantomjs
sequel (4.8.0)
@ -225,7 +226,7 @@ DEPENDENCIES
rubyzip
sass
screencap
sequel
sequel (= 4.8.0)
sequel_pg
shotgun
sidekiq

10
app.rb
View file

@ -512,11 +512,12 @@ post '/site_files/upload' do
file_upload_response "File(s) do not fit in your available space, upload cancelled."
end
results = []
params[:files].each do |file|
current_site.store_file Site.sanitize_filename(file[:filename]), file[:tempfile]
results << current_site.store_file(Site.sanitize_filename(file[:filename]), file[:tempfile])
end
current_site.increment_changed_count
current_site.increment_changed_count if results.include?(true)
file_upload_response
end
@ -810,11 +811,12 @@ post '/api/upload' do
end
end
results = []
files.each do |file|
current_site.store_file file[:filename], file[:tempfile]
results << current_site.store_file(file[:filename], file[:tempfile])
end
current_site.increment_changed_count
current_site.increment_changed_count if results.include?(true)
api_success 'your file(s) have been successfully uploaded'
end

View file

@ -213,6 +213,12 @@ class Site < Sequel::Model
end
def store_file(filename, uploaded)
# If the uploaded file matches an existing file, no actual change has happened.
if File.exist?(file_path(filename)) &&
Digest::SHA2.file(file_path(filename)).digest == Digest::SHA2.file(uploaded.path).digest
return false
end
FileUtils.mv uploaded.path, file_path(filename)
File.chmod(0640, file_path(filename))
@ -226,15 +232,18 @@ class Site < Sequel::Model
SiteChange.record self, filename
self.site_changed = true
self.changed_count += 1
save(validate: false)
if self.site_changed != true
self.site_changed = true
save_changes(validate: false)
end
true
end
def increment_changed_count
self.changed_count += 1
self.updated_at = Time.now
save(validate: false)
save_changes(validate: false)
end
def files_zip