def execute(self, models, *args, **kwargs):
        models = filter(bool, [m.strip() for m in models.split(',')])

        load_apps()

        for path, cls in _registered_models.items():
            if not hasattr(cls, 'query') or cls.query().count() == 0 or (models and path not in models):
                continue

            print('%s: %s objects' % (path, cls.query().count()))

            for obj in cls.query():
                sys.stdout.write('.'); sys.stdout.flush()
                model_register_dependents.send(instance=obj, for_all=True, sender=self)

            print('')
Exemplo n.º 2
0
    def execute(self, *args, **kwargs):
        # Loads installed applications
        for app in load_apps():
            print('Application %s loaded.'%app.__name__)

        # Runs the shell istance
        shell = args[0] if args else 'ipython'
        try:
            getattr(self, shell)()
        except AttributeError:
            print('Invalid shell. Try "bpython", "ipython" or "notebook".')
Exemplo n.º 3
0
    def load_from_applications(self, *apps):
        """
        Loads applications given as arguments or all of installed applications if empty.
        """
        apps = apps or load_apps()
        for mod in apps:
            try:
                rest_mod = import_anything('rest', mod)
            except ImportError as e:
                continue

            for attr in dir(rest_mod):
                cls = getattr(rest_mod, attr)
                if isinstance(cls, type) and issubclass(cls, BaseModule):
                    self.register_module(getattr(rest_mod, attr))
Exemplo n.º 4
0
def run(settings, port, server_class, verbosity, *args):
    if verbosity >= 1:
        print('\nStarting a instance for the service "%s".'%args[0])

    # Loads installed applications
    for app in load_apps():
        if verbosity >= 1:
            print('Application %s loaded.'%app.__name__)

    # Running the service
    service = get_service(settings, args[0])
    service.port = int(port or service.port)

    server = get_server(server_class, service)
    server.run()
Exemplo n.º 5
0
    def execute(self, *args, **kwargs):
        if not args and not settings.TEST_DEFAULT_APPS:
            sys.exit('You must inform the application name to test. It can be a list of applications separated by commas.')

        # Setting test mode to the settings
        settings._TESTING = True

        # Sets a different database setting
        old_databases = settings.DATABASES.copy()
        for k in settings.DATABASES:
            settings.DATABASES[k]['name'] = settings.DATABASES[k]['name'] + '_test_' + get_random_string()

            # Creates the test database
            conn = get_connection(k, force_reopen=True)
            conn.create_database()

        # Default nose arguments
        argv = ['nosetests','--with-doctest','--verbosity=%s'%kwargs['verbosity']]
        if kwargs.get('with_coverage',None):
            argv.append('--with-coverage')
        if settings.TEST_ADDITIONAL_ARGS:
            argv.extend(settings.TEST_ADDITIONAL_ARGS)
        #if test_case:
        #    argv.append('--testmatch=%s\.txt'%test_case) # FIXME: it's not working

        # Gets informed application
        bits = (args[0] if args else settings.TEST_DEFAULT_APPS).split(',')
        for app in load_apps():
            if not [b for b in bits if b.split(':')[0] == app._app_in_london]:
                continue

            # TODO The sign ":" is for tell a specific test file instead of whole application. But this is not yet working.

            # Finds the test directory
            tests_dir = os.path.join(app.__path__[0], 'tests')
            if not os.path.exists(tests_dir):
                sys.exit('There is no folder "tests" in the given application.')

            sys.path.insert(0, tests_dir)
            argv.append('--where=' + tests_dir)

        # Finally, running the test program
        program = TestProgram(argv=argv, exit=False)

        # Drops the test databases
        for k in settings.DATABASES:
            conn = get_connection(k)
            conn.drop_database()
Exemplo n.º 6
0
def get_commands_modules():
    global _commands_modules

    if _commands_modules is not None:
        return _commands_modules

    _commands_modules = []

    # COMMANDS_DIRS
    if getattr(settings, 'COMMANDS_MODULES', None):
        _commands_modules.extend(settings.COMMANDS_MODULES)

    # Applications directories
    from london.core import load_apps
    for app in load_apps():
        path = os.path.join(app.__path__[0], 'commands')
        if os.path.exists(path):
            _commands_modules.append('%s.%s'%(app.__name__,'commands'))

    # This directory
    _commands_modules.append('london.commands')

    return _commands_modules
Exemplo n.º 7
0
def template_dirs_from_apps(**kwargs):
    def template_dir(app_mod):
        return os.path.join(app_mod.__path__[0], "templates")

    return [FileSystemLoader(template_dir(app)) for app in load_apps()]
Exemplo n.º 8
0
    def execute(self, *args, **kwargs):
        load_apps()

        from london.apps.auth.models import User

        if kwargs.get('username', None):
            if User.query().filter(username=kwargs['username']).count():
                sys.exit('User "%s" already exists.'%kwargs['username'])
        elif kwargs.get('email', None):
            if User.query().filter(email=kwargs['email']).count():
                sys.exit('User with e-mail "%s" already exists.'%kwargs['email'])
            kwargs['username'] = slugify(kwargs['email'])

        fields = {}

        # Username
        if kwargs.get('username', None):
            fields['username'] = kwargs['username']
        else:
            fields['username'] = raw_input('Username: '******'username'].strip():
                print('Invalid username.')
                sys.exit(1)

        # Password
        if kwargs.get('password', None):
            fields['password'] = kwargs['password']
        else:
            fields['password'] = raw_input('Password (empty for random generation): ')
            if not fields['password']:
                fields['password'] = get_random_string()
                print('The password "%s" was generated.'%fields['password'])
            elif fields['password'] != raw_input('... again, for confirmation: '):
                print('Password not apropriately confirmed.')
                sys.exit(1)

        # E-mail address
        if kwargs.get('email', None):
            fields['email'] = kwargs['email']
        else:
            fields['email'] = raw_input('E-mail address: ')
            if not fields['email'].strip():
                print('Invalid e-mail address.')
                sys.exit(1)

        # Is staff?
        if kwargs['is_staff']:
            fields['is_staff'] = kwargs['is_staff']
        else:
            fields['is_staff'] = raw_input('Can access admin (staff)?: ').lower() == 'yes'

        # Is superuser?
        if kwargs['is_superuser']:
            fields['is_superuser'] = kwargs['is_superuser']
        else:
            fields['is_superuser'] = raw_input('Superuser?: ').lower() == 'yes'

        # Checks if a user with that username already exists.
        if User.query().filter(username=fields['username']).count():
            print('Another user exists with the username "%s".'%fields['username'])
            sys.exit(1)
        
        user = User.query().create(**fields)
        print('The user "%s" was created with password "%s"'%(fields['username'], fields['password']))