neuigkeiten sort und ability

This commit is contained in:
Andreas Stephanides
2015-03-04 15:51:44 +01:00
parent c01590f36c
commit 02c5cc2d55
4 changed files with 34 additions and 16 deletions

View File

@@ -92,7 +92,7 @@ class Ability
# Rechteverwaltung fuer Neuigkeiten # Rechteverwaltung fuer Neuigkeiten
can :index, Rubrik can :index, Rubrik
can [:show], Rubrik, :public=>true can [:show], Rubrik, :public=>true
can [:list], Neuigkeit, Neuigkeit.public.published can [:list], Neuigkeit, :cache_published=>true, :public=>true
can :show, Neuigkeit, :rubrik=>{:public=>true} can :show, Neuigkeit, :rubrik=>{:public=>true}
if loggedin if loggedin

View File

@@ -40,7 +40,10 @@ class Neuigkeit < ActiveRecord::Base
def is_annoncement? def is_annoncement?
self.meeting.nil? !self.meeting.nil?
end
def has_meeting?
!self.meeting.nil?
end end
def self.published def self.published
where("datum <= ? AND datum IS NOT NULL", Time.now.to_date) where("datum <= ? AND datum IS NOT NULL", Time.now.to_date)
@@ -94,22 +97,27 @@ class Neuigkeit < ActiveRecord::Base
self.has_calentries? self.has_calentries?
end end
def update_cache def update_cache
if is_event? if self.has_meeting? && !self.meeting.calentry.nil?
unless self.calentries.upcoming.first.nil? self.update_column(:cache_order, (self.meeting.calentry.start.to_date - Date.today).to_i.abs)
self.update_column(:cache_order, (self.calentries.upcoming.first.start.to_date - Date.today).to_i.abs) self.update_column(:cache_relevant_date, self.meeting.calentry.start.to_date)
self.update_column(:cache_relevant_date, self.calentries.upcoming.first.start.to_date) else
else if self.is_event?
unless self.calentries.recent.first.nil? unless self.calentries.upcoming.first.nil?
self.update_column(:cache_order, (self.calentries.recent.first.start.to_date - Date.today).to_i.abs) self.update_column(:cache_order, (self.calentries.upcoming.first.start.to_date - Date.today).to_i.abs)
self.update_column(:cache_relevant_date, self.calentries.recent.first.start.to_date) self.update_column(:cache_relevant_date, self.calentries.upcoming.first.start.to_date)
else
unless self.calentries.recent.first.nil?
self.update_column(:cache_order, (self.calentries.recent.first.start.to_date - Date.today).to_i.abs)
self.update_column(:cache_relevant_date, self.calentries.recent.first.start.to_date)
end
end end
end
else
unless self.datum.nil?
self.update_column(:cache_order, (self.datum.to_date - Date.today).to_i.abs)
self.update_column(:cache_relevant_date, self.datum.to_date)
else else
self.update_column(:cache_order,0) unless self.datum.nil?
self.update_column(:cache_order, (self.datum.to_date - Date.today).to_i.abs)
self.update_column(:cache_relevant_date, self.datum.to_date)
else
self.update_column(:cache_order,0)
end
end end
end end
unless self.published? unless self.published?

View File

@@ -1,3 +1,6 @@
every 1.day, :at =>'5:00 am' do every 1.day, :at =>'5:00 am' do
rake "-s sitemap:refresh" rake "-s sitemap:refresh"
end end
every 1.day, :at =>'4:00 am' do
rake "-s neuigkeit_cache:update"
end

View File

@@ -0,0 +1,7 @@
namespace :neuigkeit_cache do
task :update =>:environment do
Neuigkeit.all.each do |n|
n.update_cache
end
end
end