Export participants to different formats

* CSV
* PDF (requires Python dependency `weasyprint`)
* ODS (requires Python dependency `pyexcel_ods3`)

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2021-10-04 18:59:41 +02:00
parent 5dd24e1c9e
commit 0c667b13ae
121 changed files with 10817 additions and 6872 deletions

View File

@@ -0,0 +1,28 @@
defmodule Mobilizon.Service.Export.Participants.CommonTest do
use Mobilizon.DataCase, async: true
import Mobilizon.Factory
alias Mobilizon.Actors.Actor
alias Mobilizon.Service.Export.Participants.Common
test "convert participants to list items" do
participant = insert(:participant)
actor = insert(:actor)
name = Actor.display_name_and_username(actor)
assert [^name, _, ""] = Common.to_list({participant, actor})
end
test "convert participants with metadata to list items" do
participant = insert(:participant, metadata: %{message: "a message"})
actor = insert(:actor)
name = Actor.display_name_and_username(actor)
assert [^name, _, "a message"] = Common.to_list({participant, actor})
end
test "convert anonymous participants to list items" do
participant = insert(:participant)
actor = insert(:actor, domain: nil, preferred_username: "anonymous")
assert ["Anonymous participant", _, ""] = Common.to_list({participant, actor})
end
end