core, com: make permanent notifications for news to moderate

This needs to be made for other stuff, like the SAS or the files...

Signed-off-by: Skia <skia@libskia.so>
This commit is contained in:
Skia
2017-09-06 13:16:28 +02:00
parent dd5926b404
commit 0184b9c29b
5 changed files with 66 additions and 5 deletions

View File

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0023_auto_20170902_1226'),
]
operations = [
migrations.AlterField(
model_name='notification',
name='type',
field=models.CharField(choices=[('MAILING_MODERATION', 'A new mailing list needs to be moderated'), ('NEWS_MODERATION', 'There are %s fresh news to be moderated'), ('FILE_MODERATION', 'New files to be moderated'), ('SAS_MODERATION', 'New pictures/album to be moderated in the SAS'), ('NEW_PICTURES', "You've been identified on some pictures"), ('REFILLING', 'You just refilled of %s'), ('SELLING', 'You just bought %s'), ('GENERIC', 'You have a notification')], verbose_name='type', default='GENERIC', max_length=32),
),
]

View File

@ -21,6 +21,7 @@
# Place - Suite 330, Boston, MA 02111-1307, USA.
#
#
import importlib
from django.db import models
from django.core.mail import send_mail
@ -1063,3 +1064,14 @@ class Notification(models.Model):
if self.param:
return self.get_type_display() % self.param
return self.get_type_display()
def save(self, *args, **kwargs):
if not self.id and self.type in settings.SITH_PERMANENT_NOTIFICATIONS:
old_notif = self.user.notifications.filter(type=self.type).last()
if old_notif:
mod_name, func_name = settings.SITH_PERMANENT_NOTIFICATIONS[self.type].rsplit('.',1)
mod = importlib.import_module(mod_name)
getattr(mod, func_name)(old_notif)
old_notif.save()
return
super(Notification, self).save(*args, **kwargs)

View File

@ -27,6 +27,7 @@ from django.http import JsonResponse
from django.core import serializers
from django.contrib.auth.decorators import login_required
from django.views.generic import ListView, TemplateView
from django.conf import settings
import json
@ -50,15 +51,18 @@ class NotificationList(ListView):
def get_queryset(self):
if 'see_all' in self.request.GET.keys():
self.request.user.notifications.update(viewed=True)
for n in self.request.user.notifications.all():
n.viewed = True
n.save()
return self.request.user.notifications.order_by('-date')[:20]
def notification(request, notif_id):
notif = Notification.objects.filter(id=notif_id).first()
if notif:
notif.viewed = True
notif.save()
if notif.type not in settings.SITH_PERMANENT_NOTIFICATIONS:
notif.viewed = True
notif.save()
return redirect(notif.url)
return redirect("/")