diff --git a/lib/philomena/bans/subnet.ex b/lib/philomena/bans/subnet.ex index bf8b8533..45285748 100644 --- a/lib/philomena/bans/subnet.ex +++ b/lib/philomena/bans/subnet.ex @@ -42,7 +42,7 @@ defmodule Philomena.Bans.Subnet do changeset |> get_field(:specification) |> case do - %Postgrex.INET{address: {h1, h2, h3, h4, h5, h6, h7, h8}, netmask: 128} -> + %Postgrex.INET{address: {h1, h2, h3, h4, _h5, _h6, _h7, _h8}, netmask: 128} -> %Postgrex.INET{address: {h1, h2, h3, h4, 0, 0, 0, 0}, netmask: 64} val -> diff --git a/lib/philomena/duplicate_reports/duplicate_report.ex b/lib/philomena/duplicate_reports/duplicate_report.ex index 231e41c7..34dfbf4c 100644 --- a/lib/philomena/duplicate_reports/duplicate_report.ex +++ b/lib/philomena/duplicate_reports/duplicate_report.ex @@ -30,6 +30,7 @@ defmodule Philomena.DuplicateReports.DuplicateReport do |> cast(attrs, [:reason]) |> put_assoc(:user, attribution[:user]) |> validate_length(:reason, max: 250, count: :bytes) + |> validate_source_is_not_target() end def accept_changeset(duplicate_report, user) do @@ -55,4 +56,14 @@ defmodule Philomena.DuplicateReports.DuplicateReport do |> put_change(:modifier_id, user.id) |> put_change(:state, "rejected") end + + defp validate_source_is_not_target(changeset) do + source_id = get_field(changeset, :image_id) + target_id = get_field(changeset, :duplicate_of_image_id) + + case source_id == target_id do + true -> add_error(changeset, :image_id, "must be different from the target") + false -> changeset + end + end end