diff -r 9b3438382e53 -r fb5b1e6ad179 src/cm/views/texts.py --- a/src/cm/views/texts.py Wed Feb 03 15:42:56 2010 +0100 +++ b/src/cm/views/texts.py Fri Feb 05 12:23:29 2010 +0100 @@ -212,6 +212,19 @@ text.delete() return HttpResponse('') # no redirect because this is called by js +@has_perm_on_text('can_delete_text') +def text_version_delete(request, key, text_version_key): + text_version = TextVersion.objects.get(key=text_version_key) + text=text_version.text + if request.method != 'POST': + raise UnauthorizedException('Unauthorized') + display_message(request, _(u'Text version %(text_version_title)s deleted') %{'text_version_title':text_version.title}) + register_activity(request, "text_version_removed", text=text) + import pdb;pdb.set_trace() + text_version.delete() + return HttpResponse('') # no redirect because this is called by js + + @has_perm_on_text('can_view_text') # only protected by text_view / comment filtering done in view def text_view_comments(request, key, version_key=None, adminkey=None): text = get_text_by_keys_or_404(key) @@ -446,59 +459,57 @@ @has_perm_on_text('can_view_text') -def text_history(request, key, v1_nid=None, v2_nid=None, adminkey=False): - text = get_text_by_keys_or_404(key) - text_versions = text.get_versions() - author_colors = get_colors([t.get_name() for t in text.get_inversed_versions()]) - - if v1_nid: - v1_nid = int(v1_nid) - else: - v1_nid = text.get_versions_number() - - v1 = text.get_version(v1_nid) +def text_history_version(request, key, version_key): + text = get_text_by_keys_or_404(key) + text_version = get_textversion_by_keys_or_404(version_key, key=key) + template_dict = {'text' : text, + 'text_version' : text_version, + 'embed_code' : embed_html(key, 'id="text_view_frame" name="text_view_frame"', version_key), + } + return render_to_response('site/text_history_version.html', + template_dict, + context_instance=RequestContext(request)) - v1_id = v1.id - - v2_id = None - v2 = None - if v2_nid: - v2_nid = int(v2_nid) - v2 = text.get_version(v2_nid) - v2_id = v2.id +#@has_perm_on_text('can_view_text') +def text_history_compare(request, key, v1_version_key, v2_version_key): + text = get_text_by_keys_or_404(key) + v1 = get_textversion_by_keys_or_404(v1_version_key, key=key) + v2 = get_textversion_by_keys_or_404(v2_version_key, key=key) + + content = get_uniffied_inner_diff_table(cleanup_textarea(v1.content), cleanup_textarea(v2.content)) - versions = text.get_inversed_versions() - paired_versions = [] - colors_dict = dict(author_colors) - for index in range(len(versions)): - vv1 = versions[index] - if index + 1 < len(versions): - vv2 = versions[index + 1] - else: - vv2 = None - paired_versions.append((vv1, vv2, colors_dict.get(vv1.get_name(), '#D9D9D9'))) + template_dict = { + 'text' : text, + 'v1': v1, + 'v2': v2, + 'content' : content.strip(), + 'empty' : '
'==content, + } + return render_to_response('site/text_history_compare.html', + template_dict, + context_instance=RequestContext(request)) + +@has_perm_on_text('can_view_text') +def text_history(request, key): + text = get_text_by_keys_or_404(key) + + if request.method == 'POST': + v1_key = request.POST.get('newkey',None) + v2_key = request.POST.get('oldkey',None) + if v1_key and v2_key: + return redirect(request, 'text-history-compare', args=[text.key, v2_key, v1_key ]) + + text_versions = text.get_versions() + paginate_by = get_int(request.GET,'paginate',TEXT_PAGINATION) - embed_code = "" - content = "" - if v1_nid and not v2_nid: - embed_code = embed_html(key, 'id="text_view_frame" name="text_view_frame"', v1.key) - else: - content = get_uniffied_inner_diff_table(cleanup_textarea(v1.content), cleanup_textarea(v2.content)) - - template_dict = {'paired_versions' : paired_versions, - 'text' : text, - 'v1_nid' : v1_nid, - 'v2_nid' : v2_nid, - 'v1_id' : v1_id, - 'v2_id' : v2_id, - 'version1': v1, - 'version2': v2, - 'content' : content.strip(), - 'embed_code':embed_code, - 'is_diff' : content !='
', - 'author_colors' : author_colors, - } - return render_to_response('site/text_history.html', template_dict, context_instance=RequestContext(request)) + last_last_version = text_versions[1] if len(text_versions)>1 else None + context = {'text':text, 'last_version':text.last_text_version, 'last_last_version':last_last_version} + return object_list(request, text_versions, + template_name = 'site/text_history.html', + paginate_by = paginate_by, + extra_context=context, + ) + # taken from trac def _get_change_extent(str1, str2): @@ -559,22 +570,6 @@ res.append('') return ''.join(res) -@has_perm_on_text('can_view_text') -def text_history_compare(request, key, v1_nid=None, v2_nid=None, adminkey=None): - text = get_text_by_keys_or_404(key) - - vis_diff = difflib.HtmlDiff() - v1 = text.get_version(int(v1_nid)) - v2 = text.get_version(int(v2_nid)) - content = _text_diff(v2.get_content(), v1.get_content()) - #content = vis_diff.make_table(v1.content.split('\n'), v2.content.split('\n'), v1_nid, v2_nid, context=None) - - template_dict = { - 'text' : text, - 'content' : content, - } - return render_to_response('site/text_history_compare.html', template_dict, context_instance=RequestContext(request)) - #def text_history_version(request, key): # text = get_text_by_keys_or_404(key=key) # return _text_history_version(request, text) @@ -750,11 +745,11 @@ # TODO: modif de la base => if POST @has_perm_on_text('can_edit_text') -def text_revert(request, key, v1_nid, adminkey=None): +def text_revert(request, key, text_version_key): text = get_text_by_keys_or_404(key) - text.revert_to_version(v1_nid) - display_message(request, _(u'A new version (copied from version %(version_id)s) has been created') % {'version_id':v1_nid}) + text_version = text.revert_to_version(text_version_key) + display_message(request, _(u'A new version (copied from version %(version_title)s) has been created') % {'version_title':text_version.title}) return HttpResponseRedirect(reverse('text-history', args=[text.key]))