Improve member adding and excluding flow

Allow to exclude a member

Send emails to the member when it's excluded

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2020-08-14 11:32:23 +02:00
parent ad13a57afc
commit 156eba0551
94 changed files with 2650 additions and 1862 deletions

View File

@@ -5,7 +5,7 @@ defmodule Mobilizon.Todos.Todo do
use Ecto.Schema
import Ecto.Changeset
import Mobilizon.Storage.Ecto, only: [ensure_url: 2]
import Mobilizon.Storage.Ecto, only: [ensure_url: 2, maybe_add_published_at: 1]
alias Mobilizon.Actors.Actor
alias Mobilizon.Todos.TodoList
@@ -16,7 +16,8 @@ defmodule Mobilizon.Todos.Todo do
todo_list: TodoList.t(),
creator: Actor.t(),
assigned_to: Actor.t(),
local: boolean
local: boolean,
published_at: DateTime.t()
}
@primary_key {:id, :binary_id, autogenerate: true}
@@ -26,6 +27,7 @@ defmodule Mobilizon.Todos.Todo do
field(:url, :string)
field(:due_date, :utc_datetime)
field(:local, :boolean, default: true)
field(:published_at, :utc_datetime)
belongs_to(:todo_list, TodoList, type: :binary_id)
belongs_to(:creator, Actor)
belongs_to(:assigned_to, Actor)
@@ -33,7 +35,7 @@ defmodule Mobilizon.Todos.Todo do
timestamps()
end
@required_attrs [:title, :creator_id, :url, :todo_list_id]
@required_attrs [:title, :creator_id, :url, :todo_list_id, :published_at]
@optional_attrs [:status, :due_date, :assigned_to_id, :local]
@attrs @required_attrs ++ @optional_attrs
@@ -42,6 +44,7 @@ defmodule Mobilizon.Todos.Todo do
todo
|> cast(attrs, @attrs)
|> ensure_url(:todo)
|> maybe_add_published_at()
|> validate_required(@required_attrs)
end
end

View File

@@ -5,7 +5,7 @@ defmodule Mobilizon.Todos.TodoList do
use Ecto.Schema
import Ecto.Changeset
import Mobilizon.Storage.Ecto, only: [ensure_url: 2]
import Mobilizon.Storage.Ecto, only: [ensure_url: 2, maybe_add_published_at: 1]
alias Mobilizon.Actors.Actor
alias Mobilizon.Todos.Todo
@@ -13,7 +13,8 @@ defmodule Mobilizon.Todos.TodoList do
title: String.t(),
todos: [Todo.t()],
actor: Actor.t(),
local: boolean
local: boolean,
published_at: DateTime.t()
}
@primary_key {:id, :binary_id, autogenerate: true}
@@ -21,14 +22,14 @@ defmodule Mobilizon.Todos.TodoList do
field(:title, :string)
field(:url, :string)
field(:local, :boolean, default: true)
field(:published_at, :utc_datetime)
belongs_to(:actor, Actor)
has_many(:todos, Todo)
timestamps()
end
@required_attrs [:title, :url, :actor_id]
@required_attrs [:title, :url, :actor_id, :published_at]
@optional_attrs [:local]
@attrs @required_attrs ++ @optional_attrs
@@ -37,6 +38,7 @@ defmodule Mobilizon.Todos.TodoList do
todo_list
|> cast(attrs, @attrs)
|> ensure_url(:todo_list)
|> maybe_add_published_at()
|> validate_required(@required_attrs)
end
end