def handle(self, *args, **options):
        """Handle the command"""
        # get the command arguments
        self.verbosity = int(options.get('verbosity', 1))
        force = options['force']
        imports = self.get_imports(options['import'])

        # Import the CurrencyHandler and get an instance
        handler = self.get_handler(options)

        self.log(logging.INFO, "Getting currency data from %s", handler.endpoint)
        timestamp = datetime.now().isoformat()

        # find available codes
        if imports:
            allcodes = set(handler.get_allcurrencycodes())
            reqcodes = set(imports)
            available = reqcodes & allcodes
            unavailable = reqcodes - allcodes
        else:
            self.log(logging.WARNING, "Importing all. Some currencies may be out-of-date (MTL) or spurious (XPD)")
            available = handler.get_allcurrencycodes()
            unavailable = None

        for code in available:
            obj, created = Currency._default_manager.get_or_create(code=code)
            name = handler.get_currencyname(code)
            description = "%r (%s)" % (name, code)
            if created or force:
                kwargs = {}
                if created:
                    kwargs['is_active'] = False
                    msg = "Creating %s"
                    obj.info.update( {'Created': timestamp} )
                else:
                    msg = "Updating %s"
                obj.info.update( {'Modified': timestamp} )

                if name:
                    kwargs['name'] = name

                symbol = handler.get_currencysymbol(code)
                if symbol:
                    kwargs['symbol'] = symbol

                try:
                    obj.info.update(handler.get_info(code))
                except AttributeError:
                    pass

                kwargs['info'] = obj.info

                self.log(logging.INFO, msg, description)
                Currency._default_manager.filter(pk=obj.pk).update(**kwargs)
            else:
                msg = "Skipping %s"
                self.log(logging.INFO, msg, description)

        if unavailable:
            raise ImproperlyConfigured("Currencies %s not found in %s source" % (unavailable, handler.name))
Handle the command