Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
gitlab-ce
Commits
e0d0c1b2
Commit
e0d0c1b2
authored
Sep 27, 2012
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1570 from NARKOZ/refactoring
models cleanup
parents
80bfd6a5
a030e4b6
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
181 additions
and
284 deletions
+181
-284
app/models/ability.rb
app/models/ability.rb
+0
-1
app/models/commit.rb
app/models/commit.rb
+6
-18
app/models/event.rb
app/models/event.rb
+10
-11
app/models/issue.rb
app/models/issue.rb
+9
-11
app/models/key.rb
app/models/key.rb
+9
-13
app/models/merge_request.rb
app/models/merge_request.rb
+9
-10
app/models/milestone.rb
app/models/milestone.rb
+16
-17
app/models/note.rb
app/models/note.rb
+16
-30
app/models/project.rb
app/models/project.rb
+18
-42
app/models/project_hook.rb
app/models/project_hook.rb
+12
-0
app/models/protected_branch.rb
app/models/protected_branch.rb
+4
-5
app/models/snippet.rb
app/models/snippet.rb
+9
-22
app/models/system_hook.rb
app/models/system_hook.rb
+12
-2
app/models/tree.rb
app/models/tree.rb
+2
-10
app/models/user.rb
app/models/user.rb
+27
-53
app/models/users_project.rb
app/models/users_project.rb
+5
-5
app/models/web_hook.rb
app/models/web_hook.rb
+8
-11
app/models/wiki.rb
app/models/wiki.rb
+4
-4
config/database.yml.example
config/database.yml.example
+2
-6
config/database.yml.mysql
config/database.yml.mysql
+2
-6
config/database.yml.sqlite
config/database.yml.sqlite
+1
-7
No files found.
app/models/ability.rb
View file @
e0d0c1b2
...
...
@@ -52,7 +52,6 @@ class Ability
:admin_wiki
]
if
project
.
master_access_for?
(
user
)
||
project
.
owner
==
user
rules
.
flatten
end
...
...
app/models/commit.rb
View file @
e0d0c1b2
...
...
@@ -4,24 +4,11 @@ class Commit
include
StaticModel
extend
ActiveModel
::
Naming
attr_accessor
:commit
attr_accessor
:head
attr_accessor
:refs
delegate
:message
,
:authored_date
,
:committed_date
,
:parents
,
:sha
,
:date
,
:committer
,
:author
,
:message
,
:diffs
,
:tree
,
:id
,
:to_patch
,
to: :commit
attr_accessor
:commit
,
:head
,
:refs
delegate
:message
,
:authored_date
,
:committed_date
,
:parents
,
:sha
,
:date
,
:committer
,
:author
,
:message
,
:diffs
,
:tree
,
:id
,
:to_patch
,
to: :commit
class
<<
self
def
find_or_first
(
repo
,
commit_id
=
nil
,
root_ref
)
...
...
@@ -30,6 +17,7 @@ class Commit
else
repo
.
commits
(
root_ref
).
first
end
Commit
.
new
(
commit
)
if
commit
end
...
...
app/models/event.rb
View file @
e0d0c1b2
...
...
@@ -16,6 +16,10 @@ class Event < ActiveRecord::Base
Joined
=
8
# User joined project
Left
=
9
# User left project
delegate
:name
,
:email
,
to: :author
,
prefix:
true
,
allow_nil:
true
delegate
:title
,
to: :issue
,
prefix:
true
,
allow_nil:
true
delegate
:title
,
to: :merge_request
,
prefix:
true
,
allow_nil:
true
belongs_to
:project
belongs_to
:target
,
polymorphic:
true
...
...
@@ -134,25 +138,20 @@ class Event < ActiveRecord::Base
"opened"
end
end
delegate
:name
,
:email
,
to: :author
,
prefix:
true
,
allow_nil:
true
delegate
:title
,
to: :issue
,
prefix:
true
,
allow_nil:
true
delegate
:title
,
to: :merge_request
,
prefix:
true
,
allow_nil:
true
end
# == Schema Information
#
# Table name: events
#
# id :integer
(4)
not null, primary key
# id :integer
not null, primary key
# target_type :string(255)
# target_id :integer
(4)
# target_id :integer
# title :string(255)
# data :text
# project_id :integer
(4)
# project_id :integer
# created_at :datetime not null
# updated_at :datetime not null
# action :integer
(4)
# author_id :integer
(4)
# action :integer
# author_id :integer
#
app/models/issue.rb
View file @
e0d0c1b2
...
...
@@ -9,8 +9,7 @@ class Issue < ActiveRecord::Base
belongs_to
:milestone
validates
:description
,
length:
{
within:
0
..
2000
}
validates
:description
,
length:
{
within:
0
..
2000
}
def
self
.
open_for
(
user
)
opened
.
assigned
(
user
)
...
...
@@ -32,22 +31,21 @@ class Issue < ActiveRecord::Base
closed_changed?
&&
!
closed
end
end
# == Schema Information
#
# Table name: issues
#
# id :integer
(4)
not null, primary key
# id :integer
not null, primary key
# title :string(255)
# assignee_id :integer
(4)
# author_id :integer
(4)
# project_id :integer
(4)
# assignee_id :integer
# author_id :integer
# project_id :integer
# created_at :datetime not null
# updated_at :datetime not null
# closed :boolean(1) default(FALSE), not null
# position :integer(4) default(0)
# critical :boolean(1) default(FALSE), not null
# closed :boolean default(FALSE), not null
# position :integer default(0)
# branch_name :string(255)
# description :text
# milestone_id :integer
(4)
# milestone_id :integer
#
app/models/key.rb
View file @
e0d0c1b2
...
...
@@ -6,14 +6,10 @@ class Key < ActiveRecord::Base
attr_accessible
:key
,
:title
validates
:title
,
presence:
true
,
length:
{
within:
0
..
255
}
validates
:key
,
presence:
true
,
format:
{
:with
=>
/ssh-.{3} /
},
length:
{
within:
0
..
5000
}
validates
:title
,
presence:
true
,
length:
{
within:
0
..
255
}
validates
:key
,
presence:
true
,
length:
{
within:
0
..
5000
},
format:
{
:with
=>
/ssh-.{3} /
}
before_save
:set_identifier
before_validation
:strip_white_space
...
...
@@ -34,7 +30,7 @@ class Key < ActiveRecord::Base
def
set_identifier
if
is_deploy_key
self
.
identifier
=
"deploy_
"
+
Digest
::
MD5
.
hexdigest
(
key
)
self
.
identifier
=
"deploy_
#{
Digest
::
MD5
.
hexdigest
(
key
)
}
"
else
self
.
identifier
=
"
#{
user
.
identifier
}
_
#{
Time
.
now
.
to_i
}
"
end
...
...
@@ -57,17 +53,17 @@ class Key < ActiveRecord::Base
Key
.
where
(
identifier:
identifier
).
count
==
0
end
end
# == Schema Information
#
# Table name: keys
#
# id :integer
(4)
not null, primary key
# user_id :integer
(4)
# id :integer
not null, primary key
# user_id :integer
# created_at :datetime not null
# updated_at :datetime not null
# key :text
# title :string(255)
# identifier :string(255)
# project_id :integer
(4)
# project_id :integer
#
app/models/merge_request.rb
View file @
e0d0c1b2
...
...
@@ -18,8 +18,7 @@ class MergeRequest < ActiveRecord::Base
attr_accessor
:should_remove_source_branch
validates_presence_of
:source_branch
validates_presence_of
:target_branch
validates_presence_of
:source_branch
,
:target_branch
validate
:validate_branches
def
self
.
find_all_by_branch
(
branch_name
)
...
...
@@ -187,23 +186,23 @@ class MergeRequest < ActiveRecord::Base
patch_path
end
end
# == Schema Information
#
# Table name: merge_requests
#
# id :integer
(4)
not null, primary key
# id :integer
not null, primary key
# target_branch :string(255) not null
# source_branch :string(255) not null
# project_id :integer
(4)
not null
# author_id :integer
(4)
# assignee_id :integer
(4)
# project_id :integer
not null
# author_id :integer
# assignee_id :integer
# title :string(255)
# closed :boolean
(1)
default(FALSE), not null
# closed :boolean
default(FALSE), not null
# created_at :datetime not null
# updated_at :datetime not null
# st_commits :text(2147483647
# st_diffs :text(2147483647
# merged :boolean
(1)
default(FALSE), not null
# state :integer
(4)
default(1), not null
# merged :boolean
default(FALSE), not null
# state :integer
default(1), not null
#
app/models/milestone.rb
View file @
e0d0c1b2
# == Schema Information
#
# Table name: milestones
#
# id :integer(4) not null, primary key
# title :string(255) not null
# project_id :integer(4) not null
# description :text
# due_date :date
# closed :boolean(1) default(FALSE), not null
# created_at :datetime not null
# updated_at :datetime not null
#
class
Milestone
<
ActiveRecord
::
Base
attr_accessible
:title
,
:description
,
:due_date
,
:closed
belongs_to
:project
has_many
:issues
validates_presence_of
:project_id
validates_presence_of
:title
validates_presence_of
:title
,
:project_id
def
self
.
active
where
(
"due_date > ? OR due_date IS NULL"
,
Date
.
today
)
end
def
participants
User
.
where
(
id:
issues
.
map
(
&
:assignee_id
))
User
.
where
(
id:
issues
.
pluck
(
:assignee_id
))
end
def
percent_complete
...
...
@@ -39,3 +24,17 @@ class Milestone < ActiveRecord::Base
"expires at
#{
due_date
.
stamp
(
"Aug 21, 2011"
)
}
"
if
due_date
end
end
# == Schema Information
#
# Table name: milestones
#
# id :integer not null, primary key
# title :string(255) not null
# project_id :integer not null
# description :text
# due_date :date
# closed :boolean default(FALSE), not null
# created_at :datetime not null
# updated_at :datetime not null
#
app/models/note.rb
View file @
e0d0c1b2
...
...
@@ -2,39 +2,26 @@ require 'carrierwave/orm/activerecord'
require
'file_size_validator'
class
Note
<
ActiveRecord
::
Base
mount_uploader
:attachment
,
AttachmentUploader
attr_accessible
:note
,
:noteable
,
:noteable_id
,
:noteable_type
,
:project_id
,
:attachment
,
:line_code
belongs_to
:project
belongs_to
:noteable
,
polymorphic:
true
belongs_to
:author
,
class_name:
"User"
belongs_to
:author
,
class_name:
"User"
delegate
:name
,
to: :project
,
prefix:
true
delegate
:name
,
:email
,
to: :author
,
prefix:
true
delegate
:name
,
to: :project
,
prefix:
true
delegate
:name
,
:email
,
to: :author
,
prefix:
true
attr_accessor
:notify
attr_accessor
:notify_author
validates_presence_of
:project
validates
:note
,
presence:
true
,
length:
{
within:
0
..
5000
}
validates
:attachment
,
file_size:
{
maximum:
10
.
megabytes
.
to_i
}
validates
:note
,
presence:
true
,
length:
{
within:
0
..
5000
}
validates
:attachment
,
file_size:
{
maximum:
10
.
megabytes
.
to_i
}
scope
:common
,
where
(
noteable_id:
nil
)
scope
:today
,
where
(
"created_at >= :date"
,
date:
Date
.
today
)
scope
:last_week
,
where
(
"created_at >= :date"
,
date:
(
Date
.
today
-
7
.
days
))
scope
:since
,
lambda
{
|
day
|
where
(
"created_at >= :date"
,
date:
(
day
))
}
...
...
@@ -42,14 +29,13 @@ class Note < ActiveRecord::Base
scope
:inc_author_project
,
includes
(
:project
,
:author
)
scope
:inc_author
,
includes
(
:author
)
mount_uploader
:attachment
,
AttachmentUploader
def
self
.
create_status_change_note
(
noteable
,
author
,
status
)
create
({
noteable:
noteable
,
project:
noteable
.
project
,
author:
author
,
note:
"_Status changed to
#{
status
}
_"
},
without_protection:
true
)
create
({
noteable:
noteable
,
project:
noteable
.
project
,
author:
author
,
note:
"_Status changed to
#{
status
}
_"
},
without_protection:
true
)
end
def
notify
...
...
@@ -114,19 +100,19 @@ class Note < ActiveRecord::Base
note
.
start_with?
(
'-1'
)
||
note
.
start_with?
(
':-1:'
)
end
end
# == Schema Information
#
# Table name: notes
#
# id :integer
(4)
not null, primary key
# id :integer
not null, primary key
# note :text
# noteable_id :string(255)
# noteable_type :string(255)
# author_id :integer
(4)
# author_id :integer
# created_at :datetime not null
# updated_at :datetime not null
# project_id :integer
(4)
# project_id :integer
# attachment :string(255)
# line_code :string(255)
#
app/models/project.rb
View file @
e0d0c1b2
...
...
@@ -8,10 +8,9 @@ class Project < ActiveRecord::Base
attr_accessible
:name
,
:path
,
:description
,
:code
,
:default_branch
,
:issues_enabled
,
:wall_enabled
,
:merge_requests_enabled
,
:wiki_enabled
attr_accessor
:error_code
#
# Relations
#
belongs_to
:owner
,
class_name:
"User"
has_many
:users
,
through: :users_projects
has_many
:events
,
dependent: :destroy
...
...
@@ -26,11 +25,7 @@ class Project < ActiveRecord::Base
has_many
:wikis
,
dependent: :destroy
has_many
:protected_branches
,
dependent: :destroy
attr_accessor
:error_code
#
# Scopes
#
scope
:public_only
,
where
(
private_flag:
false
)
scope
:without_user
,
lambda
{
|
user
|
where
(
"id not in (:ids)"
,
ids:
user
.
projects
.
map
(
&
:id
)
)
}
...
...
@@ -47,7 +42,6 @@ class Project < ActiveRecord::Base
Project
.
transaction
do
project
.
owner
=
user
project
.
save!
# Add user as project master
...
...
@@ -76,36 +70,19 @@ class Project < ActiveRecord::Base
id
&&
valid?
end
#
# Validations
#
validates
:name
,
uniqueness:
true
,
presence:
true
,
length:
{
within:
0
..
255
}
validates
:path
,
uniqueness:
true
,
presence:
true
,
format:
{
with:
/^[a-zA-Z][a-zA-Z0-9_\-\.]*$/
,
message:
"only letters, digits & '_' '-' '.' allowed. Letter should be first"
},
length:
{
within:
0
..
255
}
validates
:description
,
length:
{
within:
0
..
2000
}
validates
:code
,
presence:
true
,
uniqueness:
true
,
format:
{
with:
/^[a-zA-Z][a-zA-Z0-9_\-\.]*$/
,
message:
"only letters, digits & '_' '-' '.' allowed. Letter should be first"
},
length:
{
within:
1
..
255
}
validates
:owner
,
presence:
true
validates
:description
,
length:
{
within:
0
..
2000
}
validates
:name
,
uniqueness:
true
,
presence:
true
,
length:
{
within:
0
..
255
}
validates
:path
,
uniqueness:
true
,
presence:
true
,
length:
{
within:
0
..
255
},
format:
{
with:
/\A[a-zA-Z][a-zA-Z0-9_\-\.]*\z/
,
message:
"only letters, digits & '_' '-' '.' allowed. Letter should be first"
}
validates
:code
,
presence:
true
,
uniqueness:
true
,
length:
{
within:
1
..
255
},
format:
{
with:
/\A[a-zA-Z][a-zA-Z0-9_\-\.]*\z/
,
message:
"only letters, digits & '_' '-' '.' allowed. Letter should be first"
}
validates
:issues_enabled
,
:wall_enabled
,
:merge_requests_enabled
,
:wiki_enabled
,
inclusion:
{
in:
[
true
,
false
]
}
validate
:check_limit
validate
:repo_name
validate
:check_limit
,
:repo_name
def
check_limit
unless
owner
.
can_create_project?
...
...
@@ -170,7 +147,7 @@ class Project < ActiveRecord::Base
end
def
wiki_notes
Note
.
where
(
noteable_id:
wikis
.
map
(
&
:id
),
noteable_type:
'Wiki'
,
project_id:
self
.
id
)
Note
.
where
(
noteable_id:
wikis
.
pluck
(
:id
),
noteable_type:
'Wiki'
,
project_id:
self
.
id
)
end
def
project_id
...
...
@@ -182,19 +159,18 @@ end
#
# Table name: projects
#
# id :integer
(4)
not null, primary key
# id :integer
not null, primary key
# name :string(255)
# path :string(255)
# description :text
# created_at :datetime not null
# updated_at :datetime not null
# private_flag :boolean
(1)
default(TRUE), not null
# private_flag :boolean
default(TRUE), not null
# code :string(255)
# owner_id :integer
(4)
# owner_id :integer
# default_branch :string(255)
# issues_enabled :boolean
(1)
default(TRUE), not null
# wall_enabled :boolean
(1)
default(TRUE), not null
# merge_requests_enabled :boolean
(1)
default(TRUE), not null
# wiki_enabled :boolean
(1)
default(TRUE), not null
# issues_enabled :boolean
default(TRUE), not null
# wall_enabled :boolean
default(TRUE), not null
# merge_requests_enabled :boolean
default(TRUE), not null
# wiki_enabled :boolean
default(TRUE), not null
#
app/models/project_hook.rb
View file @
e0d0c1b2
class
ProjectHook
<
WebHook
belongs_to
:project
end
# == Schema Information
#
# Table name: web_hooks
#
# id :integer not null, primary key
# url :string(255)
# project_id :integer
# created_at :datetime not null
# updated_at :datetime not null
# type :string(255) default("ProjectHook")
#
app/models/protected_branch.rb
View file @
e0d0c1b2
...
...
@@ -4,8 +4,7 @@ class ProtectedBranch < ActiveRecord::Base
attr_accessible
:name
belongs_to
:project
validates_presence_of
:project_id
validates_presence_of
:name
validates_presence_of
:name
,
:project_id
after_save
:update_repository
after_destroy
:update_repository
...
...
@@ -18,14 +17,14 @@ class ProtectedBranch < ActiveRecord::Base
project
.
commit
(
self
.
name
)
end
end
# == Schema Information
#
# Table name: protected_branches
#
# id :integer
(4)
not null, primary key
# project_id :integer
(4)
not null
# id :integer
not null, primary key
# project_id :integer
not null
# name :string(255) not null
# created_at :datetime not null
# updated_at :datetime not null
#
app/models/snippet.rb
View file @
e0d0c1b2
...
...
@@ -7,25 +7,12 @@ class Snippet < ActiveRecord::Base
belongs_to
:author
,
class_name:
"User"
has_many
:notes
,
as: :noteable
,
dependent: :destroy
delegate
:name
,
:email
,
to: :author
,
prefix:
true
delegate
:name
,
:email
,
to: :author
,
prefix:
true
validates_presence_of
:project_id
validates_presence_of
:author_id
validates
:title
,
presence:
true
,
length:
{
within:
0
..
255
}
validates
:file_name
,
presence:
true
,
length:
{
within:
0
..
255
}
validates
:content
,
presence:
true
,
length:
{
within:
0
..
10000
}
validates_presence_of
:author_id
,
:project_id
validates
:title
,
presence:
true
,
length:
{
within:
0
..
255
}
validates
:file_name
,
presence:
true
,
length:
{
within:
0
..
255
}
validates
:content
,
presence:
true
,
length:
{
within:
0
..
10000
}
scope
:fresh
,
order
(
"created_at DESC"
)
scope
:non_expired
,
where
([
"expires_at IS NULL OR expires_at > ?"
,
Time
.
current
])
...
...
@@ -59,18 +46,18 @@ class Snippet < ActiveRecord::Base
expires_at
&&
expires_at
<
Time
.
current
end
end
# == Schema Information
#
# Table name: snippets
#
# id :integer
(4)
not null, primary key
# id :integer
not null, primary key
# title :string(255)
# content :text
# author_id :integer
(4)
not null
# project_id :integer
(4)
not null
# author_id :integer
not null
# project_id :integer
not null
# created_at :datetime not null
# updated_at :datetime not null
# file_name :string(255)
# expires_at :datetime
#
app/models/system_hook.rb
View file @
e0d0c1b2
class
SystemHook
<
WebHook
def
async_execute
(
data
)
Resque
.
enqueue
(
SystemHookWorker
,
id
,
data
)
end
...
...
@@ -9,5 +8,16 @@ class SystemHook < WebHook
sh
.
async_execute
data
end
end
end
# == Schema Information
#
# Table name: web_hooks
#
# id :integer not null, primary key
# url :string(255)
# project_id :integer
# created_at :datetime not null
# updated_at :datetime not null
# type :string(255) default("ProjectHook")
#
app/models/tree.rb
View file @
e0d0c1b2
...
...
@@ -2,16 +2,8 @@ class Tree
include
Linguist
::
BlobHelper
attr_accessor
:path
,
:tree
,
:project
,
:ref
delegate
:contents
,
:basename
,
:name
,
:data
,
:mime_type
,
:mode
,
:size
,
:text?
,
:colorize
,
to: :tree
delegate
:contents
,
:basename
,
:name
,
:data
,
:mime_type
,
:mode
,
:size
,
:text?
,
:colorize
,
to: :tree
def
initialize
(
raw_tree
,
project
,
ref
=
nil
,
path
=
nil
)
@project
,
@ref
,
@path
=
project
,
ref
,
path
...
...
app/models/user.rb
View file @
e0d0c1b2
class
User
<
ActiveRecord
::
Base
include
Account
devise
:database_authenticatable
,
:token_authenticatable
,
:lockable
,
:recoverable
,
:rememberable
,
:trackable
,
:validatable
,
:omniauthable
attr_accessible
:email
,
:password
,
:password_confirmation
,
:remember_me
,
:bio
,
:
name
,
:skype
,
:linkedin
,
:twitter
,
:dark_scheme
,
:
theme_id
,
:force_random_password
,
:
extern_uid
,
:provider
,
:as
=>
[
:default
,
:admin
]
attr_accessible
:email
,
:password
,
:password_confirmation
,
:remember_me
,
:bio
,
:name
,
:
skype
,
:linkedin
,
:twitter
,
:dark_scheme
,
:theme_id
,
:force_random_password
,
:extern_uid
,
:provider
,
:as
=>
[
:default
,
:admin
]
attr_accessible
:projects_limit
,
:as
=>
:admin
attr_accessor
:force_random_password
has_many
:
users_project
s
,
dependent: :destroy
has_many
:
key
s
,
dependent: :destroy
has_many
:projects
,
through: :users_projects
has_many
:users_projects
,
dependent: :destroy
has_many
:issues
,
foreign_key: :author_id
,
dependent: :destroy
has_many
:notes
,
foreign_key: :author_id
,
dependent: :destroy
has_many
:merge_requests
,
foreign_key: :author_id
,
dependent: :destroy
has_many
:my_own_projects
,
class_name:
"Project"
,
foreign_key: :owner_id
has_many
:keys
,
dependent: :destroy
has_many
:events
,
class_name:
"Event"
,
foreign_key: :author_id
,
dependent: :destroy
has_many
:recent_events
,
class_name:
"Event"
,
foreign_key: :author_id
,
order:
"id DESC"
has_many
:issues
,
foreign_key: :author_id
,
dependent: :destroy
has_many
:notes
,
foreign_key: :author_id
,
dependent: :destroy
has_many
:assigned_issues
,
class_name:
"Issue"
,
foreign_key: :assignee_id
,
dependent: :destroy
has_many
:merge_requests
,
foreign_key: :author_id
,
dependent: :destroy
has_many
:assigned_merge_requests
,
class_name:
"MergeRequest"
,
foreign_key: :assignee_id
,
dependent: :destroy
validates
:projects_limit
,
presence:
true
,
numericality:
{
greater_than_or_equal_to:
0
}
has_many
:events
,
class_name:
"Event"
,
foreign_key: :author_id
,
dependent: :destroy
has_many
:recent_events
,
class_name:
"Event"
,
foreign_key: :author_id
,
order:
"id DESC"
has_many
:assigned_issues
,
class_name:
"Issue"
,
foreign_key: :assignee_id
,
dependent: :destroy
has_many
:assigned_merge_requests
,
class_name:
"MergeRequest"
,
foreign_key: :assignee_id
,
dependent: :destroy
validates
:bio
,
length:
{
within:
0
..
255
}
validates
:extern_uid
,
:allow_blank
=>
true
,
:uniqueness
=>
{
:scope
=>
:provider
}
before_save
:ensure_authentication_token
alias_attribute
:private_token
,
:authentication_token
validates
:projects_limit
,
presence:
true
,
numericality:
{
greater_than_or_equal_to:
0
}
scope
:not_in_project
,
lambda
{
|
project
|
where
(
"id not in (:ids)"
,
ids:
project
.
users
.
map
(
&
:id
)
)
}
scope
:admins
,
where
(
admin:
true
)
...
...
@@ -66,6 +33,8 @@ class User < ActiveRecord::Base
scope
:active
,
where
(
blocked:
false
)
before_validation
:generate_password
,
on: :create
before_save
:ensure_authentication_token
alias_attribute
:private_token
,
:authentication_token
def
generate_password
if
self
.
force_random_password
...
...
@@ -107,17 +76,18 @@ class User < ActiveRecord::Base
where
(
"name like :query or email like :query"
,
query:
"%
#{
query
}
%"
)
end
end
# == Schema Information
#
# Table name: users
#
# id :integer
(4)
not null, primary key
# id :integer
not null, primary key
# email :string(255) default(""), not null
# encrypted_password :string(128) default(""), not null
# reset_password_token :string(255)
# reset_password_sent_at :datetime
# remember_created_at :datetime
# sign_in_count :integer
(4)
default(0)
# sign_in_count :integer
default(0)
# current_sign_in_at :datetime
# last_sign_in_at :datetime
# current_sign_in_ip :string(255)
...
...
@@ -125,14 +95,18 @@ end
# created_at :datetime not null
# updated_at :datetime not null
# name :string(255)
# admin :boolean
(1)
default(FALSE), not null
# projects_limit :integer
(4)
default(10)
# admin :boolean
default(FALSE), not null
# projects_limit :integer
default(10)
# skype :string(255) default(""), not null
# linkedin :string(255) default(""), not null
# twitter :string(255) default(""), not null
# authentication_token :string(255)
# dark_scheme :boolean
(1)
default(FALSE), not null
# theme_id :integer
(4)
default(1), not null
# dark_scheme :boolean
default(FALSE), not null
# theme_id :integer
default(1), not null
# bio :string(255)
# blocked :boolean(1) default(FALSE), not null
# blocked :boolean default(FALSE), not null
# failed_attempts :integer default(0)
# locked_at :datetime
# extern_uid :string(255)
# provider :string(255)
#
app/models/users_project.rb
View file @
e0d0c1b2
...
...
@@ -88,15 +88,15 @@ class UsersProject < ActiveRecord::Base
self
.
class
.
access_roles
.
invert
[
self
.
project_access
]
end
end
# == Schema Information
#
# Table name: users_projects
#
# id :integer
(4)
not null, primary key
# user_id :integer
(4)
not null
# project_id :integer
(4)
not null
# id :integer
not null, primary key
# user_id :integer
not null
# project_id :integer
not null
# created_at :datetime not null
# updated_at :datetime not null
# project_access :integer
(4)
default(0), not null
# project_access :integer
default(0), not null
#
app/models/web_hook.rb
View file @
e0d0c1b2
...
...
@@ -6,34 +6,31 @@ class WebHook < ActiveRecord::Base
# HTTParty timeout
default_timeout
10
validates
:url
,
presence:
true
,
format:
{
with:
URI
::
regexp
(
%w(http https)
),
message:
"should be a valid url"
}
validates
:url
,
presence:
true
,
format:
{
with:
URI
::
regexp
(
%w(http https)
),
message:
"should be a valid url"
}
def
execute
(
data
)
parsed_url
=
URI
.
parse
(
url
)
if
parsed_url
.
userinfo
.
blank?
WebHook
.
post
(
url
,
body:
data
.
to_json
,
headers:
{
"Content-Type"
=>
"application/json"
})
else
post_url
=
url
.
gsub
(
parsed_url
.
userinfo
+
"
@"
,
""
)
post_url
=
url
.
gsub
(
"
#{
parsed_url
.
userinfo
}
@"
,
""
)
WebHook
.
post
(
post_url
,
body:
data
.
to_json
,
headers:
{
"Content-Type"
=>
"application/json"
},
headers:
{
"Content-Type"
=>
"application/json"
},
basic_auth:
{
username:
parsed_url
.
user
,
password:
parsed_url
.
password
})
end
end
end
# == Schema Information
#
# Table name: web_hooks
#
# id :integer
(4)
not null, primary key
# id :integer
not null, primary key
# url :string(255)
# project_id :integer
(4)
# project_id :integer
# created_at :datetime not null
# updated_at :datetime not null
# type :string(255) default("ProjectHook")
#
app/models/wiki.rb
View file @
e0d0c1b2
...
...
@@ -32,17 +32,17 @@ class Wiki < ActiveRecord::Base
end
end
end
# == Schema Information
#
# Table name: wikis
#
# id :integer
(4)
not null, primary key
# id :integer
not null, primary key
# title :string(255)
# content :text
# project_id :integer
(4)
# project_id :integer
# created_at :datetime not null
# updated_at :datetime not null
# slug :string(255)
# user_id :integer
(4)
# user_id :integer
#
config/database.yml.example
View file @
e0d0c1b2
...
...
@@ -9,12 +9,11 @@ production:
pool: 5
username: root
password: "secure password"
# host: localhost
# socket: /tmp/mysql.sock
#
# Development specific
#
# Development specific
#
development:
adapter: mysql2
...
...
@@ -38,6 +37,3 @@ test: &test
username: root
password: "secure password"
# socket: /tmp/mysql.sock
cucumber:
<<: *test
config/database.yml.mysql
View file @
e0d0c1b2
...
...
@@ -9,12 +9,11 @@ production:
pool: 5
username: root
password: "secure password"
# host: localhost
# socket: /tmp/mysql.sock
#
# Development specific
#
# Development specific
#
development:
adapter: mysql2
...
...
@@ -38,6 +37,3 @@ test: &test
username: root
password:
# socket: /tmp/mysql.sock
cucumber:
<<: *test
config/database.yml.sqlite
View file @
e0d0c1b2
...
...
@@ -12,11 +12,8 @@ production:
pool: 5
timeout: 5000
#
# Development specific
#
#
# Development specific
#
development:
adapter: sqlite3
...
...
@@ -32,6 +29,3 @@ test: &test
database: db/test.sqlite3
pool: 5
timeout: 5000
cucumber:
<<: *test
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment