Example #1
0
    def test_get_machine_type(self):
        for machine_type in MachineTypeField.possible_machine_types:
            self.assertEqual(
                machine_type,
                MachineTypeField.get_machine_type(machine_type.id))

        self.assertEqual(None, MachineTypeField.get_machine_type(0))
Example #2
0
    def test_calendar_reservation_url(self, now_mock):
        now_mock.return_value = local_to_date(
            timezone.datetime(2018, 12, 9, 12, 24))
        user = User.objects.create_user("user", "*****@*****.**",
                                        "weak_pass")
        user.save()

        machine_type_printer = MachineTypeField.get_machine_type(1)
        Quota.objects.create(user=user,
                             number_of_reservations=2,
                             ignore_rules=True,
                             machine_type=machine_type_printer)
        printer = Machine.objects.create(name="U1",
                                         location="S1",
                                         machine_model="Ultimaker",
                                         status="F",
                                         machine_type=machine_type_printer)
        Printer3DCourse.objects.create(user=user,
                                       username=user.username,
                                       name=user.get_full_name(),
                                       date=timezone.now())

        reservation = Reservation.objects.create(user=user,
                                                 machine=printer,
                                                 event=None,
                                                 start_time=timezone.now(),
                                                 end_time=timezone.now() +
                                                 timedelta(hours=2))

        self.assertEqual(current_calendar_url(printer),
                         calendar_url_reservation(reservation))
Example #3
0
    def test_get_user_reservations_different_types(self):
        machine_type_sewing = MachineTypeField.get_machine_type(2)
        Quota.objects.create(user=self.user,
                             number_of_reservations=2,
                             machine_type=machine_type_sewing,
                             ignore_rules=True)

        sewing_machine = Machine.objects.create(
            name="T1",
            machine_model="Generic",
            location="M1",
            status="F",
            machine_type=machine_type_sewing)

        Reservation.objects.create(user=self.user,
                                   machine=sewing_machine,
                                   start_time=timezone.now(),
                                   end_time=timezone.now() +
                                   timezone.timedelta(hours=2),
                                   event=None)

        self.assertEqual([
            Reservation.objects.get(user=self.user,
                                    machine__machine_type=machine_type_sewing),
            Reservation.objects.get(
                user=self.user,
                machine__machine_type=self.machine_type_printer)
        ],
                         list(
                             template_view_get_context_data(
                                 MyReservationsView,
                                 request_user=self.user)["reservations"]))
Example #4
0
    def setUp(self):
        self.user = User.objects.create_user("user", "*****@*****.**")

        self.machine_type_printer = MachineTypeField.get_machine_type(1)

        printer = Machine.objects.create(
            name="U1",
            machine_type=self.machine_type_printer,
            machine_model="Ultimaker 2",
            location="S1",
            status="F")
        Quota.objects.create(user=self.user,
                             number_of_reservations=2,
                             ignore_rules=True,
                             machine_type=self.machine_type_printer)
        Printer3DCourse.objects.create(user=self.user,
                                       name=self.user.get_full_name(),
                                       username=self.user.username,
                                       date=timezone.now().date())

        Reservation.objects.create(user=self.user,
                                   machine=printer,
                                   event=None,
                                   start_time=timezone.now(),
                                   end_time=timezone.now() +
                                   timezone.timedelta(hours=2))
Example #5
0
 def setUp(self):
     event = Event.objects.create(title="TEST EVENT")
     self.timeplace = TimePlace.objects.create(
         pub_date=timezone.now(),
         start_date=timezone.now(),
         start_time=(timezone.now() + timedelta(seconds=1)).time(),
         event=event)
     self.machine_type = MachineTypeField.get_machine_type(1)
     self.machine = Machine.objects.create(name="C1",
                                           location="Printer room",
                                           status="F",
                                           machine_type=self.machine_type)
     self.user = User.objects.create_user("User", "*****@*****.**",
                                          "user_pass")
     self.user_quota = Quota.objects.create(user=self.user,
                                            ignore_rules=False,
                                            number_of_reservations=2,
                                            machine_type=self.machine_type)
     self.course_registration = Printer3DCourse.objects.create(
         user=self.user,
         username=self.user.username,
         date=datetime.now().date(),
         name=self.user.get_full_name())
     self.max_time_reservation = 5
     ReservationRule.objects.create(
         machine_type=self.machine_type,
         start_time=time(0, 0),
         end_time=time(23, 59),
         days_changed=6,
         start_days=1,
         max_hours=self.max_time_reservation,
         max_inside_border_crossed=self.max_time_reservation)
Example #6
0
 def setUp(self):
     machine_type_printer = MachineTypeField.get_machine_type(1)
     self.machine = Machine.objects.create(
         name="Test",
         machine_model="Ultimaker 2+",
         machine_type=machine_type_printer)
     self.event = Event.objects.create(title="Test_Event")
     self.timeplace = TimePlace.objects.create(event=self.event)
Example #7
0
 def setUp(self):
     self.machine_type_printer = MachineTypeField.get_machine_type(1)
     self.machine_type_sewing = MachineTypeField.get_machine_type(2)
     self.user = User.objects.create_user("test")
     self.user2 = User.objects.create_user("test2")
     self.quota1 = Quota.objects.create(
         all=True,
         machine_type=self.machine_type_sewing,
         number_of_reservations=2)
     self.quota2 = Quota.objects.create(
         all=True,
         machine_type=self.machine_type_printer,
         number_of_reservations=4)
     self.quota3 = Quota.objects.create(
         user=self.user,
         machine_type=self.machine_type_printer,
         number_of_reservations=4)
     self.quota4 = Quota.objects.create(
         user=self.user2,
         machine_type=self.machine_type_sewing,
         number_of_reservations=1)
Example #8
0
 def create_reservation(start_time, end_time):
     machine_type = MachineTypeField.get_machine_type(1)
     Machine.objects.create(name="S1", location="U1", machine_model="Ultimaker", status="F",
                            machine_type=machine_type)
     user = User.objects.create_user("User", "*****@*****.**", "unsecure_pass")
     user.save()
     Quota.objects.create(user=user, number_of_reservations=2, ignore_rules=True, machine_type=machine_type)
     Printer3DCourse.objects.create(user=user, username=user.username, name=user.get_full_name(),
                                    date=timezone.datetime.now().date())
     Reservation.objects.create(user=user, machine=Machine.objects.get(name="S1"),
                                start_time=start_time,
                                end_time=end_time,
                                event=None)
     return Reservation.objects.first()
    def test_get_admin_reservation(self):
        user = User.objects.create_user("test")
        machine_type = MachineTypeField.get_machine_type(1)
        Quota.objects.create(machine_type=machine_type,
                             number_of_reservations=10,
                             ignore_rules=True,
                             user=user)
        permission = Permission.objects.get(
            codename="can_create_event_reservation")
        user.user_permissions.add(permission)
        event = Event.objects.create(title="Test_event")
        timeplace = TimePlace.objects.create(
            event=event,
            start_time=(timezone.now() + timedelta(hours=1)).time(),
            start_date=(timezone.now() + timedelta(hours=1)).date(),
            end_time=(timezone.now() + timedelta(hours=2)).time(),
            end_date=(timezone.now() + timedelta(hours=2)).date())
        printer = Machine.objects.create(machine_type=machine_type,
                                         machine_model="Ultimaker")
        Printer3DCourse.objects.create(user=user,
                                       username=user.username,
                                       name=user.get_full_name(),
                                       date=timezone.now())
        special_reservation = Reservation.objects.create(
            start_time=timezone.now() + timedelta(hours=1),
            special_text="Test",
            special=True,
            user=user,
            machine=printer,
            end_time=timezone.now() + timedelta(hours=2))
        normal_reservation = Reservation.objects.create(
            start_time=timezone.now() + timedelta(hours=2),
            user=user,
            machine=printer,
            end_time=timezone.now() + timedelta(hours=3))
        event_reservation = Reservation.objects.create(
            start_time=timezone.now() + timedelta(hours=3),
            event=timeplace,
            user=user,
            machine=printer,
            end_time=timezone.now() + timedelta(hours=4))

        context_data = template_view_get_context_data(AdminReservationView,
                                                      request_user=user)
        self.assertEqual(context_data["admin"], True)
        self.assertEqual(set(context_data["reservations"]),
                         {special_reservation, event_reservation})
Example #10
0
    def test_is_valid_rule_external(self):
        ReservationRule(start_time=datetime.time(10, 0),
                        end_time=datetime.time(6, 0),
                        days_changed=1,
                        start_days=53,
                        max_inside_border_crossed=0,
                        machine_type=self.machine_type,
                        max_hours=0).save()

        rule = ReservationRule(start_time=datetime.time(12, 0),
                               end_time=datetime.time(18, 0),
                               days_changed=0,
                               start_days=66,
                               max_inside_border_crossed=0,
                               machine_type=self.machine_type,
                               max_hours=0)

        self.assertTrue(rule.is_valid_rule())

        rule = ReservationRule(start_time=datetime.time(5, 0),
                               end_time=datetime.time(12, 0),
                               days_changed=0,
                               start_days=2,
                               max_inside_border_crossed=0,
                               machine_type=self.machine_type,
                               max_hours=0)

        self.assertFalse(rule.is_valid_rule())
        try:
            rule.is_valid_rule(raise_error=True)
            self.fail(
                "An exception should have been raised for a check on a non valid rule with raise_error set"
            )
        except ValidationError:
            pass

        try:
            rule.save()
            self.fail("Valid rules should not be saveable")
        except ValidationError:
            pass

        rule.machine_type = MachineTypeField.get_machine_type(2)
        self.assertTrue(
            rule.is_valid_rule(),
            "Rules for different machine types should not effect the validity of each other"
        )
 def setUp(self):
     self.user = User.objects.create_user("test")
     self.machine_type = MachineTypeField.get_machine_type(2)
     self.machine = Machine.objects.create(machine_type=self.machine_type,
                                           status="F",
                                           name="Test")
     Quota.objects.create(machine_type=self.machine_type,
                          number_of_reservations=2,
                          ignore_rules=False,
                          all=True)
     ReservationRule.objects.create(start_time=time(0, 0),
                                    end_time=time(23, 59),
                                    start_days=1,
                                    days_changed=6,
                                    max_inside_border_crossed=6,
                                    max_hours=6,
                                    machine_type=self.machine_type)
 def setUp(self):
     Reservation.reservation_future_limit_days = 7
     self.machine_type_sewing = MachineTypeField.get_machine_type(2)
     self.user = User.objects.create_user(username="******")
     self.machine = Machine.objects.create(
         machine_model="Test", machine_type=self.machine_type_sewing)
     self.event = Event.objects.create(title="Test_event")
     Quota.objects.create(user=self.user,
                          machine_type=self.machine_type_sewing,
                          number_of_reservations=100,
                          ignore_rules=True)
     self.timeplace = TimePlace.objects.create(
         event=self.event,
         start_time=(timezone.now() + timedelta(hours=1)).time(),
         start_date=(timezone.now() + timedelta(hours=1)).date(),
         end_time=(timezone.now() + timedelta(hours=2)).time(),
         end_date=(timezone.now() + timedelta(hours=2)).date())
Example #13
0
    def test_status(self):
        machine_type = MachineTypeField.get_machine_type(1)
        printer = Machine.objects.create(name="C1",
                                         location="Printer room",
                                         status="F",
                                         machine_model="Ultimaker 2 Extended",
                                         machine_type=machine_type)
        user = User.objects.create_user("test")
        Printer3DCourse.objects.create(name="Test",
                                       username="******",
                                       user=user,
                                       date=timezone.datetime.now().date())
        Quota.objects.create(machine_type=machine_type,
                             user=user,
                             ignore_rules=True,
                             number_of_reservations=1)

        self.assertEquals(printer.get_status(), "F")
        self.assertEquals(printer.get_status_display(), "Ledig")
        printer.status = "O"
        self.assertEquals(printer.get_status(), "O")
        self.assertEquals(printer.get_status_display(), "I ustand")
        printer.status = "M"
        self.assertEquals(printer.get_status(), "M")
        self.assertEquals(printer.get_status_display(), "Vedlikehold")
        printer.status = "R"
        self.assertEquals(printer.get_status(), "F")
        self.assertEquals(printer.get_status_display(), "Ledig")

        Reservation.objects.create(machine=printer,
                                   start_time=timezone.now(),
                                   end_time=timezone.now() +
                                   timedelta(hours=1),
                                   user=user)

        self.assertEquals(printer.get_status(), "R")
        self.assertEquals(printer.get_status_display(), "Reservert")
        printer.status = "F"
        self.assertEquals(printer.get_status(), "R")
        self.assertEquals(printer.get_status_display(), "Reservert")
        printer.status = "O"
        self.assertEquals(printer.get_status(), "O")
        self.assertEquals(printer.get_status_display(), "I ustand")
        printer.status = "M"
        self.assertEquals(printer.get_status(), "M")
        self.assertEquals(printer.get_status_display(), "Vedlikehold")
Example #14
0
    def test_get_user_quota(self):
        user = User.objects.create_user("test")
        user2 = User.objects.create_user("test2")
        machine_type = MachineTypeField.get_machine_type(1)
        Quota.objects.create(all=True,
                             user=user,
                             machine_type=machine_type,
                             number_of_reservations=2)
        quota2 = Quota.objects.create(user=user,
                                      machine_type=machine_type,
                                      number_of_reservations=2)
        Quota.objects.create(user=user2,
                             machine_type=machine_type,
                             number_of_reservations=2)

        context_data = template_view_get_context_data(GetUserQuotaView,
                                                      request_user=user,
                                                      user=user)
        context_data["user_quotas"] = list(context_data["user_quotas"])

        self.assertEqual(context_data, {"user_quotas": [quota2]})
    def setUp(self):
        user1 = User.objects.create_user("user1", "*****@*****.**",
                                         "weak_pass")
        user1.save()
        user2 = User.objects.create_user("user2", "*****@*****.**",
                                         "weak_pass")
        user2.save()

        machine_type_printer = MachineTypeField.get_machine_type(1)
        Machine.objects.create(name="U1",
                               location="Make",
                               machine_model="Ultimaker 2",
                               status="F",
                               machine_type=machine_type_printer)

        Quota.objects.create(user=user1,
                             number_of_reservations=2,
                             ignore_rules=True,
                             machine_type=machine_type_printer)
        Quota.objects.create(user=user2,
                             number_of_reservations=2,
                             ignore_rules=True,
                             machine_type=machine_type_printer)

        Printer3DCourse.objects.create(user=user1,
                                       username=user1.username,
                                       name=user1.get_full_name(),
                                       date=timezone.now())
        Printer3DCourse.objects.create(user=user2,
                                       username=user2.username,
                                       name=user2.get_full_name(),
                                       date=timezone.now())

        self.reservation = Reservation.objects.create(
            user=user1,
            machine=Machine.objects.get(name="U1"),
            start_time=timezone.now() + timezone.timedelta(hours=2),
            end_time=timezone.now() + timezone.timedelta(hours=4),
            event=None)
Example #16
0
 def setUp(self):
     self.period = ReservationRule.Period
     self.machine_type = MachineTypeField.get_machine_type(1)
Example #17
0
 def to_python(self, value):
     return MachineTypeField.get_machine_type(int(value))
Example #18
0
 def setUp(self):
     self.machine_type = MachineTypeField.get_machine_type(1)