def event_create(request): if not may_manage_planning(request.user): raise PermissionDenied if request.method == 'POST': form = EventCreateForm(request.POST) if form.is_valid(): fd = form.cleaned_data day = date_to_dt(fd['date']) e = Event({ 'name': fd['name'], 'date': day, 'kind': fd['template'] }) e.save() for poolname, periods in templates[fd['template']].items(): pool = Pool.by_name(poolname) for period in periods: begin_date = day + datetime.timedelta(seconds=period[0][0]) end_date = day + datetime.timedelta(seconds=period[1][0]) v = Vacancy({ 'name': period[2], 'event': _id(e), 'begin': (begin_date, period[0][1]), 'end': (end_date, period[1][1]), 'pool': _id(pool), 'assignee': None, 'reminder_needed': True, }) v.save() return HttpResponseRedirect( reverse('planning-event-edit', args=(e._id, ))) else: form = EventCreateForm() return render(request, 'planning/event_create.html', {'form': form})
return (hours * 60 + minutes) * 60 typePeriods = { 'tappers': [[hm2s(20, 30), hm2s(23), 'eerste dienst'], [hm2s(23), hm2s(25), 'tweede dienst'], [hm2s(25), hm2s(28), 'derde dienst']], 'bestuur': [[hm2s(20, 30), hm2s(24), 'openen'], [hm2s(24), hm2s(28), 'sluiten']], 'draai': [[hm2s(20, 45), hm2s(23), 'openen'], [hm2s(23), hm2s(24), 'prime-time'], [hm2s(24), hm2s(25), 'sluiten']]} day = datetime.datetime.strptime(sys.argv[1], '%Y-%m-%d') e = Event({ 'name': 'Borrel', 'date': day, 'kind': 'borrel' }) e.save() for _type, periods in typePeriods.items(): pool = Pool.by_name(_type) for period in periods: v = Vacancy({ 'name': period[2], 'event': _id(e), 'begin': day + datetime.timedelta(seconds=period[0]), 'end': day + datetime.timedelta(seconds=period[1]), 'pool': _id(pool), 'assignee': None, }) print v._data
import kn.leden.entities as Es from kn.leden.mongo import _id from kn.settings import DT_MIN, DT_MAX from kn.planning.entities import Pool, Worker, Event, Vacancy def hm2s(hours, minutes=0): return (hours * 60 + minutes) * 60 begin = datetime.datetime.strptime('%s %s' % (sys.argv[1], sys.argv[2]), '%Y-%m-%d %H:%M') e = Event({ 'name': 'Dranktelling', 'date': datetime.datetime.combine(begin.date(), datetime.time()) }) e.save() pool = Pool.by_name('barco') for p in [1, 2]: v = Vacancy({ 'name': 'Teller %d' % p, 'event': _id(e), 'begin': begin, 'end': begin + datetime.timedelta(seconds=1800), 'pool': _id(pool), 'assignee': None }) print v._data