Skip to content

Commit

Permalink
[admin] New validation stops us from uploading wrong mp3s
Browse files Browse the repository at this point in the history
Sometimes we upload the ++ file as regular and vice versa. No more!
  • Loading branch information
jerodsanto committed Jul 18, 2024
1 parent b8188c0 commit abed4c4
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
22 changes: 22 additions & 0 deletions lib/changelog/schema/episode/episode.ex
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,8 @@ defmodule Changelog.Episode do
|> validate_format(:socialize_url, Regexp.http(), message: Regexp.http_message())
|> validate_published_has_published_at()
|> validate_all_email_fields_together()
|> validate_audio_file_no_plusplus()
|> validate_plusplus_file_yes_plusplus()
|> unique_constraint(:slug, name: :episodes_slug_podcast_id_index)
|> cast_assoc(:episode_hosts)
|> cast_assoc(:episode_guests)
Expand Down Expand Up @@ -537,4 +539,24 @@ defmodule Changelog.Episode do
changeset
end
end

defp validate_audio_file_no_plusplus(changeset) do
audio_file = get_field(changeset, :audio_file)

if audio_file && String.contains?(audio_file.file_name, "++") do
add_error(changeset, :audio_file, "this looks like a ++ mp3 (filename)")
else
changeset
end
end

defp validate_plusplus_file_yes_plusplus(changeset) do
plusplus_file = get_field(changeset, :plusplus_file)

if plusplus_file && !String.contains?(plusplus_file.file_name, "++") do
add_error(changeset, :plusplus_file, "this doesn't look like a ++ mp3 (filename)")
else
changeset
end
end
end
2 changes: 2 additions & 0 deletions lib/changelog_web/templates/admin/episode/_form.html.heex
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,7 @@
<% end %>

<%= file_input(f, :audio_file) %>
<%= AdminHelpers.error_message(f, :audio_file) %>
</div>

<% has_audio_chapters = Enum.any?(f.data.audio_chapters) %>
Expand Down Expand Up @@ -422,6 +423,7 @@
<% end %>

<%= file_input(f, :plusplus_file) %>
<%= AdminHelpers.error_message(f, :plusplus_file) %>
</div>

<% has_plusplus_chapters = Enum.any?(f.data.plusplus_chapters) %>
Expand Down

0 comments on commit abed4c4

Please sign in to comment.