Example #1
0
def new_tagged_booking(step, booking_name, building, place_name, start_date,
                       end_date, username, tag):
    booking = Booking()
    booking.user = User()
    booking.user = User.objects.get(username=username)
    booking.name = booking_name
    booking.start_date = start_date
    booking.end_date = end_date
    booking.place = Place()
    booking.place.name = place_name
    booking.place.building = Building()
    booking.place.building.name = building
    booking.responsible = username
    booking.save()
    tag_o = Tag(name=tag)
    tag_o.save()
    booking.tags.add(tag_o)
    for day in range(0, 10):
        book = BookTime()
        book.date_booking = parser.parse(start_date) + timedelta(days=day)
        book.start_hour = "20:00"
        book.end_hour = "22:00"
        book.save()
        booking.time.add(book)
    booking.save()
Example #2
0
def book(request, bookable):
    if not request.user.is_authenticated:
        return render(request, 'modals/forbidden.html')
    booking = Booking()
    bookable_obj = get_object_or_404(Bookable, id_str=bookable)
    context = {
        'url': request.path,
        'bookable': bookable_obj,
        'user': request.user,
    }

    if request.method == 'GET':
        booking.start = dateutil.parser.parse(request.GET['st']) if 'st' in request.GET else datetime.now()
        booking.end = dateutil.parser.parse(request.GET['et']) if 'et' in request.GET else start + timedelta(hours=1)
        booking.bookable = bookable_obj
        booking.user = request.user
        form = BookingForm(instance=booking)
        status = 200
    elif request.method == 'POST':
        form = BookingForm(request.POST, instance=booking)
        if form.is_valid():
            form.save()
            return HttpResponse()
        else:
            status = 400
    else:
        raise Http404
    context['form'] = form
    return render(request, 'book.html', context=context, status=status)
Example #3
0
    def post(self, request, bookable):
        booking = Booking()
        booking.user = self.context['user']
        booking.bookable = self.context['bookable']
        form = get_form_class(booking.bookable.metadata_form)(request.POST, instance=booking)
        self.context['form'] = form

        if form.is_valid():
            booking = form.instance
            booking.metadata = json.dumps(form.get_cleaned_metadata())

            if request.POST.get('repeat') and _is_admin(request.user, booking.bookable):
                repeatdata = {
                    'frequency': request.POST.get('frequency'),
                    'repeat_until': request.POST.get('repeat_until')
                }
                repeat_form = RepeatingBookingForm(repeatdata)
                if repeat_form.is_valid():
                    # Creates repeating bookings as specified, adding all created bookings to group
                    skipped_bookings = repeat_form.save_repeating_booking_group(booking)
                    return JsonResponse({'skipped_bookings': skipped_bookings})
                else:
                    return render(request, self.template, context=self.context, status=400)

            else:
                form.save()
        else:
            return render(request, self.template, context=self.context, status=400)

        booking.bookable.notify_external_services()

        return HttpResponse()
Example #4
0
File: tests.py Project: josh04/WTV
    def test_booking_creation(self):

        time_period = datetime.timedelta(30)

        b = Booking()
        b.user = self.test_user
        b.start_date = datetime.datetime.now()
        b.end_date = datetime.datetime.now()+time_period
        b.save()

        items = Kit.objects.all()
        b.kits = items

        b.save()
Example #5
0
    def get(self, request, bookable):
        booking = Booking()
        booking.start = dateutil.parser.parse(
            request.GET['st']) if 'st' in request.GET else datetime.now()
        booking.end = dateutil.parser.parse(
            request.GET['et']
        ) if 'et' in request.GET else booking.start + timedelta(hours=1)
        booking.bookable = self.context['bookable']
        booking.user = request.user
        form = get_form_class(booking.bookable.metadata_form)(instance=booking)
        self.context['form'] = form

        if _is_admin(request.user, booking.bookable):
            self.context['repeatform'] = RepeatingBookingForm()

        return render(request, self.template, context=self.context)
Example #6
0
    def save(self, user, force_insert=False, force_update=False, commit=True):

        booking = Booking()
        booking.user = user
        booking.name = self.cleaned_data.get("name")
        booking.start_date = self.cleaned_data.get("start_date")
        booking.end_date = self.cleaned_data.get("end_date")
        booking.place = self.cleaned_data.get("place")
        weekdays = self.cleaned_data.get("week_days")

        #if user.profile_user.is_admin():
        #    booking.engineering = self.cleaned_data.get("engineering_choice")
        #    booking.responsible = self.cleaned_data.get("responsible")
        #    name = re.search('[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+',
        #                     booking.responsible)
        #    if name is not None:
        #        name = name.group()
        #    users = User.objects.filter(username=name)
        #    ONE_FOUND = 1
        #    if user.profile_user.is_admin() and (users.count() is ONE_FOUND):
        #        booking.user = users[0]
        #else:
        #    booking.engineering = user.profile_user.engineering
        #    booking.responsible = str(user.profile_user)

        book = BookTime()
        book.date_booking = booking.start_date
        book.start_hour = self.cleaned_data.get("start_hour")
        book.end_hour = self.cleaned_data.get("end_hour")

        try:
            booking.save()
            if booking.exists(book.start_hour, book.end_hour, weekdays):
                booking.delete()
                return None
            else:
                for day in date_range(book.date_booking, booking.end_date):
                    if (day.isoweekday() - 1 in map(int, weekdays)):
                        newBookTime = BookTime(start_hour=book.start_hour,
                                               end_hour=book.end_hour,
                                               date_booking=day)
                        newBookTime.save()
                        booking.time.add(newBookTime)

            #tags = self.cleaned_data['tags']
            #if tags:
            #    tags = ast.literal_eval(tags)
            #    for name in tags:
            #        if not Tag.objects.filter(name=name).exists():
            #            tag = Tag(name=name)
            #            tag.save()
            #        tag = Tag.objects.get(name=name)
            #        booking.tags.add(tag)
            #booking.save()

        except Exception as e:
            booking.delete()
            msg = _('Failed to book selected period')
            print(e)
            raise forms.ValidationError(msg)
            return None
        return booking