Skip to content

Commit

Permalink
[IMPROVEMENT] Add default notifier when subscribing #122
Browse files Browse the repository at this point in the history
Merge pull request #122 from kfdm/subscribe-notice
When a user subscribes, ensure they have a default notifier configured
  • Loading branch information
kfdm authored Jan 24, 2019
2 parents 6d2f3c5 + 7e0c14f commit d466d4e
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 2 deletions.
23 changes: 23 additions & 0 deletions promgen/signals.py
Original file line number Diff line number Diff line change
Expand Up @@ -245,3 +245,26 @@ def add_email_sender(sender, instance, created, **kwargs):
models.Sender.get_or_create(obj=instance, sender='promgen.notification.email', value=instance.email)
else:
logger.warning('No email for user %s', instance)

# Not a 'real' signal but we match most of the interface for post_save
def check_user_subscription(sender, instance, created, request):
# When a user subscribes to a notification, we want to ensure
# they have a default notification enabled
if instance.sender != "promgen.notification.user":
messages.success(request, "Subscription saved")
return

notifiers = models.Sender.filter(obj=instance.owner)
if notifiers:
logger.debug("Existing notifiers found")
return

if instance.owner.email:
models.Sender.get_or_create(
obj=instance.owner,
sender="promgen.notification.email",
value=instance.owner.email,
)
messages.success(request, "Subscribed using %s" % (instance.owner.email))
else:
messages.warning(request, "No email configured")
6 changes: 4 additions & 2 deletions promgen/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -837,7 +837,8 @@ class ProjectNotifierRegister(LoginRequiredMixin, FormView, ProjectMixin):

def form_valid(self, form):
project = get_object_or_404(models.Project, id=self.kwargs['pk'])
sender, _ = models.Sender.get_or_create(obj=project, owner=self.request.user, **form.clean())
sender, created = models.Sender.get_or_create(obj=project, owner=self.request.user, **form.clean())
signals.check_user_subscription(models.Sender, sender, created, self.request)
return HttpResponseRedirect(project.get_absolute_url())


Expand All @@ -848,7 +849,8 @@ class ServiceNotifierRegister(LoginRequiredMixin, FormView, ServiceMixin):

def form_valid(self, form):
service = get_object_or_404(models.Service, id=self.kwargs['pk'])
sender, _ = models.Sender.get_or_create(obj=service, owner=self.request.user, **form.clean())
sender, created = models.Sender.get_or_create(obj=service, owner=self.request.user, **form.clean())
signals.check_user_subscription(models.Sender, sender, created, self.request)
return HttpResponseRedirect(service.get_absolute_url())


Expand Down

0 comments on commit d466d4e

Please sign in to comment.