4a3acdc916
* Add polls Fix #1629 * Add tests * Fixes * Change API for creating polls * Use name instead of content for votes * Remove poll validation for remote polls * Add polls to public pages * When updating the poll, update options just in case they were changed * Fix public pages showing both poll and other media
38 lines
702 B
Ruby
38 lines
702 B
Ruby
# frozen_string_literal: true
|
|
|
|
class REST::PollSerializer < ActiveModel::Serializer
|
|
attributes :id, :expires_at, :expired,
|
|
:multiple, :votes_count
|
|
|
|
has_many :dynamic_options, key: :options
|
|
|
|
attribute :voted, if: :current_user?
|
|
|
|
def id
|
|
object.id.to_s
|
|
end
|
|
|
|
def dynamic_options
|
|
if !object.expired? && object.hide_totals?
|
|
object.unloaded_options
|
|
else
|
|
object.loaded_options
|
|
end
|
|
end
|
|
|
|
def expired
|
|
object.expired?
|
|
end
|
|
|
|
def voted
|
|
object.votes.where(account: current_user.account).exists?
|
|
end
|
|
|
|
def current_user?
|
|
!current_user.nil?
|
|
end
|
|
|
|
class OptionSerializer < ActiveModel::Serializer
|
|
attributes :title, :votes_count
|
|
end
|
|
end
|