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))
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))
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))
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))
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 })