src/cm/views/texts.py
changeset 145 fb5b1e6ad179
parent 114 49647a504de8
child 149 0f2c5744b39b
equal deleted inserted replaced
142:9b3438382e53 145:fb5b1e6ad179
   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):