def manage_project_quotas(request, team, project): from sentry.quotas.base import Quota form = ProjectQuotasForm(project, request.POST or None) if form and form.is_valid(): form.save() messages.add_message(request, messages.SUCCESS, _('Your settings were saved successfully.')) return HttpResponseRedirect( reverse('sentry-manage-project-quotas', args=[project.team.slug, project.slug])) context = { 'team': team, 'page': 'quotas', # TODO(dcramer): has_quotas is an awful hack 'has_quotas': type(app.quotas) != Quota, 'system_quota': app.quotas.get_system_quota(), 'team_quota': app.quotas.get_team_quota(team), 'project': project, 'form': form, } return render_to_response('sentry/projects/quotas.html', context, request)
def manage_project_quotas(request, organization, project): if not features.has('projects:quotas', project, actor=request.user): messages.add_message( request, messages.ERROR, ERR_NO_SSO, ) redirect = reverse('sentry-manage-project', args=[organization.slug, project.slug]) return HttpResponseRedirect(redirect) form = ProjectQuotasForm(project, request.POST or None) if form and form.is_valid(): form.save() messages.add_message( request, messages.SUCCESS, _('Your settings were saved successfully.')) return HttpResponseRedirect(reverse('sentry-manage-project-quotas', args=[project.organization.slug, project.slug])) context = { 'organization': organization, 'team': project.team, 'page': 'quotas', # TODO(dcramer): has_quotas is an awful hack 'has_quotas': type(app.quotas) != Quota, 'system_quota': int(app.quotas.get_system_quota()), 'team_quota': int(app.quotas.get_team_quota(project.team)), 'project': project, 'form': form, } return render_to_response('sentry/projects/quotas.html', context, request)
def test_accepts_percentage(self): project = Project(id=1) form = ProjectQuotasForm(project, {'per_minute': '50%'}) assert form.is_valid() assert form.cleaned_data['per_minute'] == '50%'
def test_discards_0_percent(self): project = Project(id=1) form = ProjectQuotasForm(project, {'per_minute': '0%'}) assert form.is_valid() assert form.cleaned_data['per_minute'] == '0'
def test_accepts_numbers(self): project = Project(id=1) form = ProjectQuotasForm(project, {'per_minute': '100'}) assert form.is_valid() assert form.cleaned_data['per_minute'] == '100'
def test_invalidates_101_percent(self): project = Project(id=1) form = ProjectQuotasForm(project, {'per_minute': '101%'}) assert not form.is_valid() assert 'per_minute' in form.errors