210 display_message(request, _(u'Text %(text_title)s deleted') %{'text_title':text.title}) |
210 display_message(request, _(u'Text %(text_title)s deleted') %{'text_title':text.title}) |
211 register_activity(request, "text_removed", text=text) |
211 register_activity(request, "text_removed", text=text) |
212 text.delete() |
212 text.delete() |
213 return HttpResponse('') # no redirect because this is called by js |
213 return HttpResponse('') # no redirect because this is called by js |
214 |
214 |
|
215 @has_perm_on_text('can_delete_text') |
|
216 def text_version_delete(request, key, text_version_key): |
|
217 text_version = TextVersion.objects.get(key=text_version_key) |
|
218 text=text_version.text |
|
219 if request.method != 'POST': |
|
220 raise UnauthorizedException('Unauthorized') |
|
221 display_message(request, _(u'Text version %(text_version_title)s deleted') %{'text_version_title':text_version.title}) |
|
222 register_activity(request, "text_version_removed", text=text) |
|
223 import pdb;pdb.set_trace() |
|
224 text_version.delete() |
|
225 return HttpResponse('') # no redirect because this is called by js |
|
226 |
|
227 |
215 @has_perm_on_text('can_view_text') # only protected by text_view / comment filtering done in view |
228 @has_perm_on_text('can_view_text') # only protected by text_view / comment filtering done in view |
216 def text_view_comments(request, key, version_key=None, adminkey=None): |
229 def text_view_comments(request, key, version_key=None, adminkey=None): |
217 text = get_text_by_keys_or_404(key) |
230 text = get_text_by_keys_or_404(key) |
218 |
231 |
219 read_only = False |
232 read_only = False |
444 template_dict, |
457 template_dict, |
445 context_instance=RequestContext(request)) |
458 context_instance=RequestContext(request)) |
446 |
459 |
447 |
460 |
448 @has_perm_on_text('can_view_text') |
461 @has_perm_on_text('can_view_text') |
449 def text_history(request, key, v1_nid=None, v2_nid=None, adminkey=False): |
462 def text_history_version(request, key, version_key): |
450 text = get_text_by_keys_or_404(key) |
463 text = get_text_by_keys_or_404(key) |
|
464 text_version = get_textversion_by_keys_or_404(version_key, key=key) |
|
465 template_dict = {'text' : text, |
|
466 'text_version' : text_version, |
|
467 'embed_code' : embed_html(key, 'id="text_view_frame" name="text_view_frame"', version_key), |
|
468 } |
|
469 return render_to_response('site/text_history_version.html', |
|
470 template_dict, |
|
471 context_instance=RequestContext(request)) |
|
472 |
|
473 #@has_perm_on_text('can_view_text') |
|
474 def text_history_compare(request, key, v1_version_key, v2_version_key): |
|
475 text = get_text_by_keys_or_404(key) |
|
476 v1 = get_textversion_by_keys_or_404(v1_version_key, key=key) |
|
477 v2 = get_textversion_by_keys_or_404(v2_version_key, key=key) |
|
478 |
|
479 content = get_uniffied_inner_diff_table(cleanup_textarea(v1.content), cleanup_textarea(v2.content)) |
|
480 |
|
481 template_dict = { |
|
482 'text' : text, |
|
483 'v1': v1, |
|
484 'v2': v2, |
|
485 'content' : content.strip(), |
|
486 'empty' : '<table class="diff"><tbody></tbody></table>'==content, |
|
487 } |
|
488 return render_to_response('site/text_history_compare.html', |
|
489 template_dict, |
|
490 context_instance=RequestContext(request)) |
|
491 |
|
492 @has_perm_on_text('can_view_text') |
|
493 def text_history(request, key): |
|
494 text = get_text_by_keys_or_404(key) |
|
495 |
|
496 if request.method == 'POST': |
|
497 v1_key = request.POST.get('newkey',None) |
|
498 v2_key = request.POST.get('oldkey',None) |
|
499 if v1_key and v2_key: |
|
500 return redirect(request, 'text-history-compare', args=[text.key, v2_key, v1_key ]) |
|
501 |
451 text_versions = text.get_versions() |
502 text_versions = text.get_versions() |
452 author_colors = get_colors([t.get_name() for t in text.get_inversed_versions()]) |
503 paginate_by = get_int(request.GET,'paginate',TEXT_PAGINATION) |
453 |
504 |
454 if v1_nid: |
505 last_last_version = text_versions[1] if len(text_versions)>1 else None |
455 v1_nid = int(v1_nid) |
506 context = {'text':text, 'last_version':text.last_text_version, 'last_last_version':last_last_version} |
456 else: |
507 return object_list(request, text_versions, |
457 v1_nid = text.get_versions_number() |
508 template_name = 'site/text_history.html', |
458 |
509 paginate_by = paginate_by, |
459 v1 = text.get_version(v1_nid) |
510 extra_context=context, |
460 |
511 ) |
461 v1_id = v1.id |
512 |
462 |
|
463 v2_id = None |
|
464 v2 = None |
|
465 if v2_nid: |
|
466 v2_nid = int(v2_nid) |
|
467 v2 = text.get_version(v2_nid) |
|
468 v2_id = v2.id |
|
469 |
|
470 versions = text.get_inversed_versions() |
|
471 paired_versions = [] |
|
472 colors_dict = dict(author_colors) |
|
473 for index in range(len(versions)): |
|
474 vv1 = versions[index] |
|
475 if index + 1 < len(versions): |
|
476 vv2 = versions[index + 1] |
|
477 else: |
|
478 vv2 = None |
|
479 paired_versions.append((vv1, vv2, colors_dict.get(vv1.get_name(), '#D9D9D9'))) |
|
480 |
|
481 embed_code = "" |
|
482 content = "" |
|
483 if v1_nid and not v2_nid: |
|
484 embed_code = embed_html(key, 'id="text_view_frame" name="text_view_frame"', v1.key) |
|
485 else: |
|
486 content = get_uniffied_inner_diff_table(cleanup_textarea(v1.content), cleanup_textarea(v2.content)) |
|
487 |
|
488 template_dict = {'paired_versions' : paired_versions, |
|
489 'text' : text, |
|
490 'v1_nid' : v1_nid, |
|
491 'v2_nid' : v2_nid, |
|
492 'v1_id' : v1_id, |
|
493 'v2_id' : v2_id, |
|
494 'version1': v1, |
|
495 'version2': v2, |
|
496 'content' : content.strip(), |
|
497 'embed_code':embed_code, |
|
498 'is_diff' : content !='<table class="diff"><tbody></tbody></table>', |
|
499 'author_colors' : author_colors, |
|
500 } |
|
501 return render_to_response('site/text_history.html', template_dict, context_instance=RequestContext(request)) |
|
502 |
513 |
503 # taken from trac |
514 # taken from trac |
504 def _get_change_extent(str1, str2): |
515 def _get_change_extent(str1, str2): |
505 """ |
516 """ |
506 Determines the extent of differences between two strings. Returns a tuple |
517 Determines the extent of differences between two strings. Returns a tuple |
557 |
568 |
558 index += 1 |
569 index += 1 |
559 res.append('</tbody></table>') |
570 res.append('</tbody></table>') |
560 return ''.join(res) |
571 return ''.join(res) |
561 |
572 |
562 @has_perm_on_text('can_view_text') |
|
563 def text_history_compare(request, key, v1_nid=None, v2_nid=None, adminkey=None): |
|
564 text = get_text_by_keys_or_404(key) |
|
565 |
|
566 vis_diff = difflib.HtmlDiff() |
|
567 v1 = text.get_version(int(v1_nid)) |
|
568 v2 = text.get_version(int(v2_nid)) |
|
569 content = _text_diff(v2.get_content(), v1.get_content()) |
|
570 #content = vis_diff.make_table(v1.content.split('\n'), v2.content.split('\n'), v1_nid, v2_nid, context=None) |
|
571 |
|
572 template_dict = { |
|
573 'text' : text, |
|
574 'content' : content, |
|
575 } |
|
576 return render_to_response('site/text_history_compare.html', template_dict, context_instance=RequestContext(request)) |
|
577 |
|
578 #def text_history_version(request, key): |
573 #def text_history_version(request, key): |
579 # text = get_text_by_keys_or_404(key=key) |
574 # text = get_text_by_keys_or_404(key=key) |
580 # return _text_history_version(request, text) |
575 # return _text_history_version(request, text) |
581 # |
576 # |
582 #def text_history_version_admin(request, key, adminkey): |
577 #def text_history_version_admin(request, key, adminkey): |
748 |
743 |
749 return render_to_response('site/text_edit.html', template_dict , context_instance=RequestContext(request)) |
744 return render_to_response('site/text_edit.html', template_dict , context_instance=RequestContext(request)) |
750 |
745 |
751 # TODO: modif de la base => if POST |
746 # TODO: modif de la base => if POST |
752 @has_perm_on_text('can_edit_text') |
747 @has_perm_on_text('can_edit_text') |
753 def text_revert(request, key, v1_nid, adminkey=None): |
748 def text_revert(request, key, text_version_key): |
754 text = get_text_by_keys_or_404(key) |
749 text = get_text_by_keys_or_404(key) |
755 |
750 |
756 text.revert_to_version(v1_nid) |
751 text_version = text.revert_to_version(text_version_key) |
757 display_message(request, _(u'A new version (copied from version %(version_id)s) has been created') % {'version_id':v1_nid}) |
752 display_message(request, _(u'A new version (copied from version %(version_title)s) has been created') % {'version_title':text_version.title}) |
758 |
753 |
759 return HttpResponseRedirect(reverse('text-history', args=[text.key])) |
754 return HttpResponseRedirect(reverse('text-history', args=[text.key])) |
760 |
755 |
761 @has_perm_on_text('can_view_text') |
756 @has_perm_on_text('can_view_text') |
762 def text_attach(request, key, attach_key): |
757 def text_attach(request, key, attach_key): |