[quota] add quota support for maximum number of answers

This commit is contained in:
Frédéric Péters 2011-04-17 13:01:31 +02:00
parent e9b5f4ee7b
commit 42bcb955c1
2 changed files with 18 additions and 0 deletions

View File

@ -59,3 +59,16 @@ def may_add_a_new_field(formdef):
fields_count += 1
return (fields_count < max_fields)
def get_max_number_of_answers():
t = get_request().get_header('QuotaAnswers')
if not t:
return None
return int(t)
def may_add_a_new_answer(formdef):
max_answers = get_max_number_of_answers()
if not max_answers:
return True
answers_count = formdef.data_class().count()
return (answers_count < max_answers)

View File

@ -34,6 +34,7 @@ from wcs.formdef import FormDef
import forms
import backoffice
import quota
class PrivateDirectory(Directory):
@ -57,6 +58,8 @@ class PrivateDirectory(Directory):
raise errors.TraversalError()
if not formdef.private:
raise errors.TraversalError()
if not quota.may_add_a_new_answer(formdef):
raise quota.QuotaExceeded()
return forms.FormPage(formdef=formdef)
@ -113,6 +116,8 @@ class RootDirectory(wcs.root.RootDirectory):
raise errors.TraversalError()
if f.private is True:
raise errors.TraversalError()
if not quota.may_add_a_new_answer(f):
raise quota.QuotaExceeded()
get_response().breadcrumb.append(('%s/' % f.url_name, f.name))
return forms.FormPage(formdef=f)