374 For params see base.view.Public(). |
374 For params see base.view.Public(). |
375 """ |
375 """ |
376 |
376 |
377 from django.utils import simplejson |
377 from django.utils import simplejson |
378 |
378 |
|
379 from soc.logic.models.proposal_duplicates import logic as duplicates_logic |
|
380 |
379 program_entity = program_logic.logic.getFromKeyFieldsOr404(kwargs) |
381 program_entity = program_logic.logic.getFromKeyFieldsOr404(kwargs) |
|
382 |
|
383 if request.POST and request.POST.get('result'): |
|
384 # store result in the datastore |
|
385 fields = {'link_id': program_entity.link_id, |
|
386 'scope': program_entity, |
|
387 'scope_path': program_entity.key().name(), |
|
388 'json_representation' : request.POST['result'] |
|
389 } |
|
390 key_name = duplicates_logic.getKeyNameFromFields(fields) |
|
391 duplicates_logic.updateOrCreateFromKeyName(fields, key_name) |
|
392 return http.HttpResponse('Done') |
380 |
393 |
381 context = helper.responses.getUniversalContext(request) |
394 context = helper.responses.getUniversalContext(request) |
382 helper.responses.useJavaScript(context, params['js_uses_all']) |
395 helper.responses.useJavaScript(context, params['js_uses_all']) |
383 context['uses_duplicates'] = True |
396 context['uses_duplicates'] = True |
384 context['uses_json'] = True |
397 context['uses_json'] = True |
394 to_json = { |
407 to_json = { |
395 'nr_of_orgs': query.count(), |
408 'nr_of_orgs': query.count(), |
396 'program_key': program_entity.key().name()} |
409 'program_key': program_entity.key().name()} |
397 json = simplejson.dumps(to_json) |
410 json = simplejson.dumps(to_json) |
398 context['info'] = json |
411 context['info'] = json |
399 |
|
400 # TODO(ljvderijk) cache the result of the duplicate calculation |
|
401 context['duplicate_cache_content'] = simplejson.dumps({}) |
|
402 context['offset_length'] = 10 |
412 context['offset_length'] = 10 |
|
413 |
|
414 fields = {'link_id': program_entity.link_id, |
|
415 'scope': program_entity} |
|
416 duplicates = duplicates_logic.getForFields(fields, unique=True) |
|
417 |
|
418 if duplicates: |
|
419 # we have stored information |
|
420 context['duplicate_cache_content'] = duplicates.json_representation |
|
421 context['date_of_calculation'] = duplicates.calculated_on |
|
422 else: |
|
423 # no information stored |
|
424 context['duplicate_cache_content'] = simplejson.dumps({}) |
403 |
425 |
404 template = 'soc/program/show_duplicates.html' |
426 template = 'soc/program/show_duplicates.html' |
405 |
427 |
406 return helper.responses.respond(request, template=template, context=context) |
428 return helper.responses.respond(request, template=template, context=context) |
407 |
429 |