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

@@ -36,5 +36,6 @@ config :ex_aws,
access_key_id: System.get_env("S3_ACCESS_KEY"), access_key_id: System.get_env("S3_ACCESS_KEY"),
secret_access_key: System.get_env("S3_SECRET_KEY"), secret_access_key: System.get_env("S3_SECRET_KEY"),
s3: [ s3: [
host: System.get_env("S3_PRIVATE_HOST") host: System.get_env("S3_PRIVATE_HOST"),
region: System.get_env("S3_REGION")
] ]

View File

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

View File

@@ -19,7 +19,8 @@ defmodule RunosaariWeb.PerformerController do
render(conn, "new.html", changeset: changeset) render(conn, "new.html", changeset: changeset)
end 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) file_uuid = UUID.uuid4(:hex)
photo_filename = photo_params.filename photo_filename = photo_params.filename
unique_filename = "#{file_uuid}-#{photo_filename}" unique_filename = "#{file_uuid}-#{photo_filename}"
@@ -27,24 +28,23 @@ defmodule RunosaariWeb.PerformerController do
bucket_name = System.get_env("S3_BUCKET_NAME") bucket_name = System.get_env("S3_BUCKET_NAME")
public_host = System.get_env("S3_PUBLIC_HOST") public_host = System.get_env("S3_PUBLIC_HOST")
photo =
ExAws.S3.put_object(bucket_name, unique_filename, photo_binary) ExAws.S3.put_object(bucket_name, unique_filename, photo_binary)
|> ExAws.request!() |> ExAws.request!()
updated_params = updated_params =
performer_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}" "https://#{public_host}/#{bucket_name}/performer_photos/#{unique_filename}"
end) )
updated_changeset = Performer.changeset(%Performer{}, updated_params) case Registration.create_performer(updated_params) do
case Registration.create_performer(updated_changeset) do
{:ok, _performer} -> {:ok, _performer} ->
conn conn
|> put_flash( |> put_flash(
:info, :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)) |> redirect(to: Routes.admin_performer_path(conn, :admin))