Example #1
0
        def my_import(mod):
            if verbosity > 1:
                print(NOTICE("Check for %s" % mod))
            # check if module exists before importing
            try:
                importlib.import_module(mod)
                t = __import__(mod, [], [], [" "])
            except (ImportError, AttributeError) as e:
                if str(e).startswith('No module named'):
                    try:
                        exc_type, exc_value, exc_traceback = sys.exc_info()
                        try:
                            if exc_traceback.tb_next.tb_next is None:
                                return False
                        except AttributeError:
                            pass
                    finally:
                        exc_traceback = None

                if verbosity > 1:
                    if verbosity > 2:
                        traceback.print_exc()
                    print(ERROR("Cannot import module '%s': %s." % (mod, e)))

                return False

            if hasattr(t, "run"):
                if verbosity > 1:
                    print(NOTICE2("Found script '%s' ..." % mod))
                return t
            else:
                if verbosity > 1:
                    print(ERROR2("Find script '%s' but no run() function found." % mod))
Example #2
0
def get_project_root():
    """ get the project root directory """
    django_settings_module = os.environ.get('DJANGO_SETTINGS_MODULE')
    if not django_settings_module:
        module_str = settings.SETTINGS_MODULE
    else:
        module_str = django_settings_module.split(".")[0]
    mod = importlib.import_module(module_str)
    return os.path.dirname(os.path.abspath(mod.__file__))
Example #3
0
def get_project_root():
    """ get the project root directory """
    django_settings_module = os.environ.get('DJANGO_SETTINGS_MODULE')
    if not django_settings_module:
        module_str = settings.SETTINGS_MODULE
    else:
        module_str = django_settings_module.split(".")[0]
    mod = importlib.import_module(module_str)
    return os.path.dirname(os.path.abspath(mod.__file__))
 def test_error_logging(self):
     # Ensure command errors are properly logged and reraised
     from django_extensions.management.base import logger
     logger.addHandler(MockLoggingHandler())
     module_path = "tests.management.commands.error_raising_command"
     module = importlib.import_module(module_path)
     error_raising_command = module.Command()
     self.assertRaises(Exception, error_raising_command.execute)
     handler = logger.handlers[0]
     self.assertEqual(len(handler.messages['error']), 1)
 def test_error_logging(self):
     # Ensure command errors are properly logged and reraised
     from django_extensions.management.base import logger
     logger.addHandler(MockLoggingHandler())
     module_path = "tests.management.commands.error_raising_command"
     module = importlib.import_module(module_path)
     error_raising_command = module.Command()
     self.assertRaises(Exception, error_raising_command.execute)
     handler = logger.handlers[0]
     self.assertEqual(len(handler.messages['error']), 1)
Example #6
0
        def my_import(mod):
            if verbosity > 1:
                print(NOTICE("Check for %s" % mod))
            # check if module exists before importing
            try:
                importlib.import_module(mod)
                t = __import__(mod, [], [], [" "])
            except (ImportError, AttributeError) as e:
                if str(e).startswith('No module named'):
                    try:
                        exc_type, exc_value, exc_traceback = sys.exc_info()
                        try:
                            if exc_traceback.tb_next.tb_next is None:
                                return False
                        except AttributeError:
                            pass
                    finally:
                        exc_traceback = None

                if verbosity > 1:
                    if verbosity > 2:
                        traceback.print_exc()
                    print(ERROR("Cannot import module '%s': %s." % (mod, e)))

                return False

            #if verbosity > 1:
            #    print(NOTICE("Found script %s ..." % mod))
            if hasattr(t, "run"):
                if verbosity > 1:
                    print(NOTICE2("Found script '%s' ..." % mod))
                #if verbosity > 1:
                #    print(NOTICE("found run() in %s. executing..." % mod))
                return t
            else:
                if verbosity > 1:
                    print(
                        ERROR2(
                            "Find script '%s' but no run() function found." %
                            mod))
Example #7
0
    def handle(self, *args, **options):
        if len(args) > 1:
            raise CommandError("extra arguments supplied")

        if len(args) < 1:
            raise CommandError("session_key argument missing")

        key = args[0].lower()

        if not set(key).issubset(set(VALID_KEY_CHARS)):
            raise CommandError("malformed session key")

        engine = importlib.import_module(settings.SESSION_ENGINE)

        if not engine.SessionStore().exists(key):
            print("Session Key does not exist. Expired?")
            return

        session = engine.SessionStore(key)
        data = session.load()

        print('Session to Expire: %s' % session.get_expiry_date())
        print('Raw Data: %s' % data)

        uid = data.get('_auth_user_id', None)

        if uid is None:
            print('No user associated with session')
            return

        print("User id: %s" % uid)

        User = get_user_model()
        try:
            user = User.objects.get(pk=uid)
        except User.DoesNotExist:
            print("No user associated with that id.")
            return

        username_field = 'username'

        if hasattr(User, 'USERNAME_FIELD') and User.USERNAME_FIELD is not None:
            username_field = User.USERNAME_FIELD

        for key in [username_field, 'email', 'first_name', 'last_name']:
            print("%s: %s" % (key, getattr(user, key)))
Example #8
0
    def get_field_db_type(self, description, field=None, table_name=None):
        from django.db import models
        # DB-API cursor.description
        #(name, type_code, display_size, internal_size, precision, scale, null_ok) = description
        type_code = description[1]
        if type_code in self.DATA_TYPES_REVERSE_OVERRIDE:
            reverse_type = self.DATA_TYPES_REVERSE_OVERRIDE[type_code]
        else:
            try:
                try:
                    reverse_type = self.introspection.data_types_reverse[type_code]
                except AttributeError:
                    # backwards compatibility for before introspection refactoring (r8296)
                    reverse_type = self.introspection.DATA_TYPES_REVERSE.get(type_code)
            except KeyError:
                reverse_type = self.get_field_db_type_lookup(type_code)
                if not reverse_type:
                    # type_code not found in data_types_reverse map
                    key = (self.differences[-1][:2], description[:2])
                    if key not in self.unknown_db_fields:
                        self.unknown_db_fields[key] = 1
                        self.add_difference('comment', "Unknown database type for field '%s' (%s)" % (description[0], type_code))
                    return None

        kwargs = {}
        if type_code == 16946 and field and getattr(field, 'geom_type', None) == 'POINT':
            reverse_type = 'django.contrib.gis.db.models.fields.PointField'

        if isinstance(reverse_type, tuple):
            kwargs.update(reverse_type[1])
            reverse_type = reverse_type[0]

        if reverse_type == "CharField" and description[3]:
            kwargs['max_length'] = description[3]

        if reverse_type == "DecimalField":
            kwargs['max_digits'] = description[4]
            kwargs['decimal_places'] = description[5] and abs(description[5]) or description[5]

        if description[6]:
            kwargs['blank'] = True
            if reverse_type not in ('TextField', 'CharField'):
                kwargs['null'] = True

        if field and getattr(field, 'geography', False):
            kwargs['geography'] = True

        if '.' in reverse_type:
            from django_extensions.compat import importlib
            module_path, package_name = reverse_type.rsplit('.', 1)
            module = importlib.import_module(module_path)
            field_db_type = getattr(module, package_name)(**kwargs).db_type(connection=connection)
        else:
            field_db_type = getattr(models, reverse_type)(**kwargs).db_type(connection=connection)

        tablespace = field.db_tablespace
        if not tablespace:
            tablespace = "public"
        if (tablespace, table_name, field.column) in self.unsigned:
            field_db_type = '%s %s' % (field_db_type, self.unsigned_suffix)

        return field_db_type