コード例 #1
0
ファイル: tests.py プロジェクト: sakamossan/d
    def test_process_status_log(self):
        datum = self.data[2]

        # exercise
        self.org.process_girl(datum)
        self.org.process_attendance(datum)

        # first
        stat, is_new = self.org.process_status_log(datum)
        self.assertTrue(is_new)
        self.assertEqual(stat.id, '8907484-20160130-164000')
        self.assertEqual(stat.attendance.id, '8907484-20160130')
        self.assertEqual(stat.checked_at, datetime.datetime(2016, 1, 30, 16, 40, 0))
        self.assertEqual(stat.status, 'off')

        # second
        snd, is_not_new = self.org.process_status_log(datum)
        self.assertFalse(is_not_new)
        self.assertEqual(snd.id, '8907484-20160130-164000')

        # count-inserted
        self.assertEqual(StatusLog.count(), 1)

        # abnormal
        null_status = copy.copy(datum)
        del null_status['status']
        self.assertRaises(NotOurDataException, self.org.process_status_log, null_status)
コード例 #2
0
ファイル: organize.py プロジェクト: sakamossan/d
    def process_status_log(self, data):
        """:rtype: (StatusLog, bool)"""
        if not data.get('status') in ('off', 'work', 'wait'):
            raise NotOurDataException

        checked_at = data.get('checked_term')
        atnd_id = Attendance.composite_pk(
            data['girl_id'],
            to_biz_date(checked_at))
        try:
            pk = StatusLog.composite_pk(atnd_id, checked_at)
            return StatusLog.find_by_pk_with_cache(pk), False
        except StatusLog.DoesNotExist:
            stat = StatusLog()
            stat.attendance = Attendance.find_by_pk_with_cache(atnd_id)
            stat.checked_at = checked_at
            stat.status = data['status']
            self.save_or_raise(stat)
            return stat, True