Commit d5c6695f authored by Skia's avatar Skia 🤘
Browse files

core: improve notification callback system


Signed-off-by: Skia's avatarSkia <skia@libskia.so>
parent 9b0b381f
......@@ -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)
......@@ -62,7 +62,9 @@ def notification(request, notif_id):
if notif:
if notif.type not in settings.SITH_PERMANENT_NOTIFICATIONS:
notif.viewed = True
notif.save()
else:
notif.callback()
notif.save()
return redirect(notif.url)
return redirect("/")
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment