core: improve notification callback system

Signed-off-by: Skia <skia@libskia.so>
This commit is contained in:
Skia 2017-10-15 11:59:41 +02:00
parent 9b0b381fa3
commit d5c6695f80
2 changed files with 11 additions and 4 deletions

View File

@ -1094,13 +1094,18 @@ class Notification(models.Model):
return self.get_type_display() % self.param
return self.get_type_display()
def callback(self):
# Get the callback defined in settings to update existing
# notifications
mod_name, func_name = settings.SITH_PERMANENT_NOTIFICATIONS[self.type].rsplit('.',1)
mod = importlib.import_module(mod_name)
getattr(mod, func_name)(self)
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.callback()
old_notif.save()
return
super(Notification, self).save(*args, **kwargs)

View File

@ -62,6 +62,8 @@ def notification(request, notif_id):
if notif:
if notif.type not in settings.SITH_PERMANENT_NOTIFICATIONS:
notif.viewed = True
else:
notif.callback()
notif.save()
return redirect(notif.url)
return redirect("/")