Exemplo n.º 1
0
    def SpecifyStatus(self, order, status, *executors):
        statusid = -1
        status_partten = ['未', '待', '没有', '尚未', '还没有', '没']
        left_status = [i for i in status_partten if i in status]
        statusid = 0 if len(left_status) else 3

        # 判断是否过期
        isExpire = self.JudgeStatusExpired(status, status_partten)

        if isExpire == 1:
            starttime = None
            logger.info('未过期')
            _, _endtime = CNTime('今天').guess_time()
            logger.info('{}'.format(_endtime))
            # endtime = str(int(_endtime.timestamp() * 1000))
            return self.SpecifyTime(order, starttime, _endtime, *executors)
        elif isExpire == 0:
            logger.info('已过期')
            starttime = None
            _, _endtime = CNTime('昨天').guess_time()
            logger.info('{}'.format(_endtime))
            # endtime = str(int(_endtime.timestamp() * 1000))
            return self.SpecifyTime(order, starttime, _endtime, *executors)

        params = {
            'srcInput':
            order,
            'stateId':
            statusid,
            'filterAssigners':
            ','.join([str(v) if v > 0 else str(-1) for v in executors]),
        }

        logger.info('PARAMS:{}'.format(params))
        return self.Do(params)
Exemplo n.º 2
0
def main():
    global Cases
    print('---')
    for case in Cases:
        _ts = time.time()
        data = CNTime(case)
        #data = json.dumps(data, ensure_ascii=False, sort_keys=True, indent=4)
        start, end = data.guess_time()
        print('{} => {}, ({}, {})'.format(case, data.desc_time(), start, end))
        _te = time.time()
        print('Assumed: {}ms'.format(round((_te - _ts) * 1000)))
        print('---')
    Cases = [
        ('8号', '13号'),
        ('三天前', '三天后'),
        ('前三天', '后三天'),
    ]
    for cfrom, cto in Cases:
        _ts = time.time()
        a = CNTime(cfrom)
        b = CNTime(cto)
        start, end = CNTime.Merge(a.guess_time(), b.guess_time())
        print('from {} to {}, ({}, {})'.format(
            a.desc_time(), b.desc_time(),
            start, end,
        ))
        _te = time.time()
        print('Assumed: {}ms'.format(round((_te - _ts) * 1000)))
        print('---')
Exemplo n.º 3
0
    def intents_who_time(self):
        # 2 谁+时间
        query = self.request.Message()
        bdc = teamin.BizDocCount(self.request.AgentName, self.request.AgentUID)
        executors = teamin.NameFindNames().ResolveName(self.request.UID(),
                                                       self.executor)
        start = None
        end = None
        if hasattr(self, 'stime') and hasattr(self, 'etime'):
            s = CNTime(self.stime)
            e = CNTime(self.etime)
            st, en = CNTime.Merge(s.guess_time(), e.guess_time())
            logger.info('raw time {},{}'.format(st, en))
            start, end = st, en

        if hasattr(self, 'etime') and not hasattr(self, 'stime'):
            time = CNTime(self.etime)
            fromt, tot = time.guess_time()
            logger.info('raw time {},{}'.format(fromt, tot))
            start, end = fromt, tot

        (count, weburl) = bdc.SpecifyDblSelect(query,
                                               executors,
                                               stime=start,
                                               etime=end,
                                               executors=executors)
        self.intent.set_interval(int(start.timestamp() * 1000),
                                 int(end.timestamp() * 1000), weburl)
        return self.Response(count, weburl)
Exemplo n.º 4
0
    def intents_time_actions(self):
        # 5 时间+行为
        query = self.request.Message()
        btc = teamin.BizTaskCount(self.request.AgentName,
                                  self.request.AgentUID)
        me = teamin.NameFindNames().ResolveName(self.request.UID(), self.me)
        start = None
        end = None
        if hasattr(self, 'stime') and hasattr(self, 'etime'):
            s = CNTime(self.stime)
            e = CNTime(self.etime)
            st, en = CNTime.Merge(s.guess_time(), e.guess_time())
            logger.info('raw time {},{}'.format(st, en))
            start, end = st, en
        if hasattr(self, 'etime') and not hasattr(self, 'stime'):
            time = CNTime(self.etime)
            fromt, tot = time.guess_time()
            logger.info('raw time {},{}'.format(fromt, tot))
            start, end = fromt, tot

        (count, finished,
         expired), weburl = btc.SpecifyDblSelect(query,
                                                 me,
                                                 stime=start,
                                                 etime=end,
                                                 actions=self.actions)
        if (start != None and end != None):
            self.intent.set_interval(int(start.timestamp() * 1000),
                                     int(end.timestamp() * 1000), weburl)
        return self.Response(count, finished, expired, weburl)
Exemplo n.º 5
0
    def initSlots(self):
        slots = self.intent.slots.filter(type__startswith='user_').all()
        for slot in slots:
            f = slot.type[5:]
            if f == 'q':
                self.slot_q = slot
            elif f == 'tsk':
                self.slot_tsk = slot
            elif f == 'p':
                self.slot_p = slot
            elif f == 't':
                self.slot_t = slot
            elif f == 't2':
                self.slot_t2 = slot

        if hasattr(self, 'slot_p'):
            self.cond_p = self.slot_p.original_word
        if hasattr(self, 'slot_t'):
            self.cond_t = CNTime(self.slot_t.original_word).guess_time()
            if hasattr(self, 'slot_t2'):
                t2 = CNTime(self.slot_t2.original_word).guess_time()
                self.cond_t = CNTime.Merge(self.cond_t, t2)
Exemplo n.º 6
0
    def Go(self):
        self.initSlots()
        query = self.request.Message()
        bdc = teamin.BizDocCount(self.request.AgentName, self.request.AgentUID)

        if hasattr(self, 'creator'):
            creator = teamin.NameFindNames().ResolveName(
                self.request.UID(), self.creator)
            count, weburl = bdc.SpecifyCreators(query, creator)
            self.intent.set_interval(0, 0, weburl)

        elif hasattr(self, 'stime') or hasattr(self, 'etime'):
            me = teamin.NameFindNames().ResolveName(self.request.UID(),
                                                    self.me)

            if hasattr(self, 'stime') and hasattr(self, 'etime'):
                # 6号和7号
                s = CNTime(self.stime)
                e = CNTime(self.etime)
                start, end = CNTime.Merge(s.guess_time(), e.guess_time())
                # start = str(int(st.timestamp() * 1000))
                # end = str(int(en.timestamp() * 1000))

            if hasattr(self, 'etime') and not hasattr(self, 'stime'):
                # endt:6号到7号
                time = CNTime(self.etime)
                start, end = time.guess_time()
                logger.info('raw time {},{}'.format(start, end))
                # start = str(int(fromt.timestamp()*1000))
                # end = str(int(tot.timestamp()*1000))

            logger.info('类型:s:{},e:{}'.format(type(str(start)),
                                              type(str(end))))
            logger.info('时间戳:{}~{}'.format(start, end))
            count, weburl = bdc.SpecifyTime(query, start, end, me)
            self.intent.set_interval(int(start.timestamp() * 1000),
                                     int(end.timestamp() * 1000), weburl)

        elif hasattr(self, 'actions'):
            me = teamin.NameFindNames().ResolveName(self.request.UID(),
                                                    self.me)
            count, weburl = bdc.SpecifyCreators(query, me)
            self.intent.set_interval(0, 0, weburl)

        return self.Response(count, weburl)
Exemplo n.º 7
0
    def Go(self):
        self.initSlots()
        query = self.request.Message()
        btc = teamin.BizTaskCount(self.request.AgentName,
                                  self.request.AgentUID)
        slot = self.intent.slots.filter(type='user_tsk').first()
        keyword = self.parse_keyword(self.intent, query, slot)

        if hasattr(self, 'executor'):
            executor = teamin.NameFindNames().ResolveName(
                self.request.UID(), self.executor)
            (count, finished,
             expired), weburl = btc.SpecifyExecutors(query, executor)
            self.intent.set_interval(0, 0, weburl)

        elif hasattr(self, 'stime') or hasattr(self, 'etime'):
            me = teamin.NameFindNames().ResolveName(self.request.UID(),
                                                    self.me)
            start = None
            end = None
            if hasattr(self, 'stime') and hasattr(self, 'etime'):
                s = CNTime(self.stime)
                e = CNTime(self.etime)
                st, en = CNTime.Merge(s.guess_time(), e.guess_time())
                if st == None or en == None:
                    (count, finished, expired), weburl = btc.Deprecated(
                        self.request.UID(),
                        0,
                        0,
                        query,
                        keyword,
                        matcher.extract_watch(query),
                    )
                    self.intent.set_interval(0, 0, weburl)
                start = st
                end = en

            if hasattr(self, 'etime') and not hasattr(self, 'stime'):
                # endt:6号到7号
                setime = CNTime(self.etime)
                fromt, tot = setime.guess_time()
                logger.info('raw time {},{}'.format(fromt, tot))
                if fromt == None or tot == None:
                    (count, finished, expired), weburl = btc.Deprecated(
                        self.request.UID(),
                        0,
                        0,
                        query,
                        keyword,
                        matcher.extract_watch(query),
                    )
                    self.intent.set_interval(0, 0, weburl)
                start = fromt
                end = tot

            logger.info('类型:s:{},e:{}'.format(type(str(start)),
                                              type(str(end))))
            logger.info('时间:{}~{}'.format(start, end))
            (count, finished,
             expired), weburl = btc.SpecifyTime(query, start, end, me)
            if (start != None and end != None):
                self.intent.set_interval(int(start.timestamp() * 1000),
                                         int(end.timestamp() * 1000), weburl)
            return self.Response(count, finished, expired, weburl)

        elif hasattr(self, 'status'):
            me = teamin.NameFindNames().ResolveName(self.request.UID(),
                                                    self.me)
            (count, finished,
             expired), weburl = btc.SpecifyStatus(query, self.status, me)
            self.intent.set_interval(0, 0, weburl)

        elif hasattr(self, 'actions'):
            me = teamin.NameFindNames().ResolveName(self.request.UID(),
                                                    self.me)
            (count, finished,
             expired), weburl = btc.SpecifyActions(query, self.actions, me)
            self.intent.set_interval(0, 0, weburl)

        return self.Response(count, finished, expired, weburl)