Cleanup obj_desc_and_link

This commit is contained in:
Nishanth Vijayan 2016-08-18 01:28:40 +05:30
parent 7d70f7685e
commit 75ee1371de
3 changed files with 138 additions and 140 deletions

View file

@ -392,13 +392,22 @@ module ApplicationHelper
end
end
# Recieves a PaperTrail::Version object
# Recieves a model_name and id
# Returns nil if model_name is invalid
# Returns object in its current state if its alive
# Returns object as it was before version's change(unless its a create event's version)
# Else Returns object as it was after version's change
def get_version_object(version)
return nil unless version
version.item || version.reify || version.next.reify
# Otherwise Returns object state just before deletion
def current_or_last_object_state(model_name, id)
begin
object = model_name.constantize.find_by(id: id)
rescue NameError
return nil
end
if object.nil?
object_last_version = PaperTrail::Version.where(item_type: model_name, item_id: id).last
object = object_last_version.reify if object_last_version
end
object
end
def event_change_description(version)
@ -423,18 +432,17 @@ module ApplicationHelper
end
def subscription_change_description(version)
user = get_version_object(version).user
user = current_or_last_object_state(version.item_type, version.item_id).user
user_name = user.name unless user.id.to_s == version.whodunnit
version.event == 'create' ? "subscribed #{user_name} to" : "unsubscribed #{user_name} from"
end
def registration_change_description(version)
if version.item_type == 'Registration'
user = get_version_object(version).user
else
registration_id = get_version_object(version).registration_id
registration_last_version = PaperTrail::Version.where(item_type: 'Registration', item_id: registration_id).last
user = get_version_object(registration_last_version).user
user = current_or_last_object_state(version.item_type, version.item_id).user
elsif version.item_type == 'EventsRegistration'
registration_id = current_or_last_object_state(version.item_type, version.item_id).registration_id
user = current_or_last_object_state('Registration', registration_id).user
end
if user.id.to_s == version.whodunnit
@ -453,7 +461,7 @@ module ApplicationHelper
end
def comment_change_description(version)
user = get_version_object(version).user
user = current_or_last_object_state(version.item_type, version.item_id).user
if version.event == 'create'
version.previous.nil? ? 'commented on' : "re-added #{user.name}'s comment on"
else
@ -462,7 +470,7 @@ module ApplicationHelper
end
def vote_change_description(version)
user = get_version_object(version).user
user = current_or_last_object_state(version.item_type, version.item_id).user
if version.event == 'create'
version.previous.nil? ? 'voted on' : "re-added #{user.name}'s vote on"
elsif version.event == 'update'
@ -506,9 +514,7 @@ module ApplicationHelper
end
end
def object_last_description(model_name, id)
object_version = PaperTrail::Version.where(item_type: model_name, item_id: id).last
object = (object_version.reify || object_version.item) if object_version
object.try(:name) || object.try(:title)
def link_if_alive(version, link_text, link_url)
version.item ? link_to(link_text, link_url) : link_text
end
end