Fixes with addresses and iCalendar
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
@@ -69,4 +69,20 @@ defmodule Mobilizon.Addresses.Address do
|
||||
|
||||
put_change(changeset, :url, url)
|
||||
end
|
||||
|
||||
def coords(nil), do: nil
|
||||
|
||||
def coords(%__MODULE__{} = address) do
|
||||
with %Geo.Point{coordinates: {latitude, longitude}, srid: 4326} <- address.geom do
|
||||
{latitude, longitude}
|
||||
end
|
||||
end
|
||||
|
||||
def representation(nil), do: nil
|
||||
|
||||
def representation(%__MODULE__{} = address) do
|
||||
"#{address.street} #{address.postal_code} #{address.locality} #{address.region} #{
|
||||
address.country
|
||||
}"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -187,7 +187,8 @@ defmodule Mobilizon.Events.Event do
|
||||
|
||||
# In case the provided addresses is an existing one
|
||||
@spec put_address(Changeset.t(), map) :: Changeset.t()
|
||||
defp put_address(%Changeset{} = changeset, %{physical_address: %{id: id} = _physical_address}) when not is_nil(id) do
|
||||
defp put_address(%Changeset{} = changeset, %{physical_address: %{id: id} = _physical_address})
|
||||
when not is_nil(id) do
|
||||
case Addresses.get_address(id) do
|
||||
%Address{} = address ->
|
||||
put_assoc(changeset, :physical_address, address)
|
||||
|
||||
@@ -6,6 +6,7 @@ defmodule Mobilizon.Service.Export.ICalendar do
|
||||
alias Mobilizon.{Actors, Events, Users}
|
||||
alias Mobilizon.Actors.Actor
|
||||
alias Mobilizon.Events.{Event, FeedToken}
|
||||
alias Mobilizon.Addresses.Address
|
||||
alias Mobilizon.Users.User
|
||||
|
||||
@doc """
|
||||
@@ -31,7 +32,10 @@ defmodule Mobilizon.Service.Export.ICalendar do
|
||||
dtend: event.ends_on,
|
||||
description: HtmlSanitizeEx.strip_tags(event.description),
|
||||
uid: event.uuid,
|
||||
categories: event.tags |> Enum.map(& &1.slug)
|
||||
url: event.url,
|
||||
geo: Address.coords(event.physical_address),
|
||||
location: Address.representation(event.physical_address),
|
||||
categories: event.tags |> Enum.map(& &1.title)
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user