web/hdabo/views.py
author ymh <ymh.work@gmail.com>
Tue, 07 Jun 2011 13:21:45 +0200
changeset 12 ebfa127ab138
parent 8 fe20b23e9f0f
child 14 9de6715b6d84
permissions -rw-r--r--
correct unnecessary imports
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12
ebfa127ab138 correct unnecessary imports
ymh <ymh.work@gmail.com>
parents: 8
diff changeset
     1
from django.contrib.auth.decorators import login_required #@UnusedImport
ebfa127ab138 correct unnecessary imports
ymh <ymh.work@gmail.com>
parents: 8
diff changeset
     2
from django.shortcuts import render_to_response
7
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
     3
from django.template import RequestContext
8
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
     4
from models import Organisation, Datasheet, TaggedSheet, Tag
7
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
     5
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
     6
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
     7
#@login_required
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
     8
def home(request):
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
     9
    
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    10
    # Get all organisations
8
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    11
    orgas = Organisation.objects.all()
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    12
    # Count all validated, unvalidated sheets for each organisation
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    13
    org_list = []
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    14
    for orga in orgas :
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    15
        all_datasheets = Datasheet.objects.filter(organisation=orga)
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    16
        nb_all = len(all_datasheets)
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    17
        nb_val = len(all_datasheets.filter(validated=True))
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    18
        nb_unval = len(all_datasheets.filter(validated=False))
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    19
        org_list.append({'organisation':orga, 'nb_all':nb_all, 'nb_val':nb_val, 'nb_unval':nb_unval})
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    20
    
7
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    21
    
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    22
    return render_to_response("partial/organisation_list.html",
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    23
                              {'organisations':org_list},
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    24
                              context_instance=RequestContext(request))
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    25
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    26
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    27
#@login_required
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    28
def list_for_orga(request, orga_id=None, valid=None, start_index=None):
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    29
    
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    30
    orga = Organisation.objects.get(id=orga_id)
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    31
    orga_name = orga.name
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    32
    
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    33
    if start_index :
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    34
        try:
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    35
            start_index = int(start_index)
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    36
        except :
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    37
            start_index = 0
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    38
    else :
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    39
        start_index = 0
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    40
    
8
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    41
    # If valid = 0, we search unvalidated sheets
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    42
    # If valid = 1, we search validated sheets
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    43
    # If valid = 2, we search AND DISPLAY all sheets
7
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    44
    if valid == "1" :
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    45
        # We count all the validated sheets
8
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    46
        datasheets = Datasheet.objects.filter(organisation=orga).filter(validated=True)
7
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    47
        nb_sheets = len(datasheets)
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    48
        # And select the current one
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    49
        datasheets = [datasheets[start_index]]
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    50
    elif valid != "2":
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    51
        # We count all the validated sheets
8
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    52
        datasheets = Datasheet.objects.filter(organisation=orga).filter(validated=False)
7
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    53
        nb_sheets = len(datasheets)
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    54
        # And select the current one
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    55
        datasheets = [datasheets[start_index]]
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    56
    else :
8
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    57
        datasheets = Datasheet.objects.filter(organisation=orga)
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    58
        nb_sheets = len(datasheets)
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    59
    
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    60
    # We get the ORDERED tags if we display one sheet (case valid = 0 and 1)
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    61
    ordered_tags = None
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    62
    if valid != "2" :
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    63
        ordered_tags = TaggedSheet.objects.filter(datasheet=datasheets[0]).order_by('order')
7
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    64
    
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    65
    displayed_index = start_index + 1;
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    66
    prev_index = max(start_index - 1, 0);
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    67
    next_index = min(nb_sheets - 1, start_index + 1);
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    68
    last_index = max(nb_sheets - 1, 0);
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    69
    
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    70
    return render_to_response("partial/list_for_orga.html",
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    71
                              {'datasheets':datasheets, 'orga_name':orga_name,
8
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    72
                               'nb_sheets':nb_sheets,'orga_id':orga_id, 'ordered_tags':ordered_tags,
7
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    73
                               'prev_index':prev_index, 'next_index':next_index, 'last_index':last_index,
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    74
                               'start_index':start_index, 'displayed_index':displayed_index, 'valid':valid},
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    75
                              context_instance=RequestContext(request))
b5204be88f8e First views for home and sheet display, and navigation in sheet groups by location.
cavaliet
parents:
diff changeset
    76
8
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    77
#@login_required
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    78
def tag_up_down(request):
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    79
    ds_id = request.POST["datasheet_id"]
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    80
    tag_id = request.POST["tag_id"]
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    81
    # move can be "u" or "d", for up and down
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    82
    move = request.POST["move"]
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    83
    # First we get the datasheet's TaggedSheets
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    84
    ds_tags = TaggedSheet.objects.filter(datasheet=Datasheet.objects.filter(id=ds_id)[0])
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    85
    # We get the current TaggedSheet ans its's order
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    86
    ts = ds_tags.filter(tag=Tag.objects.filter(id=tag_id))[0]
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    87
    tag_order = ts.order
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    88
    if move == "u" :
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    89
        next_order = tag_order - 1
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    90
    elif move == "d" :
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    91
        next_order = tag_order + 1
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    92
    else :
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    93
        next_order = None
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    94
    # We get the other TaggedSheet that will be moved
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    95
    other_ts = ds_tags.filter(order=next_order)[0]
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    96
    # We switch the orders
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    97
    ts.order = next_order
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    98
    other_ts.order = tag_order
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
    99
    ts.save()
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
   100
    other_ts.save()
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
   101
    
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
   102
    return get_tag_table(request=request, ds_id=ds_id, valid=0)
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
   103
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
   104
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
   105
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
   106
#@login_required
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
   107
def get_tag_table(request=None, ds_id=None, valid=None):
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
   108
    
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
   109
    ordered_tags = TaggedSheet.objects.filter(datasheet=Datasheet.objects.filter(id=ds_id)[0]).order_by('order')
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
   110
    
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
   111
    return render_to_response("partial/tag_table.html",
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
   112
                              {'ordered_tags':ordered_tags, 'valid':valid},
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
   113
                              context_instance=RequestContext(request))
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
   114
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
   115
fe20b23e9f0f Better tab table management. Ajax request to move up or down the tag order.
cavaliet
parents: 7
diff changeset
   116