Commit df7c52489a890ac38491682b4a3399beb7cdbc86
1 parent
a635b9da
Exists in
master
and in
4 other branches
simple refactoring
Showing
21 changed files
with
258 additions
and
246 deletions
Show diff stats
app/helpers/commits_helper.rb
app/helpers/merge_requests_helper.rb
... | ... | @@ -24,7 +24,7 @@ module MergeRequestsHelper |
24 | 24 | def new_mr_path_from_push_event(event) |
25 | 25 | new_project_merge_request_path( |
26 | 26 | event.project, |
27 | - merge_request: { | |
27 | + merge_request: { | |
28 | 28 | source_branch: event.branch_name, |
29 | 29 | target_branch: event.project.root_ref, |
30 | 30 | title: event.branch_name.titleize | ... | ... |
app/models/ability.rb
1 | 1 | class Ability |
2 | - def self.allowed(object, subject) | |
3 | - case subject.class.name | |
4 | - when "Project" then project_abilities(object, subject) | |
5 | - when "Issue" then issue_abilities(object, subject) | |
6 | - when "Note" then note_abilities(object, subject) | |
7 | - when "Snippet" then snippet_abilities(object, subject) | |
8 | - when "MergeRequest" then merge_request_abilities(object, subject) | |
9 | - else [] | |
2 | + class << self | |
3 | + def allowed(object, subject) | |
4 | + case subject.class.name | |
5 | + when "Project" then project_abilities(object, subject) | |
6 | + when "Issue" then issue_abilities(object, subject) | |
7 | + when "Note" then note_abilities(object, subject) | |
8 | + when "Snippet" then snippet_abilities(object, subject) | |
9 | + when "MergeRequest" then merge_request_abilities(object, subject) | |
10 | + else [] | |
11 | + end | |
10 | 12 | end |
11 | - end | |
12 | 13 | |
13 | - def self.project_abilities(user, project) | |
14 | - rules = [] | |
14 | + def project_abilities(user, project) | |
15 | + rules = [] | |
15 | 16 | |
16 | - rules << [ | |
17 | - :read_project, | |
18 | - :read_wiki, | |
19 | - :read_issue, | |
20 | - :read_milestone, | |
21 | - :read_snippet, | |
22 | - :read_team_member, | |
23 | - :read_merge_request, | |
24 | - :read_note, | |
25 | - :write_project, | |
26 | - :write_issue, | |
27 | - :write_note | |
28 | - ] if project.guest_access_for?(user) | |
17 | + rules << [ | |
18 | + :read_project, | |
19 | + :read_wiki, | |
20 | + :read_issue, | |
21 | + :read_milestone, | |
22 | + :read_snippet, | |
23 | + :read_team_member, | |
24 | + :read_merge_request, | |
25 | + :read_note, | |
26 | + :write_project, | |
27 | + :write_issue, | |
28 | + :write_note | |
29 | + ] if project.guest_access_for?(user) | |
29 | 30 | |
30 | - rules << [ | |
31 | - :download_code, | |
32 | - :write_merge_request, | |
33 | - :write_snippet | |
34 | - ] if project.report_access_for?(user) | |
31 | + rules << [ | |
32 | + :download_code, | |
33 | + :write_merge_request, | |
34 | + :write_snippet | |
35 | + ] if project.report_access_for?(user) | |
35 | 36 | |
36 | - rules << [ | |
37 | - :write_wiki | |
38 | - ] if project.dev_access_for?(user) | |
37 | + rules << [ | |
38 | + :write_wiki | |
39 | + ] if project.dev_access_for?(user) | |
39 | 40 | |
40 | - rules << [ | |
41 | - :modify_issue, | |
42 | - :modify_snippet, | |
43 | - :modify_merge_request, | |
44 | - :admin_project, | |
45 | - :admin_issue, | |
46 | - :admin_milestone, | |
47 | - :admin_snippet, | |
48 | - :admin_team_member, | |
49 | - :admin_merge_request, | |
50 | - :admin_note, | |
51 | - :accept_mr, | |
52 | - :admin_wiki | |
53 | - ] if project.master_access_for?(user) || project.owner == user | |
41 | + rules << [ | |
42 | + :modify_issue, | |
43 | + :modify_snippet, | |
44 | + :modify_merge_request, | |
45 | + :admin_project, | |
46 | + :admin_issue, | |
47 | + :admin_milestone, | |
48 | + :admin_snippet, | |
49 | + :admin_team_member, | |
50 | + :admin_merge_request, | |
51 | + :admin_note, | |
52 | + :accept_mr, | |
53 | + :admin_wiki | |
54 | + ] if project.master_access_for?(user) || project.owner == user | |
54 | 55 | |
55 | - rules.flatten | |
56 | - end | |
56 | + rules.flatten | |
57 | + end | |
57 | 58 | |
58 | - class << self | |
59 | 59 | [:issue, :note, :snippet, :merge_request].each do |name| |
60 | 60 | define_method "#{name}_abilities" do |user, subject| |
61 | 61 | if subject.author == user |
... | ... | @@ -72,8 +72,7 @@ class Ability |
72 | 72 | :"modify_#{name}", |
73 | 73 | ] |
74 | 74 | else |
75 | - subject.respond_to?(:project) ? | |
76 | - project_abilities(user, subject.project) : [] | |
75 | + subject.respond_to?(:project) ? project_abilities(user, subject.project) : [] | |
77 | 76 | end |
78 | 77 | end |
79 | 78 | end | ... | ... |
app/models/event.rb
... | ... | @@ -27,19 +27,22 @@ class Event < ActiveRecord::Base |
27 | 27 | # For Hash only |
28 | 28 | serialize :data |
29 | 29 | |
30 | + # Scopes | |
30 | 31 | scope :recent, order("created_at DESC") |
31 | 32 | scope :code_push, where(action: Pushed) |
32 | 33 | |
33 | - def self.determine_action(record) | |
34 | - if [Issue, MergeRequest].include? record.class | |
35 | - Event::Created | |
36 | - elsif record.kind_of? Note | |
37 | - Event::Commented | |
34 | + class << self | |
35 | + def determine_action(record) | |
36 | + if [Issue, MergeRequest].include? record.class | |
37 | + Event::Created | |
38 | + elsif record.kind_of? Note | |
39 | + Event::Commented | |
40 | + end | |
38 | 41 | end |
39 | - end | |
40 | 42 | |
41 | - def self.recent_for_user user | |
42 | - where(project_id: user.projects.map(&:id)).recent | |
43 | + def recent_for_user user | |
44 | + where(project_id: user.projects.map(&:id)).recent | |
45 | + end | |
43 | 46 | end |
44 | 47 | |
45 | 48 | # Next events currently enabled for system | ... | ... |
app/models/group.rb
1 | -# == Schema Information | |
2 | -# | |
3 | -# Table name: groups | |
4 | -# | |
5 | -# id :integer not null, primary key | |
6 | -# name :string(255) not null | |
7 | -# code :string(255) not null | |
8 | -# owner_id :integer not null | |
9 | -# created_at :datetime not null | |
10 | -# updated_at :datetime not null | |
11 | -# | |
12 | - | |
13 | 1 | class Group < ActiveRecord::Base |
14 | 2 | attr_accessible :code, :name, :owner_id |
15 | 3 | |
... | ... | @@ -18,7 +6,7 @@ class Group < ActiveRecord::Base |
18 | 6 | |
19 | 7 | validates :name, presence: true, uniqueness: true |
20 | 8 | validates :code, presence: true, uniqueness: true |
21 | - validates :owner_id, presence: true | |
9 | + validates :owner, presence: true | |
22 | 10 | |
23 | 11 | delegate :name, to: :owner, allow_nil: true, prefix: true |
24 | 12 | |
... | ... | @@ -31,6 +19,18 @@ class Group < ActiveRecord::Base |
31 | 19 | end |
32 | 20 | |
33 | 21 | def users |
34 | - User.joins(:users_projects).where('users_projects.project_id' => project_ids).uniq | |
22 | + User.joins(:users_projects).where(users_projects: {project_id: project_ids}).uniq | |
35 | 23 | end |
36 | 24 | end |
25 | + | |
26 | +# == Schema Information | |
27 | +# | |
28 | +# Table name: groups | |
29 | +# | |
30 | +# id :integer not null, primary key | |
31 | +# name :string(255) not null | |
32 | +# code :string(255) not null | |
33 | +# owner_id :integer not null | |
34 | +# created_at :datetime not null | |
35 | +# updated_at :datetime not null | |
36 | +# | ... | ... |
app/models/key.rb
... | ... | @@ -6,15 +6,14 @@ class Key < ActiveRecord::Base |
6 | 6 | |
7 | 7 | attr_accessible :key, :title |
8 | 8 | |
9 | + before_validation :strip_white_space | |
10 | + before_save :set_identifier | |
11 | + | |
9 | 12 | validates :title, presence: true, length: { within: 0..255 } |
10 | - validates :key, presence: true, | |
11 | - length: { within: 0..5000 }, | |
12 | - format: { :with => /ssh-.{3} / } | |
13 | + validates :key, presence: true, length: { within: 0..5000 }, format: { :with => /ssh-.{3} / } | |
14 | + validate :unique_key, :fingerprintable_key | |
13 | 15 | |
14 | - before_save :set_identifier | |
15 | - before_validation :strip_white_space | |
16 | 16 | delegate :name, :email, to: :user, prefix: true |
17 | - validate :unique_key, :fingerprintable_key | |
18 | 17 | |
19 | 18 | def strip_white_space |
20 | 19 | self.key = self.key.strip unless self.key.blank? | ... | ... |
app/models/merge_request.rb
... | ... | @@ -7,6 +7,8 @@ class MergeRequest < ActiveRecord::Base |
7 | 7 | attr_accessible :title, :assignee_id, :closed, :target_branch, :source_branch, |
8 | 8 | :author_id_of_changes |
9 | 9 | |
10 | + attr_accessor :should_remove_source_branch | |
11 | + | |
10 | 12 | BROKEN_DIFF = "--broken-diff" |
11 | 13 | |
12 | 14 | UNCHECKED = 1 |
... | ... | @@ -16,9 +18,8 @@ class MergeRequest < ActiveRecord::Base |
16 | 18 | serialize :st_commits |
17 | 19 | serialize :st_diffs |
18 | 20 | |
19 | - attr_accessor :should_remove_source_branch | |
20 | - | |
21 | - validates_presence_of :source_branch, :target_branch | |
21 | + validates :source_branch, presence: true | |
22 | + validates :target_branch, presence: true | |
22 | 23 | validate :validate_branches |
23 | 24 | |
24 | 25 | def self.find_all_by_branch(branch_name) | ... | ... |
app/models/milestone.rb
... | ... | @@ -4,7 +4,8 @@ class Milestone < ActiveRecord::Base |
4 | 4 | belongs_to :project |
5 | 5 | has_many :issues |
6 | 6 | |
7 | - validates_presence_of :title, :project_id | |
7 | + validates :title, presence: true | |
8 | + validates :project, presence: true | |
8 | 9 | |
9 | 10 | def self.active |
10 | 11 | where("due_date > ? OR due_date IS NULL", Date.today) | ... | ... |
app/models/note.rb
... | ... | @@ -2,10 +2,13 @@ require 'carrierwave/orm/activerecord' |
2 | 2 | require 'file_size_validator' |
3 | 3 | |
4 | 4 | class Note < ActiveRecord::Base |
5 | - mount_uploader :attachment, AttachmentUploader | |
5 | + | |
6 | 6 | attr_accessible :note, :noteable, :noteable_id, :noteable_type, :project_id, |
7 | 7 | :attachment, :line_code |
8 | 8 | |
9 | + attr_accessor :notify | |
10 | + attr_accessor :notify_author | |
11 | + | |
9 | 12 | belongs_to :project |
10 | 13 | belongs_to :noteable, polymorphic: true |
11 | 14 | belongs_to :author, class_name: "User" |
... | ... | @@ -13,18 +16,17 @@ class Note < ActiveRecord::Base |
13 | 16 | delegate :name, to: :project, prefix: true |
14 | 17 | delegate :name, :email, to: :author, prefix: true |
15 | 18 | |
16 | - attr_accessor :notify | |
17 | - attr_accessor :notify_author | |
18 | - | |
19 | - validates_presence_of :project | |
20 | - | |
19 | + validates :project, presence: true | |
21 | 20 | validates :note, presence: true, length: { within: 0..5000 } |
22 | 21 | validates :attachment, file_size: { maximum: 10.megabytes.to_i } |
23 | 22 | |
23 | + mount_uploader :attachment, AttachmentUploader | |
24 | + | |
25 | + # Scopes | |
24 | 26 | scope :common, where(noteable_id: nil) |
25 | 27 | scope :today, where("created_at >= :date", date: Date.today) |
26 | 28 | scope :last_week, where("created_at >= :date", date: (Date.today - 7.days)) |
27 | - scope :since, lambda { |day| where("created_at >= :date", date: (day)) } | |
29 | + scope :since, ->(day) { where("created_at >= :date", date: (day)) } | |
28 | 30 | scope :fresh, order("created_at ASC, id ASC") |
29 | 31 | scope :inc_author_project, includes(:project, :author) |
30 | 32 | scope :inc_author, includes(:author) | ... | ... |
app/models/project.rb
... | ... | @@ -28,42 +28,62 @@ class Project < ActiveRecord::Base |
28 | 28 | |
29 | 29 | delegate :name, to: :owner, allow_nil: true, prefix: true |
30 | 30 | |
31 | + # Validations | |
32 | + validates :owner, presence: true | |
33 | + validates :description, length: { within: 0..2000 } | |
34 | + validates :name, uniqueness: true, presence: true, length: { within: 0..255 } | |
35 | + validates :path, uniqueness: true, presence: true, length: { within: 0..255 }, | |
36 | + format: { with: /\A[a-zA-Z][a-zA-Z0-9_\-\.]*\z/, | |
37 | + message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" } | |
38 | + validates :code, presence: true, uniqueness: true, length: { within: 1..255 }, | |
39 | + format: { with: /\A[a-zA-Z][a-zA-Z0-9_\-\.]*\z/, | |
40 | + message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" } | |
41 | + validates :issues_enabled, :wall_enabled, :merge_requests_enabled, | |
42 | + :wiki_enabled, inclusion: { in: [true, false] } | |
43 | + validate :check_limit, :repo_name | |
44 | + | |
31 | 45 | # Scopes |
32 | 46 | scope :public_only, where(private_flag: false) |
33 | 47 | scope :without_user, ->(user) { where("id NOT IN (:ids)", ids: user.projects.map(&:id) ) } |
34 | 48 | scope :not_in_group, ->(group) { where("id NOT IN (:ids)", ids: group.project_ids ) } |
35 | 49 | |
36 | - def self.active | |
37 | - joins(:issues, :notes, :merge_requests).order("issues.created_at, notes.created_at, merge_requests.created_at DESC") | |
38 | - end | |
39 | - | |
40 | - def self.search query | |
41 | - where("name LIKE :query OR code LIKE :query OR path LIKE :query", query: "%#{query}%") | |
42 | - end | |
43 | - | |
44 | - def self.create_by_user(params, user) | |
45 | - project = Project.new params | |
46 | - | |
47 | - Project.transaction do | |
48 | - project.owner = user | |
49 | - project.save! | |
50 | + class << self | |
51 | + def active | |
52 | + joins(:issues, :notes, :merge_requests).order("issues.created_at, notes.created_at, merge_requests.created_at DESC") | |
53 | + end | |
50 | 54 | |
51 | - # Add user as project master | |
52 | - project.users_projects.create!(project_access: UsersProject::MASTER, user: user) | |
55 | + def search query | |
56 | + where("name LIKE :query OR code LIKE :query OR path LIKE :query", query: "%#{query}%") | |
57 | + end | |
53 | 58 | |
54 | - # when project saved no team member exist so | |
55 | - # project repository should be updated after first user add | |
56 | - project.update_repository | |
59 | + def create_by_user(params, user) | |
60 | + project = Project.new params | |
61 | + | |
62 | + Project.transaction do | |
63 | + project.owner = user | |
64 | + project.save! | |
65 | + | |
66 | + # Add user as project master | |
67 | + project.users_projects.create!(project_access: UsersProject::MASTER, user: user) | |
68 | + | |
69 | + # when project saved no team member exist so | |
70 | + # project repository should be updated after first user add | |
71 | + project.update_repository | |
72 | + end | |
73 | + | |
74 | + project | |
75 | + rescue Gitlab::Gitolite::AccessDenied => ex | |
76 | + project.error_code = :gitolite | |
77 | + project | |
78 | + rescue => ex | |
79 | + project.error_code = :db | |
80 | + project.errors.add(:base, "Can't save project. Please try again later") | |
81 | + project | |
57 | 82 | end |
58 | 83 | |
59 | - project | |
60 | - rescue Gitlab::Gitolite::AccessDenied => ex | |
61 | - project.error_code = :gitolite | |
62 | - project | |
63 | - rescue => ex | |
64 | - project.error_code = :db | |
65 | - project.errors.add(:base, "Can't save project. Please try again later") | |
66 | - project | |
84 | + def access_options | |
85 | + UsersProject.access_roles | |
86 | + end | |
67 | 87 | end |
68 | 88 | |
69 | 89 | def git_error? |
... | ... | @@ -74,20 +94,6 @@ class Project < ActiveRecord::Base |
74 | 94 | id && valid? |
75 | 95 | end |
76 | 96 | |
77 | - # Validations | |
78 | - validates :owner, presence: true | |
79 | - validates :description, length: { within: 0..2000 } | |
80 | - validates :name, uniqueness: true, presence: true, length: { within: 0..255 } | |
81 | - validates :path, uniqueness: true, presence: true, length: { within: 0..255 }, | |
82 | - format: { with: /\A[a-zA-Z][a-zA-Z0-9_\-\.]*\z/, | |
83 | - message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" } | |
84 | - validates :code, presence: true, uniqueness: true, length: { within: 1..255 }, | |
85 | - format: { with: /\A[a-zA-Z][a-zA-Z0-9_\-\.]*\z/, | |
86 | - message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" } | |
87 | - validates :issues_enabled, :wall_enabled, :merge_requests_enabled, | |
88 | - :wiki_enabled, inclusion: { in: [true, false] } | |
89 | - validate :check_limit, :repo_name | |
90 | - | |
91 | 97 | def check_limit |
92 | 98 | unless owner.can_create_project? |
93 | 99 | errors[:base] << ("Your own projects limit is #{owner.projects_limit}! Please contact administrator to increase it") |
... | ... | @@ -102,10 +108,6 @@ class Project < ActiveRecord::Base |
102 | 108 | end |
103 | 109 | end |
104 | 110 | |
105 | - def self.access_options | |
106 | - UsersProject.access_roles | |
107 | - end | |
108 | - | |
109 | 111 | def to_param |
110 | 112 | code |
111 | 113 | end | ... | ... |
app/models/protected_branch.rb
... | ... | @@ -4,7 +4,8 @@ class ProtectedBranch < ActiveRecord::Base |
4 | 4 | attr_accessible :name |
5 | 5 | |
6 | 6 | belongs_to :project |
7 | - validates_presence_of :name, :project_id | |
7 | + validates :name, presence: true | |
8 | + validates :project, presence: true | |
8 | 9 | |
9 | 10 | after_save :update_repository |
10 | 11 | after_destroy :update_repository | ... | ... |
app/models/snippet.rb
... | ... | @@ -9,11 +9,13 @@ class Snippet < ActiveRecord::Base |
9 | 9 | |
10 | 10 | delegate :name, :email, to: :author, prefix: true |
11 | 11 | |
12 | - validates_presence_of :author_id, :project_id | |
12 | + validates :author, presence: true | |
13 | + validates :project, presence: true | |
13 | 14 | validates :title, presence: true, length: { within: 0..255 } |
14 | 15 | validates :file_name, presence: true, length: { within: 0..255 } |
15 | 16 | validates :content, presence: true, length: { within: 0..10000 } |
16 | 17 | |
18 | + # Scopes | |
17 | 19 | scope :fresh, order("created_at DESC") |
18 | 20 | scope :non_expired, where(["expires_at IS NULL OR expires_at > ?", Time.current]) |
19 | 21 | scope :expired, where(["expires_at IS NOT NULL AND expires_at < ?", Time.current]) | ... | ... |
app/models/system_hook.rb
1 | 1 | class SystemHook < WebHook |
2 | - def async_execute(data) | |
3 | - Resque.enqueue(SystemHookWorker, id, data) | |
4 | - end | |
5 | - | |
6 | 2 | def self.all_hooks_fire(data) |
7 | 3 | SystemHook.all.each do |sh| |
8 | 4 | sh.async_execute data |
9 | 5 | end |
10 | 6 | end |
7 | + | |
8 | + def async_execute(data) | |
9 | + Resque.enqueue(SystemHookWorker, id, data) | |
10 | + end | |
11 | 11 | end |
12 | 12 | |
13 | 13 | # == Schema Information | ... | ... |
app/models/user.rb
... | ... | @@ -27,53 +27,56 @@ class User < ActiveRecord::Base |
27 | 27 | validates :extern_uid, :allow_blank => true, :uniqueness => {:scope => :provider} |
28 | 28 | validates :projects_limit, presence: true, numericality: {greater_than_or_equal_to: 0} |
29 | 29 | |
30 | - scope :not_in_project, lambda { |project| where("id not in (:ids)", ids: project.users.map(&:id) ) } | |
31 | - scope :admins, where(admin: true) | |
32 | - scope :blocked, where(blocked: true) | |
33 | - scope :active, where(blocked: false) | |
34 | - | |
35 | 30 | before_validation :generate_password, on: :create |
36 | 31 | before_save :ensure_authentication_token |
37 | 32 | alias_attribute :private_token, :authentication_token |
38 | 33 | |
39 | - def generate_password | |
40 | - if self.force_random_password | |
41 | - self.password = self.password_confirmation = Devise.friendly_token.first(8) | |
34 | + # Scopes | |
35 | + scope :not_in_project, ->(project) { where("id not in (:ids)", ids: project.users.map(&:id) ) } | |
36 | + scope :admins, where(admin: true) | |
37 | + scope :blocked, where(blocked: true) | |
38 | + scope :active, where(blocked: false) | |
39 | + | |
40 | + class << self | |
41 | + def filter filter_name | |
42 | + case filter_name | |
43 | + when "admins"; self.admins | |
44 | + when "blocked"; self.blocked | |
45 | + when "wop"; self.without_projects | |
46 | + else | |
47 | + self.active | |
48 | + end | |
42 | 49 | end |
43 | - end | |
44 | 50 | |
45 | - def self.filter filter_name | |
46 | - case filter_name | |
47 | - when "admins"; self.admins | |
48 | - when "blocked"; self.blocked | |
49 | - when "wop"; self.without_projects | |
50 | - else | |
51 | - self.active | |
51 | + def without_projects | |
52 | + where('id NOT IN (SELECT DISTINCT(user_id) FROM users_projects)') | |
52 | 53 | end |
53 | - end | |
54 | 54 | |
55 | - def self.without_projects | |
56 | - where('id NOT IN (SELECT DISTINCT(user_id) FROM users_projects)') | |
57 | - end | |
55 | + def create_from_omniauth(auth, ldap = false) | |
56 | + gitlab_auth.create_from_omniauth(auth, ldap) | |
57 | + end | |
58 | 58 | |
59 | - def self.create_from_omniauth(auth, ldap = false) | |
60 | - gitlab_auth.create_from_omniauth(auth, ldap) | |
61 | - end | |
59 | + def find_or_new_for_omniauth(auth) | |
60 | + gitlab_auth.find_or_new_for_omniauth(auth) | |
61 | + end | |
62 | 62 | |
63 | - def self.find_or_new_for_omniauth(auth) | |
64 | - gitlab_auth.find_or_new_for_omniauth(auth) | |
65 | - end | |
63 | + def find_for_ldap_auth(auth, signed_in_resource = nil) | |
64 | + gitlab_auth.find_for_ldap_auth(auth, signed_in_resource) | |
65 | + end | |
66 | 66 | |
67 | - def self.find_for_ldap_auth(auth, signed_in_resource = nil) | |
68 | - gitlab_auth.find_for_ldap_auth(auth, signed_in_resource) | |
69 | - end | |
67 | + def gitlab_auth | |
68 | + Gitlab::Auth.new | |
69 | + end | |
70 | 70 | |
71 | - def self.gitlab_auth | |
72 | - Gitlab::Auth.new | |
71 | + def search query | |
72 | + where("name LIKE :query or email LIKE :query", query: "%#{query}%") | |
73 | + end | |
73 | 74 | end |
74 | 75 | |
75 | - def self.search query | |
76 | - where("name LIKE :query OR email LIKE :query", query: "%#{query}%") | |
76 | + def generate_password | |
77 | + if self.force_random_password | |
78 | + self.password = self.password_confirmation = Devise.friendly_token.first(8) | |
79 | + end | |
77 | 80 | end |
78 | 81 | end |
79 | 82 | ... | ... |
app/models/users_project.rb
... | ... | @@ -14,62 +14,64 @@ class UsersProject < ActiveRecord::Base |
14 | 14 | after_save :update_repository |
15 | 15 | after_destroy :update_repository |
16 | 16 | |
17 | - validates_uniqueness_of :user_id, scope: [:project_id], message: "already exists in project" | |
18 | - validates_presence_of :user_id | |
19 | - validates_presence_of :project_id | |
17 | + validates :user, presence: true | |
18 | + validates :user_id, uniqueness: { :scope => [:project_id], message: "already exists in project" } | |
19 | + validates :project, presence: true | |
20 | 20 | |
21 | 21 | delegate :name, :email, to: :user, prefix: true |
22 | 22 | |
23 | - def self.bulk_delete(project, user_ids) | |
24 | - UsersProject.transaction do | |
25 | - UsersProject.where(:user_id => user_ids, :project_id => project.id).each do |users_project| | |
26 | - users_project.destroy | |
23 | + class << self | |
24 | + def bulk_delete(project, user_ids) | |
25 | + UsersProject.transaction do | |
26 | + UsersProject.where(:user_id => user_ids, :project_id => project.id).each do |users_project| | |
27 | + users_project.destroy | |
28 | + end | |
27 | 29 | end |
28 | 30 | end |
29 | - end | |
30 | 31 | |
31 | - def self.bulk_update(project, user_ids, project_access) | |
32 | - UsersProject.transaction do | |
33 | - UsersProject.where(:user_id => user_ids, :project_id => project.id).each do |users_project| | |
34 | - users_project.project_access = project_access | |
35 | - users_project.save | |
32 | + def bulk_update(project, user_ids, project_access) | |
33 | + UsersProject.transaction do | |
34 | + UsersProject.where(:user_id => user_ids, :project_id => project.id).each do |users_project| | |
35 | + users_project.project_access = project_access | |
36 | + users_project.save | |
37 | + end | |
36 | 38 | end |
37 | 39 | end |
38 | - end | |
39 | 40 | |
40 | - def self.bulk_import(project, user_ids, project_access) | |
41 | - UsersProject.transaction do | |
42 | - user_ids.each do |user_id| | |
43 | - users_project = UsersProject.new( | |
44 | - project_access: project_access, | |
45 | - user_id: user_id | |
46 | - ) | |
47 | - users_project.project = project | |
48 | - users_project.save | |
41 | + def bulk_import(project, user_ids, project_access) | |
42 | + UsersProject.transaction do | |
43 | + user_ids.each do |user_id| | |
44 | + users_project = UsersProject.new( | |
45 | + project_access: project_access, | |
46 | + user_id: user_id | |
47 | + ) | |
48 | + users_project.project = project | |
49 | + users_project.save | |
50 | + end | |
49 | 51 | end |
50 | 52 | end |
51 | - end | |
52 | 53 | |
53 | - def self.user_bulk_import(user, project_ids, project_access) | |
54 | - UsersProject.transaction do | |
55 | - project_ids.each do |project_id| | |
56 | - users_project = UsersProject.new( | |
57 | - project_access: project_access, | |
58 | - ) | |
59 | - users_project.project_id = project_id | |
60 | - users_project.user_id = user.id | |
61 | - users_project.save | |
54 | + def user_bulk_import(user, project_ids, project_access) | |
55 | + UsersProject.transaction do | |
56 | + project_ids.each do |project_id| | |
57 | + users_project = UsersProject.new( | |
58 | + project_access: project_access, | |
59 | + ) | |
60 | + users_project.project_id = project_id | |
61 | + users_project.user_id = user.id | |
62 | + users_project.save | |
63 | + end | |
62 | 64 | end |
63 | 65 | end |
64 | - end | |
65 | 66 | |
66 | - def self.access_roles | |
67 | - { | |
68 | - "Guest" => GUEST, | |
69 | - "Reporter" => REPORTER, | |
70 | - "Developer" => DEVELOPER, | |
71 | - "Master" => MASTER | |
72 | - } | |
67 | + def access_roles | |
68 | + { | |
69 | + "Guest" => GUEST, | |
70 | + "Reporter" => REPORTER, | |
71 | + "Developer" => DEVELOPER, | |
72 | + "Master" => MASTER | |
73 | + } | |
74 | + end | |
73 | 75 | end |
74 | 76 | |
75 | 77 | def role_access | ... | ... |
app/models/web_hook.rb
... | ... | @@ -7,7 +7,7 @@ class WebHook < ActiveRecord::Base |
7 | 7 | default_timeout 10 |
8 | 8 | |
9 | 9 | validates :url, presence: true, |
10 | - format: { with: URI::regexp(%w(http https)), message: "should be a valid url" } | |
10 | + format: { with: URI::regexp(%w(http https)), message: "should be a valid url" } | |
11 | 11 | |
12 | 12 | def execute(data) |
13 | 13 | parsed_url = URI.parse(url) | ... | ... |
app/models/wiki.rb
... | ... | @@ -5,8 +5,9 @@ class Wiki < ActiveRecord::Base |
5 | 5 | belongs_to :user |
6 | 6 | has_many :notes, as: :noteable, dependent: :destroy |
7 | 7 | |
8 | - validates :content, :title, :user_id, presence: true | |
9 | - validates :title, length: 1..250 | |
8 | + validates :content, presence: true | |
9 | + validates :user, presence: true | |
10 | + validates :title, presence: true, length: 1..250 | |
10 | 11 | |
11 | 12 | before_update :set_slug |
12 | 13 | |
... | ... | @@ -16,21 +17,20 @@ class Wiki < ActiveRecord::Base |
16 | 17 | |
17 | 18 | protected |
18 | 19 | |
20 | + def self.regenerate_from wiki | |
21 | + regenerated_field = [:slug, :content, :title] | |
22 | + | |
23 | + new_wiki = Wiki.new | |
24 | + regenerated_field.each do |field| | |
25 | + new_wiki.send("#{field}=", wiki.send(field)) | |
26 | + end | |
27 | + new_wiki | |
28 | + end | |
29 | + | |
19 | 30 | def set_slug |
20 | 31 | self.slug = self.title.parameterize |
21 | 32 | end |
22 | 33 | |
23 | - class << self | |
24 | - def regenerate_from wiki | |
25 | - regenerated_field = [:slug, :content, :title] | |
26 | - | |
27 | - new_wiki = Wiki.new | |
28 | - regenerated_field.each do |field| | |
29 | - new_wiki.send("#{field}=", wiki.send(field)) | |
30 | - end | |
31 | - new_wiki | |
32 | - end | |
33 | - end | |
34 | 34 | end |
35 | 35 | |
36 | 36 | # == Schema Information | ... | ... |
app/roles/account.rb
app/roles/authority.rb
... | ... | @@ -2,12 +2,12 @@ module Authority |
2 | 2 | # Compatible with all access rights |
3 | 3 | # Should be rewrited for new access rights |
4 | 4 | def add_access(user, *access) |
5 | - access = if access.include?(:admin) | |
6 | - { project_access: UsersProject::MASTER } | |
5 | + access = if access.include?(:admin) | |
6 | + { project_access: UsersProject::MASTER } | |
7 | 7 | elsif access.include?(:write) |
8 | - { project_access: UsersProject::DEVELOPER } | |
8 | + { project_access: UsersProject::DEVELOPER } | |
9 | 9 | else |
10 | - { project_access: UsersProject::REPORTER } | |
10 | + { project_access: UsersProject::REPORTER } | |
11 | 11 | end |
12 | 12 | opts = { user: user } |
13 | 13 | opts.merge!(access) | ... | ... |
app/roles/issue_commonality.rb
... | ... | @@ -8,12 +8,9 @@ module IssueCommonality |
8 | 8 | belongs_to :assignee, class_name: "User" |
9 | 9 | has_many :notes, as: :noteable, dependent: :destroy |
10 | 10 | |
11 | - validates_presence_of :project_id | |
12 | - validates_presence_of :author_id | |
13 | - | |
14 | - validates :title, | |
15 | - presence: true, | |
16 | - length: { within: 0..255 } | |
11 | + validates :project, presence: true | |
12 | + validates :author, presence: true | |
13 | + validates :title, presence: true, length: { within: 0..255 } | |
17 | 14 | validates :closed, inclusion: { in: [true, false] } |
18 | 15 | |
19 | 16 | scope :opened, where(closed: false) | ... | ... |
app/roles/push_event.rb
... | ... | @@ -5,11 +5,11 @@ module PushEvent |
5 | 5 | false |
6 | 6 | end |
7 | 7 | |
8 | - def tag? | |
8 | + def tag? | |
9 | 9 | data[:ref]["refs/tags"] |
10 | 10 | end |
11 | 11 | |
12 | - def branch? | |
12 | + def branch? | |
13 | 13 | data[:ref]["refs/heads"] |
14 | 14 | end |
15 | 15 | |
... | ... | @@ -25,7 +25,7 @@ module PushEvent |
25 | 25 | commit_to =~ /^00000/ |
26 | 26 | end |
27 | 27 | |
28 | - def md_ref? | |
28 | + def md_ref? | |
29 | 29 | !(rm_ref? || new_ref?) |
30 | 30 | end |
31 | 31 | |
... | ... | @@ -37,7 +37,7 @@ module PushEvent |
37 | 37 | data[:after] |
38 | 38 | end |
39 | 39 | |
40 | - def ref_name | |
40 | + def ref_name | |
41 | 41 | if tag? |
42 | 42 | tag_name |
43 | 43 | else | ... | ... |