add event image in iCal export (#842)
This commit is contained in:
@@ -149,6 +149,16 @@ defmodule Mobilizon.Service.Export.ICalendar do
|
||||
icalendar_event
|
||||
end
|
||||
|
||||
icalendar_event =
|
||||
if event.picture do
|
||||
%ICalendar.Event{
|
||||
icalendar_event
|
||||
| attach: {event.picture.file.url, event.picture.file.content_type}
|
||||
}
|
||||
else
|
||||
icalendar_event
|
||||
end
|
||||
|
||||
icalendar_event
|
||||
end
|
||||
|
||||
|
||||
2
mix.exs
2
mix.exs
@@ -155,7 +155,7 @@ defmodule Mobilizon.Mixfile do
|
||||
{:geo, "~> 3.0"},
|
||||
{:geo_postgis, "~> 3.1"},
|
||||
{:timex, "~> 3.0"},
|
||||
{:icalendar, github: "tcitworld/icalendar"},
|
||||
{:icalendar, github: "mobilizon-tools/icalendar"},
|
||||
{:exgravatar, "~> 2.0.1"},
|
||||
# {:json_ld, "~> 0.3"},
|
||||
{:jason, "~> 1.2"},
|
||||
|
||||
2
mix.lock
2
mix.lock
@@ -74,7 +74,7 @@
|
||||
"html_entities": {:hex, :html_entities, "0.5.2", "9e47e70598da7de2a9ff6af8758399251db6dbb7eebe2b013f2bbd2515895c3c", [:mix], [], "hexpm", "c53ba390403485615623b9531e97696f076ed415e8d8058b1dbaa28181f4fdcc"},
|
||||
"http_signatures": {:hex, :http_signatures, "0.1.2", "ed1cc7043abcf5bb4f30d68fb7bad9d618ec1a45c4ff6c023664e78b67d9c406", [:mix], [], "hexpm", "f08aa9ac121829dae109d608d83c84b940ef2f183ae50f2dd1e9a8bc619d8be7"},
|
||||
"httpoison": {:hex, :httpoison, "1.8.2", "9eb9c63ae289296a544842ef816a85d881d4a31f518a0fec089aaa744beae290", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "2bb350d26972e30c96e2ca74a1aaf8293d61d0742ff17f01e0279fef11599921"},
|
||||
"icalendar": {:git, "https://github.com/tcitworld/icalendar.git", "1033d922c82a7223db0ec138e2316557b70ff49f", []},
|
||||
"icalendar": {:git, "https://github.com/mobilizon-tools/icalendar.git", "b8fc5360b1755f60f2768d40f6aca949ef598a00", []},
|
||||
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
|
||||
"inet_cidr": {:hex, :inet_cidr, "1.0.8", "d26bb7bdbdf21ae401ead2092bf2bb4bf57fe44a62f5eaa5025280720ace8a40", [:mix], [], "hexpm", "d5b26da66603bb56c933c65214c72152f0de9a6ea53618b56d63302a68f6a90e"},
|
||||
"ip_reserved": {:hex, :ip_reserved, "0.1.1", "e5112d71f1abf05207f82fd9597d369a5fde1e0b6d1bbe77c02a99bb26ecdc33", [:mix], [{:inet_cidr, "~> 1.0.0", [hex: :inet_cidr, repo: "hexpm", optional: false]}], "hexpm", "55fcd2b6e211caef09ea3f54ef37d43030bec486325d12fe865ab5ed8140a4fe"},
|
||||
|
||||
@@ -19,6 +19,7 @@ defmodule Mobilizon.Service.ICalendarTest do
|
||||
VERSION:2.0
|
||||
PRODID:-//Elixir ICalendar//Mobilizon #{Mobilizon.Config.instance_version()}//EN
|
||||
BEGIN:VEVENT
|
||||
ATTACH;FMTTYPE=#{event.picture.file.content_type}:#{event.picture.file.url}
|
||||
CATEGORIES:#{Enum.map_join(event.tags, ",", & &1.title)}
|
||||
DESCRIPTION:Ceci est une description avec une première phrase assez longue\\,\\n puis sur une seconde ligne
|
||||
DTEND:#{Value.to_ics(event.ends_on)}Z
|
||||
@@ -41,16 +42,26 @@ defmodule Mobilizon.Service.ICalendarTest do
|
||||
|
||||
describe "export the instance's public events" do
|
||||
test "succeds" do
|
||||
%Event{} = event = insert(:event, title: "I'm public")
|
||||
%Event{} = event1 = insert(:event, title: "I'm public")
|
||||
%Event{} = event2 = insert(:event, visibility: :private, title: "I'm private")
|
||||
%Event{} = event3 = insert(:event, title: "Another public")
|
||||
%Event{} = event3 = insert(:event, title: "Another public", picture: nil)
|
||||
%Event{} = event4 = insert(:event, title: "No description", description: nil)
|
||||
|
||||
{:commit, ics} = ICalendarService.create_cache("instance")
|
||||
assert ics =~ event.title
|
||||
assert ics =~ event1.title
|
||||
refute ics =~ event2.title
|
||||
assert ics =~ event3.title
|
||||
assert ics =~ event4.title
|
||||
|
||||
assert Enum.sort(Regex.scan(~r|ATTACH;FMTTYPE=image.*|, ics)) ==
|
||||
Enum.sort([
|
||||
[
|
||||
"ATTACH;FMTTYPE=#{event1.picture.file.content_type}:#{event1.picture.file.url}"
|
||||
],
|
||||
[
|
||||
"ATTACH;FMTTYPE=#{event4.picture.file.content_type}:#{event4.picture.file.url}"
|
||||
]
|
||||
])
|
||||
end
|
||||
|
||||
test "with 50 events" do
|
||||
|
||||
Reference in New Issue
Block a user