Blame view

dictionary/ajax_user_notes.py 2.31 KB
Bartłomiej Nitoń authored
1
2
3
4
5
6
7
8
# -*- coding: utf-8 -*-

from common.decorators import render, ajax, AjaxError
from dictionary.models import Message

@render('note_text.html')
@ajax(method='get', encode_result=False)
def get_note_text(request, id):
Bartłomiej Nitoń authored
9
10
11
12
13
14
15
16
17
    message_text = ''
    try:
        message_obj = Message.objects.get(id=id)
        message_obj.new = False
        message_obj.save()
        message_text = message_obj.message_text
    except Message.DoesNotExist:
        pass
    return {'message_text': message_text} 
Bartłomiej Nitoń authored
18
19

@ajax(method='post')
Bartłomiej Nitoń authored
20
21
22
23
24
def remove_note(request, message_id):
    try:  
        message_obj = Message.objects.get(id=message_id)
    except Message.DoesNotExist:
        raise AjaxError('already removed')
Bartłomiej Nitoń authored
25
26
27
28
29
30
    if message_obj.sender != request.user or not message_obj.private:
        raise AjaxError('can not remove')
    message_obj.delete()
    return {} 

@ajax(method='post')
Bartłomiej Nitoń authored
31
32
33
34
35
36
37
38
39
def get_lemma_from_note(request, message_id):
    try:
        message_obj = Message.objects.get(id=message_id)
        request.session['lemma_from_note_entry'] = message_obj.lemma.entry
        request.session['lemma_from_note_id'] = message_obj.lemma.id
        new_notes_count = request.user.user_settings.new_notes_number()
    except Message.DoesNotExist:
        new_notes_count = request.user.user_settings.new_notes_number()
        raise AjaxError('already removed')
Bartłomiej Nitoń authored
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
    return {'new_notes_count': new_notes_count}

@ajax(method='post')
def note_session_clear(request):  
    request.session['lemma_from_note_entry'] = ''
    request.session['lemma_from_note_id'] = ''
    return {} 

@render('notes_table.html')
@ajax(method='post', encode_result=False)
def notes_page(request, page, notes_private=False):
    notes_per_page = request.user.user_settings.notes_per_page
    if notes_private:
        all_notes = Message.objects.filter(sender=request.user, 
                                           private=True).order_by('-time')
    else:
        all_notes = Message.objects.filter(recipient=request.user, 
                                           private=False).order_by('-new', '-time')
    last_note_idx = page*notes_per_page
    first_note_idx = last_note_idx - notes_per_page
    if last_note_idx >= all_notes.count():
        last_note_idx = all_notes.count()
    return {'notes': list(all_notes)[first_note_idx:last_note_idx],
            'private': notes_private}