Struct mailpot_web::minijinja_utils::MailingList
source · pub struct MailingList {
pub pk: i64,
pub name: String,
pub id: String,
pub address: String,
pub description: Option<String>,
pub topics: Vec<String>,
pub archive_url: Option<String>,
pub inner: DbVal<MailingList>,
pub is_description_html_safe: bool,
}
Fields§
§pk: i64
§name: String
§id: String
§address: String
§description: Option<String>
§topics: Vec<String>
§archive_url: Option<String>
§inner: DbVal<MailingList>
§is_description_html_safe: bool
Implementations§
source§impl MailingList
impl MailingList
sourcepub fn set_safety<O: Borrow<ListOwner>>(
&mut self,
owners: &[O],
administrators: &[String]
)
pub fn set_safety<O: Borrow<ListOwner>>( &mut self, owners: &[O], administrators: &[String] )
Set whether it’s safe to not escape the list’s description field.
If anyone can display arbitrary html in the server, that’s bad.
Note: uses Borrow
so that it can use both DbVal<ListOwner>
and
ListOwner
slices.
Examples found in repository?
web/src/main.rs (line 204)
184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226
async fn root(
mut session: WritableSession,
auth: AuthContext,
State(state): State<Arc<AppState>>,
) -> Result<Html<String>, ResponseError> {
let db = Connection::open_db(state.conf.clone())?;
let lists_values = db.lists()?;
let lists = lists_values
.iter()
.map(|list| {
let months = db.months(list.pk)?;
let posts = db.list_posts(list.pk, None)?;
let newest = posts.last().and_then(|p| {
chrono::Utc
.timestamp_opt(p.timestamp as i64, 0)
.earliest()
.map(|d| d.to_string())
});
let list_owners = db.list_owners(list.pk)?;
let mut list_obj = MailingList::from(list.clone());
list_obj.set_safety(list_owners.as_slice(), &state.conf.administrators);
Ok(minijinja::context! {
newest,
posts => &posts,
months => &months,
list => Value::from_object(list_obj),
})
})
.collect::<Result<Vec<_>, mailpot::Error>>()?;
let crumbs = vec![Crumb {
label: "Home".into(),
url: "/".into(),
}];
let context = minijinja::context! {
page_title => Option::<&'static str>::None,
lists => &lists,
current_user => auth.current_user,
messages => session.drain_messages(),
crumbs => crumbs,
};
Ok(Html(TEMPLATES.get_template("lists.html")?.render(context)?))
}
Trait Implementations§
source§impl Clone for MailingList
impl Clone for MailingList
source§fn clone(&self) -> MailingList
fn clone(&self) -> MailingList
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for MailingList
impl Debug for MailingList
source§impl<'de> Deserialize<'de> for MailingList
impl<'de> Deserialize<'de> for MailingList
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl Display for MailingList
impl Display for MailingList
source§impl From<DbVal<MailingList>> for MailingList
impl From<DbVal<MailingList>> for MailingList
source§impl Object for MailingList
impl Object for MailingList
source§impl PartialEq<MailingList> for MailingList
impl PartialEq<MailingList> for MailingList
source§fn eq(&self, other: &MailingList) -> bool
fn eq(&self, other: &MailingList) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl Serialize for MailingList
impl Serialize for MailingList
source§impl StructObject for MailingList
impl StructObject for MailingList
source§fn get_field(&self, name: &str) -> Option<Value>
fn get_field(&self, name: &str) -> Option<Value>
Invoked by the engine to get a field of a struct. Read more
source§fn static_fields(&self) -> Option<&'static [&'static str]>
fn static_fields(&self) -> Option<&'static [&'static str]>
If possible returns a static vector of field names. Read more
source§fn field_count(&self) -> usize
fn field_count(&self) -> usize
Returns the number of fields. Read more
impl Eq for MailingList
impl StructuralEq for MailingList
impl StructuralPartialEq for MailingList
Auto Trait Implementations§
impl RefUnwindSafe for MailingList
impl Send for MailingList
impl Sync for MailingList
impl Unpin for MailingList
impl UnwindSafe for MailingList
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.