From db230615418e67b3dedbdd5a340352f3f4319225 Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Mon, 7 Apr 2014 00:01:38 -0400 Subject: [PATCH 1/4] tempfix for users with < 2 chars for username validation --- models/site.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/models/site.rb b/models/site.rb index 522d504c..81062d26 100644 --- a/models/site.rb +++ b/models/site.rb @@ -191,7 +191,8 @@ class Site < Sequel::Model errors.add :over_capacity, 'We are currently at capacity, and cannot create your home page. We will fix this shortly. Please come back later and try again, our apologies.' end - if !values[:username].match(VALID_HOSTNAME) + # TODO regex fails for usernames <= 2 chars, tempfix for now. + if values[:username].length > 2 && !values[:username].match(VALID_HOSTNAME) errors.add :username, 'A valid user/site name is required.' end From e56587a08ce152944034996f0ee2ad090663641f Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Mon, 7 Apr 2014 07:59:11 -0400 Subject: [PATCH 2/4] only validate new records for username match --- models/site.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/site.rb b/models/site.rb index 81062d26..70f4bd49 100644 --- a/models/site.rb +++ b/models/site.rb @@ -192,7 +192,7 @@ class Site < Sequel::Model end # TODO regex fails for usernames <= 2 chars, tempfix for now. - if values[:username].length > 2 && !values[:username].match(VALID_HOSTNAME) + if new? && values[:username].length > 2 && !values[:username].match(VALID_HOSTNAME) errors.add :username, 'A valid user/site name is required.' end From e01a74421a1ab567a64ebe57341d681503d5391c Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Mon, 7 Apr 2014 08:02:14 -0400 Subject: [PATCH 3/4] only validate new records for length --- models/site.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/site.rb b/models/site.rb index 70f4bd49..453dba41 100644 --- a/models/site.rb +++ b/models/site.rb @@ -196,7 +196,7 @@ class Site < Sequel::Model errors.add :username, 'A valid user/site name is required.' end - if values[:username].length > 32 + if new? && values[:username].length > 32 errors.add :username, 'User/site name cannot exceed 32 characters.' end From a5df2c86cd03b595469d83a64bb7d57632c1c297 Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Mon, 7 Apr 2014 08:17:58 -0400 Subject: [PATCH 4/4] move changed count and screenshot logic to model --- app.rb | 9 ++------- models/site.rb | 12 ++++++++++++ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/app.rb b/app.rb index ebab0a6f..d4321703 100644 --- a/app.rb +++ b/app.rb @@ -309,14 +309,9 @@ post '/site_files/upload' do end sanitized_filename = params[:newfile][:filename].gsub(/[^a-zA-Z0-9_\-.]/, '') + current_site.store_file sanitized_filename, params[:newfile][:tempfile] - - if sanitized_filename =~ /index\.html/ - ScreenshotWorker.perform_async current_site.username - current_site.update site_changed: true - end - - current_site.update changed_count: 1+current_site.changed_count, updated_at: Time.now + current_site.increment_changed_count flash[:success] = "Successfully uploaded file #{sanitized_filename}." redirect '/dashboard' diff --git a/models/site.rb b/models/site.rb index 453dba41..0b907ec9 100644 --- a/models/site.rb +++ b/models/site.rb @@ -128,6 +128,18 @@ class Site < Sequel::Model def store_file(filename, uploaded) FileUtils.mv uploaded.path, file_path(filename) File.chmod(0640, file_path(filename)) + + if filename =~ /index\.html/ + ScreenshotWorker.perform_async values[:username] + self.site_changed = true + save(validate: false) + end + end + + def increment_changed_count + self.changed_count += 1 + self.updated_at = Time.now + save(validate: false) end def files_zip