示例#1
0
文件: views.py 项目: mrngm/kninfra
def planning_view(request):
    period = 'now'
    if request.GET.get('year') in {'past1', 'past2'}:
        period = request.GET['year']
    pools = list(Pool.all())
    poolid2index = dict()
    poolids = set()
    for pool in pools:
        poolids.add(_id(pool))
    # TODO reduce number of queries
    current = date_to_midnight(now() - datetime.timedelta(days=1))
    past1year = date_to_midnight(now() - datetime.timedelta(days=356))
    past2year = date_to_midnight(now() - datetime.timedelta(days=356*2))
    if period == 'now':
        start = current
        end = None
    elif period == 'past1':
        start = past1year
        end = current
    elif period == 'past2':
        start = past2year
        end = past1year
    event_entities = list(Event.all_in_period(start, end))
    used_pools = set()
    for e in event_entities:
        for v in e.vacancies():
            used_pools.add(v.pool_id)
    pools_tpl = []
    i = 0
    for pool in pools:
        if _id(pool) not in used_pools:
            continue
        poolid2index[pool._id] = i
        pools_tpl.append(pool)
        i += 1
    events = list()
    for e in event_entities:
        ei = {'id': _id(e),
              'name': e.name,
              'datetime': e.date,
              'kind': e.kind,
              'vacancies': dict()}
        for index in poolid2index.values():
            ei['vacancies'][index] = list()
        for v in e.vacancies():
            ei['vacancies'][poolid2index[v.pool_id]].append({
                'begin': v.begin,
                'begin_time': v.begin_time,
                'end_time': v.end_time,
                'assignee': v.assignee.humanName
                if v.assignee else "?"})
        for index in poolid2index.values():
            ei['vacancies'][index].sort(key=lambda x: x['begin'])
        events.append(ei)
    events.sort(key=lambda x: x['datetime'])
    return render_to_response('planning/overview.html',
                              {'events': events,
                               'pools': pools_tpl,
                               'period': period},
                              context_instance=RequestContext(request))
示例#2
0
def planning_view(request):
    if 'lookbehind' in request.GET:
        lookbehind = int(request.GET['lookbehind'])
    else:
        lookbehind = 1
    pools = list(Pool.all())
    poolid2index = dict()
    poolids = set()
    for pool in pools:
        poolids.add(_id(pool))
    # TODO reduce number of queries
    event_entities = list(Event.all_since_datetime(date_to_midnight(now())
            - datetime.timedelta(days=lookbehind)))
    used_pools = set()
    for e in event_entities:
        for v in e.vacancies():
            used_pools.add(v.pool_id)
    pools_tpl = []
    i = 0
    for pool in pools:
        if _id(pool) not in used_pools:
            continue
        poolid2index[pool._id] = i
        pools_tpl.append(pool)
        i += 1
    events = list()
    for e in event_entities:
        ei = {  'id': _id(e),
                'name': e.name,
                'datetime': e.date,
                'kind': e.kind,
            'vacancies': dict()}
        for index in poolid2index.values():
            ei['vacancies'][index] = list()
        for v in e.vacancies():
            ei['vacancies'][poolid2index[v.pool_id]].append({
                'begin': v.begin,
                'begin_time': v.begin_time,
                'end_time': v.end_time,
                'assignee': v.assignee.humanName
                        if v.assignee else "?"})
        for index in poolid2index.values():
            ei['vacancies'][index].sort(key=lambda x: x['begin'])
        events.append(ei)
    events.sort(key=lambda x: x['datetime'])
    return render_to_response('planning/overview.html',
            {'events': events,
             'pools': pools_tpl},
            context_instance=RequestContext(request))
示例#3
0
文件: views.py 项目: Jille/kninfra
def planning_view(request):
    if 'lookbehind' in request.GET:
        lookbehind = int(request.GET['lookbehind'])
    else:
        lookbehind = 1
    pools = list(Pool.all())
    poolid2idx = dict()
    i = 0
    for pool in pools:
        poolid2idx[pool._id] = i
        i += 1
    events = list()
    # TODO reduce number of queries
    for e in Event.all_since_datetime(
            date_to_midnight(now()) - datetime.timedelta(days=lookbehind)):
        ei = {
            'name': e.name,
            'datetime': e.date,
            'kind': e.kind,
            'vacancies': dict()
        }
        for idx in poolid2idx.values():
            ei['vacancies'][idx] = list()
        for v in e.vacancies():
            ei['vacancies'][poolid2idx[v.pool_id]].append({
                'begin':
                v.begin,
                'begin_time':
                v.begin_time,
                'end_time':
                v.end_time,
                'assignee':
                v.assignee.get_user().humanName if v.assignee else "?"
            })
        for idx in poolid2idx.values():
            ei['vacancies'][idx].sort(key=lambda x: x['begin'])
        events.append(ei)
    events.sort(key=lambda x: x['datetime'])
    return render_to_response('planning/overview.html', {
        'events': events,
        'pools': pools,
        'poolcount': len(pools)
    },
                              context_instance=RequestContext(request))
示例#4
0
def planning_view(request):
    if 'lookbehind' in request.GET:
        lookbehind = int(request.GET['lookbehind'])
    else:
        lookbehind = 1
    pools = list(Pool.all())
    poolid2idx = dict()
    i = 0
    for pool in pools:
        poolid2idx[pool._id] = i
        i += 1
    events = list()
    # TODO reduce number of queries
    for e in Event.all_since_datetime(date_to_midnight(now())
            - datetime.timedelta(days=lookbehind)):
        ei = {  'name': e.name,
                'datetime': e.date,
                'kind': e.kind,
            'vacancies': dict()}
        for idx in poolid2idx.values():
            ei['vacancies'][idx] = list()
        for v in e.vacancies():
            ei['vacancies'][poolid2idx[v.pool_id]].append({
                'begin': v.begin,
                'begin_time': v.begin_time,
                'end_time': v.end_time,
                'assignee': v.assignee.humanName
                        if v.assignee else "?"})
        for idx in poolid2idx.values():
            ei['vacancies'][idx].sort(key=lambda x: x['begin'])
        events.append(ei)
    events.sort(key=lambda x: x['datetime'])
    return render_to_response('planning/overview.html',
            {'events': events,
             'pools': pools,
             'poolcount': len(pools)},
            context_instance=RequestContext(request))
示例#5
0
def planning_view(request):
    period = 'now'
    if request.GET.get('year') in {'past1', 'past2'}:
        period = request.GET['year']
    pools = list(Pool.all())
    poolid2index = dict()
    poolids = set()
    for pool in pools:
        poolids.add(_id(pool))
    # TODO reduce number of queries
    current = date_to_midnight(now() - datetime.timedelta(days=1))
    past1year = date_to_midnight(now() - datetime.timedelta(days=356))
    past2year = date_to_midnight(now() - datetime.timedelta(days=356 * 2))
    if period == 'now':
        start = current
        end = None
    elif period == 'past1':
        start = past1year
        end = current
    elif period == 'past2':
        start = past2year
        end = past1year
    event_entities = list(Event.all_in_period(start, end))
    used_pools = set()
    for e in event_entities:
        for v in e.vacancies():
            used_pools.add(v.pool_id)
    pools_tpl = []
    i = 0
    for pool in pools:
        if _id(pool) not in used_pools:
            continue
        poolid2index[pool._id] = i
        pools_tpl.append(pool)
        i += 1
    events = list()
    for e in event_entities:
        ei = {
            'id': _id(e),
            'name': e.name,
            'datetime': e.date,
            'kind': e.kind,
            'vacancies': dict()
        }
        for index in poolid2index.values():
            ei['vacancies'][index] = list()
        for v in e.vacancies():
            ei['vacancies'][poolid2index[v.pool_id]].append({
                'begin':
                v.begin,
                'begin_time':
                v.begin_time,
                'end_time':
                v.end_time,
                'assignee':
                v.assignee.humanName if v.assignee else "?"
            })
        for index in poolid2index.values():
            ei['vacancies'][index].sort(key=lambda x: x['begin'])
        events.append(ei)
    events.sort(key=lambda x: x['datetime'])
    return render(request, 'planning/overview.html', {
        'events': events,
        'pools': pools_tpl,
        'period': period
    })