Exemplo n.º 1
0
def format_schedule(schedule):
    tomorrow = get_tomorrow()
    tomorrow_day = get_tomorrow_day()
    content = "明天是星期" + week_day_zh[tomorrow_day] + "," + str(tomorrow.year) + "年" + str(tomorrow.month) + "月" + str(
        tomorrow.day) + "日"
    content += "<br>"
    if len(schedule) > 0:
        content += "共有<b>" + str(len(schedule)) + "</b>节课"
        content += "<hr>"
        for lesson in schedule:
            if lesson.startTime < 6:
                # 上午的课
                content += "上午"
            elif lesson.startTime < 11:
                content += "下午"
            else:
                content += "晚上"

            content += course_times[lesson.startTime - 1] + "<br>"
            content += "课程名称: <b>" + lesson.name + "</b><br>"
            if len(lesson.place) > 0:
                content += "课程地点:<b>" + lesson.place + "</b><br>"
            if len(lesson.teacher) > 0:
                content += "教师:" + lesson.teacher + "<br>"
        content += "<br><hr>"
        content += "本周是第" + str(get_now_week()) + "周,"
        content += "新的一天,好好加油!"
    else:
        content += "明天没课,好好休息下哈~"

    return content
Exemplo n.º 2
0
    def get_main_news(cls, request, last_readed=0):
        # TODO 筛选头条新闻(有图)
        news = cls.objects.filter(
            n_date=get_tomorrow(),
            id__gt=last_readed).exclude(imageurls='[]')[0:9]

        return news
Exemplo n.º 3
0
    def get_main_news(cls, request, last_readed=0):
        # TODO 筛选头条新闻(有图)
        news = cls.objects.filter(
            n_date=get_tomorrow(),
            id__gt=last_readed).exclude(imageurls='[]')[0:9]

        return news
Exemplo n.º 4
0
    def get_pic_main_news(cls, request):
        last_readed = request.session.get("last_readed", 0)

        # TODO 筛选头条新闻(有图)
        news = cls.objects.filter(
            n_date=get_tomorrow(), id__gte=last_readed).exclude(imageurls='[]')[9:13]

        print news
        return news
Exemplo n.º 5
0
    def get_pic_main_news(cls, request):
        last_readed = request.session.get("last_readed", 0)

        # TODO 筛选头条新闻(有图)
        news = cls.objects.filter(
            n_date=get_tomorrow(), id__gte=last_readed).exclude(imageurls='[]')[9:13]

        print news
        return news
Exemplo n.º 6
0
    def get_news_list(cls, request, start=0, size=10, type=None):
        b_type = request.GET.get("b_type")
        if start == 0:
            start = request.session.get(
                b_type + "last_start", 0)
        query = {"n_date": get_tomorrow()}
        if b_type:
            query["b_type"] = int(b_type)

        news = cls.objects.filter(**query)[
            start: start + size]
        count = news.count()
        # print news
        # print query
        request.session[b_type + "last_start"] = start
        return news, count, start
Exemplo n.º 7
0
    def get_news_list(cls, request, start=0, size=10, type=None):
        b_type = request.GET.get("b_type")
        if start == 0:
            start = request.session.get(
                b_type + "last_start", 0)
        query = {"n_date": get_tomorrow()}
        if b_type:
            query["b_type"] = int(b_type)

        news = cls.objects.filter(**query)[
            start: start + size]
        total = cls.objects.filter(**query).count()
        count = news.count()
        if size > count:
            add_news = cls.objects.filter(**query)[: size - count]
            news = news.union(add_news)
            start = size - count
        request.session[b_type + "last_start"] = start
        return news, total, start
Exemplo n.º 8
0
    def get_menus(cls):
        menus = cls.objects.filter(
            n_date=get_tomorrow()).exclude(b_type=None).values_list(
            'b_type').annotate(counts=Count('id')).filter(counts__gt=0)

        return menus
Exemplo n.º 9
0
    def get_menus(cls):
        menus = cls.objects.filter(
            n_date=get_tomorrow()).exclude(b_type=None).values_list(
            'b_type').annotate(counts=Count('id')).filter(counts__gt=0)

        return menus
Exemplo n.º 10
0
def get_occupancy(last, bucketsize):
    """
    We deliver historical occupancy up until "now". If the building has occupancy sensors, we pull that data
    and aggregate it by zone. Take mean occupancy per zone (across all sensors). 

    If building does *not* have occupancy sensors, then we need to read the results from some occupancy file.
    """
    if last not in ['hour', 'day', 'week']:
        return "Must be hour, day, week"
    start_date = get_start(last)

    zones = defaultdict(list)
    prediction_start = datetime.now(config.TZ)

    md = config.HOD.do_query(occupancy_query)
    if md['Rows'] is not None:
        for row in md['Rows']:
            zones[row['?zone']].append(row['?occ_uuid'])
        q = occupancy_data_query.copy()
        q["Time"] = {
            "T0": start_date.strftime("%Y-%m-%d %H:%M:%S %Z"),
            "T1": prediction_start.strftime("%Y-%m-%d %H:%M:%S %Z"),
            "WindowSize": bucketsize,
            "Aligned": True,
        }
        resp = config.MDAL.do_query(q, timeout=120)
        if 'error' in resp:
            print 'ERROR', resp
            return
        df = resp['df'].fillna(method='ffill')

        for zone, uuidlist in zones.items():
            if len(uuidlist) > 0:
                zones[zone] = json.loads(df[uuidlist].mean(axis=1).to_json())
            else:
                zones[zone] = {}

        # get predicted output
        prediction_end = get_tomorrow()
        predicted = list(
            rrule.rrule(freq=rrule.HOURLY,
                        dtstart=prediction_start,
                        until=prediction_end))
        for zone, occdict in zones.items():
            for date in predicted:
                occdict[int(int(date.strftime('%s')) *
                            1000)] = 'predicted'  # prediction
            zones[zone] = occdict
    else:
        md = config.HOD.do_query(zone_query)
        zonenames = [x['?zone'].lower() for x in md['Rows']]
        conn = sqlite3.connect('occupancy_schedule.db')
        sql = conn.cursor()
        for zone in zonenames:
            query = "SELECT * FROM schedules WHERE site='{0}' and zone='{1}' and dayofweek='{2}'".format(
                config.SITE, zone,
                prediction_start.strftime('%A').lower())
            res = sql.execute(query).fetchall()
            records = {'time': [], 'occ': [], 'zone': []}
            for sqlrow in res:
                hour, minute = sqlrow[3].split(':')
                time = datetime(year=prediction_start.year,
                                month=prediction_start.month,
                                day=prediction_start.day,
                                hour=int(hour),
                                minute=int(minute),
                                tzinfo=prediction_start.tzinfo)
                occ = sqlrow[5]
                zone = sqlrow[1]
                records['time'].append(time)
                records['occ'].append(occ)
                records['zone'].append(zone)
            df = pd.DataFrame.from_records(records)
            df = df.set_index(df.pop('time'))
            if len(df) == 0:
                continue
            sched = df.resample(bucketsize.replace('m', 'T')).ffill()
            zones[zone] = json.loads(sched['occ'].to_json())
        conn.close()

    return zones