def handle(self, request, organization, team, project): op = request.POST.get('op') if op == 'enable': self._handle_enable_plugin(request, project) return HttpResponseRedirect(request.path) elif op == 'disable': self._handle_disable_plugin(request, project) return HttpResponseRedirect(request.path) if op == 'save-settings': general_form = NotificationSettingsForm( data=request.POST, prefix='general', initial={ 'subject_prefix': project.get_option( 'mail:subject_prefix', settings.EMAIL_SUBJECT_PREFIX), }, ) if general_form.is_valid(): project.update_option( 'mail:subject_prefix', general_form.cleaned_data['subject_prefix']) messages.add_message( request, messages.SUCCESS, OK_SETTINGS_SAVED) return HttpResponseRedirect(request.path) else: general_form = NotificationSettingsForm( prefix='general', initial={ 'subject_prefix': project.get_option( 'mail:subject_prefix', settings.EMAIL_SUBJECT_PREFIX), }, ) enabled_plugins = [] other_plugins = [] for plugin in self._iter_plugins(): if plugin.is_enabled(project): content = plugin.get_notification_doc_html() form = plugin.project_conf_form if form is not None: view = plugin.configure(request, project=project) if isinstance(view, HttpResponse): return view enabled_plugins.append((plugin, mark_safe(content + view))) elif content: enabled_plugins.append((plugin, mark_safe(content))) else: other_plugins.append(plugin) context = { 'page': 'notifications', 'enabled_plugins': enabled_plugins, 'other_plugins': other_plugins, 'general_form': general_form, } return self.respond('sentry/project-notifications.html', context)
def notification_settings(request, organization, project): general_form = NotificationSettingsForm( data=request.POST or None, prefix='general', initial={ 'subject_prefix': project.get_option('mail:subject_prefix', settings.EMAIL_SUBJECT_PREFIX), }, ) threshold, min_events = project.get_option( 'alert:threshold', DEFAULT_ALERT_PROJECT_THRESHOLD) alert_form = AlertSettingsForm(data=request.POST or None, prefix='alert', initial={ 'pct_threshold': threshold, 'min_events': min_events, }) all_forms = [ alert_form, general_form, ] if request.method == 'POST' and all(f.is_valid() for f in all_forms): project.update_option('alert:threshold', (alert_form.cleaned_data['pct_threshold'], alert_form.cleaned_data['min_events'])) project.update_option('mail:subject_prefix', general_form.cleaned_data['subject_prefix']) messages.add_message(request, messages.SUCCESS, _('Your settings were saved successfully.')) return HttpResponseRedirect( reverse('sentry-project-notifications', args=[project.organization.slug, project.slug])) context = csrf(request) context.update({ 'organization': organization, 'team': project.team, 'project': project, 'general_form': general_form, 'alert_form': alert_form, 'page': 'notifications', }) return render_to_response('sentry/projects/notifications.html', context, request)
def handle(self, request, organization, team, project): op = request.POST.get('op') if op == 'enable': self._handle_enable_plugin(request, project) return HttpResponseRedirect(request.path) elif op == 'disable': self._handle_disable_plugin(request, project) return HttpResponseRedirect(request.path) if op == 'save-settings': if digests.enabled(project): digests_form = DigestSettingsForm( data=request.POST, prefix='digests', initial={ 'minimum_delay': project.get_option( get_digest_option_key('mail', 'minimum_delay'), digests.minimum_delay / 60, ), 'maximum_delay': project.get_option( get_digest_option_key('mail', 'maximum_delay'), digests.maximum_delay / 60, ), }, ) else: digests_form = None general_form = NotificationSettingsForm( data=request.POST, prefix='general', initial={ 'subject_prefix': project.get_option('mail:subject_prefix', options.get('mail.subject-prefix')), }, ) if general_form.is_valid() and (digests_form.is_valid() if digests_form is not None else True): project.update_option( 'mail:subject_prefix', general_form.cleaned_data['subject_prefix']) if digests_form is not None: project.update_option( get_digest_option_key('mail', 'minimum_delay'), digests_form.cleaned_data['minimum_delay'] * 60, ) project.update_option( get_digest_option_key('mail', 'maximum_delay'), digests_form.cleaned_data['maximum_delay'] * 60, ) messages.add_message(request, messages.SUCCESS, OK_SETTINGS_SAVED) return HttpResponseRedirect(request.path) else: if digests.enabled(project): digests_form = DigestSettingsForm( prefix='digests', initial={ 'minimum_delay': project.get_option( get_digest_option_key('mail', 'minimum_delay'), digests.minimum_delay, ) / 60, 'maximum_delay': project.get_option( get_digest_option_key('mail', 'maximum_delay'), digests.maximum_delay, ) / 60, }, ) else: digests_form = None general_form = NotificationSettingsForm( prefix='general', initial={ 'subject_prefix': project.get_option('mail:subject_prefix', options.get('mail.subject-prefix')), }, ) enabled_plugins = [] other_plugins = [] for plugin in self._iter_plugins(): if plugin.is_enabled(project): content = plugin.get_notification_doc_html() form = plugin.project_conf_form if form is not None: view = plugin.configure(request=request, project=project) if isinstance(view, HttpResponse): return view enabled_plugins.append((plugin, mark_safe(content + view))) elif content: enabled_plugins.append((plugin, mark_safe(content))) elif plugin.can_configure_for_project(project): other_plugins.append(plugin) is_user_subbed = project.is_user_subscribed_to_mail_alerts( request.user) context = { 'page': 'notifications', 'enabled_plugins': enabled_plugins, 'other_plugins': other_plugins, 'general_form': general_form, 'digests_form': digests_form, 'is_user_subbed': is_user_subbed } return self.respond('sentry/project-notifications.html', context)
def handle(self, request, organization, team, project): op = request.POST.get('op') if op == 'enable': self._handle_enable_plugin(request, project) return HttpResponseRedirect(request.path) elif op == 'disable': self._handle_disable_plugin(request, project) return HttpResponseRedirect(request.path) if op == 'save-settings': general_form = NotificationSettingsForm( data=request.POST, prefix='general', initial={ 'subject_prefix': project.get_option('mail:subject_prefix', settings.EMAIL_SUBJECT_PREFIX), }, ) if general_form.is_valid(): project.update_option( 'mail:subject_prefix', general_form.cleaned_data['subject_prefix']) messages.add_message(request, messages.SUCCESS, OK_SETTINGS_SAVED) return HttpResponseRedirect(request.path) else: general_form = NotificationSettingsForm( prefix='general', initial={ 'subject_prefix': project.get_option('mail:subject_prefix', settings.EMAIL_SUBJECT_PREFIX), }, ) enabled_plugins = [] other_plugins = [] for plugin in self._iter_plugins(): if plugin.is_enabled(project): content = plugin.get_notification_doc_html() form = plugin.project_conf_form if form is not None: view = plugin.configure(request, project=project) if isinstance(view, HttpResponse): return view enabled_plugins.append((plugin, mark_safe(content + view))) elif content: enabled_plugins.append((plugin, mark_safe(content))) elif plugin.can_configure_for_project(project): other_plugins.append(plugin) context = { 'page': 'notifications', 'enabled_plugins': enabled_plugins, 'other_plugins': other_plugins, 'general_form': general_form, } return self.respond('sentry/project-notifications.html', context)
def handle(self, request, organization, team, project): op = request.POST.get("op") if op == "enable": self._handle_enable_plugin(request, project) return HttpResponseRedirect(request.path) elif op == "disable": self._handle_disable_plugin(request, project) return HttpResponseRedirect(request.path) if op == "save-settings": if digests.enabled(project): digests_form = DigestSettingsForm( data=request.POST, prefix="digests", initial={ "minimum_delay": project.get_option( get_digest_option_key("mail", "minimum_delay"), digests.minimum_delay / 60 ), "maximum_delay": project.get_option( get_digest_option_key("mail", "maximum_delay"), digests.maximum_delay / 60 ), }, ) else: digests_form = None general_form = NotificationSettingsForm( data=request.POST, prefix="general", initial={ "subject_prefix": project.get_option("mail:subject_prefix", options.get("mail.subject-prefix")) }, ) if general_form.is_valid() and (digests_form.is_valid() if digests_form is not None else True): project.update_option("mail:subject_prefix", general_form.cleaned_data["subject_prefix"]) if digests_form is not None: project.update_option( get_digest_option_key("mail", "minimum_delay"), digests_form.cleaned_data["minimum_delay"] * 60 ) project.update_option( get_digest_option_key("mail", "maximum_delay"), digests_form.cleaned_data["maximum_delay"] * 60 ) messages.add_message(request, messages.SUCCESS, OK_SETTINGS_SAVED) return HttpResponseRedirect(request.path) else: if digests.enabled(project): digests_form = DigestSettingsForm( prefix="digests", initial={ "minimum_delay": project.get_option( get_digest_option_key("mail", "minimum_delay"), digests.minimum_delay ) / 60, "maximum_delay": project.get_option( get_digest_option_key("mail", "maximum_delay"), digests.maximum_delay ) / 60, }, ) else: digests_form = None general_form = NotificationSettingsForm( prefix="general", initial={ "subject_prefix": project.get_option("mail:subject_prefix", options.get("mail.subject-prefix")) }, ) enabled_plugins = [] other_plugins = [] for plugin in self._iter_plugins(): if plugin.is_enabled(project): content = plugin.get_notification_doc_html() form = plugin.project_conf_form if form is not None: view = plugin.configure(request, project=project) if isinstance(view, HttpResponse): return view enabled_plugins.append((plugin, mark_safe(content + view))) elif content: enabled_plugins.append((plugin, mark_safe(content))) elif plugin.can_configure_for_project(project): other_plugins.append(plugin) context = { "page": "notifications", "enabled_plugins": enabled_plugins, "other_plugins": other_plugins, "general_form": general_form, "digests_form": digests_form, } return self.respond("sentry/project-notifications.html", context)
def notification_settings(request, team, project): initial = project.get_option('notifcation:tags', {}) general_form = NotificationSettingsForm( data=request.POST or None, prefix='general', initial={ 'subject_prefix': project.get_option('mail:subject_prefix', settings.EMAIL_SUBJECT_PREFIX), }, ) tag_forms = [] for tag in TagKey.objects.all_keys(project): tag_forms.append( NotificationTagValuesForm( project=project, tag=tag, data=request.POST or None, prefix='tag-%s' % (tag, ), initial={ 'values': ', '.join(initial.get(tag, [])), }, )) threshold, min_events = project.get_option( 'alert:threshold', DEFAULT_ALERT_PROJECT_THRESHOLD) alert_form = AlertSettingsForm(data=request.POST or None, prefix='alert', initial={ 'pct_threshold': threshold, 'min_events': min_events, }) all_forms = [ alert_form, general_form, ] + tag_forms if request.method == 'POST' and all(f.is_valid() for f in all_forms): tags = {} for t_form in tag_forms: values = t_form.cleaned_data['values'] if values: tags[t_form.tag] = values project.update_option('notifcation:tags', tags) project.update_option('alert:threshold', (alert_form.cleaned_data['pct_threshold'], alert_form.cleaned_data['min_events'])) project.update_option('mail:subject_prefix', general_form.cleaned_data['subject_prefix']) messages.add_message(request, messages.SUCCESS, _('Your settings were saved successfully.')) return HttpResponseRedirect( reverse('sentry-project-notifications', args=[project.team.slug, project.slug])) context = csrf(request) context.update({ 'team': team, 'project': project, 'general_form': general_form, 'alert_form': alert_form, 'tag_forms': tag_forms, 'page': 'notifications', }) return render_to_response('sentry/projects/notifications.html', context, request)
def handle(self, request, organization, team, project): op = request.POST.get('op') if op == 'enable': self._handle_enable_plugin(request, project) return HttpResponseRedirect(request.path) elif op == 'disable': self._handle_disable_plugin(request, project) return HttpResponseRedirect(request.path) if op == 'save-settings': if digests.enabled(project): digests_form = DigestSettingsForm( data=request.POST, prefix='digests', initial={ 'minimum_delay': project.get_option( get_digest_option_key('mail', 'minimum_delay'), digests.minimum_delay / 60, ), 'maximum_delay': project.get_option( get_digest_option_key('mail', 'maximum_delay'), digests.maximum_delay / 60, ), }, ) else: digests_form = None general_form = NotificationSettingsForm( data=request.POST, prefix='general', initial={ 'subject_prefix': project.get_option( 'mail:subject_prefix', options.get('mail.subject-prefix')), }, ) if general_form.is_valid() and (digests_form.is_valid() if digests_form is not None else True): project.update_option('mail:subject_prefix', general_form.cleaned_data['subject_prefix']) if digests_form is not None: project.update_option( get_digest_option_key('mail', 'minimum_delay'), digests_form.cleaned_data['minimum_delay'] * 60, ) project.update_option( get_digest_option_key('mail', 'maximum_delay'), digests_form.cleaned_data['maximum_delay'] * 60, ) messages.add_message( request, messages.SUCCESS, OK_SETTINGS_SAVED) return HttpResponseRedirect(request.path) else: if digests.enabled(project): digests_form = DigestSettingsForm( prefix='digests', initial={ 'minimum_delay': project.get_option( get_digest_option_key('mail', 'minimum_delay'), digests.minimum_delay, ) / 60, 'maximum_delay': project.get_option( get_digest_option_key('mail', 'maximum_delay'), digests.maximum_delay, ) / 60, }, ) else: digests_form = None general_form = NotificationSettingsForm( prefix='general', initial={ 'subject_prefix': project.get_option( 'mail:subject_prefix', options.get('mail.subject-prefix')), }, ) enabled_plugins = [] other_plugins = [] for plugin in self._iter_plugins(): if plugin.is_enabled(project): content = plugin.get_notification_doc_html() form = plugin.project_conf_form if form is not None: view = plugin.configure(request, project=project) if isinstance(view, HttpResponse): return view enabled_plugins.append((plugin, mark_safe(content + view))) elif content: enabled_plugins.append((plugin, mark_safe(content))) elif plugin.can_configure_for_project(project): other_plugins.append(plugin) is_user_subbed = project.is_user_subscribed_to_mail_alerts(request.user) context = { 'page': 'notifications', 'enabled_plugins': enabled_plugins, 'other_plugins': other_plugins, 'general_form': general_form, 'digests_form': digests_form, 'is_user_subbed': is_user_subbed } return self.respond('sentry/project-notifications.html', context)