Uploading of performer photos.
This commit is contained in:
@@ -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")
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user