def get_day_schedule_by_user(date): user_scheds = [] for user_obj in user.objects.order_by('uid'): sched = [ t for t in time.objects.filter(start__date=date).filter( timetype=SHIFT).filter(uid=user_obj.uid).order_by('start') ] bar_lengths = [] if sched: start_of_day = dt.combine(date, tm(9, 0, 0, 0, sched[0].start.tzinfo)) end_of_day = dt.combine(date, tm(17, 0, 0, 0, sched[0].start.tzinfo)) last_t = start_of_day for t in sched: tstart = t.start - timedelta(hours=4) if tstart.hour < start_of_day.hour: tstart = start_of_day tend = t.end - timedelta(hours=4) if tend.hour >= end_of_day.hour: tend = end_of_day bar_lengths.append([[tstart.time, tend.time], (time_subtract(last_t, tstart)), (time_subtract(tstart, tend))]) last_t = tend final_time = t bar_lengths.append([[final_time.start.time, 0],(time_subtract(last_t, \ end_of_day)), 0]) user_stuff = [user_obj.firstname, user_obj.lastname, bar_lengths] user_scheds.append(user_stuff) return user_scheds
def sun_angle(time): dawn = tm(6, 00) sunset = tm(18, 00) h, m = map(int, time.split(':')) time = tm(h, m) if dawn <= time <= sunset: return (h - 6) * 15 + m / 4 return "I don't see the sun!"
def test_setTimer(self): command = self.bytes2('b1 b2 04 0e 8b b6') self.device.respond(command, self.bytes2('b6')) self.dl24.setTimer(tm(1, 2, 3)) self.assertEqual(self.device.get_output(), command)
def getVal(self, command): ret = self.writeFunction(command, [0, 0]) if (not ret or len(ret) == 0): print("no answer") return False elif (len(ret) == 1 and ret[0] == 0x6F): print("setval") return False elif (len(ret) < 7 or ret[0] != 0xCA or ret[1] != 0xCB or ret[5] != 0xCE or ret[6] != 0xCF): print("Receive error") return False try: mult = PX100.MUL[command] except: mult = 1000. if (command == PX100.TIME or command == PX100.TIMER): hh = ret[2] mm = ret[3] ss = ret[4] return tm(hh, mm, ss) #'{:02d}:{:02d}:{:02d}'.format(hh, mm, ss) else: return int.from_bytes(ret[2:5], byteorder='big') / mult
def periodReport(self, period): """Expects an iterable with valid initHours on it. 'period' is day,week,month in the language defined""" today = date.today() todayEpoch = formatDate(today.timetuple()[0:5])[2] todayAtZeroAM = datetime.combine(today,tm(0,0)) todayAtZeroAME = formatDate(todayAtZeroAM.timetuple()[0:5])[2] tomorrowAtZeroAM = todayAtZeroAM + timedelta(days=1) tomorrowAtZeroAME = formatDate(tomorrowAtZeroAM.timetuple()[0:5])[2] lastWeek = todayAtZeroAM - timedelta(days=7) lastWeekEpoch = formatDate(lastWeek.timetuple()[0:5])[2] lastMonth = todayAtZeroAM - timedelta(days=30) lastMonthEpoch = formatDate(lastMonth.timetuple()[0:5])[2] # The next line is very criptic, but it really gets the job done: appointmentsHours = json.loads(getActivityRegister(self.database,self.activity)[1])['horarios'].keys() if period is "mensual": timeRange = [ihs for ihs in appointmentsHours if float(ihs) > lastMonthEpoch and float(ihs) < todayEpoch] reportList = ['Reporte mensual:'] if period is "semanal": timeRange = [ihs for ihs in appointmentsHours if float(ihs) > lastWeekEpoch and float(ihs) < todayAtZeroAME] reportList = ['Reporte semanal:'] if period is "diario": timeRange = [ihs for ihs in appointmentsHours if float(ihs) > todayAtZeroAME and float(ihs) < tomorrowAtZeroAME] reportList = ['Reporte del día:'] for initHour in timeRange: ar = ActivityRegister(self.database, self.activity, initHour) reportList.append(ar.rawReport()) return reportList,timeRange
def testParseTopicPage(self): """Method for testing parseTopicPage.""" f = codecs.open( "{0}/example/topic_14.html".format( os.path.dirname(os.path.abspath(__file__))), 'r', 'utf-8') html = f.read() f.close() data = parseTopicPage(html) messages = data['messages'] del data['messages'] expectedData = { 'id': 14, 'name': 'Break on the supply\'s increase', 'board': 7, 'count_read': 3051, 'num_pages': 1 } self.assertEqual(data, expectedData) self.assertEqual(len(messages), 2) firstMessage = messages[0] firstMessageContent = { 'raw': firstMessage['content'], 'no_html': firstMessage['content_no_html'], 'no_quote': firstMessage['content_no_quote'], 'no_quote_no_html': firstMessage['content_no_quote_no_html'] } del firstMessage['content'] del firstMessage['content_no_html'] del firstMessage['content_no_quote'] del firstMessage['content_no_quote_no_html'] expectedFirstMessage = { 'id': long(53), 'member': 16, 'subject': 'Break on the supply\'s increase', 'link': 'https://bitcointalk.org/index.php?topic=14.msg53#msg53', 'topic': 14, 'topic_position': 1, 'post_time': datetime(2009, 12, 12, 14, 11, 37) } self.assertEqual(firstMessage, expectedFirstMessage) self.assertEqual(len(firstMessageContent['raw']), 1276) self.assertEqual(len(firstMessageContent['no_html']), 1208) self.assertEqual(len(firstMessageContent['no_quote']), 1276) self.assertEqual(len(firstMessageContent['no_quote_no_html']), 1208) f = codecs.open( "{0}/example/topic_602041.12400.html".format( os.path.dirname(os.path.abspath(__file__))), 'r', 'utf-8') html = f.read() f.close() data = parseTopicPage(html) self.assertEqual(data['num_pages'], 621) self.assertEqual( data['messages'][0]['post_time'], datetime.combine(datetime.utcnow().date(), tm(21, 3, 11)))
def xls_date_to_xlsx(self, value): date_tuple = xlrd.xldate_as_tuple(value, self.date_mode) if date_tuple == (0, 0, 0, 0, 0, 0): return datetime(1900, 1, 1, 0, 0, 0) elif date_tuple[0:3] == (0, 0, 0): return tm(date_tuple[3], date_tuple[4], date_tuple[5]) elif date_tuple[3:6] == (0, 0, 0): return date(date_tuple[0], date_tuple[1], date_tuple[2]) return datetime(date_tuple[0], date_tuple[1], date_tuple[2], date_tuple[3], date_tuple[4], date_tuple[5])
def testParseTopicPage(self): """Method for testing parseTopicPage.""" f = codecs.open("{0}/example/topic_14.html".format( os.path.dirname(os.path.abspath(__file__))), 'r', 'utf-8') html = f.read() f.close() data = parseTopicPage(html) messages = data['messages'] del data['messages'] expectedData = { 'id': 14, 'name': 'Break on the supply\'s increase', 'board': 7, 'count_read': 3051, 'num_pages': 1 } self.assertEqual(data, expectedData) self.assertEqual(len(messages), 2) firstMessage = messages[0] firstMessageContent = { 'raw': firstMessage['content'], 'no_html': firstMessage['content_no_html'], 'no_quote': firstMessage['content_no_quote'], 'no_quote_no_html': firstMessage['content_no_quote_no_html'] } del firstMessage['content'] del firstMessage['content_no_html'] del firstMessage['content_no_quote'] del firstMessage['content_no_quote_no_html'] expectedFirstMessage = { 'id': long(53), 'member': 16, 'subject': 'Break on the supply\'s increase', 'link': 'https://bitcointalk.org/index.php?topic=14.msg53#msg53', 'topic': 14, 'topic_position': 1, 'post_time': datetime(2009, 12, 12, 14, 11, 37) } self.assertEqual(firstMessage, expectedFirstMessage) self.assertEqual(len(firstMessageContent['raw']), 1276) self.assertEqual(len(firstMessageContent['no_html']), 1208) self.assertEqual(len(firstMessageContent['no_quote']), 1276) self.assertEqual(len(firstMessageContent['no_quote_no_html']), 1208) f = codecs.open("{0}/example/topic_602041.12400.html".format( os.path.dirname(os.path.abspath(__file__))), 'r', 'utf-8') html = f.read() f.close() data = parseTopicPage(html) self.assertEqual(data['num_pages'], 621) self.assertEqual( data['messages'][0]['post_time'], datetime.combine(datetime.utcnow().date(), tm(21, 3, 11)))
def checkLicensePlate(plate,date_time): """ this function return True or false depending of the Peak Hours mobilization laws mentioned in the README.md plate: (str) License plate with the format "XXX-0000" (number could be 3/4) date_time: (str) Date and time selected to predict. format: "2021-02-06T16:43" return: (int) 1 if the car can drive, 0 if not. """ peak = { 0 : [1,2], 1 : [3,4], 2 : [5,6], 3 : [7,8], 4 : [9,0], } message1 = "{}, License Plate {} can {} drive on {}." message3 = message1[:-1] + " at time: {}." message2 = "Plate can only be alphanumeric." if not plate.isalnum(): return 0,message2 lDigit = plate[-1] # Last Digit day,time_ = date_time.split("T") day = dt.strptime(day, '%Y-%m-%d') weekday = day.weekday() weekdaystr = day.strftime('%A') # if the selected date is not in the peak days then it can drive. if weekday not in peak.keys(): return 1 , message1.format('YES',plate,'',weekdaystr) # if lDigit not in the blacklist of the day then it can drive. if int(lDigit) not in peak[weekday]: return 1 , message1.format('YES',plate,'',weekdaystr) time_ = dt.strptime(time_, '%H:%M').time() # if the time_ selected is between the peak hours then it can't drive. if (time_>= tm(7,0) and time_ <= tm(9,30)) or (time_>= tm(16,0) and time_ <= tm(19,30)): return 0 , message3.format('NO',plate,'not',weekdaystr,str(time_)) else: # else, it can drive. return 1 , message3.format('YES',plate,'',weekdaystr,str(time_))
def __init__(self, device): print(device) self.device = device self.name = "PX100" self.device.timeout = 500 self.device.baud_rate = 9600 self.aux_index = 0 self.data = { 'is_on': 0., 'voltage': 0., 'current': 0., 'time': tm(0), 'cap_ah': 0., 'cap_wh': 0., 'temp': 0, 'set_current': 0., 'set_voltage': 0., 'set_timer': tm(0), }
def check_items_data_edit(data,response): response['status'] = 'success' response['error'] = '' last_week = (datetime.combine(datetime.date(datetime.now()) - timedelta(days=7), tm(0, 0, 0)) - datetime(1970, 1, 1)).total_seconds() sdate_empty = edate_empty = start_empty = end_empty = False try: if data['start_date'] < last_week: response['status'] = 'error' response['error'] += 'Нельзя создать дело в прошлом(более чем за неделю).\n' except KeyError: sdate_empty = True try: if data['end_date'] < last_week: response['status'] = 'error' response['error'] += 'Нельзя создать дело закончевшееся в прошлом(более чем за неделю).\n' except KeyError: edate_empty = True try: if not (0 <= data['start'] <= 86400): response['status'] = 'error' response['error'] += 'Параметр start должен иметь значение в диапазоне [0,86400].\n' except KeyError: start_empty = True try: if not (0 <= data['end'] <= 86400): response['status'] = 'error' response['error'] += 'Параметр end должен иметь значение в диапазоне [0,86400].\n' except KeyError: end_empty = True if sdate_empty != edate_empty: response['status'] = 'error' response['error'] += 'Дело должно иметь старт И конец, или не иметь ни того, ни другого.(дата)\n' if start_empty != end_empty: response['status'] = 'error' response['error'] += 'Дело должно иметь старт И конец, или не иметь ни того, ни другого.(время)\n' if sdate_empty == False and edate_empty == False: if data['end_date'] < data['start_date']: response['status'] = 'error' response['error'] += 'Дело не может закончится раньше чем начнется.(дата)\n' if start_empty == False and end_empty == False: if data['end_date'] < data['start_date']: response['status'] = 'error' response['error'] += 'Дело не может закончится раньше чем начнется.(время)\n' try: if len(data['text']) > 50: response['status'] = 'error' response['error'] += 'Название дела не может быть длиньше 50 символов.\n' except: pass if len(response['error']): return response else: response.pop('error') return False
def format_time(x, pos, t): if pos: pass n = int(round(x)) if 0 <= n < t.size: if PLOT_UNITS: return str(round(t[n], 3)) + " s" else: decomposition = math.modf(round(t[n], 6)) s = round(decomposition[1]) hours = s // (60 * 60) minutes = (s - hours * 60 * 60) // 60 seconds = s - (hours*60*60) - (minutes*60) return tm(second=seconds, minute=minutes, hour=hours, microsecond=round(decomposition[0] * 1e6)).isoformat(timespec='milliseconds')[3:] else: return ""
def index(): if request.method == 'POST': date = request.form["inputdate"] time = request.form["inputtime"] if date == '' or time == '': return redirect('/') date_o = dt(int(date[0:4]), int(date[5:7]), int(date[8:])) time_o = tm(hour=int(time[:2])) response = getter.get(date_o, time_o) return render_template("results.html", response=response) else: now = datetime.now() max = datetime(2020, 12, 31) return render_template('index.html', now=now, max=max)
def periodReport(self, period): """Expects an iterable with valid initHours on it. 'period' is day,week,month in the language defined""" today = date.today() todayEpoch = formatDate(today.timetuple()[0:5])[2] todayAtZeroAM = datetime.combine(today, tm(0, 0)) todayAtZeroAME = formatDate(todayAtZeroAM.timetuple()[0:5])[2] tomorrowAtZeroAM = todayAtZeroAM + timedelta(days=1) tomorrowAtZeroAME = formatDate(tomorrowAtZeroAM.timetuple()[0:5])[2] lastWeek = todayAtZeroAM - timedelta(days=7) lastWeekEpoch = formatDate(lastWeek.timetuple()[0:5])[2] lastMonth = todayAtZeroAM - timedelta(days=30) lastMonthEpoch = formatDate(lastMonth.timetuple()[0:5])[2] # The next line is very criptic, but it really gets the job done: appointmentsHours = json.loads( getActivityRegister(self.database, self.activity)[1])['horarios'].keys() if period is "mensual": timeRange = [ ihs for ihs in appointmentsHours if float(ihs) > lastMonthEpoch and float(ihs) < todayEpoch ] reportList = ['Reporte mensual:'] if period is "semanal": timeRange = [ ihs for ihs in appointmentsHours if float(ihs) > lastWeekEpoch and float(ihs) < todayAtZeroAME ] reportList = ['Reporte semanal:'] if period is "diario": timeRange = [ ihs for ihs in appointmentsHours if float(ihs) > todayAtZeroAME and float(ihs) < tomorrowAtZeroAME ] reportList = ['Reporte del día:'] for initHour in timeRange: ar = ActivityRegister(self.database, self.activity, initHour) reportList.append(ar.rawReport()) return reportList, timeRange
def checkin(self): """When a user checkin, all the room on the folio will become unavailable till checkout time. """ folio = self.folio_id if folio.payment_deposits <= 0: raise UserError( _("""No record of security deposit found on folio {} """.format(folio.name))) if folio.state != 'on_queue': raise UserError( _('Folio {} is not yet to be processed'.format( self.folio_id.name))) hours, minutes = decimal_to_time(self.env.user.company_id.checkin_hour) can_check_in = datetime.combine(date.today(), tm( hours, minutes)) < datetime.now() if not can_check_in: raise UserError( 'Guest(s) cannot be checked in earlier than {}'.format( self.env.user.company_id.checkin_hour)) if self.folio_id.room_id.occupy(): self.folio_id.write({'state': 'checkin'})
def timePart(strDateTime): tempDT = dt.strptime(strDateTime, '%Y-%m-%d %H:%M') return tm(tempDT.hour, tempDT.minute, tempDT.second)
def check_items_data(data, response, type): response['status'] = 'success' response['error'] = '' last_week = (datetime.combine(datetime.date(datetime.now()) - timedelta(days=7), tm(0, 0, 0)) - datetime(1970, 1, 1)).total_seconds() sdate_empty = edate_empty = start_empty = end_empty = user_empty = notif_empty = False try: if data['start_date'] < last_week: response['status'] = 'error' response['error'] += 'Нельзя создать дело в прошлом(более чем за неделю).\n' except KeyError: sdate_empty = True try: if data['end_date'] < last_week: response['status'] = 'error' response['error'] += 'Нельзя создать дело закончевшееся в прошлом(более чем за неделю).\n' except KeyError: edate_empty = True try: if not (0 <= data['start'] <= 86400): response['status'] = 'error' response['error'] += 'Параметр start должен иметь значение в диапазоне [0,86400].\n' except KeyError: start_empty = True try: if not (0 <= data['end'] <= 86400): response['status'] = 'error' response['error'] += 'Параметр end должен иметь значение в диапазоне [0,86400].\n' except KeyError: end_empty = True if sdate_empty != edate_empty: response['status'] = 'error' response['error'] += 'Дело должно иметь старт И конец, или не иметь ни того, ни другого.(дата)\n' if start_empty != end_empty: response['status'] = 'error' response['error'] += 'Дело должно иметь старт И конец, или не иметь ни того, ни другого.(время)\n' if sdate_empty == False and edate_empty == False: if data['end_date'] < data['start_date']: response['status'] = 'error' response['error'] += 'Дело не может закончится раньше чем начнется.(дата)\n' if start_empty == False and end_empty == False: if data['end_date'] < data['start_date']: response['status'] = 'error' response['error'] += 'Дело не может закончится раньше чем начнется.(время)\n' try: user = Tokenaizer.objects.filter(user=data['user']) if not user: response['status'] = 'error' response['error'] += 'Указанный юзер не авторизован под текущим токеном.\n' except: user_empty = True response['status'] = 'error' response['error'] += 'Не передан обязательный параметр: user\n' try: if not user_empty: category = Categories.objects.filter(id=data['category'], user__in=[data['user'], 'all']) if not category: response['status'] = 'error' response['error'] += 'Переданая категория отсутствует или вам не доступна.\n' except: response['status'] = 'error' response['error'] += 'Не передан обязательный параметр: category\n' try: if not (data['complexity'] in range(0, 4)): response['status'] = 'error' response['error'] += 'Переданая сложность не поддерживается. Возможное значение: 0-3\n' except: pass try: if not (data['importance'] in range(0, 4)): response['status'] = 'error' response['error'] += 'Переданая важность не поддерживается. Возможное значение: 0-3\n' except: pass try: if len(data['text']) > 50: response['status'] = 'error' response['error'] += 'Название дела не может быть длиньше 50 символов.\n' except: pass try: if data['status'] != "": response['status'] = 'error' response['error'] += 'При создании дела невозможно указать статус отличный от "".\n' except: pass try: if not (data['notifications'] in ['true', 'false', 0, 1, '0', '1']): response['status'] = 'error' response['error'] += 'Параметр notifications указан не верно, ' \ 'он может принимать одно из значений: ["true", "false", 0, 1, "0", "1"]\n' if data['notifications']: notif_empty = True except KeyError: notif_empty = True if not notif_empty: try: if data['notification_time'] < 0: response['status'] = 'error' response['error'] += 'Нельзя создать оповещение в прошлом.\n' except: response['status'] = 'error' response['error'] += 'Не передан обязательный параметр: notification_time\n' try: if not (isinstance(data['period'], int) and data['period'] > 0): response['status'] = 'error' response['error'] += 'Параметр period должен быть положительным целым числом\n' except KeyError: pass if len(response['error']): return response else: response.pop('error') return False
def get(self, request, sdate=None, edate=None, source=None): response = {} try: token = request.META['HTTP_AUTHORIZATION']#request.GET['token']#request.data['token'] if token.split(' ')[0]=='Bearer': try: token = token.split(' ')[1] except IndexError: token = "" else: response['status'] = 'error' response['error'] = "Указанный вид токена не поддерживается." return _response(response, source, request) except KeyError: response['status'] = 'error' response['error'] = "Не передан обязательный параметр token" return _response(response, source, request) if not sdate and not edate: sdate = datetime.now().date() - timedelta(days=7) edate = datetime.now().date() + timedelta(days=7) else: if sdate != '0' and sdate: try: sdate_ = sdate.split('.') sdate_.reverse() y, m, d = (int(x) for x in sdate_) sdate = date(y, m, d) except: response['status'] = 'error' response['error'] = "%s невозможно преобразовать в дату." % sdate if not source: return HttpResponse(json.dumps(response), content_type="application/json") else: response = {request.data['query_url']: response} return response if edate != '0' and edate: try: edate_ = edate.split('.') edate_.reverse() y, m, d = (int(x) for x in edate_) edate = date(y, m, d) except: response['status'] = 'error' response['error'] = "%s невозможно преобразовать в дату." % edate if not source: return HttpResponse(json.dumps(response), content_type="application/json") else: response = {request.data['query_url']: response} return response if sdate == '0': sdate = edate - timedelta(days=7) if edate == '0': edate = sdate + timedelta(days=8) sdate = (datetime.combine(sdate, tm(0, 0, 0)) - datetime(1970, 1, 1)).total_seconds() edate = (datetime.combine(edate, tm(23, 59, 59)) - datetime(1970, 1, 1)).total_seconds() if token: user = Tokenaizer.objects.filter(token=token).values('user') else: response['status'] = 'success' response['message'] = 'Токен пустой.' response['data'] = [] return _response(response, source, request) if not user: response['status'] = 'error' response['error'] = "Токен не зарегистрирован. Возможно он устарел." return _response(response, source, request) else: user = user.get()['user'] affairs = Affairs.objects.filter(~Q(status='deleted'), start_date__gte=sdate, start_date__lte=edate, user=user) |\ Affairs.objects.filter(~Q(status='deleted'), start_date__isnull=True,end_date__isnull=True,user=user) serializer = ItemSerializer(affairs, many=True) response['status'] = 'success' response['data'] = serializer.data return _response(response, source, request)
def today(request): "Get a list of upcoming evaluations for today" cogs = COGS.objects.filter(date=dt.today()) evaluations = TA.objects.get(user_id=request.user.id).evaluation_set.exclude(student=None) sessions = Session.objects.filter(evaluation__in=evaluations.all(), cogs__in=cogs, block__end__gte=tm(8)) evaluations = Evaluation.objects.filter(session__in=sessions, ta__user_id=request.user.id).order_by('start') return render(request, 'eece496/today.html', { 'cogs_list': cogs, 'session_list': sessions, 'evaluation_list': evaluations })
def __readTime(self, command): ret = self.__readValue(command) return tm(ret[2], ret[3], ret[4])
def k2t(delta): x = delta u = x.seconds // 3600 m = (x.seconds % 3600) // 60 x = tm(u, m) return x
def s2z(x, zeichnis=''): # assert( str, type(x) ) ### DELTA ### d4dl = re.match('^(\d+)D', x) if d4dl: d4dl = d4dl.group(1) d4dl = int(d4dl) # ex. 1950/09/09 if re.match('^\d{4}/\d{2}/\d{2}$', x): x = dt.strptime(x, '%Y/%m/%d') if zeichnis == '' or zeichnis == 'd': return dy(x.year, x.month, x.day) # ex. 1955-03-07 elif re.match('^\d{4}-\d{2}-\d{2}$', x): x = dt.strptime(x, '%Y-%m-%d') if zeichnis == '' or zeichnis == 'd': return dy(x.year, x.month, x.day) # ex. 18:39 elif re.match('^\d{2}:\d{2}$', x): x = dt.strptime(x, '%H:%M') if zeichnis == '' or zeichnis == 't': return tm(x.hour, x.minute, 0) # ex. 18:10:40 elif re.match('^\d{2}:\d{2}:\d{2}$', x): x = dt.strptime(x, '%H:%M:%S') if zeichnis == '' or zeichnis == 't': return tm(x.hour, x.minute, x.second) # ex. 18:10.40 elif re.match('^\d{2}:\d{2}\.\d+$', x): x = dt.strptime(x, '%M:%S.%f') return tm(0, x.minute, x.second, x.microsecond) # ex. 1983-01-22 18:40:15 elif re.match('^\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}$', x): x = dt.strptime(x, '%Y-%m-%d %H:%M:%S') if zeichnis == '' or zeichnis == 'p': return dt(x.year, x.month, x.day, x.hour, x.minute, x.second) # ex. 1989-11-07 18:40:15 elif re.match('^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$', x): x = dt.strptime(x, '%Y-%m-%d %H:%M:%S') if zeichnis == '' or zeichnis == 'p': return dt(x.year, x.month, x.day, x.hour, x.minute, x.second) # ex. 1989-11-07 18:40:15.500189 elif re.match('^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(\.\d+)?$', x): x = re.sub('\.\d+$', '', x) x = dt.strptime(x, '%Y-%m-%d %H:%M:%S') if zeichnis == '' or zeichnis == 'p': return dt(x.year, x.month, x.day, x.hour, x.minute, x.second) ### 2017-09-16 ### # ex. 19800528 elif re.match('^\d{4}\d{2}\d{2}$', x): x = dt.strptime(x, '%Y%m%d') if zeichnis == '' or zeichnis == 'd': return dy(x.year, x.month, x.day) elif re.match('^\d{2}\d{2}\d{2}$', x): if int(x[0:2]) >= 80: w = '19' else: w = '20' x = dt.strptime(w + x, '%Y%m%d') if zeichnis == '' or zeichnis == 'd': return dy(x.year, x.month, x.day) # ex. 0909 elif re.match('^[01]\d[0-3]\d$', x): x = dt.strptime(x, '%m%d') if zeichnis == '' or zeichnis == 'd': return dy(dy.today().year, x.month, x.day) ### 2018-11-04 ### elif re.match('^\d+D \d{1,2}:\d{1,2}:\d{1,2}$', x): x = dt.strptime(x, '%dD %H:%M:%S') x = dl(days=d4dl, hours=x.hour, minutes=x.minute, seconds=x.second) return x # elif re.match('^\d+D \d{1,2}:\d{1,2}$', x): x = dt.strptime(x, '%dD %H:%M') x = dl(days=d4dl, hours=x.hour, minutes=x.minute) return x return x
def test_getTimer(self): self.device.respond(self.bytes2('b1 b2 19 00 00 b6'), self.bytes2('ca cb 01 02 03 ce cf')) self.assertEqual(self.dl24.getTimer(), tm(1, 2, 3))
def u2t(x): x = u2p(x) x = tm(x.hour, x.minute, x.second) return x
def p2t(x): return tm(x.hour, x.minute, x.second)
# Función que es llamada por los eventos def Leer(dato): print('TIEMPO:{}'.format(dato)) ##mover datos comienzo = time.time() tiempoEjecuecion = 5 final = comienzo + tiempoEjecuecion cant = 0 while final > time.time(): cant = cant + 1 pass print(cant) pass mañana = tm(23, 55, 0) #Mañana tarde = tm(23, 56, 0) #Tarde noche = tm(23, 57, 0) #Noche horarios = {} #Defino un diccionario para los horarios horarios["nuevo día"] = tm(23, 59, 58) horarios["mañana"] = mañana horarios["tarde"] = tarde horarios["noche"] = noche horarios["actual"] = tm(datetime.now().hour, datetime.now().minute, datetime.now().second) print("\tHora1 < Hora2:", horarios["actual"] < horarios["noche"]) print('PROGRAMADOR INICIADO:') mañana = False tarde = False
handler_programmazione_giornaliera)) dispatcher.add_handler( CommandHandler(commands_programmazione_giornaliera_completa, handler_programmazione_giornaliera_completa)) dispatcher.add_handler( CommandHandler(commands_dettagli_film, handler_dettagli_film)) dispatcher.add_handler( MessageHandler(Filters.regex(r'\/f_[0-9]+'), handler_dettagli_film_id)) dispatcher.add_handler( CommandHandler(commands_che_ore_sono, handler_che_ore_sono)) dispatcher.add_handler( MessageHandler(Filters.command | Filters.text, sconosciuto)) updater.start_polling() reset_giornaliero_avvenuto = False DUE = tm(2, 0, 0) TRE = tm(3, 0) db_conn = None while db_conn is None: db_conn = handleDB.connect_to_db(logging) if db_conn is None: updater.bot.send_message(my_id, "\nErrore nella prima connessione al DB") time.sleep(60) handleDB.create_tables(db_conn, logging) db_conn.close() updater.bot.send_message(my_id, msg_benvenuto) while True: try:
""" Attach a text label above each bar displaying its height """ for rect in rects: height = rect.get_height() print('h=',height) ax.text(rect.get_x() + rect.get_width()/2., 1.03*height, '%d' % int(height), ha='center', va='bottom', rotation='vertical') x = ['Tommy', 'Alice', 'Henry', 'Jennifer', 'Bobby', 'IBM', 'Google', 'BlockChain'] y = [tm(8,33), np.NaN, tm(9,15), np.NaN, tm(8,55), tm(9,33), tm(10,10), np.NaN] y2 = [np.NaN, np.NaN, tm(17,15), tm(16,55), tm(17,45), np.NaN, tm(16,22), tm(18,1)] # find a better way to replace NaN from list object y = list(map((lambda x: (tm(0,0) if x is np.nan or x!=x else x)), y)) y2 = list(map((lambda x: (tm(0,0) if x is np.nan or x!=x else x)), y2)) myDay = datetime.date (2017,1,1) yDt = [datetime.datetime.combine(myDay, t) for t in y] y2Dt = [datetime.datetime.combine(myDay, t) for t in y2] # try matplotlib "numeric" dates ymDt = [mdates.date2num(d) for d in yDt] y2mDt = [mdates.date2num(d) for d in y2Dt] N = len(x)
'Manitosa', 'Nobleton', 'Ottawa', 'Peterson Little', 'Questrade', 'Robbertelle', 'Samsung Electronics', 'To-be-or-not-to-be', 'UCLA-Campus', 'Valentino', 'Whatever-Waterloo', 'Xavier the Gifted School', 'Yellow Submarine', 'Zebra Zoo'] meanTime = [tm(7,50), tm(8,33), tm(9,12), tm(10,15), tm(7,55), tm(8,10), tm(9,22), tm(10,34), tm(7,45), tm(8,45), tm(8,55), tm(9,2), tm(8,33), tm(8,32), tm(10,18), tm(8,44),
class USDTradeData: orderbook = {} mark_prices = {} size_inc = {} # minimum order sizes by market net_imbal = {} # {'swap_market': 0,...} net delivery imbalance available = {} # available balance total = {} # total balance bids = {} # {'repo_market': {'1': [placed, size, price, oid], '2':...}...} asks = {} # {'repo_market': {'1': [placed, size, price, oid], '2':...}...} large_cap_distribution = { '1': (0.00002, 0.25), '2': (0.00004, 0.6), '3': (0.00006, 0.15) } medium_cap_distribution = { '1': (0.00002, 0.25), '2': (0.00004, 0.6), '3': (0.00006, 0.15) } small_cap_distribution = { '1': (0.00002, 0.25), '2': (0.00004, 0.6), '3': (0.00006, 0.15) } coin_definition = { 'large': ['BTC'], 'medium': ['LINK', 'YFI', 'UNI', 'USDT', 'BCH', 'DOT', 'ETH'], 'small': ['SNX', 'BAND', 'CRV', 'BAL', 'COMP'] } coin_allocation = { 'BTC': 0.8, 'ETH': 0.115, 'BCH': 0.01, 'DOT': 0.01, 'LTC': 0.01, 'LINK': 0.005, 'YFI': 0.005, 'UNI': 0.005, 'USDT': 0.015, 'DASH': 0.005, 'SNX': 0.0025, 'BAND': 0.0025, 'CRV': 0.0025, 'BAL': 0.0025, 'COMP': 0.0025, 'OMG': 0.0025, 'SUSHI': 0.0025, 'FLEX': 0.0025 } large_allocation = coin_allocation['BTC'] medium_allocation = coin_allocation['ETH'] small_allocation = coin_allocation['COMP'] df = '' safety_buffer = 0.95 logger = '' delivery_timer = {} repo_market = [] # Change markets here swap_market = [] subscription = { 'op': 'subscribe', 'args': ['balance:all', 'order:all'], 'tag': '1', } WS_FLAG = False # 04:00 UTC auction am_deliv_start = tm(3, 20) am_deliv_end = tm(3, 30) am_bid_start = tm(3, 59, 10) am_bid_end = tm(4, 00) # 12:00 UTC auction noon_deliv_start = tm(11, 20) noon_deliv_end = tm(11, 30) noon_bid_start = tm(11, 59, 10) noon_bid_end = tm(12, 00) # 20:00 UTC auction pm_deliv_start = tm(19, 20) pm_deliv_end = tm(19, 30) pm_bid_start = tm(19, 59, 10) pm_bid_end = tm(20, 00) @staticmethod def reset_asks(): return { '6': [False, 0, 0, 0], # placed, qty, price, orderId } @staticmethod def reset_bids(): return { '1': [False, 0, 0, 0], # placed, qty, price, orderId '2': [False, 0, 0, 0], '3': [False, 0, 0, 0], } @staticmethod def reset_coin_alloc(): return { 'BTC': 0.8, 'ETH': 0.12, 'BCH': 0.02, 'DOT': 0.01, 'LINK': 0.005, 'YFI': 0.005, 'UNI': 0.005, 'USDT': 0.015, 'SNX': 0.0028, 'BAND': 0.0028, 'CRV': 0.0028, 'BAL': 0.0028, 'COMP': 0.0028 }
def calculator(self): time_now = datetime.now().time() while datetime.now().time() >= time_now: try: time_s = datetime.now().time() time.sleep(1) time_stop = datetime.now().time() total_work = time_stop.second - time_s.second working_sec = total_work working_min = working_sec / 60 working_hrs = working_min / 60 hrs_total = working_hrs for item in list_of_dicts: if datetime.now().weekday() == 0: item["monday"] += hrs_total else: pass if datetime.now().weekday() == 1: item["tuesday"] += hrs_total else: pass if datetime.now().weekday() == 2: item["wednesday"] += hrs_total else: pass if datetime.now().weekday() == 3: item["thursday"] += hrs_total else: pass if datetime.now().weekday() == 4: item["friday"] += hrs_total else: pass if datetime.now().weekday() == 5: item["saturday"] += hrs_total else: pass if datetime.now().weekday() == 6: item["sunday"] += hrs_total else: pass item["total"] += hrs_total if self.day_night(self, time_s, tm(21), tm(6)): night_price = 85 earn = hrs_total * night_price item["money"] += earn item["night"] += hrs_total if datetime.now().weekday() == 5 or datetime.now( ).weekday() == 6: night_price_weekends = 105 earn1 = night_price_weekends * hrs_total item["money"] += earn1 item["weekendnights"] += hrs_total else: day_price = 50 earn2 = hrs_total * day_price item["money"] += earn2 except KeyboardInterrupt: self.save_user_info(self)
def post(self, request, source=None): response = {} try: token = request.META['HTTP_AUTHORIZATION']#request.GET['token']#request.data['token'] if token.split(' ')[0]=='Bearer': token = token.split(' ')[1] else: response['status'] = 'error' response['error'] = "Указанный вид токена не поддерживается." return _response(response, source, request) except KeyError: response['status'] = 'error' response['error'] = "Не передан обязательный параметр token" return _response(response, source, request) user = Tokenaizer.objects.filter(token=token) if user: user = user.values('user').get()['user'] user = User.objects.get(email=user) if user: try: patern_id = json.loads(request.data['data'])['id'] start_date = json.loads(request.data['data'])['start_date'] start_time = json.loads(request.data['data'])['start_time'] except: response['status'] = 'error' response['error'] = "Не переданы обязательные параметры." return _response(response, source, request) patern = Paterns.objects.get(id=patern_id, user=user.id) if patern: paterns = patern.affairs[1:-1].split(',') affairs = Affairs.objects.filter(~Q(status='deleted'), id__in=paterns).order_by('start_timestamp') delta = [affairs.values()[i + 1]['start_timestamp'] - affairs.values()[i]['start_timestamp'] for i in range(len(affairs.values()) - 1)] print(delta, start_date, start_time) new_affairs = [] try: start_timestamp = int(start_date) + int(start_time) except: response['status'] = 'error' response['error'] = "Не переданы дата и время начала шаблона." return _response(response, source, request) for i, affair in enumerate(affairs.values()): affair['start_timestamp'] = start_timestamp end_timestamp = start_timestamp + affair['duration'] start_datetime = datetime.fromtimestamp(start_timestamp) affair['start_date'] = int(mktime(datetime.combine(start_datetime.date(), tm(0, 0, 0)).timetuple())) affair['start'] = int(start_timestamp - affair['start_date']) end_datetime = datetime.fromtimestamp(end_timestamp) affair['end_date'] = int(mktime(datetime.combine(end_datetime.date(), tm(0, 0, 0)).timetuple())) affair['end'] = int(end_timestamp - affair['end_date']) affair['category'] = affair['category_id'] affair['notifications'] = 1 if affair['notifications'] else 0 affair['fast_access'] = 1 if affair['fast_access'] else 0 new_affairs.append(affair) if i != len(affairs.values()) - 1: start_timestamp += int(delta[i]) response['data'] = [] for i in new_affairs: serializer = ItemAddSerializer(data=i) print(i) if serializer.is_valid(raise_exception=DEBUG): affair = serializer.save() return_serializer = ItemSerializer(Affairs.objects.filter(id=affair.id).get()) response['data'].append(return_serializer.data) else: response['status'] = 'error' response['error'] = "Не удалось сохранить дела." return _response(response, source, request) response['status'] = 'success' return _response(response, source, request) else: response['status'] = 'error' response['error'] = "Указанный шаблон не принадлежит вам." return _response(response, source, request) else: response['status'] = 'error' response['error'] = "Не зарегистрированные пользователи не могут добавлять шаблоны." return _response(response, source, request)