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() % self.param
return self.get_type_display() 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): def save(self, *args, **kwargs):
if not self.id and self.type in settings.SITH_PERMANENT_NOTIFICATIONS: if not self.id and self.type in settings.SITH_PERMANENT_NOTIFICATIONS:
old_notif = self.user.notifications.filter(type=self.type).last() old_notif = self.user.notifications.filter(type=self.type).last()
if old_notif: if old_notif:
mod_name, func_name = settings.SITH_PERMANENT_NOTIFICATIONS[self.type].rsplit('.',1) old_notif.callback()
mod = importlib.import_module(mod_name)
getattr(mod, func_name)(old_notif)
old_notif.save() old_notif.save()
return return
super(Notification, self).save(*args, **kwargs) super(Notification, self).save(*args, **kwargs)

View File

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