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

View file

@ -1,172 +1,161 @@
- if version.item_type == 'UsersRole' - case version.item_type
- users_role = get_version_object(version) - when 'UsersRole'
- users_role = current_or_last_object_state(version.item_type, version.item_id)
= 'role' = 'role'
= link_to users_role.role.name, admin_conference_role_path(conference_id: Conference.find(version.conference_id).short_title, id: users_role.role.name) = link_to users_role.role.name, admin_conference_role_path(conference_id: Conference.find(version.conference_id).short_title, id: users_role.role.name)
= version.event == 'create' ? 'to' : 'from' = version.event == 'create' ? 'to' : 'from'
= 'user' = 'user'
= link_to users_role.user.name, admin_user_path(id: users_role.user.id) = link_to users_role.user.name, admin_user_path(id: users_role.user.id)
- elsif version.item_type == 'Subscription' || version.item_type == 'Registration' - when 'Subscription', 'Registration'
= 'conference' = 'conference'
= link_to Conference.find(version.conference_id).title, = link_to Conference.find(version.conference_id).title,
admin_conference_registrations_path(conference_id: Conference.find(version.conference_id).short_title) admin_conference_registrations_path(conference_id: Conference.find(version.conference_id).short_title)
- elsif version.item_type == 'Commercial' - when 'Commercial'
- commercial_last_version = get_version_object(PaperTrail::Version.where(item_type: version.item_type, item_id: version.item_id).last) - commercial = current_or_last_object_state(version.item_type, version.item_id)
- commercialable_last_version = get_version_object(PaperTrail::Version.where(item_type: commercial_last_version.commercialable_type, - commercialable = current_or_last_object_state(commercial.commercialable_type, commercial.commercialable_id)
item_id: commercial_last_version.commercialable_id).last)
- case commercial_last_version.commercialable_type - case commercial.commercialable_type
- when 'Event' - when 'Event'
commercial in event commercial in event
= link_to "#{commercialable_last_version.title}", = link_to commercialable.title,
admin_conference_program_event_path(conference_id: Conference.find(version.conference_id).short_title, id: commercialable_last_version.id) admin_conference_program_event_path(conference_id: Conference.find(version.conference_id).short_title, id: commercialable.id)
- when 'Venue' - when 'Venue'
commercial in venue commercial in venue
- if Venue.find_by(id: commercialable_last_version.id) = link_to commercialable.name,
= link_to "#{commercialable_last_version.name}",
edit_admin_conference_venue_path(conference_id: Conference.find(version.conference_id).short_title, edit_admin_conference_venue_path(conference_id: Conference.find(version.conference_id).short_title,
id: commercialable_last_version.id, anchor: 'commercials-content') id: commercialable.id, anchor: 'commercials-content')
- else
= commercialable_last_version.name
- when 'Conference' - when 'Conference'
= link_to 'commercial', = link_to 'commercial',
admin_conference_commercials_path(conference_id: Conference.find(version.conference_id).short_title) admin_conference_commercials_path(conference_id: Conference.find(version.conference_id).short_title)
- elsif %w(EventsRegistration Comment Vote).include?(version.item_type) - when 'EventsRegistration', 'Comment', 'Vote', 'Event'
= 'event' = 'event'
- event_id = get_version_object(version).try(:event_id) || get_version_object(version).try(:commentable_id) - object = current_or_last_object_state(version.item_type, version.item_id)
= link_to Event.find(event_id).title, - event_id = object.try(:id) || object.try(:event_id) || object.try(:commentable_id)
= link_to current_or_last_object_state('Event', event_id).title,
admin_conference_program_event_path(conference_id: Conference.find(version.conference_id).short_title, id: event_id) admin_conference_program_event_path(conference_id: Conference.find(version.conference_id).short_title, id: event_id)
- elsif version.item_type =='Target' - when 'Target'
= 'target' = 'target'
- if version.item - target = current_or_last_object_state(version.item_type, version.item_id)
= link_to Target.find(version.item_id).to_s, = link_if_alive version, target.to_s, admin_conference_targets_path(conference_id: Conference.find(version.conference_id).short_title)
admin_conference_targets_path(conference_id: Conference.find(version.conference_id).short_title)
- else
= PaperTrail::Version.where(item_type: 'Target', item_id: version.item_id).last.reify.to_s
- elsif version.item_type == 'EventSchedule' - when 'EventSchedule'
- event_schedule = get_version_object(version) - event_schedule = current_or_last_object_state(version.item_type, version.item_id)
event event
= link_to Event.find(event_schedule.event_id), = link_to current_or_last_object_state('Event', event_schedule.event_id).title,
admin_conference_program_event_path(conference_id: Conference.find(version.conference_id).short_title, id: event_schedule.event_id) admin_conference_program_event_path(conference_id: Conference.find(version.conference_id).short_title, id: event_schedule.event_id)
in in
= link_to "Schedule #{event_schedule.schedule_id}", = link_to "Schedule #{event_schedule.schedule_id}",
admin_conference_schedules_path(conference_id: Conference.find(version.conference_id).short_title, id: event_schedule.schedule_id) admin_conference_schedule_path(conference_id: Conference.find(version.conference_id).short_title, id: event_schedule.schedule_id)
- elsif version.item_type == 'Schedule' - when 'Schedule'
- schedule = get_version_object(version) = link_if_alive version, "Schedule #{version.item_id}",
- if version.item admin_conference_schedule_path(conference_id: Conference.find(version.conference_id).short_title, id: version.item_id)
= link_to "Schedule #{event_schedule.schedule_id}",
admin_conference_schedules_path(conference_id: Conference.find(version.conference_id).short_title, id: event_schedule.schedule_id)
- else
= "Schedule #{event_schedule.schedule_id}"
- elsif version.item
- case version.item_type
- when 'Conference' - when 'Conference'
= 'conference' = 'conference'
= link_to Conference.find(version.conference_id).title, = link_to Conference.find(version.conference_id).title,
edit_admin_conference_path(id: Conference.find(version.conference_id).short_title) edit_admin_conference_path(id: Conference.find(version.conference_id).short_title)
- when 'RegistrationPeriod' - when 'RegistrationPeriod'
= link_to 'registration period', = link_if_alive version, 'registration period',
admin_conference_registration_period_path(conference_id: Conference.find(version.conference_id).short_title) admin_conference_registration_period_path(conference_id: Conference.find(version.conference_id).short_title)
- when 'Contact' - when 'Contact'
= link_to 'contact details', = link_if_alive version, 'contact details',
edit_admin_conference_contact_path(conference_id: Conference.find(version.conference_id).short_title) edit_admin_conference_contact_path(conference_id: Conference.find(version.conference_id).short_title)
- when 'Program' - when 'Program'
= link_to 'program', = link_if_alive version, 'program',
admin_conference_program_path(conference_id: Conference.find(version.conference_id).short_title) admin_conference_program_path(conference_id: Conference.find(version.conference_id).short_title)
- when 'Cfp' - when 'Cfp'
= link_to 'cfp', = link_if_alive version, 'cfp',
admin_conference_program_cfp_path(conference_id: Conference.find(version.conference_id).short_title) admin_conference_program_cfp_path(conference_id: Conference.find(version.conference_id).short_title)
- when 'Track' - when 'Track'
= 'track' = 'track'
= link_to Track.find(version.item_id).name, - track = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, track.name,
admin_conference_program_track_path(conference_id: Conference.find(version.conference_id).short_title, id: version.item_id) admin_conference_program_track_path(conference_id: Conference.find(version.conference_id).short_title, id: version.item_id)
- when 'Event'
= 'event'
= link_to Event.find(version.item_id).title,
admin_conference_program_event_path(conference_id: Conference.find(version.conference_id).short_title, id: version.item_id)
- when 'EventType' - when 'EventType'
= 'event type' = 'event type'
= link_to EventType.find(version.item_id).title, - event_type = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, event_type.title,
admin_conference_program_event_types_path(conference_id: Conference.find(version.conference_id).short_title) admin_conference_program_event_types_path(conference_id: Conference.find(version.conference_id).short_title)
- when 'Role' - when 'Role'
= 'role' = 'role'
= link_to Role.find(version.item_id).name, - role = current_or_last_object_state(version.item_type, version.item_id)
admin_conference_role_path(conference_id: Conference.find(version.conference_id).short_title, id: version.item.name) = link_if_alive version, role.name,
admin_conference_role_path(conference_id: Conference.find(version.conference_id).short_title, id: role.name)
- when 'Venue' - when 'Venue'
= 'venue' = 'venue'
= link_to Venue.find(version.item_id).name, - venue = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, venue.name,
admin_conference_venue_path(conference_id: Conference.find(version.conference_id).short_title) admin_conference_venue_path(conference_id: Conference.find(version.conference_id).short_title)
- when 'Lodging' - when 'Lodging'
= 'lodging' = 'lodging'
= link_to Lodging.find(version.item_id).name, - lodging = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, lodging.name,
admin_conference_lodgings_path(conference_id: Conference.find(version.conference_id).short_title) admin_conference_lodgings_path(conference_id: Conference.find(version.conference_id).short_title)
- when 'Room' - when 'Room'
= 'room' = 'room'
= link_to Room.find(version.item_id).name, - room = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, room.name,
admin_conference_venue_rooms_path(conference_id: Conference.find(version.conference_id).short_title) admin_conference_venue_rooms_path(conference_id: Conference.find(version.conference_id).short_title)
- when 'Sponsor' - when 'Sponsor'
= 'sponsor' = 'sponsor'
= link_to Sponsor.find(version.item_id).name, - sponsor = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, sponsor.name,
admin_conference_sponsors_path(conference_id: Conference.find(version.conference_id).short_title) admin_conference_sponsors_path(conference_id: Conference.find(version.conference_id).short_title)
- when 'SponsorshipLevel' - when 'SponsorshipLevel'
= 'sponsorship level' = 'sponsorship level'
= link_to SponsorshipLevel.find(version.item_id).title, - sponsorship_level = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, sponsorship_level.title,
admin_conference_sponsorship_levels_path(conference_id: Conference.find(version.conference_id).short_title) admin_conference_sponsorship_levels_path(conference_id: Conference.find(version.conference_id).short_title)
- when 'Ticket' - when 'Ticket'
= 'ticket' = 'ticket'
= link_to Ticket.find(version.item_id).title, - ticket = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, ticket.title,
admin_conference_ticket_path(conference_id: Conference.find(version.conference_id).short_title, id: version.item_id) admin_conference_ticket_path(conference_id: Conference.find(version.conference_id).short_title, id: version.item_id)
- when 'Campaign' - when 'Campaign'
= 'campaign' = 'campaign'
= link_to Campaign.find(version.item_id).name, - campaign = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, campaign.name,
admin_conference_campaigns_path(conference_id: Conference.find(version.conference_id).short_title) admin_conference_campaigns_path(conference_id: Conference.find(version.conference_id).short_title)
- when 'DifficultyLevel' - when 'DifficultyLevel'
= 'difficulty level' = 'difficulty level'
= link_to DifficultyLevel.find(version.item_id).title, - difficulty_level = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, difficulty_level.title,
admin_conference_program_difficulty_level_path(conference_id: Conference.find(version.conference_id).short_title, id: version.item_id) admin_conference_program_difficulty_level_path(conference_id: Conference.find(version.conference_id).short_title, id: version.item_id)
- when 'Splashpage' - when 'Splashpage'
= link_to 'splashpage', = link_if_alive version, 'splashpage',
admin_conference_splashpage_path(conference_id: Conference.find(version.conference_id).short_title) admin_conference_splashpage_path(conference_id: Conference.find(version.conference_id).short_title)
- when 'EmailSettings' - when 'EmailSettings'
= link_to 'email settings', = link_if_alive version, 'email settings',
admin_conference_emails_path(conference_id: Conference.find(version.conference_id).short_title) admin_conference_emails_path(conference_id: Conference.find(version.conference_id).short_title)
- when 'User' - when 'User'
- if version.event == 'update' - if version.event == 'update'
= 'user' = 'user'
= link_to User.find(version.item_id).name, admin_user_path(id: version.item_id) = link_to current_or_last_object_state('User', version.item_id).name, admin_user_path(id: version.item_id)
- else
= version.item_type.underscore.tr('_', ' ')
/ The last deleted version's name/title is used to describe all the changes in object
- last_deleted_version = PaperTrail::Version.where(item_type: version.item_type, item_id: version.item_id).last.reify
= last_deleted_version.try(:title) || last_deleted_version.try(:name)
- unless %w(Conference Subscription Registration User).include?(version.item_type) - unless %w(Conference Subscription Registration User).include?(version.item_type)
= "in conference" = "in conference"

View file

@ -21,10 +21,12 @@
- model_name = attribute.chomp('_id').camelize - model_name = attribute.chomp('_id').camelize
- if version.event != 'create' - if version.event != 'create'
%td %td
= object_last_description(model_name, values[0]) - associated_object = current_or_last_object_state(model_name, values[0])
= associated_object.try(:title) || associated_object.try(:name)
= "(ID: #{values[0].blank? ? '-' : values[0]})" = "(ID: #{values[0].blank? ? '-' : values[0]})"
%td %td
= object_last_description(model_name, values[1]) - associated_object = current_or_last_object_state(model_name, values[1])
= associated_object.try(:title) || associated_object.try(:name)
= "(ID: #{values[1].blank? ? '-' : values[1]})" = "(ID: #{values[1].blank? ? '-' : values[1]})"
- else - else
@ -42,7 +44,8 @@
- if attribute.include?('_id') - if attribute.include?('_id')
- model_name = attribute.chomp('_id').camelize - model_name = attribute.chomp('_id').camelize
%td %td
= object_last_description(model_name, value) - associated_object = current_or_last_object_state(model_name, value)
= associated_object.try(:title) || associated_object.try(:name)
= "(ID: #{value.blank? ? '-' : value})" = "(ID: #{value.blank? ? '-' : value})"
- else - else
%td= value.blank? ? '-' : value %td= value.blank? ? '-' : value