def event_edit(request, eventid): if not may_manage_planning(request.user): raise PermissionDenied avform = None e = Event.by_id(eventid) if e is None: raise Http404 if request.method == 'POST': if request.POST['action'] == 'remove_event': for vacancy in e.vacancies(): vacancy.delete() e.delete() return HttpResponseRedirect(reverse('planning-poollist')) elif request.POST['action'] == 'remove_vacancy': Vacancy.by_id(_id(request.POST['vacancy_id'])).delete() return HttpResponseRedirect(reverse('planning-event-edit', args=(eventid,))) elif request.POST['action'] == 'add_vacancy': avform = AddVacancyForm(request.POST) if avform.is_valid(): fd = avform.cleaned_data (begin_hour, begin_minute) = map(int, fd['begin'].split(':')) (end_hour, end_minute) = map(int, fd['end'].split(':')) begin_offset = hm2s(begin_hour, begin_minute) end_offset = hm2s(end_hour, end_minute) begin_date = e.date + datetime.timedelta(seconds=begin_offset) end_date = e.date + datetime.timedelta(seconds=end_offset) v = Vacancy({ 'name': fd['name'], 'event': _id(e), 'begin': (begin_date, fd['begin_is_approximate'] == "True"), 'end': (end_date, fd['end_is_approximate'] == "True"), 'pool': _id(fd['pool']), 'assignee': None, 'reminder_needed': True, }) v.save() return HttpResponseRedirect(reverse('planning-event-edit', args=(eventid,))) if avform is None: avform = AddVacancyForm() pools = dict() for p in Pool.all(): pools[_id(p)] = p vacancies = list() for v in e.vacancies(): v.poolname = pools[v.pool_id].name v.assignee_text = str(v.assignee.name) if v.assignee else "-" v.vid = str(v._id) vacancies.append(v) vacancies.sort(key=lambda x: str(x.pool_id) + str(x.begin)) return render( request, 'planning/event_edit.html', {'name': e.name, 'kind': e.kind, 'date': e.date.date(), 'avform': avform, 'vacancies': vacancies}, )
def _api_send_reminder(request): if not get_param(request, 'vacancy_id'): return JsonHttpResponse({'error': 'missing argument'}) v = Vacancy.by_id(get_param(request, 'vacancy_id')) if not v: raise Http404 if not v.pool.may_manage(request.user): raise PermissionDenied send_reminder(v, update=False) return JsonHttpResponse({'success': True})
def _api_send_reminder(request): if not 'vacancy_id' in request.REQUEST: return JsonHttpResponse({'error': 'missing argument'}) v = Vacancy.by_id(request.REQUEST['vacancy_id']) if not v: raise Http404 if not v.pool.may_manage(request.user): raise PermissionDenied send_reminder(v, update=False) return JsonHttpResponse({'success': True})
def _api_send_reminder(request): if not 'vacancy_id' in request.REQUEST: return JsonHttpResponse({'error': 'missing argument'}) v = Vacancy.by_id(request.REQUEST['vacancy_id']) if not v: raise Http404 print v._data print v.pool_id print v.pool if not request.user.cached_groups_names & set(['secretariaat', v.pool.administrator]): raise PermissionDenied send_reminder(v, update=False) return JsonHttpResponse({'success': True})
def _api_send_reminder(request): if not 'vacancy_id' in request.REQUEST: return JsonHttpResponse({'error': 'missing argument'}) v = Vacancy.by_id(request.REQUEST['vacancy_id']) if not v: raise Http404 print v._data print v.pool_id print v.pool if not request.user.cached_groups_names & set( ['secretariaat', v.pool.administrator]): raise PermissionDenied send_reminder(v, update=False) return JsonHttpResponse({'success': True})
def event_edit(request, eventid): if not may_manage_planning(request.user): raise PermissionDenied avform = None e = Event.by_id(eventid) if e is None: raise Http404 if request.method == 'POST': if request.POST['action'] == 'remove_event': for vacancy in e.vacancies(): vacancy.delete() e.delete() return HttpResponseRedirect(reverse('planning-poollist')) elif request.POST['action'] == 'remove_vacancy': Vacancy.by_id(_id(request.POST['vacancy_id'])).delete() return HttpResponseRedirect( reverse('planning-event-edit', args=(eventid, ))) elif request.POST['action'] == 'add_vacancy': avform = AddVacancyForm(request.POST) if avform.is_valid(): fd = avform.cleaned_data (begin_hour, begin_minute) = map(int, fd['begin'].split(':')) (end_hour, end_minute) = map(int, fd['end'].split(':')) begin_offset = hm2s(begin_hour, begin_minute) end_offset = hm2s(end_hour, end_minute) begin_date = e.date + datetime.timedelta(seconds=begin_offset) end_date = e.date + datetime.timedelta(seconds=end_offset) v = Vacancy({ 'name': fd['name'], 'event': _id(e), 'begin': (begin_date, fd['begin_is_approximate'] == "True"), 'end': (end_date, fd['end_is_approximate'] == "True"), 'pool': _id(fd['pool']), 'assignee': None, 'reminder_needed': True, }) v.save() return HttpResponseRedirect( reverse('planning-event-edit', args=(eventid, ))) if avform is None: avform = AddVacancyForm() pools = dict() for p in Pool.all(): pools[_id(p)] = p vacancies = list() for v in e.vacancies(): v.poolname = pools[v.pool_id].name v.assignee_text = str(v.assignee.name) if v.assignee else "-" v.vid = str(v._id) vacancies.append(v) vacancies.sort(key=lambda x: str(x.pool_id) + str(x.begin)) return render( request, 'planning/event_edit.html', { 'name': e.name, 'kind': e.kind, 'date': e.date.date(), 'avform': avform, 'vacancies': vacancies }, )