Commit 5e47149779c27e03c05f8bc8fb4399c08bf5183c

Authored by Bartłomiej Nitoń
1 parent 08d6a5c1

Some fixes to bugs caused by removing private notes.

dictionary/ajax_lemma_view.py
... ... @@ -503,10 +503,13 @@ def hide_message_duplicates(messages):
503 503  
504 504 @ajax(method='post')
505 505 def get_lemma_note(request, message_id):
506   - message_obj = Message.objects.get(id=message_id)
507   - return {'private' : message_obj.private,
508   - 'topic' : message_obj.topic,
509   - 'message_text' : message_obj.message_text}
  506 + try:
  507 + message_obj = Message.objects.get(id=message_id)
  508 + except Message.DoesNotExist:
  509 + raise AjaxError('already removed')
  510 + return {'private' : message_obj.private,
  511 + 'topic' : message_obj.topic,
  512 + 'message_text' : message_obj.message_text}
510 513  
511 514 @ajax(method='post')
512 515 def lemma_notes_form_submit(request, form_data):
... ... @@ -1789,11 +1792,14 @@ def entry_lookup(request, term):
1789 1792 ######################### LEMMA NOTES ###################
1790 1793 @ajax(method='post')
1791 1794 def remove_lemma_note(request, message_id):
1792   - message_obj = Message.objects.get(id=message_id)
1793   - if(message_obj.sender != request.user or not message_obj.private):
1794   - raise AjaxError('can not remove')
1795   - message_obj.delete();
1796   - return {}
  1795 + try:
  1796 + message_obj = Message.objects.get(id=message_id)
  1797 + except Message.DoesNotExist:
  1798 + raise AjaxError('already removed')
  1799 + if(message_obj.sender != request.user or not message_obj.private):
  1800 + raise AjaxError('can not remove')
  1801 + message_obj.delete();
  1802 + return {}
1797 1803  
1798 1804 ############### CZASOWNIKI PODOBNE ###################
1799 1805 @ajax(method='post')
... ...
dictionary/ajax_user_notes.py
... ... @@ -26,25 +26,37 @@ from dictionary.models import Message
26 26 @render('note_text.html')
27 27 @ajax(method='get', encode_result=False)
28 28 def get_note_text(request, id):
29   - message_obj = Message.objects.get(id=id)
30   - message_obj.new = False
31   - message_obj.save()
32   - return {'message_text': message_obj.message_text}
  29 + message_text = ''
  30 + try:
  31 + message_obj = Message.objects.get(id=id)
  32 + message_obj.new = False
  33 + message_obj.save()
  34 + message_text = message_obj.message_text
  35 + except Message.DoesNotExist:
  36 + pass
  37 + return {'message_text': message_text}
33 38  
34 39 @ajax(method='post')
35   -def remove_note(request, message_id):
36   - message_obj = Message.objects.get(id=message_id)
  40 +def remove_note(request, message_id):
  41 + try:
  42 + message_obj = Message.objects.get(id=message_id)
  43 + except Message.DoesNotExist:
  44 + raise AjaxError('already removed')
37 45 if message_obj.sender != request.user or not message_obj.private:
38 46 raise AjaxError('can not remove')
39 47 message_obj.delete()
40 48 return {}
41 49  
42 50 @ajax(method='post')
43   -def get_lemma_from_note(request, message_id):
44   - message_obj = Message.objects.get(id=message_id)
45   - request.session['lemma_from_note_entry'] = message_obj.lemma.entry
46   - request.session['lemma_from_note_id'] = message_obj.lemma.id
47   - new_notes_count = request.user.user_settings.new_notes_number()
  51 +def get_lemma_from_note(request, message_id):
  52 + try:
  53 + message_obj = Message.objects.get(id=message_id)
  54 + request.session['lemma_from_note_entry'] = message_obj.lemma.entry
  55 + request.session['lemma_from_note_id'] = message_obj.lemma.id
  56 + new_notes_count = request.user.user_settings.new_notes_number()
  57 + except Message.DoesNotExist:
  58 + new_notes_count = request.user.user_settings.new_notes_number()
  59 + raise AjaxError('already removed')
48 60 return {'new_notes_count': new_notes_count}
49 61  
50 62 @ajax(method='post')
... ...
dictionary/static/js/lemma-view.js
... ... @@ -2320,6 +2320,18 @@ function selectNotesTr(id)
2320 2320 HideProgressAnimation();
2321 2321 error_alert(status + ': ' + error);
2322 2322 },
  2323 +
  2324 + bad_data_callback: function(result) {
  2325 + if (result == 'already removed') {
  2326 + HideProgressAnimation();
  2327 + error_alert('Notatka została usunięta, odśwież widok.');
  2328 + return false;
  2329 + }
  2330 + else {
  2331 + HideProgressAnimation();
  2332 + return true;
  2333 + }
  2334 + },
2323 2335 });
2324 2336 }
2325 2337 }
... ... @@ -4748,18 +4760,17 @@ function saveHandle(event)
4748 4760 }
4749 4761  
4750 4762 ////////// lemma notes ///////////////
4751   -function removeLemmaNote(id)
4752   -{
4753   - ShowProgressAnimation();
  4763 +function removeLemmaNote(id) {
4754 4764 if(id != -1)
4755 4765 {
  4766 + ShowProgressAnimation();
4756 4767 message_id = id.replace('note_', '');
4757 4768  
4758 4769 $.ajaxJSON({
4759 4770 method: 'post',
4760 4771 url: ajax_remove_lemma_note,
4761 4772 data: {
4762   - message_id: message_id//,
  4773 + message_id: message_id,
4763 4774 },
4764 4775  
4765 4776 callback: function(result) {
... ... @@ -4778,8 +4789,12 @@ function removeLemmaNote(id)
4778 4789 error_alert('Usuwać można jedynie notatki prywatne.');
4779 4790 return false;
4780 4791 }
4781   - else
4782   - {
  4792 + else if (result == 'already removed') {
  4793 + HideProgressAnimation();
  4794 + error_alert('Notatka została już usunięta, odśwież widok.');
  4795 + return false;
  4796 + }
  4797 + else {
4783 4798 HideProgressAnimation();
4784 4799 return true;
4785 4800 }
... ...
dictionary/static/js/user-notes.js
... ... @@ -113,7 +113,10 @@ function delete_user_note() {
113 113 error_alert('Usuwać można jedynie notatki prywatne.');
114 114 return false;
115 115 }
116   -
  116 + else if (result == 'already removed') {
  117 + error_alert('Notatka została usunięta, odśwież widok.');
  118 + return false;
  119 + }
117 120 else
118 121 return true;
119 122 },
... ... @@ -146,6 +149,14 @@ function get_lemma_from_note(id)
146 149 error_callback: function(xhr, status, error) {
147 150 error_alert(status + ': ' + error);
148 151 },
  152 + bad_data_callback: function(result) {
  153 + if (result == 'already removed') {
  154 + error_alert('Notatka została usunięta, odśwież widok.');
  155 + return false;
  156 + }
  157 + else
  158 + return true;
  159 + },
149 160 });
150 161 }
151 162  
... ...