Skip to content

Commit 22e1400

Browse files
mitsuhikomattrobenolt
authored andcommitted
Merge pull request #5022 from getsentry/bugfix/releases
Permit almost anything for releases again
1 parent 11bf535 commit 22e1400

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

src/sentry/api/endpoints/project_releases.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
from sentry.utils.apidocs import scenario, attach_scenarios
1717

1818

19+
BAD_RELEASE_CHARS = '\n\f\t/'
20+
21+
1922
@scenario('CreateNewRelease')
2023
def create_new_release_scenario(runner):
2124
runner.request(
@@ -42,15 +45,20 @@ def list_releases_scenario(runner):
4245

4346

4447
class ReleaseSerializer(serializers.Serializer):
45-
version = serializers.RegexField(r'^[a-zA-Z0-9\-_\. \(\)]+\Z',
46-
max_length=64, required=True)
48+
version = serializers.CharField(max_length=64, required=True)
4749
ref = serializers.CharField(max_length=64, required=False)
4850
url = serializers.URLField(required=False)
4951
owner = UserField(required=False)
5052
dateStarted = serializers.DateTimeField(required=False)
5153
dateReleased = serializers.DateTimeField(required=False)
5254
commits = ListField(child=CommitSerializer(), required=False)
5355

56+
def validate_version(self, attrs, source):
57+
value = attrs[source]
58+
if any(c in value for c in BAD_RELEASE_CHARS) or value in ('.', '..'):
59+
raise serializers.ValidationError('Invalid value for release')
60+
return attrs
61+
5462

5563
class ProjectReleasesEndpoint(ProjectEndpoint):
5664
doc_section = DocSection.RELEASES

tests/sentry/api/endpoints/test_organization_releases.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -344,11 +344,11 @@ def test_version_whitespace(self):
344344
assert response.status_code == 400, response.content
345345

346346
response = self.client.post(url, data={
347-
'version': '1.2.3',
347+
'version': '1.2.3+dev',
348348
'projects': [project.slug]
349349
})
350350
assert response.status_code == 201, response.content
351-
assert response.data['version'] == '1.2.3'
351+
assert response.data['version'] == '1.2.3+dev'
352352

353353
release = Release.objects.get(
354354
organization_id=org.id,

0 commit comments

Comments
 (0)