mirror of
https://github.com/neocities/neocities.git
synced 2025-04-24 17:22:35 +02:00
remove double-change count, and only increment for actual changes
This commit is contained in:
parent
da9d1e4eb3
commit
7eee0f062d
4 changed files with 22 additions and 10 deletions
2
Gemfile
2
Gemfile
|
@ -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'
|
||||
|
|
|
@ -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
10
app.rb
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue