summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-03-04 15:35:15 +0200
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-03-04 15:35:15 +0200
commit0727edd8a0c68b640b95fabce21472b04a806562 (patch)
tree5337e8f6b546806e4c4697048ff695a6b6f05697 /app/models
parent3fe9d2972f37f408f403a98a3bdde16174163350 (diff)
downloadgitlab-ce-0727edd8a0c68b640b95fabce21472b04a806562.tar.gz
Removed issues,mr delete buttons. Refactored models
Diffstat (limited to 'app/models')
-rw-r--r--app/models/key.rb2
-rw-r--r--app/models/key_observer.rb9
-rw-r--r--app/models/project.rb78
-rw-r--r--app/models/project_observer.rb9
4 files changed, 28 insertions, 70 deletions
diff --git a/app/models/key.rb b/app/models/key.rb
index c1bcc348f12..1d7aae359f4 100644
--- a/app/models/key.rb
+++ b/app/models/key.rb
@@ -14,8 +14,6 @@ class Key < ActiveRecord::Base
before_save :set_identifier
before_validation :strip_white_space
- after_save :update_repository
- after_destroy :repository_delete_key
delegate :name, :email, :to => :user, :prefix => true
validate :unique_key
diff --git a/app/models/key_observer.rb b/app/models/key_observer.rb
new file mode 100644
index 00000000000..fac53a67925
--- /dev/null
+++ b/app/models/key_observer.rb
@@ -0,0 +1,9 @@
+class KeyObserver < ActiveRecord::Observer
+ def after_save(key)
+ key.update_repository
+ end
+
+ def after_destroy(key)
+ key.repository_delete_key
+ end
+end
diff --git a/app/models/project.rb b/app/models/project.rb
index 7a99ee6f7ad..32b244597f3 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -3,19 +3,17 @@ require "grit"
class Project < ActiveRecord::Base
belongs_to :owner, :class_name => "User"
- has_many :events, :dependent => :destroy
+ has_many :users, :through => :users_projects
+ has_many :events, :dependent => :destroy
has_many :merge_requests, :dependent => :destroy
- has_many :issues, :dependent => :destroy, :order => "position"
+ has_many :issues, :dependent => :destroy, :order => "position"
has_many :users_projects, :dependent => :destroy
- has_many :users, :through => :users_projects
- has_many :notes, :dependent => :destroy
- has_many :snippets, :dependent => :destroy
- has_many :deploy_keys, :dependent => :destroy, :foreign_key => "project_id", :class_name => "Key"
- has_many :web_hooks, :dependent => :destroy
+ has_many :notes, :dependent => :destroy
+ has_many :snippets, :dependent => :destroy
+ has_many :deploy_keys, :dependent => :destroy, :foreign_key => "project_id", :class_name => "Key"
+ has_many :web_hooks, :dependent => :destroy
+ has_many :wikis, :dependent => :destroy
has_many :protected_branches, :dependent => :destroy
- has_many :wikis, :dependent => :destroy
-
- acts_as_taggable
validates :name,
:uniqueness => true,
@@ -39,15 +37,10 @@ class Project < ActiveRecord::Base
:message => "only letters, digits & '_' '-' '.' allowed" },
:length => { :within => 3..255 }
- validates :owner,
- :presence => true
-
+ validates :owner, :presence => true
validate :check_limit
validate :repo_name
- after_destroy :destroy_repository
- after_save :update_repository
-
attr_protected :private_flag, :owner_id
scope :public_only, where(:private_flag => false)
@@ -163,18 +156,6 @@ class Project < ActiveRecord::Base
users_projects.find_by_user_id(user_id)
end
- def fresh_merge_requests(n)
- merge_requests.includes(:project, :author).order("created_at desc").first(n)
- end
-
- def fresh_issues(n)
- issues.includes(:project, :author).order("created_at desc").first(n)
- end
-
- def fresh_notes(n)
- notes.inc_author_project.order("created_at desc").first(n)
- end
-
def common_notes
notes.where(:noteable_type => ["", nil]).inc_author_project
end
@@ -277,9 +258,7 @@ class Project < ActiveRecord::Base
end
def last_activity
- events.last
- rescue
- nil
+ events.last || nil
end
def last_activity_date
@@ -294,43 +273,6 @@ class Project < ActiveRecord::Base
last_activity_date
end
- # Get project updates from cache
- # or calculate.
- def cached_updates(limit, expire = 2.minutes)
- activities_key = "project_#{id}_activities"
- cached_activities = Rails.cache.read(activities_key)
- if cached_activities
- activities = cached_activities
- else
- activities = updates(limit)
- Rails.cache.write(activities_key, activities, :expires_in => expire)
- end
-
- activities
- end
-
- # Get 20 events for project like
- # commits, issues or notes
- def updates(n = 3)
- [
- fresh_commits(n),
- fresh_issues(n),
- fresh_notes(n)
- ].compact.flatten.sort do |x, y|
- y.created_at <=> x.created_at
- end[0...n]
- end
-
- def activities(n=3)
- [
- fresh_issues(n),
- fresh_merge_requests(n),
- notes.inc_author_project.where("noteable_type is not null").order("created_at desc").first(n)
- ].compact.flatten.sort do |x, y|
- y.created_at <=> x.created_at
- end[0...n]
- end
-
def check_limit
unless owner.can_create_project?
errors[:base] << ("Your own projects limit is #{owner.projects_limit}! Please contact administrator to increase it")
diff --git a/app/models/project_observer.rb b/app/models/project_observer.rb
new file mode 100644
index 00000000000..135959ab738
--- /dev/null
+++ b/app/models/project_observer.rb
@@ -0,0 +1,9 @@
+class ProjectObserver < ActiveRecord::Observer
+ def after_save(project)
+ project.update_repository
+ end
+
+ def after_destroy(project)
+ project.destroy_repository
+ end
+end