Пример #1
0
def print_activity_charts(commentlist, submissionlist):
    hourdic = {
        "00:00" : 0,
        "01:00" : 0,
        "02:00" : 0,
        "03:00" : 0,
        "04:00" : 0,
        "05:00" : 0,
        "06:00" : 0,
        "07:00" : 0,
        "08:00" : 0,
        "09:00" : 0,
        "10:00" : 0,
        "11:00" : 0,
        "12:00" : 0,
        "13:00" : 0,
        "14:00" : 0,
        "15:00" : 0,
        "16:00" : 0,
        "17:00" : 0,
        "18:00" : 0,
        "19:00" : 0,
        "20:00" : 0,
        "21:00" : 0,
        "22:00" : 0,
        "23:00" : 0
    }
    weekdaydic = {
        0 : 0,
        1 : 0,
        2 : 0,
        3 : 0,
        4 : 0,
        5 : 0,
        6 : 0
    }

    if len(commentlist) > 0:
        for comment in commentlist:
            time = datetime.datetime.utcfromtimestamp(comment['data']['created_utc'])
            hour = str(time.hour).zfill(2) + ":00"
            weekdaydic[time.weekday()] += 1
            hourdic[hour] += 1

    if len(submissionlist) > 0:
        for submission in submissionlist:
            time = datetime.datetime.utcfromtimestamp(submission['data']['created_utc'])
            hour = str(time.hour).zfill(2) + ":00"
            weekdaydic[time.weekday()] += 1
            hourdic[hour] += 1
    
    print_charts(hourdic, "Daily activity by hour")
    print()
    print_charts(weekdaydic, "Weekly activity by day", True)
    print()
Пример #2
0
    def _get_php_date(format, time):
        # http://php.net/manual/en/datetime.formats.date.php
        # http://strftime.org/
        # adapted from http://brandonwamboldt.ca/python-php-date-class-335/
        _self = Contemplate
        time  = datetime.datetime.fromtimestamp(time)
        timeStr = ''

        replacements = {}

        """ Day """
        replacements['d'] = str( time.day ).zfill(2)
        replacements['D'] = calendar.day_abbr[ time.weekday() ]
        replacements['j'] = str( time.day )
        replacements['l'] = calendar.day_name[ time.weekday() ]
        replacements['S'] = _self._get_ordinal_suffix( time.day )
        replacements['w'] = str( time.weekday() )
        replacements['z'] = str( time.timetuple().tm_yday )
        
        """ Week """
        replacements['W'] = str( time.isocalendar()[1] )
        
        """ Month """
        replacements['F'] = calendar.month_name[ time.month ]
        replacements['m'] = str( time.month ).zfill(2)
        replacements['M'] = calendar.month_abbr[ time.month ]
        replacements['n'] = str( time.month )
        replacements['t'] = str( calendar.monthrange(time.year, time.month)[1] )
        
        """ Year """
        replacements['L'] = str(int( calendar.isleap(time.year) ))
        replacements['Y'] = str( time.year )
        replacements['y'] = str( time.year )[2:]
        
        """ Time """
        replacements['a'] = time.strftime("%p").lower()
        replacements['A'] = time.strftime("%p")
        replacements['g'] = str( int(time.strftime("%I")) )
        replacements['G'] = str( int(time.strftime("%H")) )
        replacements['h'] = time.strftime("%I")
        replacements['H'] = time.strftime("%H")
        replacements['i'] = str( time.minute ).zfill(2)
        replacements['s'] = str( time.second ).zfill(2)
        replacements['u'] = str( time.microsecond )
        
        """ Timezone """
        replacements['e'] = "" #_self.get_timezone()
        replacements['I'] = str( time.dst() )
        
        for regex, replace in replacements.items():
            format = format.replace(regex, replace)

        return format
Пример #3
0
    def get_time(self, time, info=True):
        week = self.__dict_week_num[time.weekday()]
        writableh = time.hour
        shitatu = False
        if writableh > 0 and writableh < 5:
            hour = 5
            writableh = 5
            shitatu = True
        elif writableh == 0:
            hour = 19
        else:
            hour = writableh - 5

        for i in range(len(self.__file[week][hour])):
            num = int(self.__file[week][hour][i][2:])

            if i == 0:
                if time.minute < num or shitatu == True:
                    infotext = self.__return_info(
                        info, self.__file[week][hour][i])
                    if info:
                        return datetime.datetime(time.year, time.month, time.day, writableh, num), infotext
                    else:
                        return datetime.datetime(time.year, time.month, time.day, writableh, num)

            else:
                if i == (len(self.__file[week][hour])-1):
                    if time.minute >= num:
                        if hour != 19:
                            ret = int(self.__file[week][hour + 1][0][2:])
                            infotext = self.__return_info(
                                info, self.__file[week][hour + 1][0])
                            if writableh + 1 > 23:
                                day = time.day + 1
                                return datetime.datetime(time.year, time.month, day, (writableh + 1) % 24, ret), infotext
                            else:
                                return datetime.datetime(time.year, time.month, time.day, writableh+1, ret), infotext
                        else:
                            week = ((time.weekday() + 1) % 7)
                            week = self.__dict_week_num[week]
                            ret = int(
                                self.__file[week][0][0][2:])
                            infotext = self.__return_info(
                                info, self.__file[week][0][0])
                            day = time.day + 1
                            return datetime.datetime(time.year, time.month, day, 5, ret), infotext

                before = int(self.__file[week][hour][i-1][2:])

                if time.minute < num and time.minute >= before:
                    infotext = self.__return_info(
                        info, self.__file[week][hour][i])
                    return datetime.datetime(time.year, time.month, time.day, writableh, num), infotext
Пример #4
0
 def get_next_change_text(self):
     if self.mode != TimerConfig.MODE_AUTO:
         return "Timer is forced to %s, change setting below" % (self.get_powered())
     time, s = self.get_next_transitions()[0]
     state = s.name
     hr = time.hour
     mins = time.minute
     d = calendar.day_abbr[time.weekday()]
     if time.weekday() != datetime.date.today().weekday():
         day_suffix = " on %s" % (d)
     else:
         day_suffix = ""
     return "Timer will turn %s at %s:%s%s" % (state, hr, mins, day_suffix)
Пример #5
0
def get_next_change_text(timer_addr):
    if timer_addr not in __config["timers"]:
        return ""
    time, s = __config["timers"][timer_addr].get_next_transitions()[0]
    state = s.name
    hr = time.hour
    mins = time.minute
    d = calendar.day_abbr[time.weekday()]
    if time.weekday() != datetime.date.today().weekday():
        day_suffix = " on %s" % (d)
    else:
        day_suffix = ""
    return "Timer will turn %s at %s:%s%s" % (state, hr, mins, day_suffix)
Пример #6
0
def get_next_change_text(timer_addr):
    if timer_addr not in __config["timers"]:
        return ""
    time, s = __config["timers"][timer_addr].get_next_transitions()[0]
    state = {ON:'ON', OFF:'OFF'}[s]
    hr = time.hour
    mins = time.minute
    d = calendar.day_abbr[time.weekday()]
    if time.weekday() != datetime.date.today().weekday():
        day_suffix = " on %s" % (d)
    else:
        day_suffix = ""
    return "Timer will turn %s at %s:%s%s" % (state, hr, mins, day_suffix)
Пример #7
0
def get_date_pripara_prpr(time):
    # first threshold - on wednesday
    if parse('wed').weekday() == time.weekday():
        if time.time() < parse('21:00').time():
            delta = 4
        else:
            delta = 0

    # second threshold - on saturday
    if parse('sat').weekday() == time.weekday():
        if time.time() < parse('21:00').time():
            delta = 3
        else:
            delta = 0

    # first span - from thu to fri
    if parse('wed').weekday() < time.weekday() < parse('sat').weekday():
        delta = time.weekday() - parse('wed').weekday()

    # second span - from sun to tue
    if parse('sat').weekday() < time.weekday():
        delta = time.weekday() - parse('sat').weekday()
    elif time.weekday() < parse('wed').weekday():
        delta = time.weekday() + 2

    date = time.replace(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
    date -= datetime.timedelta(days=delta)
    return date
Пример #8
0
def get_weekly(number):
    db = pymysql.connect("dbike.cerj203fcxcq.eu-west-1.rds.amazonaws.com",
                         "yuhao", "qwert2008", "dbike")
    cursor = db.cursor()
    sql = "SELECT * FROM dbike.daily_data where `number` = " + str(
        number) + " group by last_update;"
    cursor.execute(sql)
    db.commit()
    data = cursor.fetchall()
    cursor.close()
    length = len(data)
    dic_stand = {'0': [], '1': [], '2': [], '3': [], '4': [], '5': [], '6': []}
    dic_bike = {'0': [], '1': [], '2': [], '3': [], '4': [], '5': [], '6': []}
    dic = {'0': [], '1': [], '2': [], '3': [], '4': [], '5': [], '6': []}
    i = 0
    while i < length:
        time = data[i][4]
        available_bike_stands = data[i][2]
        available_bikes = data[i][3]
        week = time.weekday()
        dic_stand[str(week)].append(available_bike_stands)
        dic_bike[str(week)].append(available_bikes)
        i = i + 1

    for i in range(0, 7):
        dic_stand[str(i)] = Get_Average(dic_stand[str(i)])
        #print(dic_stand[str(i)])
        dic_bike[str(i)] = Get_Average(dic_bike[str(i)])
        #print(dic_bike[str(i)])
        dic[str(i)] = [dic_stand[str(i)], dic_bike[str(i)]]
    return jsonify(dic)
Пример #9
0
def find_trip(time, stop_id, route_id, direction):
    """finds trips according to specified parameters that were supposed to depart within the last 120 mins of timestamp according to schedule."""
    time = datetime.datetime.fromtimestamp(time)
    weekday = time.weekday()
    if weekday < 5:
        service_id = "y1002"
    elif weekday == 5:
        service_id = "y1001"
    else:
        service_id = "y1003"
    midnight = time.replace(hour=0, minute=0, second=0, microsecond=0)
    timestamp = time-midnight
    result = db.session.query(GTFS_times, GTFS_trips).filter((GTFS_times.stop_id == stop_id) & (GTFS_times.dep <= (timestamp.seconds+20*60)) & (GTFS_times.dep >= (timestamp.seconds-1*60*60))).join(
        GTFS_trips, (GTFS_times.trip_id == GTFS_trips.trip_id) & (GTFS_trips.route_id == route_id) & (GTFS_trips.direction == direction) & (GTFS_trips.service_id == service_id)).order_by(GTFS_times.dep.desc())
    response = []
    for times, trips in result:
        response.append({
            "trip_id": times.trip_id,
            "stop_id": times.stop_id,
            "start_time": times.start,
            "dep_time": times.dep,
            "duration": times.cum_dur,
            "route_id": trips.route_id,
            "direction": trips.direction,
            "progr_number":times.progr_number
        })
    return response
Пример #10
0
    def analyze_data(self):
        """
        Calc heating rate
        Calc probability of occupancy
        """
        conn = mdb.connect(CONN_PARAMS[0],CONN_PARAMS[1],CONN_PARAMS[2],CONN_PARAMS[3],port=CONN_PARAMS[4])
        cursor = conn.cursor()
        cursor.execute("SELECT * FROM SensorData")
        sensor_data = cursor.fetchall()
        cursor.close()

        id, time_list, z, location, temp, b, c, occupancy_list = zip(*sensor_data)

        self.calc_heat_rate()

        # Determine the probability that the building will be occupied during
        # each hour of the current day.
        # Look at last 10 occurances of the current day.
        # If at any point during an hour, the space is occupied, then space is occupied for that hour
        # Probability is n_occupied / 10
        # Return tuple ((hr, probability), ...)
        today = datetime.datetime.today().weekday()
        hours = np.arange(0,23)
        P_occupied = (0,0)
        self.pred_time_occupied = 1

        for time, occupied in zip(time_list, occupancy_list):
            dow = time.weekday()
            if today == dow: # Look only at today
                hour = time.strftime('%H')
                for hr in hours:
                    if hr == int(hour):
                        pass

        return
Пример #11
0
 def get_ddhhmm(self, custom = False):
     if not custom:
         time = datetime.datetime.now()
     else:
         time = custom
     ddhhmm = str(time.weekday()).zfill(2) + str(time.strftime("%H")).zfill(2) + str(time.strftime("%M")).zfill(2)
     return ddhhmm
Пример #12
0
def reminder_time(input):
    global next_func
    next_func = None
    time = datetime.datetime.today()
    words, has_nums = parse_to_nums(input.lower().split())
    day_identifier = [i for i in words if i in weekdays]
    if "after tomorrow" in input.lower():
        time = time + datetime.timedelta(days=2)
    elif 'tomorrow' in words:
        time = time + datetime.timedelta(days=1)
    elif day_identifier:
        day = weekdays.index(day_identifier[0])
        print day
        time = time + datetime.timedelta(days=(day - time.weekday()) % 7)

    hour = [i for i in words if i in times]
    if hour:
        time = time.replace(hour=times[hour[0]],
                            minute=0,
                            second=0,
                            microsecond=0)
    hour = False
    minute = 0
    pmam = False
    bell = False
    for i in words:
        if hasattr(i, '__int__'):
            if type(hour) == bool and not hour:
                hour = i
            elif not minute:
                minute = i
        if i in bells:
            bell = True
            minute = bells[i]
        elif bell:
            if i in ['as', 'past', 'after']:
                pass
            elif i in ['to', 'told', 'til', 'till', 'of']:
                minute = -minute
            bell = False
        elif pmam:
            if i == 'm.':
                if pmam == 'pm':
                    hour = hour % 12 + 12
                elif pmam == 'am':
                    hour = hour % 12
            pmam = False
        elif i in ['p.', 'a.']:
            pmam = {'p.': 'pm', 'a.': 'am'}[i]
    if minute < 0:
        hour = (hour - 1) % 24
        minute = 60 + minute
    if type(hour) == bool:
        hour = time.hour
    tf = tempfile.NamedTemporaryFile()
    tf.write('espeak "' + input + '"')
    time = time.replace(hour=hour, minute=minute, second=0, microsecond=0)
    os.system('at -t ' + time.strftime('%Y%m%d%H%M') + ' -f ' + tf.name)

    return str(time), None
 def _initialize_hour(self,
                      model: Process,
                      time: datetime,
                      first_hour: float = None,
                      last_hour: float = None) -> None:
     arrival_rate = model.get_arrival_rate(DAYS[time.weekday()], time.hour)
     arrivals = sorted(
         [timedelta(minutes=randint(0, 59)) for i in range(arrival_rate)])
     for item in arrivals:
         if (first_hour is None and last_hour is None) or (
                 first_hour is not None and item.total_seconds() >=
             (3600 - first_hour)) or (last_hour is not None and
                                      item.total_seconds() <= last_hour):
             instance = model.new()
             self.pending_merges[instance.process_id].update(
                 {instance.process_instance_id: dict()})
             for data in instance.process_reference.data_objects:
                 self.dm.create_instance(data.id, instance.process_id,
                                         instance.process_instance_id)
             self.running_processes[instance.process_id][
                 instance.process_instance_id] = instance
             act = instance.process_reference.get_first_activity()[0]
             self.execution_queue.push(
                 QueueItem(instance, act.id,
                           instance.get_element_instance_id(act.id),
                           time + item, act))
             # START activity by Ran's request - not included by design, removal recommended
             self.log_queue.push(
                 LogItem(time + item, instance.process_id,
                         instance.process_instance_id, 'START', 0,
                         'end_activity'))
Пример #14
0
def construct_snapshots():
    print("Constructing snapshots.")
    jams_df = pd.read_csv("data/jams.csv")

    states = {}

    for i, r in jams_df.iterrows():
        if i % 5000 == 0:
            print("{} of {}".format(i, len(jams_df['street'])))
        time = datetime.fromtimestamp(r['pub_millis'] / 1000)
        hour = time.hour
        day_of_week = time.weekday()
        weather = weather_dict[(time.date(), hour)]
        path = literal_eval(r['line'])
        key = (time.date(), time.hour)
        if key not in states:
            states[key] = [0] * array_len

        covered_path = cover_path(path)
        for s in covered_path:
            # we are just going to throw out our data that didn't get caught by our grid
            # sorry :(
            # this is a tiny part (~0.5%) of the data anyways
            if s in streets:
                states[key][streets[s]] = 1
    print("Done constructing snapshots.")
    return states
Пример #15
0
    def load_pomodoros(self):
        # pomodoro = [idx,task,locations,shape,color,time]
        self.level = self.switcher.values[2][1]
        self.pomodoros = [[[] for slots in range(len(config.TIME_SLOT) + 1)] for days in range(7)]
        self.legend = {}
        for idx, time, task in self.data:
            slotnr = self.in_slot(time)

            if slotnr < 0:
                slotnr = len(config.TIME_SLOT_SEC)

            daynr = time.weekday()
            shape = self.get_shape(task)
            task_level = self.get_task_level(task)
            color = globals.database.colors[task_level][self.level]

            self.pomodoros[daynr][slotnr].append([idx, task, [0, 0], shape, color, time])

        for daynr in range(7):
            for slotnr in range(len(self.pomodoros[daynr])):
                try:
                    self.pomodoros[daynr][slotnr] = sorted(self.pomodoros[daynr][slotnr], key=lambda x: x[5])
                except:
                    pass

        self.load_size()
        self.load_locations()
Пример #16
0
def generate_yaml(out=False):
    yaml  = open('cron.yaml', 'r')
    start = ''
    for line in yaml:
        start += line
        if line.startswith('# TASKS'):
            break
    yaml.close()

    if not start:
        start = 'cron:\n'

    next = datetime.timedelta(minutes=every_minute)
    time = datetime.datetime(year=datetime.datetime.utcnow().year, month=1, day=4)
    time = time + datetime.timedelta(days=-time.weekday())
    yaml = ''
    for source, info in tasks:
        when = info['schedule']
        for name, _ in info['urls']:
            tstr  = when % time.strftime('%H:%M').lower()
            item  = "- description: crawl for %(source)s/%(name)s\n"
            item += "  url: /tasks/crawl?source=%(source)s&name=%(name)s\n"
            item += "  schedule: %(when)s\n"
            yaml += (item % {'source':source, 'name':name, 'when':tstr})
            time += next

    yaml = start + yaml
    if out:
        print yaml
    return yaml
Пример #17
0
def load_data_for_xgboost_from_mysql(table_name):
    """
    从数据库为xgboost模型读取数据,并进行时间格式转换
    :param table_name: 要读取的表名
    :return:
    """
    db = connectdb()
    np_array = np.array(query_datas(db, table_name = table_name))
    # 删除id列
    np_array = np.delete(np_array, 0, axis = 1)
    # 获取时间列
    time_array = np_array[:, 0]
    # 删除时间列
    np_array = np.delete(np_array, 0, axis = 1)
    hour = []
    minute = []
    week = []
    for time in time_array:
        hour.append(time.hour)
        minute.append(time.minute)
        week.append(time.weekday())
    np_array = np.insert(np_array, 0, values = minute, axis = 1)
    np_array = np.insert(np_array, 0, values = hour, axis = 1)
    np_array = np.insert(np_array, 0, values = week, axis = 1)
    closedb(db)
    # 此时返回的属性分别是 week, hour, minute, kpi_1... kpi_n,label
    return np_array
Пример #18
0
def send_calendar_updates():
    time = datetime.datetime.now()
    if time.hour == calendar_publish_hour and time.minute == calendar_publish_minute:
        content = parse_calendar_updates()
        if activeCalendarContent or (time.weekday() == 1 and content != ""):
            for chat in calendar_chats:
                sendMessage(chat, content)
    Timer(60.0, send_calendar_updates).start()
Пример #19
0
    def checkLogInfo(self, log_info):
        action = int(log_info['state'])  #'0': logout, '1': login
        name = log_info['name']
        id = int(id_dict[name])
        time = datetime.datetime.strptime(log_info['time'], '%Y-%m-%d %H:%M')
        info = ''
        flag = False

        if self.state_in[id] is 0 and action is 0:
            info = '【签出失败】您尚未登入'
            return [info, flag]
        elif self.state_in[id] is 1 and action is 1:
            info = '【签到失败】您尚未登出'
            return [info, flag]
        elif self.state_in[id] is 0 and action is 1:
            if self.last_login[id] > time:
                info = '【签到失败】签入时间在签出时间之前'
            elif time - datetime.datetime.now() >= datetime.timedelta(
                    0, 3600):  #登入时间超出当前时间一小时
                info = '【签到失败】签入时间超出当前时间1小时'
            else:
                self.last_login[id] = time
                self.state_in[id] = 1
                weekday = time.weekday()
                if self.online_time[weekday][id] == datetime.timedelta(0):
                    info = '夏天来了,期末还会远吗~您刚开始沉迷学习,加油'
                else:
                    info = '您今日沉迷学习时间为:' + str(self.online_time[weekday][id])
                flag = True
            return [info, flag]
        elif self.state_in[id] is 1 and action is 0:
            if self.last_login[id] > time:
                info = '【签出失败】签出时间在签入时间之前'
            elif time - datetime.datetime.now() >= datetime.timedelta(0, 3600):
                info = '【签出失败】签出时间超出当前时间1小时'
            else:
                self.state_in[id] = 0
                duration = time - self.last_login[id]
                weekday = time.weekday()
                self.online_time[weekday][
                    id] = self.online_time[weekday][id] + duration
                #online_time_sum[id] = online_time_sum[id] + duration
                info = '本次学习时间为:' + str(duration) + '\n今日沉迷学习时间为:' + str(
                    self.online_time[weekday][id])
                flag = True
            return [info, flag]
Пример #20
0
def reminder_time(input):
	global next_func
	next_func = None
	time = datetime.datetime.today()
	words, has_nums = parse_to_nums(input.lower().split())
	day_identifier = [i for i in words if i in weekdays]
	if "after tomorrow" in input.lower():
		time = time+datetime.timedelta(days=2)
	elif 'tomorrow' in words:
		time = time+datetime.timedelta(days=1)
	elif day_identifier:
		day = weekdays.index(day_identifier[0])
		print day
		time = time+datetime.timedelta(days=(day-time.weekday())%7)
	
	hour = [i for i in words if i in times]
	if hour:
		time = time.replace(hour=times[hour[0]],minute=0,second=0,microsecond=0)
	hour = False
	minute = 0
	pmam = False
	bell = False
	for i in words:
		if hasattr(i, '__int__'):
			if type(hour)==bool and not hour:
				hour = i
			elif not minute:
				minute = i
		if i in bells:
			bell = True
			minute = bells[i]
		elif bell:
			if i in ['as', 'past', 'after']:
				pass
			elif i in ['to', 'told', 'til', 'till', 'of']:
					minute = -minute
			bell = False
		elif pmam:
			if i=='m.':
				if pmam=='pm':
					hour = hour%12+12
				elif pmam=='am':
					hour = hour%12
			pmam = False
		elif i in ['p.', 'a.']:
			pmam = {'p.':'pm','a.':'am'}[i]
	if minute<0:
		hour=(hour-1)%24
		minute = 60+minute
	if type(hour)==bool:
		hour = time.hour
	tf = tempfile.NamedTemporaryFile()
	tf.write('espeak "'+input+'"')
	time = time.replace(hour=hour,minute=minute,second=0,microsecond=0)
	os.system('at -t '+time.strftime('%Y%m%d%H%M')+' -f '+tf.name)

	return str(time), None
Пример #21
0
 def show_dispatch_time(self):
     print('<< dispatch schedule >>')
     if self.number == 0:
         print('None')
         return
     for x in range(self.number):
         time = datetime.datetime.fromtimestamp(self.dispatch_seconds[x])
         print(
             '%s, %s' %
             (time.strftime('%Y/%m/%d -- %H:%M:%S'), days[time.weekday()]))
Пример #22
0
def make_log_table_lastweek(users, thisweek):
    output_files = {}
    connection = MySQLdb.connect(host='localhost',
                                 user='******',
                                 passwd=config.DB_PASSWD,
                                 db=config.DB_NAME,
                                 charset='utf8mb4')
    cursor = connection.cursor()
    if thisweek == True:
        today = datetime.today().replace(
            hour=0, minute=0, second=0, microsecond=0) + timedelta(days=7)
    else:
        today = datetime.today().replace(hour=0,
                                         minute=0,
                                         second=0,
                                         microsecond=0)
    from_time = today - relativedelta(weeks=1) - timedelta(
        days=today.weekday())
    to_time = today - timedelta(days=today.weekday())
    query = ""
    logging.info(type(users))
    if users == []:
        query = f"SELECT u.name, l.log_time FROM logData l INNER JOIN user u ON u.id = l.user_id WHERE u.enable = true AND l.log_time >= '{from_time.strftime('%Y-%m-%d %H:%M:%S')}' AND l.log_time < '{to_time.strftime('%Y-%m-%d %H:%M:%S')}' ORDER BY u.name, l.log_time"
    else:
        query = f"SELECT u.name, l.log_time FROM logData l INNER JOIN user u ON u.id = l.user_id WHERE u.enable = true AND u.name IN " + str(
            users
        ).replace('[', '(').replace(
            ']', ')'
        ) + f" AND l.log_time >= '{from_time.strftime('%Y-%m-%d %H:%M:%S')}' AND l.log_time < '{to_time.strftime('%Y-%m-%d %H:%M:%S')}' ORDER BY u.name, l.log_time"
    MySQLdb.escape_string(query)
    logging.info(query)
    count = cursor.execute(query)
    log_dict = {}  # {user_name: [log_time,...]}
    if count > 0:
        rows = cursor.fetchall()
        for row in rows:
            if row[0] not in log_dict:
                log_dict[row[0]] = []
            log_dict[row[0]].append(row[1])
    else:
        return {}

    for user_name, log_times in log_dict.items():
        log_array = numpy.zeros(
            (int(24 / TIME_SPAN), 7, 3)
        )  # [[0:00-6:00, 6:00-12:00, 12:00-18:00, 18:00-24:00], ...] # len: 7
        for time in log_times:
            hour = int(time.strftime('%H'))
            log_array[int(hour / TIME_SPAN)][time.weekday()] += 1
        title = f"{user_name} ({from_time.strftime('%Y/%m/%d')}-{(to_time - timedelta(days=1)).strftime('%Y/%m/%d')})"
        filepath = make_table.make_table_oneweek(log_array, user_name,
                                                 TIME_SPAN, title)
        if len(filepath) != 0:
            output_files[user_name] = filepath
    return output_files
Пример #23
0
def get_day_shortname(time):
    today = datetime.utcnow().date()
    if time.date() == today:
        return 't'

    yesterday = today - timedelta(days=1)
    if time.date() == yesterday:
        return 'y'

    weekday = DAY_NAMES[time.weekday()]
    return weekday
Пример #24
0
    def should_go_off(self, time):
        """
        Returns whether this alarm should go off on the given time.

        Alarm -> datetime -> bool
        """
        if self.hour == time.hour and self.minute == time.minute:
            if self.repeat == self.EVERY_WEEK or self.repeat == self.NO_REPEAT:
                return self.weekday == time.weekday()
            return True
        return False
Пример #25
0
    def read_time(self, name):
        """
        Based on user input, checks the time of a user if their timezone is set.
        """
        #Preventing spaces from being included in the 'name'
        name = name.replace(' ','')

        #Load timezone information into 'data'
        f = open(self.dpl,'rb')
        data = pickle.load(f)
        f.close()

        #Making sure that nick does not contain invalid characters
        if len(name) == 0:
            return 'Error: Please enter a user\'s name.'
        if not re.match("^[A-Za-z0-9_\\\[\]{}^`|-]*$", name):
            return 'Error: Improper character(s) input.'
        # Fix all characters that might break regex.
        name = name.replace('[', '\[')
        name = name.replace(']', '\]')
        name = name.replace('^', '\^')
        name = name.replace('\\', "\\")
        checktext = '\S*' + name + '\S*'
        check = re.compile(checktext, re.IGNORECASE)

        #Begin search for nick
        found = False
        for user in data['usertimezones'].keys():
            if check.match(user):
                found = True
                timezone = data['usertimezones'][user]
                time = datetime.datetime.utcnow() + datetime.timedelta(hours=timezone)
                weekday = days[time.weekday()]

                #These ensure that the time format comes out as 09:05
                #instead of 9:5
                if time.hour < 10:
                    hour_zero = str(0)
                else:
                    hour_zero = ''
                if time.minute < 10:
                    minute_zero = str(0)
                else:
                    minute_zero = ''

                #This ensures that names ending with 's' get an apostrophe
                #and names that do not will get 's
                if user[-1] == 's':
                    user = str(user) + '\''
                else:
                    user = str(user) + '\'s'
                return 'It is currently '+weekday+' '+hour_zero+str(time.hour)+':'+minute_zero+str(time.minute)+' in '+user+' time zone.'
        if found == False:
            return 'Either this person has not registered, or such person does not exist.'
Пример #26
0
def headerTimes(trainsData): #turns the date/time information into numbers that machine learning tools can use
    import pandas as pd
    headerInfo=pd.DataFrame(0,index=trainsData.index,columns=['secSince5','weekday','evening'])
    for time in trainsData.index:
        headerInfo.loc[time,'weekday']=time.weekday()
        if time.hour>11: #if it's past 11
            headerInfo.loc[time,'evening']=1 #set evening to 1
            headerInfo.loc[time,'secSince5']=(time-pd.to_datetime('2016-'+str(time.month)+'-'+str(time.day)+' 17:00')).seconds #set secSince5 to seconds since 5pm 
        else:
            headerInfo.loc[time,'secSince5']=(time-pd.to_datetime('2016-'+str(time.month)+'-'+str(time.day)+' 5:00')).seconds #set secSince5 to seconds since 5am
    return headerInfo
Пример #27
0
def makeDeparture(time):
    departs=Departure.objects.filter()
   
    for departure in departs:
        
        if departure.time.weekday() == time.weekday() and departure.time.time() == time.time():
            return departure

    
    depart= Departure(time=time)
    depart.save()
    return depart
Пример #28
0
 def is_eqmktopen(self, time):
     second = (time.timestamp() + 8 * 3600) % 86400
     if time.weekday() < 5:
         if second < 3600:
             return True
         if second >= 33600 and second < 43200:
             return True
         if second >= 46800 and second < 59700:
             return True
         if second >= 62100:
             return True
     return False
Пример #29
0
  def choose_time_interval(self, datetimes, time):
    """ Choose the time interval into which the given time falls in. """

    next_hour = datetime.datetime(time.year,time.month,time.day,time.hour)
    next_hour += datetime.timedelta(hours=1)
    time_left = (next_hour - time).seconds

    for datetime_ in datetimes:
      if datetime_['days'][time.weekday()] == ' ':
        continue
      if datetime_['hours'][time.hour] == ' ':
        continue
      return datetime_,time_left
Пример #30
0
def is_bedtime(time):
    # Check for Friday or Saturday
    if time.weekday() in [4, 5]:
        # Is it past 11 pm and before 4 am
        if time.hour >= 23 or time.hour <= 4:
            return True
    
    else:
        # Is it past 9:30 pm and before 4 am
        if time.hour > 21 or (time.hour == 21 and time.minute >= 30) or time.hour <= 4:
            return True
    
    # It is not bedtime
    return False
Пример #31
0
def _win_set_time(offset):
    import win32api
    time = calculate_time(offset)
    year = int(time.year)
    month = int(time.month)
    # Return the day of the week as an integer, where Monday is 0 and Sunday is 6.
    dayOfWeek = int(time.weekday())
    day = int(time.day)
    hour = int(time.hour)
    minute = int(time.minute)
    second = int(time.second)
    millseconds = int((time.microsecond)/1000)

    win32api.SetSystemTime(year,month,dayOfWeek,day,hour,minute,second,millseconds)
Пример #32
0
    def formatTime(inTime):
        time = datetime.fromtimestamp(float(inTime))
        dateStr = time.strftime("%Y-%m-%d %H:%M")

        if date.fromtimestamp(float(inTime)) == date.today():
            dateStr = "%02d:%02d" % (time.hour, time.minute)
        elif date.fromtimestamp(float(inTime)) > (date.today() - timedelta(7)):
            dateStr = "%s %02d:%02d" % (
                ("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")[time.weekday()],
                time.hour,
                time.minute,
            )

        return dateStr
Пример #33
0
def removeInWeekOrNeighborWeek(x):
    _list=x[1]
    # remove login time ==1
    if len(_list)==1:
        return False
    # weekday=[]
    _dict={} #week,weekday_list
    for item in _list:
        time= datetime.datetime.fromtimestamp(int(int(item)/1000))
        # weekday.append((time.isocalendar()[1],time.weekday()))
        weekIndex=time.isocalendar()[1]
        weekDayIndex=time.weekday()
        if _dict.get(weekIndex)!=None:
            listByWeek=_dict[weekIndex]
            listByWeek.append(weekDayIndex)
        else:
            _dict[weekIndex]=[weekDayIndex]
    # check week neighbor

    # distinct list in dict
    for key in _dict:
        _dict[key]=list(set(_dict[key]))

    # print key ,_dict
    # print(x[0])
    # print(_dict)

    # key to num for iterator neighbor week check
    weekNum=[]
    for key in _dict:
        weekNum.append(key)
    weekNum=sorted(weekNum)
    index=0
    for num in weekNum:
        try:
            # print "in for loop:"+str((weekNum[index])+weekNum[index+2])+"=="+str(weekNum[index+1])
            # print(index)
            if (weekNum[index] + weekNum[index+2])==weekNum[index+1]*2:
            # if weekNum[index+1] + weekNum[index+2]==weekNum[index]+weekNum[index+3]:
            #     print("yes")
                return False
                break
        except:
            pass
        # check logintime in one week if gt 3
        if len(_dict[num])>3:
            return False
            break
        index=index+1
    return True
Пример #34
0
    def t_scheduler(self):
        time = datetime.datetime.now()

        if (not self.i_check_time_unit(self.minute, time.minute)
                or not self.i_check_time_unit(self.hour, time.hour)
                or not self.i_check_time_unit(self.day_of_week,
                                              time.weekday() + 1)
                or not self.i_check_time_unit(self.day_of_month, time.day)
                or not self.i_check_time_unit(self.month, time.month)
                or not self.i_check_time_unit(self.year, time.year)):

            self.i_recall_timer()
            return

        super().t_scheduler()
Пример #35
0
 def timeRank(self, check_info):
     online_time_sum = [
         datetime.timedelta(0) for i in range(self.memberNum)
     ]
     totalseconds = [0 for i in range(self.memberNum)]
     name = check_info['name']
     id = int(id_dict[name])
     time = datetime.datetime.strptime(check_info['time'], '%Y-%m-%d %H:%M')
     for i in range(self.memberNum):
         duration = (time - self.last_login[i]) * self.state_in[i]
         weekday = time.weekday()
         for j in range(weekday + 1):
             online_time_sum[
                 i] = online_time_sum[i] + self.online_time[j][i]
         online_time_sum[i] = online_time_sum[i] + duration
         totalseconds[i] = online_time_sum[i].total_seconds()
     name_list = [
         '徐凯源', '宋绍铭', '刘 洋', '韩纪飞', '高佳琦', '郭东旭', '张若冰', '韩晓霏', '于 超',
         '林声远', '鸡器人', '厉丹阳', '王佳林', '韦 洁', '陈佳宁'
     ]
     name_list_eng = [
         'xky', 'ssm', 'ly', 'hjf', 'gjq', 'gdx', 'zrb', 'hxf', 'yc', 'lsy',
         'test', 'ldy', 'wjl', 'wj', 'cjn'
     ]
     lists = zip(totalseconds, online_time_sum, name_list, name_list_eng)
     lists.sort(key=lambda x: x[0], reverse=True)
     msg = '本周目前排名:\n'
     rank = 0
     for i in range(self.memberNum):
         rkstr = '  %d' % (i + 1)  # rank string
         if len(rkstr) < 4:  # add two (half-width) space for alignment
             rkstr = '  ' + rkstr
         hrstr = '%2.1f' % (lists[i][0] / 3600.0)  # hour string
         if len(hrstr) < 4:  # add four (half-width) space for alignment
             hrstr = '    ' + hrstr
         elif len(hrstr) < 5:  # add two (half-width) space for alignment
             hrstr = '  ' + hrstr
         msg = msg + rkstr + ' | ' + lists[i][2] + ' ' + hrstr + ' 小时\n'
         if lists[i][3] == name:
             rank = i + 1
     if rank != 0:
         names = lists[rank - 1][2].replace(
             ' ', '')  # omit the full-width space '\xa1\xa1'
         # splitline = '——————————\n' # split line (caution: display varies with PC and phone)
         msg = msg + names + "的目前排名:" + (str)(rank)
     return msg
def nameofdayweek(n):

    names = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    time = datetime.datetime.now()
    wkd = time.weekday()
    if n == "nsd":  #Next school day
        if wkd > 4:
            wkd = 0
    else:
        wkd = wkd + int(n)
        if wkd > 6:
            wkd = wkd - 7
    log.debug("Day of week: " + names[wkd])
    try:
        return names[wkd]
    except:
        return "Can't return more days than 8"
Пример #37
0
    def timeSum(self, check_info):
        name = check_info['name']
        id = int(id_dict[name])
        time = datetime.datetime.strptime(check_info['time'], '%Y-%m-%d %H:%M')

        duration = (time - self.last_login[id]) * self.state_in[id]
        #        if self.state_in[id] is 1:
        #            duration = time - self.last_login[id]
        #        else:
        #            duration = datetime.timedelta(0)

        weekday = time.weekday()
        sum_time = datetime.timedelta(0)
        for i in range(weekday + 1):
            sum_time = sum_time + self.online_time[i][id]
        sum_time = sum_time + duration
        msg = name + '本周在线总时间为:' + str(sum_time)
        return msg
Пример #38
0
    def get_time_packet(self, time):
        """
        Prepares a time packet according to passed datetime
        """

        assert isinstance(time, datetime)

        packet = bytearray()
        packet.append(0x0F)
        packet.append(0xFB)
        packet.append(0x00)
        packet.append(0x04)
        packet.append(0xD8)
        packet.append(time.weekday())
        packet.append(time.hour)
        packet.append(time.minute)
        packet.append(PacketParser.checksum(packet))
        packet.append(0x04)

        return packet
Пример #39
0
def bin_dates(type_id):
	#assumes all bins have been created already
	global hourly_bucket
	global two_category_buckets
	global to_be_binned
	# add dates to buckets
	if to_be_binned:
		prevIndex = hoursSince2006(to_be_binned[0])
	for time in to_be_binned:
		two_category_buckets[(time.hour, time.weekday())].append(time)
		
		# ie, if the desired element not in the hourly bucket array index

		if hoursSince2006(time) >= len(hourly_bucket):
			
			counter = prevIndex + 1              		# this is code to deal with empty time periods
			while counter < hoursSince2006(time):        # 
				hourly_bucket[counter].append([])		#
				counter += 1
			hourly_bucket.append([time])

		# desired element in the hourly bucket array index but currently
		# an empty array
		elif not hourly_bucket[hoursSince2006(time)]:

			counter = prevIndex + 1                 # this is code to deal with empty time periods
			while counter < hoursSince2006(time):   #
				hourly_bucket[counter] = []          #
				counter += 1
			hourly_bucket[hoursSince2006(time)] = [time]
		
		# desired element in the hourly bucket array index and 
		# there are some items there
		else:
			hourly_bucket[hoursSince2006(time)].append(time)
		prevIndex = hoursSince2006(time)
	if type_id == 1:
		return two_category_buckets
	elif type_id == 2:
		myDict = {str(i): hourly_bucket[i] for i in enumerate(hourly_bucket)}
		return myDict
Пример #40
0
 def previous_weekday(cls, time, weekday):
   days = time.weekday() - weekday
   if days > 0: days -= 8
   new = time + datetime.timedelta(days=days)
   return Time(datetime.datetime(new.year, new.month, new.day))
Пример #41
0
import smtplib
import time, datetime
from email.mime.text import MIMEText

import conf
import gmail_credentials

SECOND= 1
MINUTE= 60*SECOND
HOUR= 60*MINUTE

while True:
	time=datetime.datetime.utcfromtimestamp(time.time())

	#we check at 4am on Wednesday because time is UTC!!
	if (time.weekday()==3 and time.hour==4):
		# Open a plain text file for reading.  For this example, assume that
		# the text file contains only ASCII characters.
		textfile= "email.txt"
		fp = open(textfile, 'rb')
		# Create a text/plain message
		msg = MIMEText(fp.read())
		fp.close()

		sender = conf.sender
		receivers = conf.receivers

		msg['Subject'] = 'Reminder from Trashy, the trash robot'
		msg['From'] = sender
		msg['To'] = receivers
Пример #42
0
def filterOldBackups( backupdirs ):#{{{ 

	#Start by assuming all backup folders will be kept
	folder2Delete = dict([(f,False) for f in backupdirs])
	time2Folder = dict([(convertBackupFolderToDate(f), f) for f in backupdirs])
	
	times = time2Folder.keys()
	times.sort()
	times.reverse()
	
	now = datetime.datetime.now()
	
	
	#Only one backup per month, if older than a three months
	threeMonthsWeekAgo = now  - datetime.timedelta(90)
	currentMonthStart = None
	currentMonthEnd = None

	for time in times: 
		
		#Ignore if we are already deleted
		if folder2Delete[ time2Folder[time] ]:
			continue
			
		if time < threeMonthsWeekAgo:#Only check folders more than three months old
			folder = time2Folder[time]
			
			if currentMonthStart != None and time >= currentMonthStart and time <= currentMonthEnd:
				print "deleting because too many on month ", time
				folder2Delete[ folder ] = True
			else:
				currentMonthStart = datetime.datetime(time.year, time.month, 1)
				print 'currentMonthStart=', time
				print last_day_of_month(currentMonthStart)
				currentMonthEnd = datetime.datetime(currentMonthStart.year, currentMonthStart.month, last_day_of_month(currentMonthStart).day) 
				


	#Only one backup per week, if older than a week
	oneWeekAgo = now  - datetime.timedelta(7 + now.weekday())
	currentWeekStart = None
	currentWeekEnd = None

	for time in times: 
		
		#Ignore if we are already deleted
		if folder2Delete[ time2Folder[time] ]:
			continue
			
		if time < oneWeekAgo:#Only check folders more than a whole week old
			folder = time2Folder[time]
			
			if currentWeekStart != None and time >= currentWeekStart and time <= currentWeekEnd:
				folder2Delete[ folder ] = True
			else:
				currentWeekStart = datetime.datetime(time.year, time.month, time.day) - datetime.timedelta(time.weekday())
				currentWeekEnd = datetime.datetime(currentWeekStart.year, currentWeekStart.month, currentWeekStart.day) + datetime.timedelta(6)

	
	
	oneDayAgo = now  - datetime.timedelta(1)
	dayInTime = None 
	#Only one backup per day, if older than a day
	for time in times: 
		
		#Ignore if we are already deleted
		if folder2Delete[ time2Folder[time] ]:
			continue
		
		if time < oneDayAgo:#Make sure we are older than a day
			folder = time2Folder[time]
			
			coarseDay = datetime.datetime( time.year, time.month, time.day )
			
			if not dayInTime or coarseDay != dayInTime:
				dayInTime = coarseDay
			else:#It's the same day, delete
				folder2Delete[ folder ] = True
			
	
	


				
	# for time in times: 
	#	 print time, '\t\t', folder2Delete[time2Folder[time]], '\t', time.weekday()
	
	return [ f for f in backupdirs if folder2Delete[f] ]
Пример #43
0
currentDate = dateStart
baseInt = hoursSince2000(dateStart)
# initalize buckets

two_category_buckets = {}
hourly_bucket = [None] * (hoursSince2000(dateEnd) - baseInt) # good for analytics
while currentDate < dateEnd:
	two_category_buckets[(currentDate.hour, currentDate.weekday())] = []
	hourly_bucket[hoursSince2000(currentDate) - baseInt] = []
	currentDate = currentDate + dt.timedelta(hours = 1)

# add dates to buckets


for time in times:
	two_category_buckets[(time.hour, time.weekday())].append(time)
	hourly_bucket[hoursSince2000(time) - baseInt].append(time)

#print len(hourly_bucket[0])
#print len(hourly_bucket[1])
print "Type, Date 1 Last 24 Hours, Date 1 Last Hour, Date 2 Last 24 Hours, Date 2 Last Hour, Date 1 Index, Date 2 Index, Date 1 Year, Date 1 Month, Date 1 Day, Date 1 Hour, Date 1 Weekday, Date 2 Year, Date 2 Month, Date 2 Day, Date 2 Hour, Date 2 Weekday"

#iterate through times
for index in range(24,len(hourly_bucket)):
	sameWeekdayAndHour = [index2 for index2 in range(24,index) if index % 168 == index2 % 168]
	secondObjectNextHourCounter = 0
	secondObjectLast24HoursCounter = 0
	for index2 in sameWeekdayAndHour:
		firstObjectNextHour = len(hourly_bucket[index])
		secondObjectNextHour = len(hourly_bucket[index2])
		secondObjectNextHourCounter += secondObjectNextHour
Пример #44
0
def new_alarm(input):
	event = alarm.Event()
	event.appid = 'saera'
	event.message = 'Wake Up'

	time = datetime.datetime.today()
	words, has_nums = parse_to_nums(input.lower().split())
	day_identifier = [i for i in words if i in weekdays]
	if "after tomorrow" in input.lower():
		time = time+datetime.timedelta(days=2)
	elif 'tomorrow' in words:
		time = time+datetime.timedelta(days=1)
	elif day_identifier:
		day = weekdays.index(day_identifier[0])
		print day
		time = time+datetime.timedelta(days=(day-time.weekday())%7)
	hour = [i for i in words if i in times]
	if hour:
		time = time.replace(hour=times[hour[0]],minute=0,second=0,microsecond=0)
	hour = False
	minute = 0
	pmam = False
	bell = False
	for i in words:
		if hasattr(i, '__int__'):
			if type(hour)==bool and not hour:
				hour = i
			elif not minute:
				minute = i
		if i in bells:
			bell = True
			minute = bells[i]
		elif bell:
			if i in ['as', 'past', 'after']:
				pass
			elif i in ['to', 'told', 'til', 'till', 'of']:
					minute = -minute
			bell = False
		elif pmam:
			if i=='m.':
				if pmam=='pm':
					hour = hour%12+12
				elif pmam=='am':
					hour = hour%12
			pmam = False
		elif i in ['p.', 'a.']:
			pmam = {'p.':'pm','a.':'am'}[i]
	if minute<0:
		hour=(hour-1)%24
		minute = 60+minute
	if type(hour)==bool:
		hour = time.hour
	time = time.replace(hour=hour,minute=minute,second=0,microsecond=0)

	event.alarm_time = float(time.strftime("%s"))

	action_stop, action_snooze = event.add_actions(2)
	action_stop.label = 'Stop'
	action_stop.flags |= alarm.ACTION_WHEN_RESPONDED | alarm.ACTION_TYPE_NOP

	action_snooze.label = 'Snooze'
	action_snooze.flags |= alarm.ACTION_WHEN_RESPONDED | alarm.ACTION_TYPE_SNOOZE

	print event.is_sane()

	cookie = alarm.add_event(event)

	return "Okay, I set your alarm for "+time.strftime("%I:%M %P"), None