Exemplo n.º 1
0
    def assignAttributes(self, response_xml):
        verboseKeyNames = {
            "meet:meetingkey": "WebEx Meeting ID",
            "meet:agenda": _("Meeting description"),
            "meet:confName": _("Title"),
            "meet:hostWebExID": _("WebEx host account"),
            "meet:startDate": _("Start time"),
            "meet:duration": _("Duration"),
            "meet:meetingPassword": _("Meeting password"),
        }

        dom = xml.dom.minidom.parseString( response_xml )
        oldArguments = self.getCreateModifyArguments()
        changesFromWebEx = self._bookingChangesHistory
        latestChanges = []


        start_date = makeTime( self.getAdjustedStartDate('UTC') ).strftime( "%m/%d/%Y %H:%M:%S" )
        time_discrepancy = False
        for key in oldArguments:
            if not verboseKeyNames.has_key( key ):
                continue
            if key == "meet:startDate" or key == "meet:duration":
                if key == "meet:startDate":
                    if dom.getElementsByTagName( key )[0].firstChild.toxml('utf-8') != start_date:
                        time_discrepancy = True
                if key == "meet:duration":
                    if dom.getElementsByTagName( key )[0].firstChild.toxml('utf-8') != str(self._duration):
                        time_discrepancy = True
                        user_msg = _("Updated booking duration from ") + str(self._duration) + _(" minutes to ") + str( dom.getElementsByTagName( key )[0].firstChild.toxml('utf-8') + _(" minutes"))
                        self._duration = int( dom.getElementsByTagName( key )[0].firstChild.toxml('utf-8') )
                continue
            try:
                if unescape(dom.getElementsByTagName( key )[0].firstChild.toxml('utf-8')) != unescape(str(oldArguments[key])) and key in verboseKeyNames:
                    changesFromWebEx.append(verboseKeyNames[key] + ": " + dom.getElementsByTagName( key )[0].firstChild.toxml('utf-8'))
                    latestChanges.append(verboseKeyNames[key] + ": " + dom.getElementsByTagName( key )[0].firstChild.toxml('utf-8'))
                    if key == "meet:confName":
                        self._bookingParams["meetingTitle"] = unescape(dom.getElementsByTagName( key )[0].firstChild.toxml('utf-8'))
                    elif key == "meet:agenda":
                        self._bookingParams["meetingDescription"] = unescape(dom.getElementsByTagName( key )[0].firstChild.toxml('utf-8'))

            except:
                Logger.get('WebEx').info( "caught exception on: " + key )
                pass
        self._phoneNum = dom.getElementsByTagName( "serv:tollFreeNum" )[0].firstChild.toxml('utf-8')
        self._phoneNumToll = dom.getElementsByTagName( "serv:tollNum" )[0].firstChild.toxml('utf-8')

        # We calculate the time from WebEx first assuming it is in UTC.
        # If not, we then apply the offset to keep it simple
        calc_time = naive2local( datetime( *strptime( dom.getElementsByTagName( "meet:startDate" )[0].firstChild.toxml('utf-8'), "%m/%d/%Y %H:%M:%S" )[0:7]), 'UTC' )
        tz_id = dom.getElementsByTagName( "meet:timeZoneID" )[0].firstChild.toxml('utf-8')
        # If the specified time zone is not UTC, contact WebEx
        # and find the offset from UTC we must account for
        if tz_id != 20:
            time_offset_mins = self.getWebExTimeZoneToUTC( tz_id, calc_time.strftime("%m/%d/%Y %H:%M:%S"))
            WE_time = calc_time + timedelta( minutes= -1*int( time_offset_mins ) )
            #Now that we have the REAL time, figure out if there REALLY is a time difference
            if time_discrepancy == True:
                if self._startDate != getAdjustedDate(WE_time, tz=self._conf.getTimezone()):
                    self._startDate = getAdjustedDate(WE_time, tz=self._conf.getTimezone())
                    changesFromWebEx.append(_("Updated start time to match WebEx entry"))
                    latestChanges.append(_("Updated start time to match WebEx entry"))
                if self._endDate != getAdjustedDate(WE_time, tz=self._conf.getTimezone()) + timedelta( minutes=int( self._duration ) ):
                    self._endDate = getAdjustedDate(WE_time, tz=self._conf.getTimezone()) + timedelta( minutes=int( self._duration ) )
                    changesFromWebEx.append(_("Updated end time to match WebEx entry"))
                    latestChanges.append(_("Updated start time to match WebEx entry"))
        self.checkCanStart()
        self._bookingChangesHistory = changesFromWebEx
        self._latestChanges = latestChanges
Exemplo n.º 2
0
def dateAdvanceAllowed(date, days):
    from MaKaC.common.timezoneUtils import nowutc, dayDifference, naive2local
    import MaKaC.common.info as info
    tz = info.HelperMaKaCInfo.getMaKaCInfoInstance().getTimezone()
    return dayDifference(naive2local(date, tz), nowutc(), tz) > days
Exemplo n.º 3
0
    def assignAttributes(self, response_xml):
        verboseKeyNames = {
            "meet:meetingkey": "WebEx Meeting ID",
            "meet:agenda": _("Meeting description"),
            "meet:confName": _("Title"),
            "meet:hostWebExID": _("WebEx host account"),
            "meet:startDate": _("Start time"),
            "meet:duration": _("Duration"),
            "meet:meetingPassword": _("Meeting password"),
        }

        dom = xml.dom.minidom.parseString(response_xml)
        oldArguments = self.getCreateModifyArguments()
        changesFromWebEx = self._bookingChangesHistory
        latestChanges = []

        start_date = makeTime(
            self.getAdjustedStartDate('UTC')).strftime("%m/%d/%Y %H:%M:%S")
        time_discrepancy = False
        for key in oldArguments:
            if not verboseKeyNames.has_key(key):
                continue
            if key == "meet:startDate" or key == "meet:duration":
                if key == "meet:startDate":
                    if dom.getElementsByTagName(key)[0].firstChild.toxml(
                            'utf-8') != start_date:
                        time_discrepancy = True
                if key == "meet:duration":
                    if dom.getElementsByTagName(key)[0].firstChild.toxml(
                            'utf-8') != str(self._duration):
                        time_discrepancy = True
                        user_msg = _("Updated booking duration from ") + str(
                            self._duration) + _(" minutes to ") + str(
                                dom.getElementsByTagName(key)
                                [0].firstChild.toxml('utf-8') + _(" minutes"))
                        self._duration = int(
                            dom.getElementsByTagName(key)[0].firstChild.toxml(
                                'utf-8'))
                continue
            try:
                if unescape(
                        dom.getElementsByTagName(key)
                    [0].firstChild.toxml('utf-8')) != unescape(
                        str(oldArguments[key])) and key in verboseKeyNames:
                    changesFromWebEx.append(verboseKeyNames[key] + ": " +
                                            dom.getElementsByTagName(key)
                                            [0].firstChild.toxml('utf-8'))
                    latestChanges.append(verboseKeyNames[key] + ": " +
                                         dom.getElementsByTagName(
                                             key)[0].firstChild.toxml('utf-8'))
                    if key == "meet:confName":
                        self._bookingParams["meetingTitle"] = unescape(
                            dom.getElementsByTagName(key)[0].firstChild.toxml(
                                'utf-8'))
                    elif key == "meet:agenda":
                        self._bookingParams["meetingDescription"] = unescape(
                            dom.getElementsByTagName(key)[0].firstChild.toxml(
                                'utf-8'))

            except:
                Logger.get('WebEx').info("caught exception on: " + key)
                pass
        self._phoneNum = dom.getElementsByTagName(
            "serv:tollFreeNum")[0].firstChild.toxml('utf-8')
        self._phoneNumToll = dom.getElementsByTagName(
            "serv:tollNum")[0].firstChild.toxml('utf-8')

        # We calculate the time from WebEx first assuming it is in UTC.
        # If not, we then apply the offset to keep it simple
        calc_time = naive2local(
            datetime(*strptime(
                dom.getElementsByTagName("meet:startDate")[0].firstChild.toxml(
                    'utf-8'), "%m/%d/%Y %H:%M:%S")[0:7]), 'UTC')
        tz_id = dom.getElementsByTagName(
            "meet:timeZoneID")[0].firstChild.toxml('utf-8')
        # If the specified time zone is not UTC, contact WebEx
        # and find the offset from UTC we must account for
        if tz_id != 20:
            time_offset_mins = self.getWebExTimeZoneToUTC(
                tz_id, calc_time.strftime("%m/%d/%Y %H:%M:%S"))
            WE_time = calc_time + timedelta(minutes=-1 * int(time_offset_mins))
            #Now that we have the REAL time, figure out if there REALLY is a time difference
            if time_discrepancy == True:
                if self._startDate != getAdjustedDate(
                        WE_time, tz=self._conf.getTimezone()):
                    self._startDate = getAdjustedDate(
                        WE_time, tz=self._conf.getTimezone())
                    changesFromWebEx.append(
                        _("Updated start time to match WebEx entry"))
                    latestChanges.append(
                        _("Updated start time to match WebEx entry"))
                if self._endDate != getAdjustedDate(
                        WE_time, tz=self._conf.getTimezone()) + timedelta(
                            minutes=int(self._duration)):
                    self._endDate = getAdjustedDate(
                        WE_time, tz=self._conf.getTimezone()) + timedelta(
                            minutes=int(self._duration))
                    changesFromWebEx.append(
                        _("Updated end time to match WebEx entry"))
                    latestChanges.append(
                        _("Updated start time to match WebEx entry"))
        self.checkCanStart()
        self._bookingChangesHistory = changesFromWebEx
        self._latestChanges = latestChanges