[quota] add quota support for maximum number of answers
This commit is contained in:
parent
e9b5f4ee7b
commit
42bcb955c1
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Reference in New Issue