64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin
|
|
|
|
from core.forms import NotificationRuleForm, NotificationSettingsForm
|
|
from core.models import NotificationRule, NotificationSettings
|
|
from core.views.helpers import ObjectCreate, ObjectDelete, ObjectList, ObjectUpdate
|
|
|
|
|
|
# Notifications - we create a new notification settings object if there isn't one
|
|
# Hence, there is only an update view, not a create view.
|
|
class NotificationsUpdate(LoginRequiredMixin, PermissionRequiredMixin, ObjectUpdate):
|
|
permission_required = "use_rules"
|
|
model = NotificationSettings
|
|
form_class = NotificationSettingsForm
|
|
|
|
page_title = "Update your notification settings"
|
|
page_subtitle = (
|
|
"At least the topic must be set if you want to receive notifications."
|
|
)
|
|
|
|
submit_url_name = "notifications_update"
|
|
submit_url_args = ["type"]
|
|
|
|
pk_required = False
|
|
|
|
hide_cancel = True
|
|
|
|
def get_object(self, **kwargs):
|
|
notification_settings, _ = NotificationSettings.objects.get_or_create(
|
|
user=self.request.user
|
|
)
|
|
return notification_settings
|
|
|
|
|
|
class RuleList(LoginRequiredMixin, ObjectList):
|
|
list_template = "partials/rule-list.html"
|
|
model = NotificationRule
|
|
page_title = "List of notification rules"
|
|
|
|
list_url_name = "rules"
|
|
list_url_args = ["type"]
|
|
|
|
submit_url_name = "rule_create"
|
|
|
|
|
|
class RuleCreate(LoginRequiredMixin, PermissionRequiredMixin, ObjectCreate):
|
|
permission_required = "use_rules"
|
|
model = NotificationRule
|
|
form_class = NotificationRuleForm
|
|
|
|
submit_url_name = "rule_create"
|
|
|
|
|
|
class RuleUpdate(LoginRequiredMixin, PermissionRequiredMixin, ObjectUpdate):
|
|
permission_required = "use_rules"
|
|
model = NotificationRule
|
|
form_class = NotificationRuleForm
|
|
|
|
submit_url_name = "rule_update"
|
|
|
|
|
|
class RuleDelete(LoginRequiredMixin, PermissionRequiredMixin, ObjectDelete):
|
|
permission_required = "use_rules"
|
|
model = NotificationRule
|