Пример #1
0
    def test_record_on_operation_no_machine(self):
        order = self._make_order()
        dao.order_dao.change_order_state(
            order.order_id, OrderStatusType.order_ready_for_production)
        employee = self._employee()

        operation_id = order.parts[0].operations[0].operation_id

        d1 = datetime(2012, 12, 31, 8)
        self.server.record_pointage_on_operation(
            operation_id, self.employee_id, d1, "Nostromo",
            TaskActionReportType.start_task, None)

        d2 = datetime(2012, 12, 31, 9)
        self.server.record_pointage_on_operation(
            operation_id, self.employee_id, d2, "Nostromo",
            TaskActionReportType.stop_task, None)

        d3 = datetime(2012, 12, 31, 10)
        self.server.record_pointage_on_operation(
            operation_id, self.employee_id, d3, "Nostromo",
            TaskActionReportType.start_task, None)

        d4 = datetime(2012, 12, 31, 11)
        self.server.record_pointage_on_operation(
            operation_id, self.employee_id, d4, "Nostromo",
            TaskActionReportType.stop_task, None)

        h = self.server.get_person_data(self.employee_id, d1.date())
        mainlog.debug("/// " * 50)
        mainlog.debug(h)

        self.assertEqual(
            3, h.presence[3].presence_time)  # From 8 to 11 ==  3 hours
Пример #2
0
    def test_one_colleague(self):
        order = self._make_order()

        dao.order_dao.change_order_state(
            order.order_id, OrderStatusType.order_ready_for_production)
        employee = self._employee()

        employee2 = self.dao_employee.create(u"Frankie Franky" + chr(233))

        operation = order.parts[0].operations[0]

        m = Machine()
        m.fullname = "Test"
        m.is_active = True
        m.operation_definition_id = operation.operation_definition_id
        session().add(m)
        session().commit()
        machine_service._reset_cache()

        # A colleague

        d3 = datetime(2012, 12, 31, 9)
        self.server.record_pointage_on_operation(
            operation.operation_id, employee2.employee_id, d3, "Nostromo",
            TaskActionReportType.start_task, m.machine_id)

        mainlog.debug("test_one_colleague-1")
        operation, machines, next_action_kind, colleagues = self.server.get_operation_information(
            employee.employee_id, operation.operation_id)
        mainlog.debug("test_one_colleague-2")

        assert len(colleagues) == 1
        assert colleagues[0].reporter_id == employee2.employee_id
        assert colleagues[0].kind == TaskActionReportType.start_task
Пример #3
0
    def test_presence_recording(self):

        # TestClockService.test_presence_recording
        t1 = datetime(2012, 12, 31, 8, 0)
        self.assertEqual(
            0,
            len(
                self.tar_dao.get_reports_for_employee_id_on_date(
                    self.employee_id, t1.date())))

        self.server.record_presence(self.employee_id, t1, "Nostromo",
                                    TaskActionReportType.presence)
        self.assertEqual(
            1,
            len(
                self.tar_dao.get_reports_for_employee_id_on_date(
                    self.employee_id, t1.date())))

        t2 = t1 + timedelta(seconds=30)
        self.server.record_presence(self.employee_id, t2, "Nostromo",
                                    TaskActionReportType.presence)
        self.assertEqual(
            2,
            len(
                self.tar_dao.get_reports_for_employee_id_on_date(
                    self.employee_id, t2.date())))

        ot = self.server.get_ongoing_tasks(self.employee_id,
                                           t1 + timedelta(hours=3))
        self.assertEqual(0, len(ot))

        h = self.server.get_person_data(self.employee_id, t1.date())

        mainlog.debug("test : get_person_data")
        mainlog.debug(h)

        self.assertEqual(30, round(
            3600 * h.presence[3].presence_time))  # Duration is in hours
        self.assertEqual(date(2012, 12, 31), h.presence[3].day)

        # self.assertEqual([t2,None,None,None], h.presence['presence_end'])

        # New time between two exisiting times. It shouldn't be recorded because it's useless.
        t2 = t1 + timedelta(seconds=15)
        self.server.record_presence(self.employee_id, t2, "Nostromo",
                                    TaskActionReportType.presence)
        self.assertEqual(
            2,
            len(
                self.tar_dao.get_reports_for_employee_id_on_date(
                    self.employee_id, t2.date())))
Пример #4
0
    def test_set_day_event(self):
        event = DayEvent()
        event.employee_id = self.employee_id
        event.event_type = DayEventType.holidays

        mainlog.debug("Type {}".format(type(event)))

        self.server.set_event_on_days(event, [(date(2012, 12, 15), 7.5)])

        r = self.server.events_for_month(date(2012, 12, 1))
        mainlog.debug(r)
        assert len(r) == 1
        assert r[0].duration == 7.5
        assert r[0].date == date(2012, 12, 15)
        assert r[0].event_type == DayEventType.holidays
        assert r[0].employee_id == self.employee_id
Пример #5
0
    def test_record_on_operation_definition(self):
        d1 = datetime(2012, 12, 31, 8)

        self.server.record_pointage_on_unbillable(
            self.opdef.operation_definition_id, self.employee_id, d1,
            "Nostromo", TaskActionReportType.start_task)

        d2 = datetime(2012, 12, 31, 9)
        self.server.record_pointage_on_unbillable(
            self.opdef.operation_definition_id, self.employee_id, d2,
            "Nostromo", TaskActionReportType.stop_task)

        d3 = datetime(2012, 12, 31, 10)
        self.server.record_pointage_on_unbillable(
            self.opdef.operation_definition_id, self.employee_id, d3,
            "Nostromo", TaskActionReportType.start_task)

        d4 = datetime(2012, 12, 31, 11)
        self.server.record_pointage_on_unbillable(
            self.opdef.operation_definition_id, self.employee_id, d4,
            "Nostromo", TaskActionReportType.stop_task)

        ot = self.server.get_ongoing_tasks(self.employee_id,
                                           d1 + timedelta(minutes=5))
        self.assertEqual(1, len(ot))

        ot = self.server.get_ongoing_tasks(self.employee_id,
                                           d4 + timedelta(hours=5))
        self.assertEqual(0, len(ot))

        h = self.server.get_person_data(self.employee_id,
                                        ts_to_date(d1 - timedelta(days=1)))
        self.assertEqual(4, len(h.presence))

        for x in h.presence:
            self.assertEqual(0, x.presence_time)

        h = self.server.get_person_data(self.employee_id, d1.date())
        mainlog.debug(h)
        # self.assertEqual([d1,None,None,None], h['presence_begin'])
        # self.assertEqual([d4,None,None,None], h['presence_end'])
        self.assertEqual(
            3.0, h.presence[3].presence_time)  # From 8 to 11 ==  3 hours
Пример #6
0
    def test_ongoing_task(self):

        # In the following the dates are reversed, it's too make
        # things a bit harder :-)

        # A first task (for an order)

        order = self._order_dao.make("Test order", self.customer)
        order.state = OrderStatusType.order_ready_for_production
        self._order_dao.save(order)

        d1 = datetime(2012, 12, 31, 11)

        self.server.record_pointage_on_order(
            order.order_id, self.opdef_order.operation_definition_id,
            self.employee_id, d1, "Nostromo", TaskActionReportType.start_task)

        ot = self.server.get_ongoing_tasks(self.employee_id,
                                           d1 + timedelta(hours=3))

        mainlog.debug("Task action reports")
        for tar in session().query(TaskActionReport).all():
            mainlog.debug(tar)

        self.assertEqual(1, len(ot))

        # A second task

        d2 = datetime(2012, 12, 31, 10)
        # self.clock_server.recordPointage(bc,self.employee_id, datetime.strftime(d2, "%Y%m%dT%H:%M:%S"),"Nostromo")

        self.server.record_pointage_on_unbillable(
            self.opdef.operation_definition_id, self.employee_id, d1,
            "Nostromo", TaskActionReportType.start_task)

        ot = self.server.get_ongoing_tasks(self.employee_id,
                                           d1 + timedelta(hours=3))
        self.assertEqual(2, len(ot))

        # A third task

        order_part = self._order_part_dao.make(order)
        order_part.description = "Part 1"
        order_part.position = 1
        self._order_part_dao.save(order_part)

        pf = self._production_file_dao.make()
        pf.order_part = order_part
        order_part.production_file = [pf]
        session().add(pf)
        session().flush()

        operation = self._operation_dao.make()
        operation.production_file = pf
        operation.description = "operation desc"
        operation.operation_model = self.opdef_op
        session().add(operation)
        session().commit()
        machine = self._make_machine("Tarazer",
                                     operation.operation_definition_id)

        d3 = datetime(2012, 12, 31, 9)
        self.server.record_pointage_on_operation(
            operation.operation_id, self.employee_id, d3, "Nostromo",
            TaskActionReportType.start_task, machine.machine_id)

        # bc = BarCodeIdentifier.code_for(operation)
        # self.clock_server.recordPointage(bc,self.employee_id, datetime.strftime(d1, "%Y%m%dT%H:%M:%S"),"Nostromo")

        ot = self.server.get_ongoing_tasks(self.employee_id,
                                           d1 + timedelta(hours=3))
        self.assertEqual(3, len(ot))

        # Day in day out must not affect the number of ongoing tasks

        d4 = datetime(2012, 12, 31, 8)

        self.server.record_presence(self.employee_id, d4, "Nostromo",
                                    TaskActionReportType.day_in)
        ot = self.server.get_ongoing_tasks(self.employee_id,
                                           d1 + timedelta(hours=3))
        self.assertEqual(3, len(ot))