Add ability to delete an event

This commit is contained in:
Chocobozzz
2019-01-25 17:06:57 +01:00
parent b6f905313a
commit dd174f2446
8 changed files with 98 additions and 4 deletions

View File

@@ -36,7 +36,7 @@ defmodule Mobilizon.Actors.Member do
end
end
def is_administrator(%Member{role: 2} = member) do
def is_administrator(%Member{role: 2}) do
{:is_admin, true}
end

View File

@@ -145,12 +145,12 @@ defmodule Mobilizon.Actors.User do
{:ok, user}
end
def owns_actor(%User{default_actor_id: default_actor_id} = user, %Actor{id: actor_id})
def owns_actor(%User{default_actor_id: default_actor_id}, %Actor{id: actor_id})
when default_actor_id == actor_id do
{:is_owned, true}
end
def owns_actor(%User{actors: actors} = user, actor_id) do
def owns_actor(%User{actors: actors}, actor_id) do
case Enum.any?(actors, fn a -> a.id == actor_id end) do
true -> {:is_owned, true}
_ -> {:is_owned, false}

View File

@@ -82,4 +82,13 @@ defmodule Mobilizon.Events.Event do
:uuid
])
end
def can_event_be_managed_by(%Event{organizer_actor_id: organizer_actor_id}, actor_id)
when organizer_actor_id == actor_id do
{:event_can_be_managed, true}
end
def can_event_be_managed_by(_event, _actor) do
{:event_can_be_managed, false}
end
end

View File

@@ -103,6 +103,16 @@ defmodule Mobilizon.Events do
"""
def get_event!(id), do: Repo.get!(Event, id)
@doc """
Gets a single event.
"""
def get_event(id) do
case Repo.get(Event, id) do
nil -> {:error, :event_not_found}
event -> {:ok, event}
end
end
@doc """
Gets an event by it's URL
"""
@@ -311,6 +321,15 @@ defmodule Mobilizon.Events do
Repo.delete(event)
end
@doc """
Deletes a Event.
Raises an exception if it fails.
"""
def delete_event!(%Event{} = event) do
Repo.delete!(event)
end
@doc """
Returns an `%Ecto.Changeset{}` for tracking event changes.