def post(self, request, organization): """ Create a new Team `````````````````` Create a new team bound to an organization. Only the name of the team is needed to create it, the slug can be auto generated. :pparam string organization_slug: the slug of the organization the team should be created for. :param string name: the optional name of the team. :param string slug: the optional slug for this team. If not provided it will be auto generated from the name. :auth: required """ serializer = TeamSerializer(data=request.data) if serializer.is_valid(): result = serializer.validated_data try: with transaction.atomic(): team = Team.objects.create( name=result.get("name") or result["slug"], slug=result.get("slug"), organization=organization, ) except IntegrityError: return Response( { "non_field_errors": [CONFLICTING_SLUG_ERROR], "detail": CONFLICTING_SLUG_ERROR, }, status=409, ) else: team_created.send_robust( organization=organization, user=request.user, team=team, sender=self.__class__ ) if request.user.is_authenticated(): try: member = OrganizationMember.objects.get( user=request.user, organization=organization ) except OrganizationMember.DoesNotExist: pass else: OrganizationMemberTeam.objects.create(team=team, organizationmember=member) self.create_audit_entry( request=request, organization=organization, target_object=team.id, event=AuditLogEntryEvent.TEAM_ADD, data=team.get_audit_log_data(), ) return Response(serialize(team, request.user), status=201) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def post(self, request, organization): """ Create a new Team `````````````````` Create a new team bound to an organization. Only the name of the team is needed to create it, the slug can be auto generated. :pparam string organization_slug: the slug of the organization the team should be created for. :param string name: the optional name of the team. :param string slug: the optional slug for this team. If not provided it will be auto generated from the name. :auth: required """ serializer = TeamSerializer(data=request.DATA) if serializer.is_valid(): result = serializer.object try: with transaction.atomic(): team = Team.objects.create( name=result.get('name') or result['slug'], slug=result.get('slug'), organization=organization, ) except IntegrityError: return Response( { 'non_field_errors': [CONFLICTING_SLUG_ERROR], 'detail': CONFLICTING_SLUG_ERROR, }, status=409, ) else: team_created.send_robust( organization=organization, user=request.user, team=team, sender=self.__class__, ) if request.user.is_authenticated(): try: member = OrganizationMember.objects.get( user=request.user, organization=organization, ) except OrganizationMember.DoesNotExist: pass else: OrganizationMemberTeam.objects.create( team=team, organizationmember=member, ) self.create_audit_entry( request=request, organization=organization, target_object=team.id, event=AuditLogEntryEvent.TEAM_ADD, data=team.get_audit_log_data(), ) return Response(serialize(team, request.user), status=201) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)