def view(self, request, group, **kwargs): has_auth_configured = self.has_auth_configured() if not (has_auth_configured and self.is_configured(project=group.project, request=request)): if self.auth_provider: required_auth_settings = settings.AUTH_PROVIDERS[self.auth_provider] else: required_auth_settings = None project = group.project return self.render( self.not_configured_template, { "title": self.get_title(), "project": group.project, "has_auth_configured": has_auth_configured, "required_auth_settings": required_auth_settings, "plugin_link": "/settings/{}/projects/{}/plugins/{}/".format( project.organization.slug, project.slug, self.slug ), }, ) if self.needs_auth(project=group.project, request=request): return self.render( self.needs_auth_template, {"title": self.get_title(), "project": group.project} ) if GroupMeta.objects.get_value(group, "%s:tid" % self.get_conf_key(), None): if self.can_unlink_issues and request.GET.get("unlink"): return self.handle_unlink_issue(request, group, **kwargs) return None prefix = self.get_conf_key() event = group.get_latest_event() op = request.POST.get("op", "create") create_form = self.get_new_issue_form(request, group, event) link_form = None if self.can_link_existing_issues: link_form = self.get_link_existing_issue_form(request, group, event) if op == "create": if create_form.is_valid(): try: issue_id = self.create_issue( group=group, form_data=create_form.cleaned_data, request=request ) except forms.ValidationError as e: create_form.errors["__all__"] = ["Error creating issue: %s" % e] if create_form.is_valid(): GroupMeta.objects.set_value(group, "%s:tid" % prefix, issue_id) issue_information = { "title": create_form.cleaned_data["title"], "provider": self.get_title(), "location": self.get_issue_url(group, issue_id), "label": self.get_issue_label(group=group, issue_id=issue_id), } Activity.objects.create( project=group.project, group=group, type=Activity.CREATE_ISSUE, user=request.user, data=issue_information, ) issue_tracker_used.send_robust( plugin=self, project=group.project, user=request.user, sender=IssueTrackingPlugin, ) return self.redirect(group.get_absolute_url()) elif op == "link": if link_form.is_valid(): try: self.link_issue(group=group, form_data=link_form.cleaned_data, request=request) except forms.ValidationError as e: link_form.errors["__all__"] = ["Error creating issue: %s" % e] if link_form.is_valid(): issue_id = int(link_form.cleaned_data["issue_id"]) GroupMeta.objects.set_value(group, "%s:tid" % prefix, issue_id) issue_information = { "title": self.get_issue_title_by_id(request, group, issue_id), "provider": self.get_title(), "location": self.get_issue_url(group, issue_id), "label": self.get_issue_label(group=group, issue_id=issue_id), } Activity.objects.create( project=group.project, group=group, type=Activity.CREATE_ISSUE, user=request.user, data=issue_information, ) return self.redirect(group.get_absolute_url()) context = { "create_form": create_form, # pass in 'form' for legacy compat "form": create_form, "title": self.get_new_issue_title(), "read_only_fields": self.get_new_issue_read_only_fields(group=group), "can_link_existing_issues": self.can_link_existing_issues, "link_form": link_form, "op": op, } return self.render(self.create_issue_template, context)
def view(self, request, group, **kwargs): has_auth_configured = self.has_auth_configured() if not (has_auth_configured and self.is_configured( project=group.project, request=request)): if self.auth_provider: required_auth_settings = settings.AUTH_PROVIDERS[self.auth_provider] else: required_auth_settings = None return self.render( self.not_configured_template, { 'title': self.get_title(), 'project': group.project, 'has_auth_configured': has_auth_configured, 'required_auth_settings': required_auth_settings, } ) if self.needs_auth(project=group.project, request=request): return self.render( self.needs_auth_template, { 'title': self.get_title(), 'project': group.project, } ) if GroupMeta.objects.get_value(group, '%s:tid' % self.get_conf_key(), None): if self.can_unlink_issues and request.GET.get('unlink'): return self.handle_unlink_issue(request, group, **kwargs) return None prefix = self.get_conf_key() event = group.get_latest_event() Event.objects.bind_nodes([event], 'data') op = request.POST.get('op', 'create') create_form = self.get_new_issue_form(request, group, event) link_form = None if self.can_link_existing_issues: link_form = self.get_link_existing_issue_form(request, group, event) if op == 'create': if create_form.is_valid(): try: issue_id = self.create_issue( group=group, form_data=create_form.cleaned_data, request=request, ) except forms.ValidationError as e: create_form.errors['__all__'] = [u'Error creating issue: %s' % e] if create_form.is_valid(): GroupMeta.objects.set_value(group, '%s:tid' % prefix, issue_id) issue_information = { 'title': create_form.cleaned_data['title'], 'provider': self.get_title(), 'location': self.get_issue_url(group, issue_id), 'label': self.get_issue_label(group=group, issue_id=issue_id), } Activity.objects.create( project=group.project, group=group, type=Activity.CREATE_ISSUE, user=request.user, data=issue_information, ) issue_tracker_used.send_robust( plugin=self, project=group.project, user=request.user, sender=IssueTrackingPlugin ) return self.redirect(group.get_absolute_url()) elif op == 'link': if link_form.is_valid(): try: self.link_issue( group=group, form_data=link_form.cleaned_data, request=request, ) except forms.ValidationError as e: link_form.errors['__all__'] = [u'Error creating issue: %s' % e] if link_form.is_valid(): issue_id = int(link_form.cleaned_data['issue_id']) GroupMeta.objects.set_value(group, '%s:tid' % prefix, issue_id) issue_information = { 'title': self.get_issue_title_by_id(request, group, issue_id), 'provider': self.get_title(), 'location': self.get_issue_url(group, issue_id), 'label': self.get_issue_label(group=group, issue_id=issue_id), } Activity.objects.create( project=group.project, group=group, type=Activity.CREATE_ISSUE, user=request.user, data=issue_information, ) return self.redirect(group.get_absolute_url()) context = { 'create_form': create_form, # pass in 'form' for legacy compat 'form': create_form, 'title': self.get_new_issue_title(), 'read_only_fields': self.get_new_issue_read_only_fields(group=group), 'can_link_existing_issues': self.can_link_existing_issues, 'link_form': link_form, 'op': op } return self.render(self.create_issue_template, context)
def view(self, request, group, **kwargs): has_auth_configured = self.has_auth_configured() if not (has_auth_configured and self.is_configured( project=group.project, request=request)): if self.auth_provider: required_auth_settings = settings.AUTH_PROVIDERS[self.auth_provider] else: required_auth_settings = None return self.render( self.not_configured_template, { 'title': self.get_title(), 'project': group.project, 'has_auth_configured': has_auth_configured, 'required_auth_settings': required_auth_settings, } ) if self.needs_auth(project=group.project, request=request): return self.render( self.needs_auth_template, { 'title': self.get_title(), 'project': group.project, } ) if GroupMeta.objects.get_value(group, '%s:tid' % self.get_conf_key(), None): if self.can_unlink_issues and request.GET.get('unlink'): return self.handle_unlink_issue(request, group, **kwargs) return None prefix = self.get_conf_key() event = group.get_latest_event() Event.objects.bind_nodes([event], 'data') op = request.POST.get('op', 'create') create_form = self.get_new_issue_form(request, group, event) link_form = None if self.can_link_existing_issues: link_form = self.get_link_existing_issue_form(request, group, event) if op == 'create': if create_form.is_valid(): try: issue_id = self.create_issue( group=group, form_data=create_form.cleaned_data, request=request, ) except forms.ValidationError as e: create_form.errors['__all__'] = [u'Error creating issue: %s' % e] if create_form.is_valid(): GroupMeta.objects.set_value(group, '%s:tid' % prefix, issue_id) issue_information = { 'title': create_form.cleaned_data['title'], 'provider': self.get_title(), 'location': self.get_issue_url(group, issue_id), 'label': self.get_issue_label(group=group, issue_id=issue_id), } Activity.objects.create( project=group.project, group=group, type=Activity.CREATE_ISSUE, user=request.user, data=issue_information, ) issue_tracker_used.send_robust( plugin=self, project=group.project, user=request.user, sender=IssueTrackingPlugin ) return self.redirect(group.get_absolute_url()) elif op == 'link': if link_form.is_valid(): try: self.link_issue( group=group, form_data=link_form.cleaned_data, request=request, ) except forms.ValidationError as e: link_form.errors['__all__'] = [u'Error creating issue: %s' % e] if link_form.is_valid(): issue_id = int(link_form.cleaned_data['issue_id']) GroupMeta.objects.set_value(group, '%s:tid' % prefix, issue_id) issue_information = { 'title': self.get_issue_title_by_id(request, group, issue_id), 'provider': self.get_title(), 'location': self.get_issue_url(group, issue_id), 'label': self.get_issue_label(group=group, issue_id=issue_id), } Activity.objects.create( project=group.project, group=group, type=Activity.CREATE_ISSUE, user=request.user, data=issue_information, ) return self.redirect(group.get_absolute_url()) context = { 'create_form': create_form, # pass in 'form' for legacy compat 'form': create_form, 'title': self.get_new_issue_title(), 'read_only_fields': self.get_new_issue_read_only_fields(group=group), 'can_link_existing_issues': self.can_link_existing_issues, 'link_form': link_form, 'op': op } return self.render(self.create_issue_template, context)
def view_create(self, request, group, **kwargs): from sentry.models import GroupMeta # Django 1.9 setup issue from sentry.models import Event # Django 1.9 setup issue auth_errors = self.check_config_and_auth(request, group) if auth_errors: return Response(auth_errors, status=400) event = group.get_latest_event() if event is None: return Response({ 'message': 'Unable to create issues: there are ' 'no events associated with this group', }, status=400) Event.objects.bind_nodes([event], 'data') try: fields = self.get_new_issue_fields(request, group, event, **kwargs) except Exception as e: return self.handle_api_error(e) if request.method == 'GET': return Response(fields) errors = self.validate_form(fields, request.data) if errors: return Response({'error_type': 'validation', 'errors': errors}, status=400) try: issue = self.create_issue( group=group, form_data=request.data, request=request, ) except Exception as e: return self.handle_api_error(e) if not isinstance(issue, dict): issue = {'id': issue} issue_field_map = self.get_issue_field_map() for key, meta_name in six.iteritems(issue_field_map): if key in issue: GroupMeta.objects.set_value(group, meta_name, issue[key]) else: GroupMeta.objects.unset_value(group, meta_name) issue_information = { 'title': issue.get('title') or request.data.get('title') or self._get_issue_label_compat(group, issue), 'provider': self.get_title(), 'location': self._get_issue_url_compat(group, issue), 'label': self._get_issue_label_compat(group, issue), } from sentry.models import Activity # Django 1.9 setup issue Activity.objects.create( project=group.project, group=group, type=Activity.CREATE_ISSUE, user=request.user, data=issue_information, ) issue_tracker_used.send_robust( plugin=self, project=group.project, user=request.user, sender=type(self) ) return Response({'issue_url': self.get_issue_url(group, issue), 'link': self._get_issue_url_compat(group, issue), 'label': self._get_issue_label_compat(group, issue), 'id': issue['id']})
def view_create(self, request, group, **kwargs): auth_errors = self.check_config_and_auth(request, group) if auth_errors: return Response(auth_errors, status=400) event = group.get_latest_event() if event is None: return Response( { "message": "Unable to create issues: there are " "no events associated with this group" }, status=400, ) Event.objects.bind_nodes([event], "data") try: fields = self.get_new_issue_fields(request, group, event, **kwargs) except Exception as e: return self.handle_api_error(e) if request.method == "GET": return Response(fields) errors = self.validate_form(fields, request.data) if errors: return Response({ "error_type": "validation", "errors": errors }, status=400) try: issue = self.create_issue(group=group, form_data=request.data, request=request) except Exception as e: return self.handle_api_error(e) if not isinstance(issue, dict): issue = {"id": issue} issue_field_map = self.get_issue_field_map() for key, meta_name in six.iteritems(issue_field_map): if key in issue: GroupMeta.objects.set_value(group, meta_name, issue[key]) else: GroupMeta.objects.unset_value(group, meta_name) issue_information = { "title": issue.get("title") or request.data.get("title") or self._get_issue_label_compat(group, issue), "provider": self.get_title(), "location": self._get_issue_url_compat(group, issue), "label": self._get_issue_label_compat(group, issue), } Activity.objects.create( project=group.project, group=group, type=Activity.CREATE_ISSUE, user=request.user, data=issue_information, ) issue_tracker_used.send_robust(plugin=self, project=group.project, user=request.user, sender=type(self)) return Response({ "issue_url": self.get_issue_url(group, issue), "link": self._get_issue_url_compat(group, issue), "label": self._get_issue_label_compat(group, issue), "id": issue["id"], })
def view_create(self, request, group, **kwargs): auth_errors = self.check_config_and_auth(request, group) if auth_errors: return Response(auth_errors, status=400) event = group.get_latest_event() if event is None: return Response({ 'message': 'Unable to create issues: there are ' 'no events associated with this group', }, status=400) Event.objects.bind_nodes([event], 'data') try: fields = self.get_new_issue_fields(request, group, event, **kwargs) except Exception as e: return self.handle_api_error(e) if request.method == 'GET': return Response(fields) errors = self.validate_form(fields, request.DATA) if errors: return Response({'error_type': 'validation', 'errors': errors}, status=400) try: issue = self.create_issue( group=group, form_data=request.DATA, request=request, ) except Exception as e: return self.handle_api_error(e) if not isinstance(issue, dict): issue = {'id': issue} issue_field_map = self.get_issue_field_map() for key, meta_name in six.iteritems(issue_field_map): if key in issue: GroupMeta.objects.set_value(group, meta_name, issue[key]) else: GroupMeta.objects.unset_value(group, meta_name) issue_information = { 'title': issue.get('title') or request.DATA.get('title') or self._get_issue_label_compat(group, issue), 'provider': self.get_title(), 'location': self._get_issue_url_compat(group, issue), 'label': self._get_issue_label_compat(group, issue), } Activity.objects.create( project=group.project, group=group, type=Activity.CREATE_ISSUE, user=request.user, data=issue_information, ) issue_tracker_used.send_robust( plugin=self, project=group.project, user=request.user, sender=type(self) ) return Response({'issue_url': self.get_issue_url(group, issue), 'link': self._get_issue_url_compat(group, issue), 'label': self._get_issue_label_compat(group, issue), 'id': issue['id']})