Example #1
0
    def form_valid(self, form):
        if not self.request.user.is_authenticated:
            messages.add_message(self.request, messages.ERROR,
                                 'You need to be logged in to book a Pod.')
            return super(BookingFormView, self).form_invalid(form)

        user = self.request.user
        booking = Booking(start=form.cleaned_data['start'],
                          end=form.cleaned_data['end'],
                          purpose=form.cleaned_data['purpose'],
                          installer=form.cleaned_data['installer'],
                          scenario=form.cleaned_data['scenario'],
                          resource=self.resource,
                          user=user)
        try:
            booking.save()
        except ValueError as err:
            messages.add_message(self.request, messages.ERROR, err)
            return super(BookingFormView, self).form_invalid(form)
        try:
            if settings.CREATE_JIRA_TICKET:
                create_jira_ticket(user, booking)
        except JIRAError:
            messages.add_message(
                self.request, messages.ERROR, 'Failed to create Jira Ticket. '
                'Please check your Jira '
                'permissions.')
            booking.delete()
            return super(BookingFormView, self).form_invalid(form)
        messages.add_message(self.request, messages.SUCCESS, 'Booking saved')
        return super(BookingFormView, self).form_valid(form)
Example #2
0
class test_booking(TestCase):
    def setUp(self):
        self.loc = Location.objects.create(
            name="BroGym",
            address="Brophessor st. 12",
            description=
            "best gym get swole 100\%\ gains guaranteed live large die large leave a huge coffin"
        )
        self.user = User.objects.create_superuser(customer_number="92837465",
                                                  email="*****@*****.**",
                                                  password="******")
        self.b1 = Booking(id=1,
                          person=self.user,
                          title="Baiceps",
                          description="get de big baiceps",
                          location=self.loc,
                          start="2019-05-15T12:00:00Z",
                          end="2019-05-15T14:00:00Z")
        self.b1.save()
        self.b2 = Booking(id=2,
                          person=self.user,
                          title="legs",
                          description="skip legday",
                          location=self.loc,
                          start="2019-05-15T12:00:00Z",
                          end="2019-05-15T14:00:00Z")
        self.b2.save()

    def test_name(self):
        self.assertTrue(str(self.b1) == "Baiceps")

    def test_absolute_url(self):
        pass

    def test_move_queue(self):
        before1 = self.b1.queueNo
        before2 = self.b2.queueNo
        queue = [self.b1, self.b2]
        self.b1.move_queue(queue, 1)
        self.assertGreater(self.b1.queueNo, before1)
        self.assertGreater(self.b2.queueNo, before2)

    def test_save(self):
        before = self.b2.queueNo
        self.b2.start = datetime(2019, 5, 15, 14)  #'2019-05-15T14:00:00Z'
        self.b2.end = datetime(2019, 5, 15, 16)  #'2019-05-15T16:00:00Z'
        self.b2.save()
        self.assertGreater(before, self.b2.queueNo)

    def test_delete(self):
        before = self.b2.queueNo
        self.b1.delete()
        q1 = Booking.objects.all()[0]
        self.assertGreater(before, q1.queueNo)

    def test_get_groups(self):
        groups = self.b1.get_groups()
        self.assertEqual([], groups)

    def test_get_date(self):
        pass
Example #3
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
Example #4
0
class SimpleTest(TestCase):
    def setUp(self):
        # User objects.Non auth user
        self.user1 = OAuthUser.objects.create_user("temporary", "*****@*****.**", "temporary")
        # Auth user
        self.user2 = OAuthUser.objects.create_user("temporary2", "*****@*****.**", "temporary")

        self.user2.is_auth = True
        self.user2.save()

        # Auth user
        self.user3 = OAuthUser.objects.create_user("temporary3", "*****@*****.**", "temporary")

        self.user3.is_banned = True
        self.user3.save()

        # Create Booking object
        self.order = Booking(
            user=self.user2,
            swim_lane=3,
            start_date=datetime.datetime.now().date(),
            start_time="11:30:00",
            end_time="12:00:00",
        )
        self.order.save()
        # non exists order id
        self.fake_id = 9999

        self.client = Client()

    def tearDown(self):
        self.user1.delete()
        self.user2.delete()
        self.order.delete()

    ########################
    # List of orders - GET #
    ########################
    def test_get_booking_list(self):
        url = reverse("booking_list_api")

        # Get by non login user
        response = self.client.get(url)
        self.assertEqual(response.status_code, 403)

        # Get by no auth user
        self.client.login(email="*****@*****.**", password="******")
        response = self.client.get(url)
        self.assertEqual(response.status_code, 403)

        # Get by banned user
        self.client.login(email="*****@*****.**", password="******")
        response = self.client.get(url)
        self.assertEqual(response.status_code, 403)

        # Get by auth user
        self.client.login(email="*****@*****.**", password="******")
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

    #########################
    # List of orders - POST #
    #########################
    def test_post_booking_list(self):
        url = reverse("booking_list_api")
        post = {"start_date": datetime.datetime.now().date(), "start_time": "11:30:00", "end_time": "12:00:00"}
        post_invalid_date_max = {
            "start_date": datetime.datetime.now().date() + datetime.timedelta(days=6),
            "start_time": "11:30:00",
            "end_time": "12:00:00",
        }
        post_invalid_date_min = {
            "start_date": datetime.datetime.now().date() - datetime.timedelta(days=2),
            "start_time": "11:30:00",
            "end_time": "12:00:00",
        }
        post_invalid_time = {
            "start_date": datetime.datetime.now().date(),
            "start_time": "11:31:00",
            "end_time": "12:00:00",
        }

        # Post by non login user
        response = self.client.post(url, post)
        self.assertEqual(response.status_code, 403)

        # Post by no auth user
        self.client.login(email="*****@*****.**", password="******")
        response = self.client.post(url, post)
        self.assertEqual(response.status_code, 403)

        # Post by banned user
        self.client.login(email="*****@*****.**", password="******")
        response = self.client.post(url, post)
        self.assertEqual(response.status_code, 403)

        # Post by auth user
        self.client.login(email="*****@*****.**", password="******")
        response = self.client.post(url, post)
        self.assertEqual(response.status_code, 201)

        # Post by auth user with invalid date - max
        response = self.client.post(url, post_invalid_date_max)
        self.assertEqual(response.status_code, 400)

        # Post by auth user with invalid date - post past date
        response = self.client.post(url, post_invalid_date_min)
        # print(response.content)
        self.assertEqual(response.status_code, 400)

        # Post by auth user with invalid time
        response = self.client.post(url, post_invalid_time)
        self.assertEqual(response.status_code, 400)

        # Post if fully booked at this time(6 lines)
        self.client.post(url, post)  # 3
        self.client.post(url, post)  # 4
        self.client.post(url, post)  # 5
        self.client.post(url, post)  # 6
        response = self.client.post(url, post)  # 7
        self.assertEqual(response.status_code, 400)

    def test_delete_order(self):
        url_detail = reverse("booking_detail_api", args=(self.order.id,))

        # delete order by no login user
        response = self.client.delete(url_detail)
        self.assertEqual(response.status_code, 403)

        # delete order by no auth user
        self.client.login(email="*****@*****.**", password="******")
        response = self.client.delete(url_detail)
        self.assertEqual(response.status_code, 403)
        """
        # delete order by auth user, but no owner this order
        self.client.login(email='*****@*****.**', password='******')
        response = self.client.delete(url_detail)
        self.assertEqual(response.status_code, 403)
        """
        # delete order by auth user and owner this order
        self.client.login(email="*****@*****.**", password="******")
        response = self.client.delete(url_detail)
        self.assertEqual(response.status_code, 204)