diff --git a/config/config.exs b/config/config.exs index fb592cd..41a2f80 100644 --- a/config/config.exs +++ b/config/config.exs @@ -36,5 +36,6 @@ config :ex_aws, access_key_id: System.get_env("S3_ACCESS_KEY"), secret_access_key: System.get_env("S3_SECRET_KEY"), s3: [ - host: System.get_env("S3_PRIVATE_HOST") + host: System.get_env("S3_PRIVATE_HOST"), + region: System.get_env("S3_REGION") ] diff --git a/lib/runosaari/registration/performer.ex b/lib/runosaari/registration/performer.ex index e414709..68f3b7a 100644 --- a/lib/runosaari/registration/performer.ex +++ b/lib/runosaari/registration/performer.ex @@ -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 diff --git a/lib/runosaari_web/controllers/performer_controller.ex b/lib/runosaari_web/controllers/performer_controller.ex index 39a5298..9ceaa78 100644 --- a/lib/runosaari_web/controllers/performer_controller.ex +++ b/lib/runosaari_web/controllers/performer_controller.ex @@ -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))