mirror of
https://github.com/neocities/neocities.git
synced 2025-04-25 09:42:36 +02:00
patch up space used bug
This commit is contained in:
parent
864903aa1f
commit
11927f027d
2 changed files with 40 additions and 14 deletions
|
@ -613,11 +613,6 @@ class Site < Sequel::Model
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
def increment_changed_count
|
|
||||||
self.changed_count += 1
|
|
||||||
save_changes(validate: false)
|
|
||||||
end
|
|
||||||
|
|
||||||
def files_zip
|
def files_zip
|
||||||
zip_name = "neocities-#{username}"
|
zip_name = "neocities-#{username}"
|
||||||
|
|
||||||
|
@ -663,8 +658,14 @@ class Site < Sequel::Model
|
||||||
|
|
||||||
path = path[1..path.length] if path[0] == '/'
|
path = path[1..path.length] if path[0] == '/'
|
||||||
|
|
||||||
site_files_dataset.where(path: path).delete
|
DB.transaction do
|
||||||
|
site_file = site_files_dataset.where(path: path).first
|
||||||
|
if site_file
|
||||||
|
DB['update sites set space_used=space_used-? where id=?', site_file.size, self.id].first
|
||||||
|
site_file.delete
|
||||||
|
end
|
||||||
SiteChangeFile.filter(site_id: self.id, filename: path).delete
|
SiteChangeFile.filter(site_id: self.id, filename: path).delete
|
||||||
|
end
|
||||||
|
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
@ -1098,16 +1099,32 @@ class Site < Sequel::Model
|
||||||
# array of hashes: filename, tempfile, opts.
|
# array of hashes: filename, tempfile, opts.
|
||||||
def store_files(files, opts={})
|
def store_files(files, opts={})
|
||||||
results = []
|
results = []
|
||||||
|
new_size = 0
|
||||||
|
html_uploaded = false
|
||||||
|
|
||||||
files.each do |file|
|
files.each do |file|
|
||||||
|
new_size += file[:tempfile].size
|
||||||
|
html_uploaded = true if file[:filename].match HTML_REGEX
|
||||||
results << store_file(file[:filename], file[:tempfile], file[:opts] || opts)
|
results << store_file(file[:filename], file[:tempfile], file[:opts] || opts)
|
||||||
end
|
end
|
||||||
|
|
||||||
if results.include? true && opts[:new_install] != true
|
if results.include? true && opts[:new_install] != true
|
||||||
self.site_changed = true
|
time = Time.now
|
||||||
self.site_updated_at = Time.now
|
DB['update sites set site_changed=?, site_updated_at=?, updated_at=?, changed_count=changed_count+1, space_used=space_used+? where id=?',
|
||||||
self.updated_at = Time.now
|
html_uploaded,
|
||||||
save_changes validate: false
|
time,
|
||||||
increment_changed_count
|
time,
|
||||||
|
new_size,
|
||||||
|
self.id
|
||||||
|
].first
|
||||||
|
|
||||||
|
#self.site_changed = true
|
||||||
|
#self.site_updated_at = Time.now
|
||||||
|
#self.updated_at = Time.now
|
||||||
|
#self.changed_count += 1
|
||||||
|
#save_changes validate: false
|
||||||
|
reload
|
||||||
|
|
||||||
#SiteChange.record self, relative_path unless opts[:new_install]
|
#SiteChange.record self, relative_path unless opts[:new_install]
|
||||||
ArchiveWorker.perform_async self.id
|
ArchiveWorker.perform_async self.id
|
||||||
end
|
end
|
||||||
|
|
|
@ -24,12 +24,15 @@ describe 'site_files' do
|
||||||
|
|
||||||
describe 'delete' do
|
describe 'delete' do
|
||||||
it 'works' do
|
it 'works' do
|
||||||
upload 'files[]' => 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
|
||||||
|
@site.reload.space_used.must_equal uploaded_file.size
|
||||||
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
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'deletes a directory and all files in it' do
|
it 'deletes a directory and all files in it' do
|
||||||
|
@ -113,7 +116,9 @@ describe 'site_files' do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'succeeds with valid file' do
|
it 'succeeds with valid file' do
|
||||||
upload 'files[]' => Rack::Test::UploadedFile.new('./tests/files/test.jpg', 'image/jpeg')
|
uploaded_file = Rack::Test::UploadedFile.new('./tests/files/test.jpg', 'image/jpeg')
|
||||||
|
puts uploaded_file.size
|
||||||
|
upload 'files[]' => uploaded_file
|
||||||
last_response.body.must_match /successfully uploaded/i
|
last_response.body.must_match /successfully uploaded/i
|
||||||
File.exists?(@site.files_path('test.jpg')).must_equal true
|
File.exists?(@site.files_path('test.jpg')).must_equal true
|
||||||
|
|
||||||
|
@ -121,6 +126,10 @@ describe 'site_files' do
|
||||||
queue_args['site'].must_equal @site.username
|
queue_args['site'].must_equal @site.username
|
||||||
queue_args['path'].must_equal '/test.jpg'
|
queue_args['path'].must_equal '/test.jpg'
|
||||||
|
|
||||||
|
@site.reload
|
||||||
|
@site.space_used.wont_equal 0
|
||||||
|
@site.space_used.must_equal uploaded_file.size
|
||||||
|
|
||||||
ThumbnailWorker.jobs.length.must_equal 1
|
ThumbnailWorker.jobs.length.must_equal 1
|
||||||
ThumbnailWorker.drain
|
ThumbnailWorker.drain
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue