Example #1
0
 def newmeeting_safe(self, params, autonode=True, getndtime=False):
     # return int: -n | 0 | n;
     # ==> v2: return int,nextdtime
     # 0: cannot create node or insert to db
     # -n: conflict with meeting mid = n
     # n: success create meeting with mid = n
     roomid = int(params['mroom'])
     mname = params.get('name')
     _rpmode = int(params['rpmode'])
     _ondate = params.get('ondate')
     _ontime = params['ontime']
     _mtime = int(params['mtime'])
     # with roomid, precheck
     # precheck room
     if roomid > 0:
         if _rpmode == mnode.RMODE_ONCE:
             x_mid = Mqueue.get_queue(self.objid).filter_room_conflict_once(
                 roomid, _ondate, _ontime, _mtime)
         else:
             _rparg = [int(_) for _ in params['rparg'].split(',')]
             _p_start = params['p_start']
             _p_end = params['p_end']
             x_mid = Mqueue.get_queue(self.objid).filter_room_conflict(
                 _rpmode, _rparg, roomid, _ontime, _mtime, _p_start, _p_end)
         if x_mid > 0:
             loger.error("create meeting but conflic with meeting[%d]" %
                         x_mid)
             return -x_mid
     # if no room or no conflict....
     if not (_rpmode == mnode.RMODE_ONCE
             and self._test_ctime(_ondate, _ontime)):
         loger.error("not allow time")
         self.emsg = "非许可时间"
         return 0
     try:
         if _rpmode == mnode.RMODE_ONCE:
             _node = mnode(0,
                           mname,
                           mroom=roomid,
                           rpmode=_rpmode,
                           ondate=_ondate,
                           ontime=_ontime,
                           mtime=_mtime)
         else:
             _rparg = [int(_) for _ in params['rparg'].split(',')]
             _p_start = params['p_start']
             _p_end = params['p_end']
             # counting=0
             _node = mnode(0,
                           mname,
                           mroom=roomid,
                           rpmode=_rpmode,
                           rparg=_rparg,
                           ontime=_ontime,
                           mtime=_mtime,
                           p_start=_p_start,
                           p_end=_p_end)
             # for first create new, nextdtime aouto make by node, put with params
             params['nextdtime'] = _node.nextdtime
     except ValueError:
         loger.error("create node wrong with params: [%s]" % params)
         return 0
     mid = MEETING.new(self.objid, params)
     if mid > 0:
         _node.mid = mid
         Mqueue.auto_node(self.objid, _node)
         if getndtime:
             self.extdata = _node.nextdtime
         return mid
     return 0
Example #2
0
 _name = m[2]
 _mroom = m[4]
 _counting = m[7]
 _ondate = str(m[9])
 # ??? return time by timedelta.... => str(timedelta) => time
 _ontime = str(m[10])
 _mtime = m[11]
 _ndtime = m[12]
 _rparg = m[14]
 _p_start = m[17]
 _p_end = m[18]
 if _rpmode == mnode.RMODE_ONCE:
     node = mnode(_mid,
                  _name,
                  mroom=_mroom,
                  rpmode=_rpmode,
                  rparg=_rparg,
                  ondate=_ondate,
                  ontime=_ontime,
                  mtime=_mtime)
 else:
     # check the nextdtime(m[9]) meeting ondate?over?futrue?
     #if m[9].day <= starton.day and sta == meeting.STA_FINISH:
     #	_counting += 1
     node = mnode(_mid,
                  _name,
                  mroom=_mroom,
                  rpmode=_rpmode,
                  rparg=_rparg,
                  counting=_counting,
                  ondate=_ondate,
                  ontime=_ontime,
Example #3
0
 def newmeeting_safe2(self, params, autonode=True, getndtime=False):
     # return mid(success) or False(if conflict), if getndtime: extdata
     roomid = int(params['mroom'])
     mname = params.get('name')
     _rpmode = int(params['rpmode'])
     _ondate = params.get('ondate')
     _ontime = params['ontime']
     _mtime = int(params['mtime'])
     # with roomid, precheck
     # precheck room
     _node = None
     if roomid > 0:
         if _rpmode == mnode.RMODE_ONCE:
             if RMS.conflict_dtime(roomid, _ondate, _ontime, mtime=_mtime):
                 loger.error("create meeting but conflic")
                 self.emsg = "会议室冲突"
                 return False
         else:
             _rparg = [int(_) for _ in params['rparg'].split(',')]
             _p_start = params['p_start']
             _p_end = params['p_end']
             _node = mnode(0,
                           mname,
                           mroom=roomid,
                           rpmode=_rpmode,
                           rparg=_rparg,
                           ontime=_ontime,
                           mtime=_mtime,
                           p_start=_p_start,
                           p_end=_p_end)
             _meeting_schedule = _node.calendar(get_mode=2)
             print(_meeting_schedule)
             if RMS.conflict_schedule(roomid,
                                      _meeting_schedule,
                                      _ontime,
                                      period_from=_p_start,
                                      period_end=_p_end,
                                      mtime=_mtime):
                 loger.error("create meeting but conflic")
                 self.emsg = "会议室冲突"
                 return False
     # if no room or no conflict....
     if _rpmode == mnode.RMODE_ONCE and not self._test_ctime(
             _ondate, _ontime):
         loger.error("not allow time")
         self.emsg = "非许可时间"
         return False
     try:
         if _rpmode == mnode.RMODE_ONCE:
             _node = mnode(0,
                           mname,
                           mroom=roomid,
                           rpmode=_rpmode,
                           ondate=_ondate,
                           ontime=_ontime,
                           mtime=_mtime)
         else:
             _rparg = [int(_) for _ in params['rparg'].split(',')]
             _p_start = params['p_start']
             _p_end = params['p_end']
             # counting=0
             # if no roomid, _node not create above
             _node = _node or mnode(0,
                                    mname,
                                    mroom=roomid,
                                    rpmode=_rpmode,
                                    rparg=_rparg,
                                    ontime=_ontime,
                                    mtime=_mtime,
                                    p_start=_p_start,
                                    p_end=_p_end)
             # for first create new, nextdtime aouto make by node, put with params
             params['nextdtime'] = _node.nextdtime
     except ValueError:
         loger.error("create node wrong with params: [%s]" % params)
         return False
     mid = MEETING.new(self.objid, params)
     if mid > 0:
         _node.mid = mid
         Mqueue.auto_node(self.objid, _node)
         if getndtime:
             self.extdata = _node.nextdtime
         # create schedule if roomid
         if roomid:
             if _rpmode == mnode.RMODE_ONCE:
                 dbresult = RMS.one_meeting(roomid,
                                            mid,
                                            _ondate,
                                            _ontime,
                                            meetingtime=_mtime)
             else:
                 dbresult = RMS.repeatedly_meeting(roomid,
                                                   mid,
                                                   _meeting_schedule,
                                                   _ontime,
                                                   meetingtime=_mtime)
             loger.info(dbresult)
         return mid
     return False