def test_dateconversion(self): sample = jdatetime.date(1389, 9, 2) d_check_with = jdatetime.date(1390, 2, 23) #TEST date self.assertEqual(True, sample.togregorian() == datetime.date(2010, 11, 23)) self.assertEqual(True, jdatetime.date.fromgregorian( date=datetime.date(2011, 5, 13)) == d_check_with) #TEST datetime self.assertEqual(True, jdatetime.datetime.fromgregorian( datetime=datetime.datetime(2011, 5, 13)).date() == d_check_with) jd_datetime = jdatetime.datetime.fromgregorian(year=2011, month=5, day=13, hour=14, minute=15, second=16) self.assertEqual(True, jd_datetime == jdatetime.datetime.combine(d_check_with, jdatetime.time(14, 15, 16))) gdatetime = datetime.datetime(2011, 5, 13, 14, 15, 16) self.assertEqual(True, jd_datetime.togregorian() == gdatetime)
def test_dateconversion(self): sample = jdatetime.date(1389, 9, 2) d_check_with = jdatetime.date(1390, 2, 23) #TEST date self.assertEqual(True, sample.togregorian() == datetime.date(2010, 11, 23)) self.assertEqual( True, jdatetime.date.fromgregorian( date=datetime.date(2011, 5, 13)) == d_check_with) #TEST datetime self.assertEqual( True, jdatetime.datetime.fromgregorian(datetime=datetime.datetime( 2011, 5, 13)).date() == d_check_with) jd_datetime = jdatetime.datetime.fromgregorian(year=2011, month=5, day=13, hour=14, minute=15, second=16) self.assertEqual( True, jd_datetime == jdatetime.datetime.combine( d_check_with, jdatetime.time(14, 15, 16))) gdatetime = datetime.datetime(2011, 5, 13, 14, 15, 16) self.assertEqual(True, jd_datetime.togregorian() == gdatetime)
def shift_from(date=None): if not date: now = jdatetime.datetime.now().astimezone(pytz.timezone('Asia/Tehran')) if now.minute <= 15: now = now.replace(minute=15) elif now.minute <= 30: now = now.replace(minute=30) elif now.minute <= 45: now = now.replace(minute=45) else: now = now.replace(minute=59) + jdatetime.timedelta(minutes=1) end_date = now + jdatetime.timedelta(days=7) date_ = now else: date_ = date end_date = date + jdatetime.timedelta(days=1) work_shift = WorkShift.objects.first() usual_day_start_morning = work_shift.usual_day_start_morning usual_day_start_morning = jdatetime.time( hour=usual_day_start_morning.hour, minute=usual_day_start_morning.minute) usual_day_start_afternoon = work_shift.usual_day_start_afternoon usual_day_start_afternoon = jdatetime.time( hour=usual_day_start_afternoon.hour, minute=usual_day_start_afternoon.minute) usual_day_end_morning = work_shift.usual_day_end_morning usual_day_end_morning = jdatetime.time(hour=usual_day_end_morning.hour, minute=usual_day_end_morning.minute) usual_day_end_afternoon = work_shift.usual_day_end_afternoon usual_day_end_afternoon = jdatetime.time( hour=usual_day_end_afternoon.hour, minute=usual_day_end_afternoon.minute) shifts = [] last_shift = date_ while last_shift <= end_date: if usual_day_start_morning <= last_shift.time() < usual_day_end_morning or \ usual_day_start_afternoon <= last_shift.time() < usual_day_end_afternoon: shifts.append( last_shift.replace(second=0, microsecond=0).togregorian()) last_shift = last_shift + jdatetime.timedelta(minutes=15) return shifts
def is_in_work_shift(self): work_shift = WorkShift.objects.first() usual_day_start_morning = work_shift.usual_day_start_morning usual_day_start_morning = jdatetime.time( hour=usual_day_start_morning.hour, minute=usual_day_start_morning.minute) usual_day_start_afternoon = work_shift.usual_day_start_afternoon usual_day_start_afternoon = jdatetime.time( hour=usual_day_start_afternoon.hour, minute=usual_day_start_afternoon.minute) usual_day_end_morning = work_shift.usual_day_end_morning usual_day_end_morning = jdatetime.time( hour=usual_day_end_morning.hour, minute=usual_day_end_morning.minute) usual_day_end_afternoon = work_shift.usual_day_end_afternoon usual_day_end_afternoon = jdatetime.time( hour=usual_day_end_afternoon.hour, minute=usual_day_end_afternoon.minute) if (usual_day_start_morning <= self.start_at.time() < usual_day_end_morning) or \ (usual_day_start_afternoon <= self.start_at.time() < usual_day_end_afternoon): return True return False
def test_date_conversion_integer_input(self): d_check_with = jdatetime.date(1390, 2, 23) jd_datetime = jdatetime.datetime.fromgregorian(year=2011, month=5, day=13, hour=14, minute=15, second=16) self.assertEqual( True, jd_datetime == jdatetime.datetime.combine( d_check_with, jdatetime.time(14, 15, 16))) gdatetime = datetime.datetime(2011, 5, 13, 14, 15, 16) self.assertEqual(True, jd_datetime.togregorian() == gdatetime)
def editArchiveItem(username, password, items): if checkForAdmin(username, password): number = 0 for i in items: item = items[i] db_item = getArchiveItemById(item.get("id")) splitedTime = item.get("time").split(":") time = jdt.time(int(splitedTime[0]), int(splitedTime[1])) updatedRows = db_item.update(name=item.get("name"), desc=item.get("desc"), time=time, duration=int(item.get("duration")), itemType=item.get("type"), category=item.get("category"), url=item.get("url")) number = number + updatedRows if number == len(items): createLog("Admin edited items in archive successfully", items) return { "result": True, "code": 200, "desc": "all items updated successfully" } else: createLog("Admin failed to update some items in archive", { "number": str(len(items) - int(number)), "items": items }) return { "result": True, "code": 608, "desc": str(len(items) - int(number)) + enums.getErrors(608) } else: createLog("User with this username tried to edit items in conductor ", { "username": username, "items": items }) return {"result": False, "code": 666, "desc": "User is not admin"}
def get_queryset(self): day = self.kwargs.get('day', '') now = jdatetime.datetime.now() now_t = now.time() now_d = now.date() if day == 'tomorrow': now_d = now_d + jdatetime.timedelta(days=1) now_t = jdatetime.time(5, 0) timefilter = ExcludeDate.objects.filter( Q(date=now_d) | Q(day=now_d.weekday())) timeservices = Time.objects.all().exclude(excludedate__in=timefilter) for t in timeservices: if t.strparse.hour <= now_t.hour: if t.strparse.hour == now_t.hour: minutes = t.strparse.minute - now_t.minute if minutes < 0: minutes = minutes * -1 if minutes > 15: timeservices = timeservices.exclude(pk=t.pk) else: timeservices = timeservices.exclude(pk=t.pk) return timeservices.order_by('id')
def insertToArchive(username, password, items): if checkForAdmin(username, password): for i in items: item = items[i] splitedTime = item.get("time").split(":") time = jdt.time(int(splitedTime[0]), int(splitedTime[1])) newItem = models.Archive(name=item.get("name"), desc=item.get("desc"), time=time, duration=int(item.get("duration")), itemType=item.get("type"), category=item.get("category"), url=item.get("url")) try: newItem.save() except Exception as e: createLog("Admin failed to insert new item to archive", { "error": e, "items": items }) return { "result": False, "code": 607, "desc": str(e) + enums.getErrors(607) } createLog("Admin inserted items to conductor successfully", items) return { "result": True, "code": 200, "desc": "items inserted successfully" } else: createLog("User with this username tried to add items to archive ", { "username": username, "items": items }) return {"result": False, "code": 666, "desc": enums.getErrors(666)}
def test_combine(self): t = jdatetime.time(12, 13, 14) d = jdatetime.date(1390, 4, 5) dt = jdatetime.datetime(1390, 4, 5, 12, 13, 14) self.assertEqual(True, jdatetime.datetime.combine(d, t) == dt)
def test_datetime(self): d = jdatetime.datetime(1390, 1, 2, 12, 13, 14) self.assertEqual(True, d.time() == jdatetime.time(12, 13, 14)) self.assertEqual(True, d.date() == jdatetime.date(1390, 1, 2))
def test_combine_keeps_date_locale(self): t = jdatetime.time(11, 20, 30) d = jdatetime.date(1397, 4, 24, locale='nl_NL') self.assertEqual(jdatetime.datetime.combine(d, t).locale, 'nl_NL')