def handle_cleanup_allocations(self, request, form): """ Removes all unused allocations between the given dates. """ if form.submitted(request): start, end = form.data['start'], form.data['end'] scheduler = self.get_scheduler(request.app.libres_context) count = scheduler.remove_unused_allocations(start, end) request.success( _("Successfully removed ${count} unused allocations", mapping={ 'count': count }) ) return morepath.redirect(request.link(self)) layout = ResourceLayout(self, request) layout.breadcrumbs.append(Link(_("Clean up"), '#')) layout.editbar_links = None return { 'layout': layout, 'title': _("Clean up"), 'form': form }
def handle_new_allocation(self, request, form): """ Handles new allocations for differing form classes. """ if form.submitted(request): scheduler = self.get_scheduler(request.app.libres_context) try: allocations = scheduler.allocate( dates=form.dates, whole_day=form.whole_day, quota=form.quota, quota_limit=form.quota_limit, data=form.data, partly_available=form.partly_available ) except LibresError as e: utils.show_libres_error(e, request) else: request.success(_("Successfully added ${n} allocations", mapping={ 'n': len(allocations) })) self.highlight_allocations(allocations) return morepath.redirect(request.link(self)) elif not request.POST: start, end = utils.parse_fullcalendar_request(request, self.timezone) whole_day = request.params.get('whole_day') == 'yes' if start and end: if whole_day: form.start.data = start form.end.data = end if hasattr(form, 'as_whole_day'): form.as_whole_day.data = 'yes' else: form.start.data = start form.end.data = end if hasattr(form, 'as_whole_day'): form.as_whole_day.data = 'no' if hasattr(form, 'start_time'): form.start_time.data = start form.end_time.data = end layout = ResourceLayout(self, request) layout.breadcrumbs.append(Link(_("New allocation"), '#')) layout.editbar_links = None return { 'layout': layout, 'title': _("New allocation"), 'form': form }
def handle_edit_resource(self, request, form): if form.submitted(request): form.update_model(self) request.success(_("Your changes were saved")) return morepath.redirect(request.link(self)) elif not request.POST: form.apply_model(self) layout = ResourceLayout(self, request) layout.include_editor() layout.include_code_editor() layout.breadcrumbs.append(Link(_("Edit"), '#')) return { 'layout': layout, 'title': self.title, 'form': form, 'form_width': 'large' }