38 |
38 |
from categories import Category
|
39 |
39 |
from users import User
|
40 |
40 |
from formdef import FormDef
|
41 |
|
from formdata import FormData
|
|
41 |
from formdata import FormData, TrackingCode
|
42 |
42 |
from anonylink import AnonymityLink
|
43 |
43 |
|
44 |
44 |
|
... | ... | |
168 |
168 |
|
169 |
169 |
class RootDirectory(Directory):
|
170 |
170 |
_q_exports = ['admin', 'backoffice', 'forms', 'login', 'logout', 'liberty', 'token', 'saml',
|
171 |
|
'ident', 'register', 'afterjobs', 'themes', 'myspace',
|
|
171 |
'ident', 'register', 'afterjobs', 'themes', 'myspace', 'trackingcode',
|
172 |
172 |
'pages']
|
173 |
173 |
|
174 |
174 |
themes = template.ThemesDirectory()
|
175 |
175 |
myspace = qommon.myspace.MyspaceDirectory()
|
176 |
176 |
pages = qommon.pages.PagesDirectory()
|
177 |
177 |
|
|
178 |
def trackingcode [html] (self):
|
|
179 |
form = Form(enctype='multipart/form-data')
|
|
180 |
form.add(StringWidget, 'trackingcode', title = _('Tracking Code'),
|
|
181 |
required = True, size = 15)
|
|
182 |
form.add_submit('submit', _('Submit'))
|
|
183 |
form.add_submit('cancel', _('Cancel'))
|
|
184 |
|
|
185 |
if form.get_widget('cancel').parse():
|
|
186 |
return redirect('.')
|
|
187 |
|
|
188 |
if not form.is_submitted() or form.has_errors():
|
|
189 |
template.html_top(_('Tracking Code'))
|
|
190 |
form.render()
|
|
191 |
else:
|
|
192 |
session = get_session()
|
|
193 |
if not session: # should not happen
|
|
194 |
return redirect(get_publisher().get_root_url())
|
|
195 |
tc = form.get_widget('trackingcode').parse()
|
|
196 |
try:
|
|
197 |
if not TrackingCode.check_crc(tc):
|
|
198 |
raise KeyError
|
|
199 |
tc = TrackingCode.get(tc)
|
|
200 |
fdef = FormDef.get(tc.formdef_id)
|
|
201 |
fdata = fdef.data_class().get(tc.formdata_id)
|
|
202 |
if fdata.tracking_code != tc.id: # check if the formdata is the good one
|
|
203 |
raise KeyError
|
|
204 |
session.add_tracking_code(tc.id)
|
|
205 |
return redirect(fdata.get_url())
|
|
206 |
except KeyError:
|
|
207 |
form.set_error('trackingcode', _('This Tracking Code does not exist.'))
|
|
208 |
template.html_top(_('Tracking Code'))
|
|
209 |
form.render()
|
|
210 |
|
178 |
211 |
def logout(self):
|
179 |
212 |
get_logger().info('logout')
|
180 |
213 |
session = get_session()
|