diff --git a/club/templates/club/club_tools.jinja b/club/templates/club/club_tools.jinja
index 1c615952..f18c3698 100644
--- a/club/templates/club/club_tools.jinja
+++ b/club/templates/club/club_tools.jinja
@@ -3,6 +3,10 @@
{% block content %}
+
{% trans %}Communication:{% endtrans %}
+
{% trans %}Counters:{% endtrans %}
{% if object.unix_name == settings.SITH_LAUNDERETTE_MANAGER['unix_name'] %}
diff --git a/com/migrations/0003_auto_20161223_1548.py b/com/migrations/0003_auto_20161223_1548.py
new file mode 100644
index 00000000..b3e14e9d
--- /dev/null
+++ b/com/migrations/0003_auto_20161223_1548.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+from django.conf import settings
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('com', '0002_news_newsdate'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='news',
+ old_name='owner',
+ new_name='author',
+ ),
+ migrations.AlterField(
+ model_name='news',
+ name='moderator',
+ field=models.ForeignKey(null=True, to=settings.AUTH_USER_MODEL, related_name='moderated_news', verbose_name='moderator'),
+ ),
+ ]
diff --git a/com/migrations/0004_auto_20161223_1548.py b/com/migrations/0004_auto_20161223_1548.py
new file mode 100644
index 00000000..00128659
--- /dev/null
+++ b/com/migrations/0004_auto_20161223_1548.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+from django.conf import settings
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('com', '0003_auto_20161223_1548'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='news',
+ name='author',
+ field=models.ForeignKey(to=settings.AUTH_USER_MODEL, related_name='owned_news', verbose_name='author'),
+ ),
+ ]
diff --git a/com/models.py b/com/models.py
index da4d6964..6c48e332 100644
--- a/com/models.py
+++ b/com/models.py
@@ -32,9 +32,18 @@ class News(models.Model):
content = models.TextField(_("content"))
type = models.CharField(_("type"), max_length=16, choices=NEWS_TYPES, default="EVENT")
club = models.ForeignKey(Club, related_name="news", verbose_name=_("club"))
- owner = models.ForeignKey(User, related_name="owned_news", verbose_name=_("owner"))
+ author = models.ForeignKey(User, related_name="owned_news", verbose_name=_("author"))
is_moderated = models.BooleanField(_("is moderated"), default=False)
- moderator = models.ForeignKey(User, related_name="moderated_news", verbose_name=_("owner"), null=True)
+ moderator = models.ForeignKey(User, related_name="moderated_news", verbose_name=_("moderator"), null=True)
+
+ def is_owned_by(self, user):
+ return user.is_in_group(settings.SITH_GROUP_COM_ADMIN_ID) or user == self.author
+
+ def can_be_edited_by(self, user):
+ return user.is_in_group(settings.SITH_GROUP_COM_ADMIN_ID)
+
+ def can_be_viewed_by(self, user):
+ return self.is_moderated or user.is_in_group(settings.SITH_GROUP_COM_ADMIN_ID)
def get_absolute_url(self):
return reverse('com:news_detail', kwargs={'news_id': self.id})
diff --git a/com/templates/com/news_admin_list.jinja b/com/templates/com/news_admin_list.jinja
index fd880f2e..f3176dc7 100644
--- a/com/templates/com/news_admin_list.jinja
+++ b/com/templates/com/news_admin_list.jinja
@@ -1,4 +1,5 @@
{% extends "core/base.jinja" %}
+{% from 'core/macros.jinja' import user_profile_link %}
{% block title %}
{% trans %}News admin{% endtrans %}
@@ -6,19 +7,73 @@
{% block content %}
{% trans %}News{% endtrans %}
-
+ {% trans %}Displayed news{% endtrans %}
+
+
+
+ {% trans %}Type{% endtrans %} |
+ {% trans %}Title{% endtrans %} |
+ {% trans %}Summary{% endtrans %} |
+ {% trans %}Club{% endtrans %} |
+ {% trans %}Author{% endtrans %} |
+ {% trans %}Moderator{% endtrans %} |
+ {% trans %}Start{% endtrans %} |
+ {% trans %}End{% endtrans %} |
+ {% trans %}Actions{% endtrans %} |
+
+
+
+ {% for news in object_list.filter(is_moderated=True) %}
+
+ {{ news.get_type_display() }} |
+ {{ news.title }} |
+ {{ news.summary|markdown }} |
+ {{ news.club }} |
+ {{ user_profile_link(news.author) }} |
+ {{ user_profile_link(news.moderator) }} |
+ {{ news.dates.first().start_date|localtime|date(DATETIME_FORMAT) }}
+ {{ news.dates.first().start_date|localtime|time(DATETIME_FORMAT) }} |
+ {{ news.dates.first().end_date|localtime|date(DATETIME_FORMAT) }}
+ {{ news.dates.first().end_date|localtime|time(DATETIME_FORMAT) }} |
+ {% trans %}View{% endtrans %}
+ {% trans %}Edit{% endtrans %} |
+
+ {% endfor %}
+
+
+ {% trans %}News to moderate{% endtrans %}
+
+
+
+ {% trans %}Type{% endtrans %} |
+ {% trans %}Title{% endtrans %} |
+ {% trans %}Summary{% endtrans %} |
+ {% trans %}Club{% endtrans %} |
+ {% trans %}Author{% endtrans %} |
+ {% trans %}Start{% endtrans %} |
+ {% trans %}End{% endtrans %} |
+ {% trans %}Actions{% endtrans %} |
+
+
+
+ {% for news in object_list.filter(is_moderated=False) %}
+
+ {{ news.get_type_display() }} |
+ {{ news.title }} |
+ {{ news.summary|markdown }} |
+ {{ news.club }} |
+ {{ user_profile_link(news.author) }} |
+ {{ news.dates.first().start_date|localtime|date(DATETIME_FORMAT) }}
+ {{ news.dates.first().start_date|localtime|time(DATETIME_FORMAT) }} |
+ {{ news.dates.first().end_date|localtime|date(DATETIME_FORMAT) }}
+ {{ news.dates.first().end_date|localtime|time(DATETIME_FORMAT) }} |
+ {% trans %}View{% endtrans %}
+ {% trans %}Edit{% endtrans %}
+ {% trans %}Moderate{% endtrans %} |
+
+ {% endfor %}
+
+
{% endblock %}
diff --git a/com/templates/com/news_detail.jinja b/com/templates/com/news_detail.jinja
index e29b32df..6e3fa925 100644
--- a/com/templates/com/news_detail.jinja
+++ b/com/templates/com/news_detail.jinja
@@ -1,4 +1,5 @@
{% extends "core/base.jinja" %}
+{% from 'core/macros.jinja' import user_profile_link %}
{% block title %}
{% trans %}News{% endtrans %} -
@@ -6,9 +7,30 @@
{% endblock %}
{% block content %}
+{% trans %}Back to news{% endtrans %}
{% trans %}News{% endtrans %}
- {{ object }}
- {{ object.dates.all() }}
+ {% if user.is_in_group(settings.SITH_GROUP_COM_ADMIN_ID) or user.is_root %}
+ {% endif %}
+
+ {{ news.title }}
+
+ {{ news.dates.first().start_date|localtime|date(DATETIME_FORMAT) }}
+ {{ news.dates.first().start_date|localtime|time(DATETIME_FORMAT) }} -
+ {{ news.dates.first().end_date|localtime|date(DATETIME_FORMAT) }}
+ {{ news.dates.first().end_date|localtime|time(DATETIME_FORMAT) }}
+
+ {{ news.club }}
+ {{ news.summary|markdown }}
+ {% trans %}Author: {% endtrans %}{{ user_profile_link(news.author) }}
+ {% if news.moderator %}
+ {% trans %}Moderator: {% endtrans %}{{ user_profile_link(news.moderator) }}
+ {% elif user.is_in_group(settings.SITH_GROUP_COM_ADMIN_ID) %}
+ {% trans %}Moderate{% endtrans %}
+ {% endif %}
+ {% if user.can_edit(news) %}
+ {% trans %}Edit (will be remoderated){% endtrans %}
+ {% endif %}
+
{% endblock %}
diff --git a/com/templates/com/news_edit.jinja b/com/templates/com/news_edit.jinja
index e117d062..1b046e96 100644
--- a/com/templates/com/news_edit.jinja
+++ b/com/templates/com/news_edit.jinja
@@ -17,8 +17,15 @@
{% endblock %}
diff --git a/com/templates/com/news_list.jinja b/com/templates/com/news_list.jinja
index 69c2beb8..af11e362 100644
--- a/com/templates/com/news_list.jinja
+++ b/com/templates/com/news_list.jinja
@@ -10,10 +10,11 @@
section {
padding: 5px;
}
-section.news_call {
+section.news_call, section.news_notice {
background: lightgrey;
+ margin: 2px;
}
-section.news_event:nth-child(even) {
+section.news_event:nth-of-type(even) {
background: lightblue;
}
.date {
@@ -25,50 +26,62 @@ section.news_event:nth-child(even) {
{% block content %}
{% trans %}News{% endtrans %}
-
-
{% trans %}Notice{% endtrans %}
{% for news in object_list.filter(type="NOTICE") %}
- {{ news.title }}
- {{ news.summary }}
+
+ {{ news.summary|markdown }}
{% endfor %}
-
-
{% trans %}Calls{% endtrans %}
{% for news in object_list.filter(dates__start_date__lte=timezone.now(), dates__end_date__gte=timezone.now(), type="CALL") %}
- {{ news.title }}
+
{{ news.dates.first().start_date|localtime|date(DATETIME_FORMAT) }}
{{ news.dates.first().start_date|localtime|time(DATETIME_FORMAT) }} -
{{ news.dates.first().end_date|localtime|date(DATETIME_FORMAT) }}
{{ news.dates.first().end_date|localtime|time(DATETIME_FORMAT) }}
- {{ news.summary }}
+ {{ news.summary|markdown }}
{% endfor %}
-
{% trans %}Events{% endtrans %}
- {% for news in object_list.filter(dates__end_date__gte=timezone.now(), type="EVENT") %}
+
{% trans %}Events today and the next few days{% endtrans %}
+ {% for d in NewsDate.objects.filter(end_date__gte=timezone.now(), start_date__lte=timezone.now()+timedelta(days=5),
+ news__type="EVENT", news__is_moderated=True).datetimes('start_date', 'day') %}
+
{{ d|localtime|date(DATETIME_FORMAT) }}
+ {% for news in object_list.filter(dates__start_date__gte=d, dates__start_date__lte=d+timedelta(days=1),
+ type="EVENT").exclude(dates__end_date__lt=timezone.now()) %}
- {{ news.title }}
+
- {{ news.dates.first().start_date|localtime|date(DATETIME_FORMAT) }}
- {{ news.dates.first().start_date|localtime|time(DATETIME_FORMAT) }} -
- {{ news.dates.first().end_date|localtime|date(DATETIME_FORMAT) }}
- {{ news.dates.first().end_date|localtime|time(DATETIME_FORMAT) }}
+ {{ news.dates.first().start_date|localtime|time(DATETIME_FORMAT) }} -
+ {{ news.dates.first().end_date|localtime|time(DATETIME_FORMAT) }}
{{ news.club }}
{{ news.summary|markdown }}
{% endfor %}
+
{% trans %}Coming soon... don't miss!{% endtrans %}
+ {% endfor %}
+ {% for news in object_list.filter(dates__start_date__gte=timezone.now()+timedelta(days=5), type="EVENT") %}
+
+ {{ news.title }}
+ {{ news.dates.first().start_date|localtime|date(DATETIME_FORMAT) }}
+ {{ news.dates.first().start_date|localtime|time(DATETIME_FORMAT) }} -
+ {{ news.dates.first().end_date|localtime|date(DATETIME_FORMAT) }}
+ {{ news.dates.first().end_date|localtime|time(DATETIME_FORMAT) }}
+
+
+ {% endfor %}
+
+ buggy when more than one news, anyway, we won't use it this way
{% for d in news.dates.all() %}
- {{ news.title }}
+
{{ d.start_date|localtime|date(DATETIME_FORMAT) }}
{{ d.start_date|localtime|time(DATETIME_FORMAT) }} -
@@ -80,6 +93,7 @@ section.news_event:nth-child(even) {
{% endfor %}
{% endfor %}
+ -->
{% endblock %}
diff --git a/com/urls.py b/com/urls.py
index abe10d97..bf842472 100644
--- a/com/urls.py
+++ b/com/urls.py
@@ -9,6 +9,7 @@ urlpatterns = [
url(r'^news$', NewsListView.as_view(), name='news_list'),
url(r'^news/admin$', NewsAdminListView.as_view(), name='news_admin_list'),
url(r'^news/create$', NewsCreateView.as_view(), name='news_new'),
+ url(r'^news/(?P
[0-9]+)/moderate$', NewsModerateView.as_view(), name='news_moderate'),
url(r'^news/(?P[0-9]+)/edit$', NewsEditView.as_view(), name='news_edit'),
url(r'^news/(?P[0-9]+)$', NewsDetailView.as_view(), name='news_detail'),
]
diff --git a/com/views.py b/com/views.py
index 9f0b8e70..e90055ee 100644
--- a/com/views.py
+++ b/com/views.py
@@ -1,6 +1,7 @@
-from django.shortcuts import render
+from django.shortcuts import render, redirect
from django.views.generic import ListView, DetailView, RedirectView
from django.views.generic.edit import UpdateView, CreateView
+from django.views.generic.detail import SingleObjectMixin
from django.utils.translation import ugettext_lazy as _
from django.core.urlresolvers import reverse, reverse_lazy
from django.core.exceptions import ValidationError
@@ -10,7 +11,7 @@ from django import forms
from datetime import timedelta
from com.models import Sith, News, NewsDate
-from core.views import CanViewMixin, CanEditMixin, CanEditPropMixin, TabedViewMixin
+from core.views import CanViewMixin, CanEditMixin, CanEditPropMixin, TabedViewMixin, CanCreateMixin
from core.views.forms import SelectDateTime
from club.models import Club
@@ -69,14 +70,15 @@ class IndexEditView(ComEditView):
class NewsForm(forms.ModelForm):
class Meta:
model = News
- fields = ['type', 'title', 'club', 'summary', 'content', 'owner']
+ fields = ['type', 'title', 'club', 'summary', 'content', 'author']
widgets = {
- 'owner': forms.HiddenInput,
+ 'author': forms.HiddenInput,
'type': forms.RadioSelect,
}
start_date = forms.DateTimeField(['%Y-%m-%d %H:%M:%S'], label=_("Start date"), widget=SelectDateTime, required=False)
end_date = forms.DateTimeField(['%Y-%m-%d %H:%M:%S'], label=_("End date"), widget=SelectDateTime, required=False)
until = forms.DateTimeField(['%Y-%m-%d %H:%M:%S'], label=_("Until"), widget=SelectDateTime, required=False)
+ automoderation = forms.BooleanField(label=_("Automoderation"), required=False)
def clean(self):
self.cleaned_data = super(NewsForm, self).clean()
@@ -107,7 +109,7 @@ class NewsForm(forms.ModelForm):
end_date += timedelta(days=7)
return ret
-class NewsEditView(UpdateView):
+class NewsEditView(CanEditMixin, UpdateView):
model = News
form_class = NewsForm
template_name = 'com/news_edit.jinja'
@@ -123,27 +125,70 @@ class NewsEditView(UpdateView):
except: pass
return init
-class NewsCreateView(CreateView):
+ def form_valid(self, form):
+ self.object = form.save()
+ if form.cleaned_data['automoderation'] and self.request.user.is_in_group(settings.SITH_GROUP_COM_ADMIN_ID):
+ self.object.moderator = self.request.user
+ self.object.is_moderated = True
+ self.object.save()
+ else:
+ self.object.is_moderated = False
+ self.object.save()
+ return super(NewsEditView, self).form_valid(form)
+
+class NewsCreateView(CanCreateMixin, CreateView):
model = News
form_class = NewsForm
template_name = 'com/news_edit.jinja'
def get_initial(self):
- init = {'owner': self.request.user}
+ init = {'author': self.request.user}
try:
init['club'] = Club.objects.filter(id=self.request.GET['club']).first()
except: pass
return init
-class NewsAdminListView(ListView):
+ def form_valid(self, form):
+ self.object = form.save()
+ print(form.cleaned_data)
+ if form.cleaned_data['automoderation'] and self.request.user.is_in_group(settings.SITH_GROUP_COM_ADMIN_ID):
+ print("GUY")
+ self.object.moderator = self.request.user
+ self.object.is_moderated = True
+ self.object.save()
+ return super(NewsCreateView, self).form_valid(form)
+
+class NewsModerateView(CanEditMixin, SingleObjectMixin):
+ model = News
+ pk_url_kwarg = 'news_id'
+
+ def get(self, request, *args, **kwargs):
+ self.object = self.get_object()
+ self.object.is_moderated = True
+ self.object.moderator = request.user
+ self.object.save()
+ if 'next' in self.request.GET.keys():
+ return redirect(self.request.GET['next'])
+ return redirect('com:news_admin_list')
+
+class NewsAdminListView(CanEditMixin, ListView):
model = News
template_name = 'com/news_admin_list.jinja'
+ queryset = News.objects.filter(dates__end_date__gte=timezone.now()).distinct().order_by('id')
-class NewsListView(ListView):
+class NewsListView(CanViewMixin, ListView):
model = News
template_name = 'com/news_list.jinja'
-class NewsDetailView(DetailView):
+ def get_context_data(self, **kwargs):
+ kwargs = super(NewsListView, self).get_context_data(**kwargs)
+ kwargs['NewsDate'] = NewsDate
+ kwargs['timedelta'] = timedelta
+ return kwargs
+
+class NewsDetailView(CanViewMixin, DetailView):
model = News
template_name = 'com/news_detail.jinja'
pk_url_kwarg = 'news_id'
+
+
diff --git a/core/templates/core/user_tools.jinja b/core/templates/core/user_tools.jinja
index 5e65b56f..1bbc3107 100644
--- a/core/templates/core/user_tools.jinja
+++ b/core/templates/core/user_tools.jinja
@@ -66,6 +66,7 @@
{% trans %}Communication{% endtrans %}
{% if user.is_in_group(settings.SITH_GROUP_COM_ADMIN_ID) or user.is_root %}
+ - {% trans %}Moderate news{% endtrans %}
- {% trans %}Edit index page{% endtrans %}
- {% trans %}Edit alert message{% endtrans %}
- {% trans %}Edit information message{% endtrans %}
diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po
index 15150033..7f8956a7 100644
--- a/locale/fr/LC_MESSAGES/django.po
+++ b/locale/fr/LC_MESSAGES/django.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-12-23 03:16+0100\n"
+"POT-Creation-Date: 2016-12-23 18:25+0100\n"
"PO-Revision-Date: 2016-07-18\n"
"Last-Translator: Skia \n"
"Language-Team: AE info \n"
@@ -178,6 +178,8 @@ msgid "User"
msgstr "Utilisateur"
#: accounting/models.py:207 club/templates/club/club_detail.jinja:5
+#: com/templates/com/news_admin_list.jinja:17
+#: com/templates/com/news_admin_list.jinja:51
#: counter/templates/counter/invoices_call.jinja:20
msgid "Club"
msgstr "Club"
@@ -347,7 +349,8 @@ msgstr "Nouveau compte club"
#: accounting/templates/accounting/bank_account_list.jinja:21
#: accounting/templates/accounting/club_account_details.jinja:55
#: accounting/templates/accounting/journal_details.jinja:73 club/views.py:54
-#: com/templates/com/news_admin_list.jinja:17 core/templates/core/file.jinja:38
+#: com/templates/com/news_admin_list.jinja:39
+#: com/templates/com/news_admin_list.jinja:71 core/templates/core/file.jinja:38
#: core/templates/core/page.jinja:31 core/templates/core/user_tools.jinja:38
#: core/views/user.py:152 counter/templates/counter/cash_summary_list.jinja:53
#: counter/templates/counter/counter_list.jinja:17
@@ -411,10 +414,14 @@ msgid "Name"
msgstr "Nom"
#: accounting/templates/accounting/club_account_details.jinja:29
+#: com/templates/com/news_admin_list.jinja:20
+#: com/templates/com/news_admin_list.jinja:53
msgid "Start"
msgstr "Début"
#: accounting/templates/accounting/club_account_details.jinja:30
+#: com/templates/com/news_admin_list.jinja:21
+#: com/templates/com/news_admin_list.jinja:54
msgid "End"
msgstr "Fin"
@@ -436,6 +443,8 @@ msgstr "Fermé"
#: accounting/templates/accounting/club_account_details.jinja:34
#: accounting/templates/accounting/journal_details.jinja:41
+#: com/templates/com/news_admin_list.jinja:22
+#: com/templates/com/news_admin_list.jinja:55
msgid "Actions"
msgstr "Actions"
@@ -450,7 +459,9 @@ msgid "No"
msgstr "Non"
#: accounting/templates/accounting/club_account_details.jinja:54
-#: core/templates/core/file.jinja:36 core/templates/core/page.jinja:28
+#: com/templates/com/news_admin_list.jinja:38
+#: com/templates/com/news_admin_list.jinja:70 core/templates/core/file.jinja:36
+#: core/templates/core/page.jinja:28
msgid "View"
msgstr "Voir"
@@ -616,7 +627,7 @@ msgid "Edit operation"
msgstr "Éditer l'opération"
#: accounting/templates/accounting/operation_edit.jinja:41
-#: com/templates/com/news_edit.jinja:29 core/templates/core/create.jinja:12
+#: com/templates/com/news_edit.jinja:40 core/templates/core/create.jinja:12
#: core/templates/core/edit.jinja:7 core/templates/core/edit.jinja.py:15
#: core/templates/core/edit.jinja:20 core/templates/core/file_edit.jinja:8
#: core/templates/core/page_prop.jinja:8
@@ -913,19 +924,27 @@ msgid "Payment method"
msgstr "Méthode de paiement"
#: club/templates/club/club_tools.jinja:4
-#: core/templates/core/user_tools.jinja:81
+#: core/templates/core/user_tools.jinja:82
msgid "Club tools"
msgstr "Outils club"
#: club/templates/club/club_tools.jinja:6
+msgid "Communication:"
+msgstr "Communication : "
+
+#: club/templates/club/club_tools.jinja:8
+msgid "Create a news"
+msgstr "Créer une nouvelle"
+
+#: club/templates/club/club_tools.jinja:10
msgid "Counters:"
msgstr "Comptoirs : "
-#: club/templates/club/club_tools.jinja:22
+#: club/templates/club/club_tools.jinja:26
msgid "Accouting: "
msgstr "Comptabilité : "
-#: club/templates/club/club_tools.jinja:30
+#: club/templates/club/club_tools.jinja:34
msgid "Manage launderettes"
msgstr "Gestion des laveries"
@@ -960,7 +979,7 @@ msgstr "Vous n'avez pas la permission de faire cela"
msgid "Begin date"
msgstr "Date de début"
-#: club/views.py:166 com/views.py:78 counter/views.py:909
+#: club/views.py:166 com/views.py:79 counter/views.py:909
msgid "End date"
msgstr "Date de fin"
@@ -981,7 +1000,7 @@ msgstr "message d'info"
msgid "index page"
msgstr "page d'accueil"
-#: com/models.py:22 com/templates/com/news_list.jinja:29
+#: com/models.py:22
msgid "Notice"
msgstr "Notification"
@@ -989,7 +1008,7 @@ msgstr "Notification"
msgid "Event"
msgstr "Événement"
-#: com/models.py:24 com/templates/com/news_list.jinja:66
+#: com/models.py:24 com/templates/com/news_list.jinja:79
msgid "Weekly"
msgstr "Hebdomadaire"
@@ -1014,36 +1033,98 @@ msgstr "contenu de la nouvelle"
msgid "type"
msgstr "type"
-#: com/models.py:35 com/models.py:37 core/models.py:524 core/models.py:532
-msgid "owner"
-msgstr "propriétaire"
+#: com/models.py:35
+msgid "author"
+msgstr "auteur"
#: com/models.py:36 core/models.py:531
msgid "is moderated"
msgstr "est modéré"
-#: com/models.py:52
+#: com/models.py:37
+msgid "moderator"
+msgstr "modérateur"
+
+#: com/models.py:61
msgid "news_date"
msgstr "date de la nouvelle"
-#: com/models.py:53
+#: com/models.py:62
msgid "start_date"
msgstr "date de début"
-#: com/models.py:54
+#: com/models.py:63
msgid "end_date"
msgstr "date de fin"
-#: com/templates/com/news_admin_list.jinja:4
+#: com/templates/com/news_admin_list.jinja:5
msgid "News admin"
msgstr "Administration des nouvelles"
-#: com/templates/com/news_admin_list.jinja:8
-#: com/templates/com/news_detail.jinja:4 com/templates/com/news_detail.jinja:9
-#: com/templates/com/news_list.jinja:4 com/templates/com/news_list.jinja:27
+#: com/templates/com/news_admin_list.jinja:9
+#: com/templates/com/news_detail.jinja:5 com/templates/com/news_detail.jinja:11
+#: com/templates/com/news_list.jinja:4 com/templates/com/news_list.jinja:28
msgid "News"
msgstr "Nouvelles"
+#: com/templates/com/news_admin_list.jinja:10
+msgid "Displayed news"
+msgstr "Nouvelles affichées"
+
+#: com/templates/com/news_admin_list.jinja:14
+#: com/templates/com/news_admin_list.jinja:48
+#: launderette/templates/launderette/launderette_admin.jinja:42
+#: launderette/views.py:156
+msgid "Type"
+msgstr "Type"
+
+#: com/templates/com/news_admin_list.jinja:15
+#: com/templates/com/news_admin_list.jinja:49
+msgid "Title"
+msgstr "Titre"
+
+#: com/templates/com/news_admin_list.jinja:16
+#: com/templates/com/news_admin_list.jinja:50
+msgid "Summary"
+msgstr "Résumé"
+
+#: com/templates/com/news_admin_list.jinja:18
+#: com/templates/com/news_admin_list.jinja:52
+msgid "Author"
+msgstr "Auteur"
+
+#: com/templates/com/news_admin_list.jinja:19
+msgid "Moderator"
+msgstr "Modérateur"
+
+#: com/templates/com/news_admin_list.jinja:44
+msgid "News to moderate"
+msgstr "Nouvelles à modérer"
+
+#: com/templates/com/news_admin_list.jinja:72
+#: com/templates/com/news_detail.jinja:28
+#: core/templates/core/file_detail.jinja:65
+#: core/templates/core/file_moderation.jinja:23
+#: sas/templates/sas/moderation.jinja:17 sas/templates/sas/picture.jinja:114
+msgid "Moderate"
+msgstr "Modérer"
+
+#: com/templates/com/news_detail.jinja:10
+msgid "Back to news"
+msgstr "Retour aux nouvelles"
+
+#: com/templates/com/news_detail.jinja:24
+msgid "Author: "
+msgstr "Auteur : "
+
+#: com/templates/com/news_detail.jinja:26 sas/templates/sas/picture.jinja:82
+msgid "Moderator: "
+msgstr "Modérateur : "
+
+#: com/templates/com/news_detail.jinja:31
+msgid "Edit (will be remoderated)"
+msgstr "Éditer (sera resoumise à modération)"
+
#: com/templates/com/news_edit.jinja:5 com/templates/com/news_edit.jinja:13
msgid "Edit news"
msgstr "Éditer la nouvelle"
@@ -1052,39 +1133,43 @@ msgstr "Éditer la nouvelle"
msgid "Create news"
msgstr "Créer nouvelle"
-#: com/templates/com/news_list.jinja:37
-msgid "Calls"
-msgstr "Appels"
+#: com/templates/com/news_list.jinja:48
+msgid "Events today and the next few days"
+msgstr "Événement aujourd'hui et dans les prochains jours"
-#: com/templates/com/news_list.jinja:51
-msgid "Events"
-msgstr "Événements"
+#: com/templates/com/news_list.jinja:65
+msgid "Coming soon... don't miss!"
+msgstr "Prochainement... à ne pas rater!"
-#: com/views.py:24
+#: com/views.py:25
msgid "Communication administration"
msgstr "Administration de la communication"
-#: com/views.py:31
+#: com/views.py:32
msgid "Index page"
msgstr "Page d'accueil"
-#: com/views.py:36
+#: com/views.py:37
msgid "Info message"
msgstr "Message d'info"
-#: com/views.py:41
+#: com/views.py:42
msgid "Alert message"
msgstr "Message d'alerte"
-#: com/views.py:77
+#: com/views.py:78
msgid "Start date"
msgstr "Date de début"
-#: com/views.py:79
+#: com/views.py:80
msgid "Until"
msgstr "Jusqu'à"
-#: com/views.py:85 com/views.py:87 com/views.py:89
+#: com/views.py:81
+msgid "Automoderation"
+msgstr "Automodération"
+
+#: com/views.py:87 com/views.py:89 com/views.py:91
msgid "This field is required."
msgstr "Ce champ est obligatoire."
@@ -1406,6 +1491,10 @@ msgstr "version allégée"
msgid "thumbnail"
msgstr "miniature"
+#: core/models.py:524 core/models.py:532
+msgid "owner"
+msgstr "propriétaire"
+
#: core/models.py:525 core/models.py:726
msgid "edit group"
msgstr "groupe d'édition"
@@ -1720,12 +1809,6 @@ msgstr "octets"
msgid "Download"
msgstr "Télécharger"
-#: core/templates/core/file_detail.jinja:65
-#: core/templates/core/file_moderation.jinja:23
-#: sas/templates/sas/moderation.jinja:17 sas/templates/sas/picture.jinja:114
-msgid "Moderate"
-msgstr "Modérer"
-
#: core/templates/core/file_list.jinja:19
msgid "There is no file in this website."
msgstr "Il n'y a pas de fichier sur ce site web."
@@ -2291,22 +2374,26 @@ msgid "Communication"
msgstr "Communication"
#: core/templates/core/user_tools.jinja:69
+msgid "Moderate news"
+msgstr "Modérer les nouvelles"
+
+#: core/templates/core/user_tools.jinja:70
msgid "Edit index page"
msgstr "Éditer la page d'accueil"
-#: core/templates/core/user_tools.jinja:70
+#: core/templates/core/user_tools.jinja:71
msgid "Edit alert message"
msgstr "Éditer le message d'alerte"
-#: core/templates/core/user_tools.jinja:71
+#: core/templates/core/user_tools.jinja:72
msgid "Edit information message"
msgstr "Éditer le message d'informations"
-#: core/templates/core/user_tools.jinja:72
+#: core/templates/core/user_tools.jinja:73
msgid "Moderate files"
msgstr "Modérer les fichiers"
-#: core/templates/core/user_tools.jinja:75
+#: core/templates/core/user_tools.jinja:76
msgid "Moderate pictures"
msgstr "Modérer les photos"
@@ -3031,11 +3118,6 @@ msgstr "Machines"
msgid "New machine"
msgstr "Nouvelle machine"
-#: launderette/templates/launderette/launderette_admin.jinja:42
-#: launderette/views.py:156
-msgid "Type"
-msgstr "Type"
-
#: launderette/templates/launderette/launderette_book.jinja:12
msgid "Choose"
msgstr "Choisir"
@@ -3147,10 +3229,6 @@ msgstr "Albums"
msgid "People"
msgstr "Personne(s)"
-#: sas/templates/sas/picture.jinja:82
-msgid "Moderator: "
-msgstr "Modérateur : "
-
#: sas/templates/sas/picture.jinja:89
msgid "HD version"
msgstr "Version HD"
@@ -3370,3 +3448,4 @@ msgstr "Un utilisateur avec cette adresse email existe déjà"
msgid "You must either choose an existing user or create a new one properly"
msgstr ""
"Vous devez soit choisir un utilisateur existant, soit en créer un proprement"
+