Exemple #1
0
def get_grand_total(location_uuid, filters):
    try:
        location = Location.objects.get_by_natural_key(location_uuid)
    except ObjectDoesNotExist:
        raise Http404
    if req.user != location.owner:
        return HttpResponseForbidden("Access denied")
    ret = {}
    ret["loads"] = 0
    ret["slots"] = 0
    ret["prices"] = {}
    db_filters = {}
    for i in filters:
        db_filters[i["property"]] = i["value"]
    for load in LoadLog.objects.filter(**db_filters).order_by("uuid").distinct("uuid"):
        ret["loads"] += 1
        ret["slots"] += load.total_slots
        misc.update_prices(load.prices, ret["prices"])
    return ret
Exemple #2
0
def get_grand_total(location_uuid, filters):
    try:
        location = Location.objects.get_by_natural_key(location_uuid)
    except ObjectDoesNotExist:
        raise Http404
    if req.user != location.owner:
        return HttpResponseForbidden('Access denied')
    ret = {}
    ret['loads'] = 0
    ret['slots'] = 0
    ret['prices'] = {}
    db_filters = {}
    for i in filters:
        db_filters[i['property']] = i['value']
    for load in LoadLog.objects.filter(
            **db_filters).order_by('uuid').distinct('uuid'):
        ret['loads'] += 1
        ret['slots'] += load.total_slots
        misc.update_prices(load.prices, ret['prices'])
    return ret
Exemple #3
0
def get_data(location_uuid, start_date, end_date):
    try:
        location = Location.objects.get_by_natural_key(location_uuid)
    except ObjectDoesNotExist:
        raise Http404
    if req.user != location.owner:
        return HttpResponseForbidden('Access denied')

    data = {}
    data['totals'] = {}
    data['totals']['loads'] = 0
    data['totals']['slots'] = 0
    data['totals']['staff'] = 0
    data['totals']['prices'] = {}
    for i in ('prepaid', 'postpaid', 'unpaid', 'none'):
        data['totals'][i] = {}
        data['totals'][i]['count'] = 0
        data['totals'][i]['prices'] = {}
    data['pilot'] = {}
    data['aircraft'] = {}
    data['catalog'] = {}
    data['role'] = {}

    # period filter
    filters = {'location': location.uuid}
    if start_date and end_date:
        filters['date__gte'] = start_date
        filters['date__lte'] = end_date
    elif start_date:
        filters['date'] = start_date
    elif end_date:
        filters['date__lte'] = end_date
    # get loads
    for load in LoadLog.objects.filter(**filters):
        # load data
        data['totals']['loads'] += 1
        # pilot
        if not data['pilot'].has_key(load.pilot_name):
            data['pilot'][load.pilot_name] = 0
        data['pilot'][load.pilot_name] += 1
        # aircraft
        if not data['aircraft'].has_key(load.aircraft_reg):
            data['aircraft'][load.aircraft_reg] = {}
            data['aircraft'][load.aircraft_reg]['loads'] = 0
            data['aircraft'][load.aircraft_reg]['slots'] = 0
        data['aircraft'][load.aircraft_reg]['loads'] += 1
        # get slots
        for slot in load.slotlog_set.all():
            # slot data
            data['totals']['slots'] += 1
            data['aircraft'][load.aircraft_reg]['slots'] += 1
            # worker
            if slot.is_worker:
                data['totals']['staff'] += 1
                if not data['role'].has_key(slot.catalog_item):
                    data['role'][slot.catalog_item] = 0
                data['role'][slot.catalog_item] += 1
            # jumper
            else:
                if slot.payment_type:
                    data['totals'][slot.payment_type]['count'] += 1
                    misc.update_prices(slot.catalog_price,
                                       data['totals']['prices'])
                    misc.update_prices(
                        slot.catalog_price,
                        data['totals'][slot.payment_type]['prices'])
                    if not data['catalog'].has_key(slot.catalog_item):
                        data['catalog'][slot.catalog_item] = {}
                        data['catalog'][slot.catalog_item]['count'] = 0
                        data['catalog'][slot.catalog_item]['prices'] = {}
                    data['catalog'][slot.catalog_item]['count'] += 1
                    misc.update_prices(
                        slot.catalog_price,
                        data['catalog'][slot.catalog_item]['prices'])

    # calculate aircraft usage ratios
    for k, v in data['aircraft'].items():
        try:
            aircraft = Aircraft.objects.get(owner=location.owner,
                                            location=location,
                                            deleted=False,
                                            registration=k)
            v['usage'] = int(
                round((v['slots'] * 100) / (v['loads'] * aircraft.max_slots),
                      0))
        except:
            v['usage'] = None

    return data
Exemple #4
0
def get_data(location_uuid, start_date, end_date):
    try: location = Location.objects.get_by_natural_key(location_uuid)
    except ObjectDoesNotExist: raise Http404
    if req.user != location.owner:
        return HttpResponseForbidden('Access denied')
    
    data = {}
    data['totals'] = {}
    data['totals']['loads'] = 0
    data['totals']['slots'] = 0
    data['totals']['staff'] = 0
    data['totals']['prices'] = {}
    for i in ('prepaid', 'postpaid', 'unpaid', 'none'):
        data['totals'][i] = {}
        data['totals'][i]['count'] = 0
        data['totals'][i]['prices'] = {}
    data['pilot'] = {}
    data['aircraft'] = {}
    data['catalog'] = {}
    data['role'] = {}

    # period filter
    filters = {'location':location.uuid}
    if start_date and end_date:
        filters['date__gte'] = start_date
        filters['date__lte'] = end_date
    elif start_date:
        filters['date'] = start_date
    elif end_date:
        filters['date__lte'] = end_date
    # get loads
    for load in LoadLog.objects.filter(**filters):
        # load data
        data['totals']['loads'] += 1
        # pilot
        if not data['pilot'].has_key(load.pilot_name):
            data['pilot'][load.pilot_name] = 0
        data['pilot'][load.pilot_name] += 1
        # aircraft
        if not data['aircraft'].has_key(load.aircraft_reg):
            data['aircraft'][load.aircraft_reg] = {}
            data['aircraft'][load.aircraft_reg]['loads'] = 0
            data['aircraft'][load.aircraft_reg]['slots'] = 0
        data['aircraft'][load.aircraft_reg]['loads'] += 1
        # get slots
        for slot in load.slotlog_set.all():
            # slot data
            data['totals']['slots'] += 1
            data['aircraft'][load.aircraft_reg]['slots'] += 1
            # worker
            if slot.is_worker:
                data['totals']['staff'] += 1
                if not data['role'].has_key(slot.catalog_item):
                    data['role'][slot.catalog_item] = 0
                data['role'][slot.catalog_item] += 1
            # jumper
            else:
                if slot.payment_type:
                    data['totals'][slot.payment_type]['count'] += 1
                    misc.update_prices(slot.catalog_price, data['totals']['prices'])
                    misc.update_prices(slot.catalog_price, data['totals'][slot.payment_type]['prices'])
                    if not data['catalog'].has_key(slot.catalog_item):
                        data['catalog'][slot.catalog_item] = {}
                        data['catalog'][slot.catalog_item]['count'] = 0
                        data['catalog'][slot.catalog_item]['prices'] = {}
                    data['catalog'][slot.catalog_item]['count'] += 1
                    misc.update_prices(slot.catalog_price, data['catalog'][slot.catalog_item]['prices'])
                        
    # calculate aircraft usage ratios
    for k,v in data['aircraft'].items():
        try:
            aircraft = Aircraft.objects.get(owner=location.owner, location=location, deleted=False, registration=k)
            v['usage'] = int(round((v['slots']*100)/(v['loads']*aircraft.max_slots), 0))
        except:
            v['usage'] = None
        
    return data