Esempio n. 1
0
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
Esempio n. 2
0
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!"
Esempio n. 3
0
    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)
Esempio n. 4
0
    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
Esempio n. 5
0
    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
Esempio n. 6
0
    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)))
Esempio n. 7
0
 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])
Esempio n. 8
0
    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)))
Esempio n. 9
0
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_))
Esempio n. 10
0
 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),
     }
Esempio n. 11
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
Esempio n. 12
0
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 ""
Esempio n. 13
0
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)
Esempio n. 14
0
    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
Esempio n. 15
0
 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'})
Esempio n. 16
0
def timePart(strDateTime):
    tempDT = dt.strptime(strDateTime, '%Y-%m-%d %H:%M')
    return tm(tempDT.hour, tempDT.minute, tempDT.second)
Esempio n. 17
0
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
Esempio n. 18
0
 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)
Esempio n. 19
0
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
    })
Esempio n. 20
0
 def __readTime(self, command):
     ret = self.__readValue(command)
     return tm(ret[2], ret[3], ret[4])
Esempio n. 21
0
def k2t(delta):
    x = delta
    u = x.seconds // 3600
    m = (x.seconds % 3600) // 60
    x = tm(u, m)
    return x
Esempio n. 22
0
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
Esempio n. 23
0
    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))
Esempio n. 24
0
def u2t(x):
    x = u2p(x)
    x = tm(x.hour, x.minute, x.second)
    return x
Esempio n. 25
0
def p2t(x):
    return tm(x.hour, x.minute, x.second)
Esempio n. 26
0
# 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
Esempio n. 27
0
                   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:
Esempio n. 28
0
    """
    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)
Esempio n. 29
0
		 '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
        }
Esempio n. 31
0
    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)
Esempio n. 32
0
    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)