diff --git a/docs/README.md b/docs/README.md index aae13026..19fd0f9c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -9,3 +9,4 @@ - [Management Commands](./commands.md) - [Retrieving Static Content from the Boost Amazon S3 Bucket](./static_content.md) - [Syncing Data about Boost Versions and Libraries with GitHub](./syncing_data_with_github.md) +- [News and Moderation](./news.md) diff --git a/docs/news.md b/docs/news.md new file mode 100644 index 00000000..db496c54 --- /dev/null +++ b/docs/news.md @@ -0,0 +1,39 @@ +# News and Moderation + +All of the code for news is [located here](https://github.com/cppalliance/temp-site/tree/develop/news) and the templates are [here](https://github.com/cppalliance/temp-site/tree/develop/templates/news) . + +The model structure is a bit more advanced than many aspects of the Boost +website. All news items inherit from a base concrete class `Entry`. So a +particular type of news, for example Links, has a physical database table +named `news_link` that has a pointer type `ForeignKey` to the corresponding +item in `news_entry`. + +This allows for fast/efficient listing of all News items in reverse chronological +order, but also allows for different types of news to add fields specific to +their type. As of launch, only Polls take advantage of this feature but it +there to allow for better flexability in the future. + +## Definition of Published + +An item is considered published and visible to all users, logged in and anonymous, +if: + +- The published date is in the past +- The item has been approved by a moderator + +## Moderation + +If a user is a moderator, when they create news the items are automatically +approved. This is to avoid an annoying scenario where a moderator enters a new +news item, then has to go to the Moderation List page to approve it. + +However, this does mean moderators can publish things easily which might +for example include typos. + +### Who can moderate? + +Users can moderate if: + +- The user posses the `change_entry` permission to the News Entry model +- The user is in a group which posses the `change_entry` permission to the News Entry model +- The user is a Superuser