add support for expired sites
This commit is contained in:
parent
7761922bdf
commit
86350939a0
|
@ -20,6 +20,7 @@ from quixote import get_publisher, get_request, get_response, get_session, redir
|
|||
from quixote.directory import Directory, AccessControlled
|
||||
|
||||
from qommon import errors
|
||||
from qommon.admin.texts import TextsDirectory
|
||||
import qommon.backoffice.menu
|
||||
from qommon.backoffice.menu import html_top
|
||||
from qommon.form import *
|
||||
|
@ -125,6 +126,9 @@ class RootDirectory(AccessControlled, Directory):
|
|||
get_response().breadcrumb = [ ('backoffice/', _('Back Office of your site')) ]
|
||||
html_top('', _('Questionnaires'))
|
||||
|
||||
if quota.is_expired():
|
||||
TextsDirectory.get_html_text('asec-expired-site-backoffice')
|
||||
|
||||
formdefs = FormDef.select(order_by='name', ignore_errors=True)
|
||||
|
||||
if formdefs:
|
||||
|
@ -258,3 +262,11 @@ A new questionnaire ([name]) has been filled.
|
|||
status.items.append(sendmail_item)
|
||||
wf.store()
|
||||
|
||||
|
||||
TextsDirectory.register('asec-expired-site-backoffice',
|
||||
N_('Text displayed on the backoffice when the site has expired'),
|
||||
default=N_('''<p>
|
||||
This site has expired. You still have access to all of your data but
|
||||
your questionnaires are no longer published.
|
||||
</p>
|
||||
'''))
|
||||
|
|
|
@ -29,6 +29,8 @@ from wcs.users import User
|
|||
|
||||
from participanttokens import ParticipantToken
|
||||
|
||||
import quota
|
||||
|
||||
class AlreadyVotedError(Exception):
|
||||
pass
|
||||
|
||||
|
@ -168,12 +170,18 @@ class FormPage(wcs.forms.root.FormPage):
|
|||
if self.formdef.asec_status == 'closed':
|
||||
return redirect('results/')
|
||||
|
||||
if quota.is_expired():
|
||||
return self.expired()
|
||||
|
||||
if self.formdef.asec_status == 'soon-available':
|
||||
if self.formdef.roles:
|
||||
return self.participant_ask_token()
|
||||
else:
|
||||
return self.soon_available()
|
||||
|
||||
if quota.is_expired():
|
||||
return self.expired()
|
||||
|
||||
try:
|
||||
return wcs.forms.root.FormPage._q_index(self, *args, **kwargs)
|
||||
except (errors.AccessUnauthorizedError, errors.AccessForbiddenError):
|
||||
|
@ -181,6 +189,10 @@ class FormPage(wcs.forms.root.FormPage):
|
|||
except AlreadyVotedError:
|
||||
return self.already_voted_error()
|
||||
|
||||
def expired [html] (self):
|
||||
wcs.forms.root.html_top(self.formdef.name)
|
||||
TextsDirectory.get_html_text('asec-expired-site-questionnaire')
|
||||
|
||||
def soon_available [html] (self):
|
||||
wcs.forms.root.html_top(self.formdef.name)
|
||||
'<div id="access-asec-identify">'
|
||||
|
@ -331,3 +343,11 @@ Thank you for your vote!
|
|||
|
||||
Regards,
|
||||
'''))
|
||||
|
||||
|
||||
TextsDirectory.register('asec-expired-site-questionnaire',
|
||||
N_('Text displayed on a questionnaire when the site has expired'),
|
||||
default=N_('''<p>
|
||||
This site has expired. This questionnaire is no longer available.
|
||||
</p>
|
||||
'''))
|
||||
|
|
|
@ -92,3 +92,6 @@ def can_theme():
|
|||
|
||||
def is_locked():
|
||||
return get_boolean_quota('x-asec-locked')
|
||||
|
||||
def is_expired():
|
||||
return get_boolean_quota('x-asec-expired')
|
||||
|
|
|
@ -51,6 +51,7 @@ class PrivateDirectory(Directory):
|
|||
raise errors.TraversalError()
|
||||
if token.type != 'private-url':
|
||||
raise errors.TraversalError()
|
||||
|
||||
try:
|
||||
formdef = FormDef.get(token.formdef_id)
|
||||
except KeyError:
|
||||
|
@ -59,6 +60,7 @@ 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)
|
||||
|
@ -88,6 +90,9 @@ class RootDirectory(wcs.root.RootDirectory):
|
|||
|
||||
formdefs = FormDef.select(order_by='name', ignore_errors=True)
|
||||
|
||||
if quota.is_expired():
|
||||
return self.index_expired()
|
||||
|
||||
if len(formdefs) == 0:
|
||||
TextsDirectory.get_html_text('asec-welcome-empty-site')
|
||||
else:
|
||||
|
@ -105,6 +110,10 @@ class RootDirectory(wcs.root.RootDirectory):
|
|||
'<li><a href="%s/">%s</a></li>' % (formdef.url_name, formdef.name)
|
||||
'</ul>'
|
||||
|
||||
def index_expired [html] (self):
|
||||
template.html_top()
|
||||
TextsDirectory.get_html_text('asec-expired-site-homepage')
|
||||
|
||||
def _q_lookup(self, component):
|
||||
if component in ('css','images'):
|
||||
return StaticDirectory(
|
||||
|
@ -148,4 +157,9 @@ This site has been locked.
|
|||
</p>
|
||||
'''))
|
||||
|
||||
|
||||
TextsDirectory.register('asec-expired-site-homepage',
|
||||
N_('Text displayed on the homepage when the site has expired'),
|
||||
default=N_('''<p>
|
||||
This site has expired.
|
||||
</p>
|
||||
'''))
|
||||
|
|
Reference in New Issue