mirror of
https://github.com/neocities/neocities.git
synced 2025-04-25 09:42:36 +02:00
fixes for space used issues
This commit is contained in:
parent
dd51efb1da
commit
b2bdcfd1f5
2 changed files with 53 additions and 26 deletions
|
@ -988,8 +988,16 @@ class Site < Sequel::Model
|
||||||
end
|
end
|
||||||
|
|
||||||
def actual_space_used
|
def actual_space_used
|
||||||
space = Dir.glob(File.join(files_path, '*')).collect {|p| File.size(p)}.inject {|sum,x| sum += x}
|
space = 0
|
||||||
space.nil? ? 0 : space
|
|
||||||
|
files = Dir.glob File.join(files_path, '**', '*')
|
||||||
|
|
||||||
|
files.each do |file|
|
||||||
|
next if File.directory? file
|
||||||
|
space += File.size file
|
||||||
|
end
|
||||||
|
|
||||||
|
space
|
||||||
end
|
end
|
||||||
|
|
||||||
def total_space_used
|
def total_space_used
|
||||||
|
@ -1231,7 +1239,6 @@ class Site < Sequel::Model
|
||||||
def store_files(files, opts={})
|
def store_files(files, opts={})
|
||||||
results = []
|
results = []
|
||||||
new_size = 0
|
new_size = 0
|
||||||
html_uploaded = false
|
|
||||||
|
|
||||||
if too_many_files?(files.length)
|
if too_many_files?(files.length)
|
||||||
results << false
|
results << false
|
||||||
|
@ -1239,24 +1246,30 @@ class Site < Sequel::Model
|
||||||
end
|
end
|
||||||
|
|
||||||
files.each do |file|
|
files.each do |file|
|
||||||
html_uploaded = true if file[:filename].match HTML_REGEX
|
|
||||||
|
|
||||||
existing_size = 0
|
existing_size = 0
|
||||||
|
|
||||||
site_file = site_files_dataset.where(path: scrubbed_path(file[:filename])).first
|
site_file = site_files_dataset.where(path: scrubbed_path(file[:filename])).first
|
||||||
|
|
||||||
if site_file
|
if site_file
|
||||||
existing_size = site_file.size
|
existing_size = site_file.size
|
||||||
end
|
end
|
||||||
|
|
||||||
res = store_file(file[:filename], file[:tempfile], file[:opts] || opts)
|
res = store_file(file[:filename], file[:tempfile], file[:opts] || opts)
|
||||||
|
|
||||||
if res == true
|
if res == true
|
||||||
new_size -= existing_size
|
new_size -= existing_size
|
||||||
new_size += file[:tempfile].size
|
new_size += file[:tempfile].size
|
||||||
end
|
end
|
||||||
|
|
||||||
results << res
|
results << res
|
||||||
end
|
end
|
||||||
|
|
||||||
if results.include? true && opts[:new_install] != true
|
if results.include? true
|
||||||
if((files.select {|f| f[:filename] =~ /^\/?index.html$/}.length > 0 || site_changed == true))
|
|
||||||
|
DB["update sites set space_used=space_used#{new_size < 0 ? new_size.to_s : '+'+new_size.to_s} where id=?", self.id].first
|
||||||
|
|
||||||
|
if opts[:new_install] != true
|
||||||
|
if files.select {|f| f[:filename] =~ /^\/?index.html$/}.length > 0 || site_changed == true
|
||||||
index_changed = true
|
index_changed = true
|
||||||
else
|
else
|
||||||
index_changed = false
|
index_changed = false
|
||||||
|
@ -1265,17 +1278,21 @@ class Site < Sequel::Model
|
||||||
index_changed = false if empty_index?
|
index_changed = false if empty_index?
|
||||||
|
|
||||||
time = Time.now
|
time = Time.now
|
||||||
sql = DB["update sites set site_changed=?, site_updated_at=?, updated_at=?, changed_count=changed_count+1, space_used=space_used#{new_size < 0 ? new_size.to_s : '+'+new_size.to_s} where id=?",
|
|
||||||
|
sql = DB["update sites set site_changed=?, site_updated_at=?, updated_at=?, changed_count=changed_count+1 where id=?",
|
||||||
index_changed,
|
index_changed,
|
||||||
time,
|
time,
|
||||||
time,
|
time,
|
||||||
self.id
|
self.id
|
||||||
]
|
]
|
||||||
sql.first
|
sql.first
|
||||||
|
|
||||||
|
ArchiveWorker.perform_in 24.hours, self.id
|
||||||
|
end
|
||||||
|
|
||||||
reload
|
reload
|
||||||
|
|
||||||
#SiteChange.record self, relative_path unless opts[:new_install]
|
#SiteChange.record self, relative_path unless opts[:new_install]
|
||||||
ArchiveWorker.perform_in 24.hours, self.id
|
|
||||||
end
|
end
|
||||||
|
|
||||||
results
|
results
|
||||||
|
@ -1286,7 +1303,6 @@ class Site < Sequel::Model
|
||||||
path = scrubbed_path path
|
path = scrubbed_path path
|
||||||
site_file = site_files_dataset.where(path: path).first
|
site_file = site_files_dataset.where(path: path).first
|
||||||
site_file.destroy if site_file
|
site_file.destroy if site_file
|
||||||
|
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -30,19 +30,22 @@ describe 'site_files' do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'works' do
|
it 'works' do
|
||||||
|
initial_space_used = @site.space_used
|
||||||
uploaded_file = Rack::Test::UploadedFile.new('./tests/files/test.jpg', 'image/jpeg')
|
uploaded_file = Rack::Test::UploadedFile.new('./tests/files/test.jpg', 'image/jpeg')
|
||||||
upload 'files[]' => uploaded_file
|
upload 'files[]' => uploaded_file
|
||||||
|
|
||||||
PurgeCacheOrderWorker.jobs.clear
|
PurgeCacheOrderWorker.jobs.clear
|
||||||
|
|
||||||
@site.reload.space_used.must_equal uploaded_file.size
|
@site.reload.space_used.must_equal initial_space_used + uploaded_file.size
|
||||||
|
@site.actual_space_used.must_equal @site.space_used
|
||||||
file_path = @site.files_path 'test.jpg'
|
file_path = @site.files_path 'test.jpg'
|
||||||
File.exists?(file_path).must_equal true
|
File.exists?(file_path).must_equal true
|
||||||
delete_file filename: 'test.jpg'
|
delete_file filename: 'test.jpg'
|
||||||
|
|
||||||
File.exists?(file_path).must_equal false
|
File.exists?(file_path).must_equal false
|
||||||
SiteFile[site_id: @site.id, path: 'test.jpg'].must_be_nil
|
SiteFile[site_id: @site.id, path: 'test.jpg'].must_be_nil
|
||||||
@site.reload.space_used.must_equal 0
|
@site.reload.space_used.must_equal initial_space_used
|
||||||
|
@site.actual_space_used.must_equal @site.space_used
|
||||||
|
|
||||||
PurgeCacheOrderWorker.jobs.length.must_equal 0
|
PurgeCacheOrderWorker.jobs.length.must_equal 0
|
||||||
DeleteCacheOrderWorker.jobs.length.must_equal 1
|
DeleteCacheOrderWorker.jobs.length.must_equal 1
|
||||||
|
@ -173,14 +176,20 @@ describe 'site_files' do
|
||||||
username, pathname = dirname_purge['args']
|
username, pathname = dirname_purge['args']
|
||||||
username.must_equal @site.username
|
username.must_equal @site.username
|
||||||
pathname.must_equal '/'
|
pathname.must_equal '/'
|
||||||
|
|
||||||
|
@site.space_used.must_equal @site.actual_space_used
|
||||||
|
|
||||||
|
(@site.space_used > 0).must_equal true
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'provides the correct space used after overwriting an existing file' do
|
it 'provides the correct space used after overwriting an existing file' do
|
||||||
|
initial_space_used = @site.space_used
|
||||||
uploaded_file = Rack::Test::UploadedFile.new('./tests/files/test.jpg', 'image/jpeg')
|
uploaded_file = Rack::Test::UploadedFile.new('./tests/files/test.jpg', 'image/jpeg')
|
||||||
upload 'files[]' => uploaded_file
|
upload 'files[]' => uploaded_file
|
||||||
second_uploaded_file = Rack::Test::UploadedFile.new('./tests/files/img/test.jpg', 'image/jpeg')
|
second_uploaded_file = Rack::Test::UploadedFile.new('./tests/files/img/test.jpg', 'image/jpeg')
|
||||||
upload 'files[]' => second_uploaded_file
|
upload 'files[]' => second_uploaded_file
|
||||||
@site.reload.space_used.must_equal second_uploaded_file.size
|
@site.reload.space_used.must_equal initial_space_used + second_uploaded_file.size
|
||||||
|
@site.space_used.must_equal @site.actual_space_used
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does not change title for subdir index.html' do
|
it 'does not change title for subdir index.html' do
|
||||||
|
@ -193,6 +202,7 @@ describe 'site_files' do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'succeeds with valid file' do
|
it 'succeeds with valid file' do
|
||||||
|
initial_space_used = @site.space_used
|
||||||
uploaded_file = Rack::Test::UploadedFile.new('./tests/files/test.jpg', 'image/jpeg')
|
uploaded_file = Rack::Test::UploadedFile.new('./tests/files/test.jpg', 'image/jpeg')
|
||||||
upload 'files[]' => uploaded_file
|
upload 'files[]' => uploaded_file
|
||||||
last_response.body.must_match /successfully uploaded/i
|
last_response.body.must_match /successfully uploaded/i
|
||||||
|
@ -204,7 +214,8 @@ describe 'site_files' do
|
||||||
|
|
||||||
@site.reload
|
@site.reload
|
||||||
@site.space_used.wont_equal 0
|
@site.space_used.wont_equal 0
|
||||||
@site.space_used.must_equal uploaded_file.size
|
@site.space_used.must_equal initial_space_used + uploaded_file.size
|
||||||
|
@site.space_used.must_equal @site.actual_space_used
|
||||||
|
|
||||||
ThumbnailWorker.jobs.length.must_equal 1
|
ThumbnailWorker.jobs.length.must_equal 1
|
||||||
ThumbnailWorker.drain
|
ThumbnailWorker.drain
|
||||||
|
|
Loading…
Add table
Reference in a new issue