WIP: first Weekmail models

This commit is contained in:
Skia 2017-01-03 00:07:45 +01:00
parent d8c9575f88
commit 8bd8191030
5 changed files with 111 additions and 1 deletions

View File

@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
from django.conf import settings
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('club', '0006_auto_20161229_0040'),
('com', '0002_news_newsdate'),
]
operations = [
migrations.CreateModel(
name='Weekmail',
fields=[
('id', models.AutoField(primary_key=True, verbose_name='ID', serialize=False, auto_created=True)),
('title', models.CharField(verbose_name='title', max_length=64)),
('intro', models.TextField(verbose_name='intro', blank=True)),
('joke', models.TextField(verbose_name='joke', blank=True)),
('protip', models.TextField(verbose_name='protip', blank=True)),
('conclusion', models.TextField(verbose_name='conclusion', blank=True)),
('sent', models.BooleanField(verbose_name='sent', default=False)),
],
options={
'ordering': ['-id'],
},
),
migrations.CreateModel(
name='WeekmailArticle',
fields=[
('id', models.AutoField(primary_key=True, verbose_name='ID', serialize=False, auto_created=True)),
('title', models.CharField(verbose_name='title', max_length=64)),
('content', models.TextField(verbose_name='content')),
('rank', models.IntegerField(verbose_name='rank', default=-1)),
('author', models.ForeignKey(related_name='owned_weekmail_articles', to=settings.AUTH_USER_MODEL, verbose_name='author')),
('club', models.ForeignKey(related_name='weekmail_articles', to='club.Club', verbose_name='club')),
('weekmail', models.ForeignKey(related_name='articles', to='com.Weekmail', verbose_name='weekmail')),
],
),
migrations.AddField(
model_name='sith',
name='weekmail_destinations',
field=models.TextField(verbose_name='weekmail destinations', default=''),
),
]

View File

@ -11,6 +11,7 @@ class Sith(models.Model):
alert_msg = models.TextField(_("alert message"), default="", blank=True)
info_msg = models.TextField(_("info message"), default="", blank=True)
index_page = models.TextField(_("index page"), default="", blank=True)
weekmail_destinations = models.TextField(_("weekmail destinations"), default="")
def is_owned_by(self, user):
return user.is_in_group(settings.SITH_GROUP_COM_ADMIN_ID)
@ -64,3 +65,35 @@ class NewsDate(models.Model):
def __str__(self):
return "%s: %s - %s" % (self.news.title, self.start_date, self.end_date)
class Weekmail(models.Model):
"""
The weekmail class
"""
title = models.CharField(_("title"), max_length=64)
intro = models.TextField(_("intro"), blank=True)
joke = models.TextField(_("joke"), blank=True)
protip = models.TextField(_("protip"), blank=True)
conclusion = models.TextField(_("conclusion"), blank=True)
sent = models.BooleanField(_("sent"), default=False)
class Meta:
ordering = ['-id']
def send(self):
print("Sending weekmail n°" + str(self.id))
self.sent = True
self.save()
class WeekmailArticle(models.Model):
weekmail = models.ForeignKey(Weekmail, related_name="articles", verbose_name=_("weekmail"))
title = models.CharField(_("title"), max_length=64)
content = models.TextField(_("content"))
author = models.ForeignKey(User, related_name="owned_weekmail_articles", verbose_name=_("author"))
club = models.ForeignKey(Club, related_name="weekmail_articles", verbose_name=_("club"))
rank = models.IntegerField(_('rank'), default=-1)
def clean(self):
super(WeekmailArticle, self).clean()
if not self.weekmail:
self.weekmail = Weekmail.objects.order_by('-id').first()

View File

@ -0,0 +1,13 @@
{% extends "core/base.jinja" %}
{% block title %}
{% trans %}Weekmail{% endtrans %}
{% endblock %}
{% block content %}
<h3>{% trans %}Weekmail{% endtrans %}</h3>
{{ object }}
{% endblock %}

View File

@ -6,6 +6,7 @@ urlpatterns = [
url(r'^sith/edit/alert$', AlertMsgEditView.as_view(), name='alert_edit'),
url(r'^sith/edit/info$', InfoMsgEditView.as_view(), name='info_edit'),
url(r'^sith/edit/index$', IndexEditView.as_view(), name='index_edit'),
url(r'^weekmail$', WeekmailEditView.as_view(), name='weekmail'),
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'),

View File

@ -11,7 +11,7 @@ from django import forms
from datetime import timedelta
from com.models import Sith, News, NewsDate
from com.models import Sith, News, NewsDate, Weekmail, WeekmailArticle
from core.views import CanViewMixin, CanEditMixin, CanEditPropMixin, TabedViewMixin, CanCreateMixin
from core.views.forms import SelectDateTime
from core.models import Notification, RealGroup
@ -28,6 +28,11 @@ class ComTabsMixin(TabedViewMixin):
def get_list_of_tabs(self):
tab_list = []
tab_list.append({
'url': reverse('com:weekmail'),
'slug': 'weekmail',
'name': _("Weekmail"),
})
tab_list.append({
'url': reverse('com:index_edit'),
'slug': 'index',
@ -213,4 +218,13 @@ class NewsDetailView(CanViewMixin, DetailView):
template_name = 'com/news_detail.jinja'
pk_url_kwarg = 'news_id'
# Weekmail
class WeekmailEditView(UpdateView):
model = Weekmail
template_name = 'com/weekmail.jinja'
def get_object(self, queryset=None):
return self.model.objects.order_by('-id').first()