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
_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,
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