src/cm/views/texts.py
changeset 178 bfb36a5d5e50
parent 157 7b1c363b566d
child 179 4c0f9871729d
equal deleted inserted replaced
177:6fcd0f9cc08b 178:bfb36a5d5e50
   470 def text_history_compare(request, key, v1_version_key, v2_version_key, mode=''):
   470 def text_history_compare(request, key, v1_version_key, v2_version_key, mode=''):
   471     text = get_text_by_keys_or_404(key)
   471     text = get_text_by_keys_or_404(key)
   472     v1 = get_textversion_by_keys_or_404(v1_version_key, key=key)
   472     v1 = get_textversion_by_keys_or_404(v1_version_key, key=key)
   473     v2 = get_textversion_by_keys_or_404(v2_version_key, key=key)
   473     v2 = get_textversion_by_keys_or_404(v2_version_key, key=key)
   474 
   474 
   475     content = get_uniffied_inner_diff_table(v1.content, v2.content)
   475     content = get_uniffied_inner_diff_table(v1.title,
       
   476                                             v2.title, 
       
   477                                             _("by %(author)s") %{'author' : v1.get_name()},
       
   478                                             _("by %(author)s") %{'author' : v2.get_name()},
       
   479                                             v1.content,
       
   480                                             v2.content)
   476     if mode=='1':
   481     if mode=='1':
   477         # alternate diff
   482         # alternate diff
   478         from cm.utils.diff import text_diff
   483         from cm.utils.diff import text_diff
   479         content = text_diff(v1.get_content(), v2.get_content())
   484         content = text_diff(v1.get_content(), v2.get_content())
   480 
   485 
   530     return (start, end + 1)
   535     return (start, end + 1)
   531 
   536 
   532 def diff_decorate(minus, plus):
   537 def diff_decorate(minus, plus):
   533     return minus, plus
   538     return minus, plus
   534 
   539 
   535 def get_uniffied_inner_diff_table(text1, text2):
   540 def get_uniffied_inner_diff_table(title1, title2, author1, author2, text1, text2):
   536     """
   541     """
   537     Return the inner of the html table for text1 vs text2 diff
   542     Return the inner of the html table for text1 vs text2 diff
   538     """
   543     """
   539     gen = unified_diff(text1.split('\n'), text2.split('\n'), n=3)
   544     gen = unified_diff(text1.split('\n'), text2.split('\n'), n=3)
   540     index = 0
   545     index = 0
   541     res = ['<table class="diff"><tbody>']
   546     res = ['<table class="diff"><tbody>']
       
   547     res.append('<tr><td></td><td class="diff-title">%s</td><td></td><td></td><td class="diff-title">%s</td></tr>' %(title1, title2))
       
   548     res.append('<tr><td></td><td class="diff-author">%s</td><td></td><td></td><td class="diff-author">%s</td></tr>' %(author1, author2))
       
   549     res.append('<tr><td colspan="5"></td></tr>')
   542     #res.append('<tr><td width="50%" colspan="2"></td><td width="50%" colspan="2"></td></tr>')
   550     #res.append('<tr><td width="50%" colspan="2"></td><td width="50%" colspan="2"></td></tr>')
   543     
   551     
   544     for g in gen:
   552     for g in gen:
   545         if index > 1:
   553         if index > 1:
   546             col_in = None
   554             col_in = None
   632         version.edit(new_title, new_format, new_content, new_tags, new_note, True, cancel_modified_scopes)
   640         version.edit(new_title, new_format, new_content, new_tags, new_note, True, cancel_modified_scopes)
   633 
   641 
   634         return version
   642         return version
   635 
   643 
   636     def save_new_version(self, text, request):
   644     def save_new_version(self, text, request):
   637         new_text_version = TextVersion.objects.duplicate(text.get_latest_version(), True) 
   645         print "!!"        
   638         new_text_version.user = request.user if request.user.is_authenticated() else None
       
   639         new_text_version.note = request.POST.get('note','')
       
   640         new_text_version.email = request.POST.get('email','')
       
   641         new_text_version.name = request.POST.get('name','')
       
   642         new_text_version.save()
       
   643         
       
   644         new_content = request.POST.get('content')
   646         new_content = request.POST.get('content')
   645         new_title = request.POST.get('title')
   647         new_title = request.POST.get('title')
   646         new_format = request.POST.get('format', text.last_text_version.format)        
   648         new_format = request.POST.get('format', text.last_text_version.format)        
   647         new_note = request.POST.get('note',None)
   649         new_note = request.POST.get('note',None)
   648         new_tags = request.POST.get('tags',None)
   650         new_tags = request.POST.get('tags',None)
   649         cancel_modified_scopes = (request.POST.get('cancel_modified_scopes',u'1') == u'1')
   651         cancel_modified_scopes = (request.POST.get('cancel_modified_scopes',u'1') == u'1')
       
   652         
       
   653         new_text_version = text.edit(new_title, new_format, new_content, new_tags, new_note, keep_comments=True, cancel_modified_scopes=cancel_modified_scopes, new_version=True)
       
   654         
   650         new_text_version.edit(new_title, new_format, new_content, new_tags, new_note, True, cancel_modified_scopes)
   655         new_text_version.edit(new_title, new_format, new_content, new_tags, new_note, True, cancel_modified_scopes)
       
   656         new_text_version.user = request.user if request.user.is_authenticated() else None
       
   657         new_text_version.note = request.POST.get('note','')
       
   658         new_text_version.email = request.POST.get('email','')
       
   659         new_text_version.name = request.POST.get('name','')
       
   660         new_text_version.save()
   651         
   661         
   652         return new_text_version
   662         return new_text_version
   653 
   663 
   654     def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
   664     def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
   655                  initial=None, error_class=ErrorList, label_suffix=':',
   665                  initial=None, error_class=ErrorList, label_suffix=':',