44 lines
1.3 KiB
Ruby
44 lines
1.3 KiB
Ruby
module Project::ValidationsTrait
|
|
as_trait do
|
|
validates :name,
|
|
:uniqueness => true,
|
|
:presence => true,
|
|
:length => { :within => 0..255 }
|
|
|
|
validates :path,
|
|
:uniqueness => true,
|
|
:presence => true,
|
|
:format => { :with => /^[a-zA-Z0-9_\-\.]*$/,
|
|
:message => "only letters, digits & '_' '-' '.' allowed" },
|
|
:length => { :within => 0..255 }
|
|
|
|
validates :description,
|
|
:length => { :within => 0..2000 }
|
|
|
|
validates :code,
|
|
:presence => true,
|
|
:uniqueness => true,
|
|
:format => { :with => /^[a-zA-Z0-9_\-\.]*$/,
|
|
:message => "only letters, digits & '_' '-' '.' allowed" },
|
|
:length => { :within => 3..255 }
|
|
|
|
validates :owner, :presence => true
|
|
validate :check_limit
|
|
validate :repo_name
|
|
|
|
def check_limit
|
|
unless owner.can_create_project?
|
|
errors[:base] << ("Your own projects limit is #{owner.projects_limit}! Please contact administrator to increase it")
|
|
end
|
|
rescue
|
|
errors[:base] << ("Cant check your ability to create project")
|
|
end
|
|
|
|
def repo_name
|
|
if path == "gitolite-admin"
|
|
errors.add(:path, " like 'gitolite-admin' is not allowed")
|
|
end
|
|
end
|
|
end
|
|
end
|