コード例 #1
0
        self.ui.stop_button.setFocus()

    def stop_button_clicked(self):
        # Set value
        self.vehicle_manual_controller.set_velocity_kmph(0.0, 0.0)
        # Transfer focus
        self.ui.start_button.setFocus()

    def closeEvent(self, event):
        # Stop vehicle for sure
        self.vehicle_manual_controller.stop_now()


if __name__ == '__main__':
    rospy.init_node('set_run_dialog')

    app = QApplication(sys.argv)

    lock_manager = LockManager(LOCK_PATH)
    if not lock_manager.get_lock():
        QMessageBox.warning(
            None, 'Warning',
            'Another same process is running. If not, please delete lock file [ %s ].'
            % lock_manager.get_lock_path(), QMessageBox.Ok)
        sys.exit(1)

    win = SetRunDialog()
    win.show()
    ret = app.exec_()
    lock_manager.release_lock()
    sys.exit(ret)
コード例 #2
0
    def __init__(self, config):
        self.config = config

        util.initLogging(config["verbose"], config.get("log_path", ""),
                         config.get("enable_loggers", []))

        util.log("Default encoding: %s (file system: %s)" %
                 (sys.getdefaultencoding(), sys.getfilesystemencoding()))

        # Evaluate configuration and set defaults
        _checkConfig(config)
        provider_mapping = self.config["provider_mapping"]
        #        response_trailer = config.get("response_trailer", "")
        self._verbose = config.get("verbose", 2)

        lockStorage = config.get("locksmanager")
        if lockStorage is True:
            lockStorage = LockStorageDict()

        if not lockStorage:
            locksManager = None
        else:
            locksManager = LockManager(lockStorage)

        propsManager = config.get("propsmanager")
        if not propsManager:
            # Normalize False, 0 to None
            propsManager = None
        elif propsManager is True:
            propsManager = PropertyManager()

        mount_path = config.get("mount_path")

        # Instantiate DAV resource provider objects for every share
        self.providerMap = {}
        for (share, provider) in provider_mapping.items():
            # Make sure share starts with, or is, '/'
            share = "/" + share.strip("/")

            # We allow a simple string as 'provider'. In this case we interpret
            # it as a file system root folder that is published.
            if isinstance(provider, basestring):
                provider = FilesystemProvider(provider)

            assert isinstance(provider, DAVProvider)

            provider.setSharePath(share)
            if mount_path:
                provider.setMountPath(mount_path)

            # TODO: someday we may want to configure different lock/prop managers per provider
            provider.setLockManager(locksManager)
            provider.setPropManager(propsManager)

            self.providerMap[share] = {
                "provider": provider,
                "allow_anonymous": False
            }

        # Define WSGI application stack
        application = RequestResolver()

        domain_controller = None
        dir_browser = config.get("dir_browser", {})
        middleware_stack = config.get("middleware_stack", [])

        # Replace WsgiDavDirBrowser to custom class for backward compatibility only
        # In normal way you should insert it into middleware_stack
        if dir_browser.get("enable",
                           True) and "app_class" in dir_browser.keys():
            config["middleware_stack"] = [
                m if m != WsgiDavDirBrowser else dir_browser['app_class']
                for m in middleware_stack
            ]

        for mw in middleware_stack:
            if mw.isSuitable(config):
                if self._verbose >= 2:
                    print "Middleware %s is suitable" % mw
                application = mw(application, config)

                if issubclass(mw, HTTPAuthenticator):
                    domain_controller = application.getDomainController()
                    # check anonymous access
                    for share, data in self.providerMap.items():
                        if application.allowAnonymousAccess(share):
                            data['allow_anonymous'] = True
            else:
                if self._verbose >= 2:
                    print "Middleware %s is not suitable" % mw

        # Print info
        if self._verbose >= 2:
            print "Using lock manager: %r" % locksManager
            print "Using property manager: %r" % propsManager
            print "Using domain controller: %s" % domain_controller
            print "Registered DAV providers:"
            for share, data in self.providerMap.items():
                hint = " (anonymous)" if data['allow_anonymous'] else ""
                print "  Share '%s': %s%s" % (share, provider, hint)
        if self._verbose >= 1:
            for share, data in self.providerMap.items():
                if data['allow_anonymous']:
                    # TODO: we should only warn here, if --no-auth is not given
                    print "WARNING: share '%s' will allow anonymous access." % share

        self._application = application
コード例 #3
0
ファイル: dbsite.py プロジェクト: Sushant/neo
class Site:
    def __init__(self, site_id):
        self._id = site_id
        self._status = SiteStatus.UP
        self._init_variables()
        self._lm = LockManager(self._site_variables.keys())

    def _init_variables(self):
        self._site_variables = {}
        for i in xrange(1, 21):
            var_id = 'x' + str(i)
            # value  = int('10' + str(i))
            value = 10 * i
            if i % 2 == 0:  # Even numbered variables are replicated
                self._site_variables[var_id] = Variable(var_id, value)
            elif (i + 1) % 10 == self._id:
                self._site_variables[var_id] = Variable(var_id, value)

    def get_id(self):
        return self._id

    def dump(self, var=None):
        if var:
            if var in self._site_variables:
                return {var: self._site_variables[var].read_committed()}
            print 'Variable doesn\'t exist on site'
        else:
            var_dict = {}
            for var, obj in self._site_variables.iteritems():
                var_dict[var] = obj.read_committed()
            return var_dict

    def dump_state(self):
        return self._site_variables

    def _load_state(self, state):
        for var_id, var_obj in state.iteritems():
            if var_id in self._site_variables:
                uncommitted_values = var_obj.dump_uncommitted()
                committed_values = var_obj.dump_committed()
                new_var_obj = Variable(var_id, committed_values[0])
                new_var_obj.load_state(committed_values, uncommitted_values)
                self._site_variables[var_id] = new_var_obj

    def is_up(self):
        return self._status == SiteStatus.UP

    def fail(self):
        if self.is_up():
            self._status = SiteStatus.DOWN
            self._lm.release_all_locks()

    def recover(self, state):
        if not self.is_up():
            #self._load_state(state)
            for var_id, var_obj in self._site_variables.iteritems():
                if var_obj.is_replicated():
                    var_obj.recover()
            self._status = SiteStatus.UP

    def write(self, transaction, variable, value):
        if variable in self._site_variables:
            self._lm.acquire_write_lock(transaction, variable)
            self._site_variables[variable].write(transaction, value)
        else:
            print 'Variable doesn\'t exist on site'

    def read(self, transaction, var_id):
        if var_id in self._site_variables:
            if self._site_variables[var_id].is_recovering():
                return None
            if self._lm.txn_has_write_lock(transaction, var_id):
                return self._site_variables[var_id].read_uncommitted(
                    transaction)
            else:
                if transaction.get_type() != TransactionType.READ_ONLY:
                    self._lm.acquire_read_lock(transaction, var_id)
                return self._site_variables[var_id].read_committed(transaction)
        else:
            return None

    def commit(self, transaction, timestamp):
        for var in self._site_variables.keys():
            if self._lm.txn_has_write_lock(transaction, var):
                self._site_variables[var].commit(timestamp)
        self._lm.release_all_locks(transaction)

    def abort(self, transaction):
        self._lm.release_all_locks(transaction)
コード例 #4
0
ファイル: dbsite.py プロジェクト: Sushant/neo
 def __init__(self, site_id):
     self._id = site_id
     self._status = SiteStatus.UP
     self._init_variables()
     self._lm = LockManager(self._site_variables.keys())
コード例 #5
0
    def __init__(self, config):
        self.config = config

        util.initLogging(config["verbose"], config.get("enable_loggers", []))

        util.log("Default encoding: %s (file system: %s)" %
                 (sys.getdefaultencoding(), sys.getfilesystemencoding()))

        # Evaluate configuration and set defaults
        _checkConfig(config)
        provider_mapping = self.config["provider_mapping"]
        #        response_trailer = config.get("response_trailer", "")
        self._verbose = config.get("verbose", 2)

        lockStorage = config.get("locksmanager")
        if lockStorage is True:
            lockStorage = LockStorageDict()

        if not lockStorage:
            locksManager = None
        else:
            locksManager = LockManager(lockStorage)

        propsManager = config.get("propsmanager")
        if not propsManager:
            # Normalize False, 0 to None
            propsManager = None
        elif propsManager is True:
            propsManager = PropertyManager()

        mount_path = config.get("mount_path")

        user_mapping = self.config.get("user_mapping", {})
        domainController = config.get(
            "domaincontroller") or WsgiDAVDomainController(user_mapping)
        isDefaultDC = isinstance(domainController, WsgiDAVDomainController)

        # authentication fields
        authacceptbasic = config.get("acceptbasic", True)
        authacceptdigest = config.get("acceptdigest", True)
        authdefaultdigest = config.get("defaultdigest", True)

        # Check configuration for NTDomainController
        # We don't use 'isinstance', because include would fail on non-windows boxes.
        wdcName = "NTDomainController"
        if domainController.__class__.__name__ == wdcName:
            if authacceptdigest or authdefaultdigest or not authacceptbasic:
                util.warn(
                    "WARNING: %s requires basic authentication.\n\tSet acceptbasic=True, acceptdigest=False, defaultdigest=False"
                    % wdcName)

        # Instantiate DAV resource provider objects for every share
        self.providerMap = {}
        for (share, provider) in provider_mapping.items():
            # Make sure share starts with, or is, '/'
            share = "/" + share.strip("/")

            # We allow a simple string as 'provider'. In this case we interpret
            # it as a file system root folder that is published.
            if isinstance(provider, basestring):
                provider = FilesystemProvider(provider)

            assert isinstance(provider, DAVProvider)

            provider.setSharePath(share)
            if mount_path:
                provider.setMountPath(mount_path)

            # TODO: someday we may want to configure different lock/prop managers per provider
            provider.setLockManager(locksManager)
            provider.setPropManager(propsManager)

            self.providerMap[share] = provider

        if self._verbose >= 2:
            print "Using lock manager: %r" % locksManager
            print "Using property manager: %r" % propsManager
            print "Using domain controller: %s" % domainController
            print "Registered DAV providers:"
            for share, provider in self.providerMap.items():
                hint = ""
                if isDefaultDC and not user_mapping.get(share):
                    hint = " (anonymous)"
                print "  Share '%s': %s%s" % (share, provider, hint)

        # If the default DC is used, emit a warning for anonymous realms
        if isDefaultDC and self._verbose >= 1:
            for share in self.providerMap:
                if not user_mapping.get(share):
                    # TODO: we should only warn here, if --no-auth is not given
                    print "WARNING: share '%s' will allow anonymous access." % share

        # Define WSGI application stack
        application = RequestResolver()

        if config.get("dir_browser") and config["dir_browser"].get(
                "enable", True):
            application = WsgiDavDirBrowser(application)

        application = HTTPAuthenticator(application, domainController,
                                        authacceptbasic, authacceptdigest,
                                        authdefaultdigest)
        application = ErrorPrinter(application, catchall=False)

        application = WsgiDavDebugFilter(application, config)

        self._application = application
コード例 #6
0
ファイル: dbsite.py プロジェクト: Sushant/neo
 def __init__(self, site_id):
   self._id     = site_id
   self._status = SiteStatus.UP
   self._init_variables()
   self._lm     = LockManager(self._site_variables.keys())
コード例 #7
0
ファイル: dbsite.py プロジェクト: Sushant/neo
class Site:
  def __init__(self, site_id):
    self._id     = site_id
    self._status = SiteStatus.UP
    self._init_variables()
    self._lm     = LockManager(self._site_variables.keys())


  def _init_variables(self):
    self._site_variables = {}
    for i in xrange(1, 21):
      var_id = 'x' + str(i)
      # value  = int('10' + str(i))
      value = 10 * i
      if i % 2 == 0:  # Even numbered variables are replicated
        self._site_variables[var_id] = Variable(var_id, value)
      elif (i + 1) % 10 == self._id:
        self._site_variables[var_id] = Variable(var_id, value)


  def get_id(self):
    return self._id


  def dump(self, var=None):
    if var:
      if var in self._site_variables:
        return {var: self._site_variables[var].read_committed()}
      print 'Variable doesn\'t exist on site'
    else:
      var_dict = {}
      for var, obj in self._site_variables.iteritems():
        var_dict[var] = obj.read_committed()
      return var_dict


  def dump_state(self):
    return self._site_variables


  def _load_state(self, state):
    for var_id, var_obj in state.iteritems():
      if var_id in self._site_variables:
        uncommitted_values = var_obj.dump_uncommitted()
        committed_values = var_obj.dump_committed()
        new_var_obj = Variable(var_id, committed_values[0])
        new_var_obj.load_state(committed_values, uncommitted_values)
        self._site_variables[var_id] = new_var_obj

  def is_up(self):
    return self._status == SiteStatus.UP


  def fail(self):
    if self.is_up():
      self._status = SiteStatus.DOWN
      self._lm.release_all_locks()


  def recover(self, state):
    if not self.is_up():
      #self._load_state(state)
      for var_id, var_obj in self._site_variables.iteritems():
        if var_obj.is_replicated():
          var_obj.recover()
      self._status = SiteStatus.UP


  def write(self, transaction, variable, value):
    if variable in self._site_variables:
      self._lm.acquire_write_lock(transaction, variable)
      self._site_variables[variable].write(transaction, value)
    else:
      print 'Variable doesn\'t exist on site'


  def read(self, transaction, var_id):
    if var_id in self._site_variables:
      if self._site_variables[var_id].is_recovering():
        return None
      if self._lm.txn_has_write_lock(transaction, var_id):
        return self._site_variables[var_id].read_uncommitted(transaction)
      else:
        if transaction.get_type() != TransactionType.READ_ONLY:
          self._lm.acquire_read_lock(transaction, var_id)
        return self._site_variables[var_id].read_committed(transaction)
    else:
      return None


  def commit(self, transaction, timestamp):
    for var in self._site_variables.keys():
      if self._lm.txn_has_write_lock(transaction, var):
        self._site_variables[var].commit(timestamp)
    self._lm.release_all_locks(transaction)


  def abort(self, transaction):
    self._lm.release_all_locks(transaction)
コード例 #8
0
            QMessageBox.warning(None, 'Error', 'Failed to stop waypoint record!', QMessageBox.Ok)
            return
        self.ui.start_button.setEnabled(True)
        self.ui.stop_button.setEnabled(False)

    def closeEvent(self, event):
        self.save_ui_info()

    def load_ui_info(self):
        settings = SettingsManager(CONFIG_FILE)
        settings.load(self.ui.save_path_edit)

    def save_ui_info(self):
        settings = SettingsManager(CONFIG_FILE)
        settings.save(self.ui.save_path_edit)

if __name__=='__main__':
    rospy.init_node('waypoint_recorder')

    app = QApplication(sys.argv)

    lock_manager = LockManager(LOCK_PATH)
    if not lock_manager.get_lock():
        QMessageBox.warning(None, 'Warning', 'Another same process is running. If not, please delete lock file [ %s ].' % lock_manager.get_lock_path(), QMessageBox.Ok)
        sys.exit(1)
    
    win = WaypointRecorderDialog()
    win.show()
    ret = app.exec_()
    lock_manager.release_lock()
    sys.exit(ret)
コード例 #9
0
ファイル: requestinfo.py プロジェクト: tjdett/easydav
            owner = ET.tostring(owner)
        else:
            owner = '<D:owner xmlns:D="DAV:" />'
        
        return shared, owner 

if __name__ == '__main__':
    print "Unit tests"
    
    import tempfile, shutil
    config.root_dir = tempfile.mkdtemp(prefix = 'easydav-')
    testfile = os.path.join(config.root_dir, u'testfile%ä')
    
    open(testfile, 'w').write('foo')
    
    mgr = LockManager()
    lock = mgr.create_lock(u'testfile%ä', True, '', -1, 100)
    
    req = RequestInfo({
        'HTTP_HOST': 'example.com',
        'REQUEST_URI': '/webdav.cgi/testfile%25%C3%A4',
        'PATH_INFO': '/testfile%\xc3\xa4',
        'HTTP_IF': '(<' + lock.urn + '>)',
        'wsgi.input': None
    })
    
    # When holding the lock
    assert req.get_request_path('r')
    assert req.get_request_path('w')
    
    mgr.release_lock(lock.path, lock.urn)