|
20 | 20 | from ietf.name.models import NomineePositionState, FeedbackType |
21 | 21 |
|
22 | 22 | from ietf.nomcom.decorators import member_required, private_key_required |
23 | | -from ietf.nomcom.forms import (NominateForm, FeedbackForm, MergeForm, |
24 | | - NomComTemplateForm, PositionForm, PrivateKeyForm, |
25 | | - EditNomcomForm) |
| 23 | +from ietf.nomcom.forms import (NominateForm, FeedbackForm, QuestionnaireForm, |
| 24 | + MergeForm, NomComTemplateForm, PositionForm, |
| 25 | + PrivateKeyForm, EditNomcomForm) |
26 | 26 | from ietf.nomcom.models import Position, NomineePosition, Nominee, Feedback, NomCom |
27 | 27 | from ietf.nomcom.utils import (get_nomcom_by_year, HOME_TEMPLATE, |
28 | 28 | retrieve_nomcom_private_key, |
@@ -256,42 +256,6 @@ def private_feedback(request, year): |
256 | 256 | return feedback(request, year, False) |
257 | 257 |
|
258 | 258 |
|
259 | | -def process_nomination_status(request, year, nominee_position_id, state, date, hash): |
260 | | - valid = get_hash_nominee_position(date, nominee_position_id) == hash |
261 | | - if not valid: |
262 | | - return HttpResponseForbidden("Bad hash!") |
263 | | - expiration_days = getattr(settings, 'DAYS_TO_EXPIRE_NOMINATION_LINK', None) |
264 | | - if expiration_days: |
265 | | - request_date = datetime.date(int(date[:4]), int(date[4:6]), int(date[6:])) |
266 | | - if datetime.date.today() > (request_date + datetime.timedelta(days=settings.DAYS_TO_EXPIRE_REGISTRATION_LINK)): |
267 | | - return HttpResponseForbidden("Link expired") |
268 | | - |
269 | | - need_confirmation = True |
270 | | - nomcom = get_nomcom_by_year(year) |
271 | | - nominee_position = get_object_or_404(NomineePosition, id=nominee_position_id) |
272 | | - if nominee_position.state.slug != "pending": |
273 | | - return HttpResponseForbidden("The nomination already was %s" % nominee_position.state) |
274 | | - |
275 | | - state = get_object_or_404(NomineePositionState, slug=state) |
276 | | - message = ('warning', "Are you sure to change the nomination on %s as %s?" % (nominee_position.position.name, |
277 | | - state.name)) |
278 | | - if request.method == 'POST': |
279 | | - nominee_position.state = state |
280 | | - nominee_position.save() |
281 | | - need_confirmation = False |
282 | | - message = message = ('success', 'Your nomination on %s has been set as %s' % (nominee_position.position.name, |
283 | | - state.name)) |
284 | | - |
285 | | - return render_to_response('nomcom/process_nomination_status.html', |
286 | | - {'message': message, |
287 | | - 'nomcom': nomcom, |
288 | | - 'year': year, |
289 | | - 'nominee_position': nominee_position, |
290 | | - 'state': state, |
291 | | - 'need_confirmation': need_confirmation, |
292 | | - 'selected': 'feedback'}, RequestContext(request)) |
293 | | - |
294 | | - |
295 | 259 | def feedback(request, year, public): |
296 | 260 | nomcom = get_nomcom_by_year(year) |
297 | 261 | has_publickey = nomcom.public_key and True or False |
@@ -344,6 +308,75 @@ def feedback(request, year, public): |
344 | 308 | 'selected': 'feedback'}, RequestContext(request)) |
345 | 309 |
|
346 | 310 |
|
| 311 | +def private_questionnaire(request, year): |
| 312 | + nomcom = get_nomcom_by_year(year) |
| 313 | + has_publickey = nomcom.public_key and True or False |
| 314 | + message = None |
| 315 | + template = 'nomcom/private_questionnaire.html' |
| 316 | + |
| 317 | + if not has_publickey: |
| 318 | + message = ('warning', "Nomcom don't have public key to ecrypt data, please contact with nomcom chair") |
| 319 | + return render_to_response(template, |
| 320 | + {'has_publickey': has_publickey, |
| 321 | + 'message': message, |
| 322 | + 'nomcom': nomcom, |
| 323 | + 'year': year, |
| 324 | + 'selected': 'questionnaire'}, RequestContext(request)) |
| 325 | + |
| 326 | + if request.method == 'POST': |
| 327 | + form = QuestionnaireForm(data=request.POST, |
| 328 | + nomcom=nomcom, user=request.user) |
| 329 | + if form.is_valid(): |
| 330 | + form.save() |
| 331 | + message = ('success', 'The questionnaire has been registered.') |
| 332 | + else: |
| 333 | + form = QuestionnaireForm(nomcom=nomcom, user=request.user) |
| 334 | + |
| 335 | + return render_to_response(template, |
| 336 | + {'has_publickey': has_publickey, |
| 337 | + 'form': form, |
| 338 | + 'message': message, |
| 339 | + 'nomcom': nomcom, |
| 340 | + 'year': year, |
| 341 | + 'selected': 'questionnaire'}, RequestContext(request)) |
| 342 | + |
| 343 | + |
| 344 | +def process_nomination_status(request, year, nominee_position_id, state, date, hash): |
| 345 | + valid = get_hash_nominee_position(date, nominee_position_id) == hash |
| 346 | + if not valid: |
| 347 | + return HttpResponseForbidden("Bad hash!") |
| 348 | + expiration_days = getattr(settings, 'DAYS_TO_EXPIRE_NOMINATION_LINK', None) |
| 349 | + if expiration_days: |
| 350 | + request_date = datetime.date(int(date[:4]), int(date[4:6]), int(date[6:])) |
| 351 | + if datetime.date.today() > (request_date + datetime.timedelta(days=settings.DAYS_TO_EXPIRE_REGISTRATION_LINK)): |
| 352 | + return HttpResponseForbidden("Link expired") |
| 353 | + |
| 354 | + need_confirmation = True |
| 355 | + nomcom = get_nomcom_by_year(year) |
| 356 | + nominee_position = get_object_or_404(NomineePosition, id=nominee_position_id) |
| 357 | + if nominee_position.state.slug != "pending": |
| 358 | + return HttpResponseForbidden("The nomination already was %s" % nominee_position.state) |
| 359 | + |
| 360 | + state = get_object_or_404(NomineePositionState, slug=state) |
| 361 | + message = ('warning', "Are you sure to change the nomination on %s as %s?" % (nominee_position.position.name, |
| 362 | + state.name)) |
| 363 | + if request.method == 'POST': |
| 364 | + nominee_position.state = state |
| 365 | + nominee_position.save() |
| 366 | + need_confirmation = False |
| 367 | + message = message = ('success', 'Your nomination on %s has been set as %s' % (nominee_position.position.name, |
| 368 | + state.name)) |
| 369 | + |
| 370 | + return render_to_response('nomcom/process_nomination_status.html', |
| 371 | + {'message': message, |
| 372 | + 'nomcom': nomcom, |
| 373 | + 'year': year, |
| 374 | + 'nominee_position': nominee_position, |
| 375 | + 'state': state, |
| 376 | + 'need_confirmation': need_confirmation, |
| 377 | + 'selected': 'feedback'}, RequestContext(request)) |
| 378 | + |
| 379 | + |
347 | 380 | @member_required(role='member') |
348 | 381 | @private_key_required |
349 | 382 | def view_feedback(request, year): |
|
0 commit comments