diff --git a/src/sentry/api/endpoints/project_details.py b/src/sentry/api/endpoints/project_details.py index 27061f2d6afc9c..19a6396a8aa07a 100644 --- a/src/sentry/api/endpoints/project_details.py +++ b/src/sentry/api/endpoints/project_details.py @@ -20,7 +20,7 @@ from sentry.api.serializers.rest_framework import ListField, OriginField from sentry.models import ( AuditLogEntryEvent, Group, GroupStatus, Project, ProjectBookmark, ProjectStatus, - UserOption, Team, + ProjectTeam, UserOption, Team, ) from sentry.tasks.deletion import delete_project from sentry.utils.apidocs import scenario, attach_scenarios @@ -242,6 +242,7 @@ def put(self, request, project): project.name = result['name'] changed = True + old_team_id = None if result.get('team'): team_list = [ t for t in Team.objects.get_for_user( @@ -257,6 +258,7 @@ def put(self, request, project): 'detail': ['The new team is not found.'] }, status=400 ) + old_team_id = project.team_id project.team = team_list[0] changed = True @@ -266,6 +268,11 @@ def put(self, request, project): if changed: project.save() + if old_team_id is not None: + ProjectTeam.objects.filter( + project=project, + team_id=old_team_id, + ).update(team=project.team) if result.get('isBookmarked'): try: diff --git a/src/sentry/web/forms/add_project.py b/src/sentry/web/forms/add_project.py deleted file mode 100644 index 43b1279cc6f8a4..00000000000000 --- a/src/sentry/web/forms/add_project.py +++ /dev/null @@ -1,49 +0,0 @@ -from __future__ import absolute_import - -from django import forms -from django.utils.translation import ugettext_lazy as _ - -from sentry.models import AuditLogEntry, AuditLogEntryEvent, Project -from sentry.signals import project_created - -BLANK_CHOICE = [("", "")] - - -class AddProjectForm(forms.ModelForm): - name = forms.CharField( - label=_('Name'), - max_length=64, - widget=forms.TextInput( - attrs={ - 'placeholder': _('i.e. API, Frontend, My Application Name'), - } - ), - help_text=_('Using the repository name generally works well.'), - ) - - class Meta: - fields = ('name', ) - model = Project - - def __init__(self, organization, *args, **kwargs): - forms.ModelForm.__init__(self, *args, **kwargs) - self.organization = organization - - def save(self, actor, team, ip_address): - project = super(AddProjectForm, self).save(commit=False) - project.team = team - project.organization = team.organization - project.save() - - AuditLogEntry.objects.create( - organization=project.organization, - actor=actor, - ip_address=ip_address, - target_object=project.id, - event=AuditLogEntryEvent.PROJECT_ADD, - data=project.get_audit_log_data(), - ) - - project_created.send(project=project, user=actor, sender=self) - - return project diff --git a/tests/sentry/api/endpoints/test_project_details.py b/tests/sentry/api/endpoints/test_project_details.py index 57d4c4a61e846b..e5e30b1d592f45 100644 --- a/tests/sentry/api/endpoints/test_project_details.py +++ b/tests/sentry/api/endpoints/test_project_details.py @@ -92,6 +92,7 @@ def test_team_changes(self): assert resp.status_code == 200, resp.content project = Project.objects.get(id=project.id) assert project.team == team + assert project.teams.first() == team def test_team_changes_not_found(self): project = self.create_project()