diff --git a/lib/proposals_discussion_plugin/api.rb b/lib/proposals_discussion_plugin/api.rb index e0dd4d3..182e910 100644 --- a/lib/proposals_discussion_plugin/api.rb +++ b/lib/proposals_discussion_plugin/api.rb @@ -23,7 +23,7 @@ class ProposalsDiscussionPlugin::API < Grape::API proposal_task.requestor = current_person unless proposal_task.save - render_api_errors!(proposal_task.article_object.errors.full_messages) + render_api_errors!(proposal_task.errors) end {:success => true} #present proposal_task, :with => Entities::Task, :fields => params[:fields] diff --git a/lib/proposals_discussion_plugin/proposal_task.rb b/lib/proposals_discussion_plugin/proposal_task.rb index 6dc1639..20ae82c 100644 --- a/lib/proposals_discussion_plugin/proposal_task.rb +++ b/lib/proposals_discussion_plugin/proposal_task.rb @@ -1,5 +1,4 @@ class ProposalsDiscussionPlugin::ProposalTask < Task - has_and_belongs_to_many :categories, class_name: "ProposalsDiscussionPlugin::TaskCategory", join_table: :proposals_discussion_plugin_task_categories, @@ -10,9 +9,13 @@ class ProposalsDiscussionPlugin::ProposalTask < Task validates_presence_of :requestor_id, :target_id validates_associated :article_object - before_validation :simplify_abstract + before_save :simplify_abstract +# before_validation :simplify_abstract validate :require_category - validates_uniqueness_of :proposal_discussion_plugin_simplified_abstract, :scope => ['target_id'], :message => _("Cannot create duplicate proposal") + + validate :unique_simplified_abstract? + +# validates_uniqueness_of :proposal_discussion_plugin_simplified_abstract, :scope => ['target_id'], :message => _("Cannot create duplicate proposal") settings_items :name, :type => String settings_items :ip_address, :type => String @@ -22,6 +25,10 @@ class ProposalsDiscussionPlugin::ProposalTask < Task settings_items :closing_statment, :article_parent_id + def simplify_abstract + self.proposal_discussion_plugin_simplified_abstract = ProposalsDiscussionPlugin::ProposalTask.simplify(self[:data][:article]["abstract"]) + end + scope :pending_evaluated, lambda { |profile, filter_type, filter_text| self .to(profile) @@ -269,14 +276,16 @@ class ProposalsDiscussionPlugin::ProposalTask < Task protected - def simplify_abstract - proposal_discussion_plugin_simplified_abstract = ProposalsDiscussionPlugin::ProposalTask.simplify(self[:data][:article]["abstract"]) - end - def require_category if categories.count == 0 && flagged? errors.add :categories, _('Select at least one category') end end + def unique_simplified_abstract? + sa = ProposalsDiscussionPlugin::ProposalTask.simplify(self[:data][:article]["abstract"]) + r = ProposalsDiscussionPlugin::ProposalTask.find_by_sql ["SELECT 1 AS one FROM tasks WHERE tasks.type IN ('ProposalsDiscussionPlugin::ProposalTask') AND (tasks.proposal_discussion_plugin_simplified_abstract = ? AND tasks.target_id = ?) LIMIT 1", sa, target_id] + errors.add :base, _('This proposal has been previously registered') unless r.empty? + end + end -- libgit2 0.21.2