Uploading of performer photos.

This commit is contained in:
codevictory
2021-06-01 18:50:32 +03:00
parent a4ee8421ef
commit d1571414d7
3 changed files with 17 additions and 16 deletions

View File

@@ -4,10 +4,10 @@ defmodule Runosaari.Registration.Performer do
schema "performers" do
field :name, :string
field :confirmed, :boolean, default: false
field :desc, :string
field :seqnum, :integer, default: 999
field :photo_path, :string
field :confirmed, :boolean, default: false
timestamps()
end
@@ -17,17 +17,17 @@ defmodule Runosaari.Registration.Performer do
performer
|> cast(attrs, [
:name,
:confirmed,
:desc,
:seqnum,
:photo_path
:photo_path,
:confirmed
])
|> validate_required([
:name,
:confirmed,
:desc,
:seqnum,
:photo_path
:photo_path,
:confirmed
])
|> unique_constraint(:email)
end

View File

@@ -19,7 +19,8 @@ defmodule RunosaariWeb.PerformerController do
render(conn, "new.html", changeset: changeset)
end
def create(conn, %{"performer" => %{"photo" => photo_params} = performer_params}) do
def create(conn, %{"performer" => performer_params}) do
%{"photo" => photo_params} = performer_params
file_uuid = UUID.uuid4(:hex)
photo_filename = photo_params.filename
unique_filename = "#{file_uuid}-#{photo_filename}"
@@ -27,24 +28,23 @@ defmodule RunosaariWeb.PerformerController do
bucket_name = System.get_env("S3_BUCKET_NAME")
public_host = System.get_env("S3_PUBLIC_HOST")
photo =
ExAws.S3.put_object(bucket_name, unique_filename, photo_binary)
|> ExAws.request!()
ExAws.S3.put_object(bucket_name, unique_filename, photo_binary)
|> ExAws.request!()
updated_params =
performer_params
|> Map.update(photo, photo_params, fn _value ->
|> Map.delete("photo")
|> Map.put(
"photo_path",
"https://#{public_host}/#{bucket_name}/performer_photos/#{unique_filename}"
end)
)
updated_changeset = Performer.changeset(%Performer{}, updated_params)
case Registration.create_performer(updated_changeset) do
case Registration.create_performer(updated_params) do
{:ok, _performer} ->
conn
|> put_flash(
:info,
"Kiitokset ilmoittautumisestasi! Osallistumisesi tulee julkiseksi kun tapahtuman järjestäjät vahvistavat sen."
"Esiintyjä tallennettu. Tiedot ovat julkisia esiintyjän ollessa vahvistettu."
)
|> redirect(to: Routes.admin_performer_path(conn, :admin))