From 0936a338d18447a77ea21972e41106cc089f3fb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Pi=C4=8Dman?= Date: Mon, 18 Jun 2018 13:38:02 +0200 Subject: [PATCH] A stronger validation --- app/models/dmsf_file.rb | 2 +- app/models/dmsf_file_revision.rb | 1 + app/models/dmsf_file_revision_access.rb | 2 ++ app/models/dmsf_folder.rb | 1 + app/models/dmsf_folder_permission.rb | 2 ++ app/models/dmsf_link.rb | 1 + app/models/dmsf_workflow_step.rb | 11 +++++------ app/models/dmsf_workflow_step_action.rb | 15 ++++++++------- app/models/dmsf_workflow_step_assignment.rb | 4 +++- 9 files changed, 24 insertions(+), 15 deletions(-) diff --git a/app/models/dmsf_file.rb b/app/models/dmsf_file.rb index dc73d380..391f91bd 100644 --- a/app/models/dmsf_file.rb +++ b/app/models/dmsf_file.rb @@ -54,7 +54,7 @@ class DmsfFile < ActiveRecord::Base validates :name, :presence => true validates_format_of :name, :with => /\A[^#{DmsfFolder::INVALID_CHARACTERS}]*\z/, :message => l(:error_contains_invalid_character) - + validates :project, :presence => true validate :validates_name_uniqueness def validates_name_uniqueness diff --git a/app/models/dmsf_file_revision.rb b/app/models/dmsf_file_revision.rb index 76965097..8ed34198 100644 --- a/app/models/dmsf_file_revision.rb +++ b/app/models/dmsf_file_revision.rb @@ -69,6 +69,7 @@ class DmsfFileRevision < ActiveRecord::Base validates_format_of :name, :with => /\A[^#{DmsfFolder::INVALID_CHARACTERS}]*\z/, :message => l(:error_contains_invalid_character) validates :description, length: { maximum: 1.kilobyte } + validates :dmsf_file, :presence => true def project self.dmsf_file.project if self.dmsf_file diff --git a/app/models/dmsf_file_revision_access.rb b/app/models/dmsf_file_revision_access.rb index b986ebb5..e2d15ed6 100644 --- a/app/models/dmsf_file_revision_access.rb +++ b/app/models/dmsf_file_revision_access.rb @@ -26,6 +26,8 @@ class DmsfFileRevisionAccess < ActiveRecord::Base delegate :dmsf_file, :to => :dmsf_file_revision, :allow_nil => false delegate :project, :to => :dmsf_file, :allow_nil => false + validates :dmsf_file_revision, :presence => true + DownloadAction = 0.freeze EmailAction = 1.freeze diff --git a/app/models/dmsf_folder.rb b/app/models/dmsf_folder.rb index 0a68dcef..194ad68c 100644 --- a/app/models/dmsf_folder.rb +++ b/app/models/dmsf_folder.rb @@ -101,6 +101,7 @@ class DmsfFolder < ActiveRecord::Base :message => l(:error_contains_invalid_character) validate :check_cycle validates_length_of :description, :maximum => 65535 + validates :project, :presence => true before_create :default_values diff --git a/app/models/dmsf_folder_permission.rb b/app/models/dmsf_folder_permission.rb index 67ba7302..e4e0cc69 100644 --- a/app/models/dmsf_folder_permission.rb +++ b/app/models/dmsf_folder_permission.rb @@ -22,6 +22,8 @@ class DmsfFolderPermission < ActiveRecord::Base belongs_to :dmsf_folder + validates :dmsf_folder, :presence => true + scope :users, -> { where(:object_type => User.model_name.to_s) } scope :roles, -> { where(:object_type => Role.model_name.to_s) } diff --git a/app/models/dmsf_link.rb b/app/models/dmsf_link.rb index 1eb38364..a8413d98 100644 --- a/app/models/dmsf_link.rb +++ b/app/models/dmsf_link.rb @@ -31,6 +31,7 @@ class DmsfLink < ActiveRecord::Base validates_length_of :name, :maximum => 255 validates_length_of :external_url, :maximum => 255 validate :validate_url + validates :project, :presence => true def validate_url if self.target_type == 'DmsfUrl' diff --git a/app/models/dmsf_workflow_step.rb b/app/models/dmsf_workflow_step.rb index 2efb7280..b5e771ec 100644 --- a/app/models/dmsf_workflow_step.rb +++ b/app/models/dmsf_workflow_step.rb @@ -20,10 +20,13 @@ class DmsfWorkflowStep < ActiveRecord::Base belongs_to :dmsf_workflow + belongs_to :user + has_many :dmsf_workflow_step_assignments, :dependent => :destroy - validates :dmsf_workflow_id, :presence => true + + validates :dmsf_workflow, :presence => true validates :step, :presence => true - validates :user_id, :presence => true + validates :user, :presence => true validates :operator, :presence => true validates_uniqueness_of :user_id, :scope => [:dmsf_workflow_id, :step] validates_length_of :name, :maximum => 30 @@ -39,10 +42,6 @@ class DmsfWorkflowStep < ActiveRecord::Base operator == 1 ? l(:dmsf_and) : l(:dmsf_or) end - def user - User.find(user_id) - end - def assign(dmsf_file_revision_id) step_assignment = DmsfWorkflowStepAssignment.new( :dmsf_workflow_step_id => id, diff --git a/app/models/dmsf_workflow_step_action.rb b/app/models/dmsf_workflow_step_action.rb index 911638f5..90d886a0 100644 --- a/app/models/dmsf_workflow_step_action.rb +++ b/app/models/dmsf_workflow_step_action.rb @@ -23,17 +23,18 @@ class DmsfWorkflowStepAction < ActiveRecord::Base belongs_to :dmsf_workflow_step_assignment belongs_to :author, :class_name => 'User', :foreign_key => 'author_id' - validates :dmsf_workflow_step_assignment_id, :presence => true + validates :dmsf_workflow_step_assignment, :presence => true validates :action, :presence => true validates :note, :presence => true, :unless => lambda { self.action == DmsfWorkflowStepAction::ACTION_APPROVE } validates :author_id, :presence => true - validates_uniqueness_of :dmsf_workflow_step_assignment_id, :scope => [:action], :unless => lambda {self.action == DmsfWorkflowStepAction::ACTION_DELEGATE} + validates_uniqueness_of :dmsf_workflow_step_assignment_id, :scope => [:action], + :unless => lambda {self.action == DmsfWorkflowStepAction::ACTION_DELEGATE} - ACTION_APPROVE = 1 - ACTION_REJECT = 2 - ACTION_DELEGATE = 3 - ACTION_ASSIGN = 4 - ACTION_START = 5 + ACTION_APPROVE = 1.freeze + ACTION_REJECT = 2.freeze + ACTION_DELEGATE = 3.freeze + ACTION_ASSIGN = 4.freeze + ACTION_START = 5.freeze def initialize(*args) super diff --git a/app/models/dmsf_workflow_step_assignment.rb b/app/models/dmsf_workflow_step_assignment.rb index 470e6f74..95e67437 100644 --- a/app/models/dmsf_workflow_step_assignment.rb +++ b/app/models/dmsf_workflow_step_assignment.rb @@ -22,8 +22,10 @@ class DmsfWorkflowStepAssignment < ActiveRecord::Base belongs_to :dmsf_workflow_step belongs_to :user belongs_to :dmsf_file_revision + has_many :dmsf_workflow_step_actions, :dependent => :destroy - validates :dmsf_workflow_step_id, :dmsf_file_revision_id, :presence => true + + validates :dmsf_workflow_step, :dmsf_file_revision, :presence => true validates_uniqueness_of :dmsf_workflow_step_id, :scope => [:dmsf_file_revision_id] def add?(dmsf_file_revision_id)