예제 #1
0
 def opt_version(self):
     """Print version information and exit
     """
     print('Mamba Framework v{}'.format(version.short()))
     print('Twisted version: v{}'.format(copyright.version))
     print('Storm ORM version v{}'.format(storm_version))
     print(mamba_copyright.copyright)
예제 #2
0
    def dump(self, model_manager, full=False):
        """
        Dumps the full database

        :param model_manager: the model manager from mamba application
        :type model_manager: :class:`~mamba.application.model.ModelManager`
        :param full: should be dumped full?
        :type full: bool
        """

        references = []
        indexes = []
        sql = [
            '--',
            '-- Mamba SQL dump {}'.format(version.short()),
            '--',
            '-- Database Backend: {}'.format(self.backend),
            '-- Host: {}\tDatabase: {}'.format(self.host, self.database)
        ]
        app = config.Application('config/application.json')
        try:
            sql += [
                '-- Application: {}'.format(app.name.decode('utf-8')),
                '-- Application Version: {}'.format(app.version),
                '-- Application Description: {}'.format(
                    app.description.encode('utf-8')
                )
            ]
        except AttributeError:
            pass

        sql += [
            '-- ---------------------------------------------------------',
            '-- Dumped on: {}'.format(datetime.datetime.now().isoformat()),
            '--'
        ]

        if self.backend == 'mysql':
            sql += [
                '-- Disable foreign key checks for table creation',
                '--',
                'SET FOREIGN_KEY_CHECKS = 0;'
            ]

        if full is False:
            sql.append('')
            for model in model_manager.get_models().values():
                if not model.get('object').on_schema():
                    continue
                if self.backend == 'postgres':
                    references.append(model.get('object').dump_references())

                if self.backend in ('postgres', 'sqlite'):
                    if model.get('object').dump_indexes():
                        indexes.append(model.get('object').dump_indexes())

                sql += [model.get('object').dump_table() + '\n']
        else:
            for model in model_manager.get_models().values():
                model_object = model.get('object')

                if not model_object.on_schema():
                    continue

                sql.append('--')
                sql.append('-- Table structure for table {}'.format(
                    model_object.__storm_table__
                ))
                sql.append('--\n')
                sql.append(model_object.dump_table())
                sql.append('--')
                sql.append('-- Dumping data for table {}'.format(
                    model_object.__storm_table__
                ))
                sql.append('--\n')
                sql.append(model_object.dump_data())

                if self.backend == 'postgres':
                    references.append(model_object.dump_references())

                if self.backend in ('postgres', 'sqlite'):
                    if model.get('object').dump_indexes():
                        indexes.append(model_object.dump_indexes())

        if self.backend == 'mysql':
            sql += [
                '--',
                '-- Enable foreign key checks',
                '--',
                'SET FOREIGN_KEY_CHECKS = 1;'
            ]

        for reference in references:
            sql.append(reference)

        for index in indexes:
            sql.append(index)

        return '\n'.join(sql)
예제 #3
0
    def dump(self, model_manager, full=False):
        """
        Dumps the full database

        :param model_manager: the model manager from mamba application
        :type model_manager: :class:`~mamba.application.model.ModelManager`
        :param full: should be dumped full?
        :type full: bool
        """

        references = []
        indexes = []
        sql = [
            '--',
            '-- Mamba SQL dump {}'.format(version.short()),
            '--',
            '-- Database Backend: {}'.format(self.backend),
            '-- Host: {}\tDatabase: {}'.format(self.host, self.database)
        ]
        app = config.Application('config/application.json')
        try:
            sql += [
                '-- Application: {}'.format(app.name.decode('utf-8')),
                '-- Application Version: {}'.format(app.version),
                '-- Application Description: {}'.format(
                    app.description.encode('utf-8')
                )
            ]
        except AttributeError:
            pass

        sql += [
            '-- ---------------------------------------------------------',
            '-- Dumped on: {}'.format(datetime.datetime.now().isoformat()),
            '--'
        ]

        if self.backend == 'mysql':
            sql += [
                '-- Disable foreign key checks for table creation',
                '--',
                'SET FOREIGN_KEY_CHECKS = 0;'
            ]

        if full is False:
            sql.append('')
            for model in model_manager.get_models().values():
                if not model.get('object').on_schema():
                    continue
                if self.backend == 'postgres':
                    references.append(model.get('object').dump_references())

                if self.backend in ('postgres', 'sqlite'):
                    if model.get('object').dump_indexes():
                        indexes.append(model.get('object').dump_indexes())

                sql += [model.get('object').dump_table() + '\n']
        else:
            for model in model_manager.get_models().values():
                model_object = model.get('object')

                if not model_object.on_schema():
                    continue

                sql.append('--')
                sql.append('-- Table structure for table {}'.format(
                    model_object.__storm_table__
                ))
                sql.append('--\n')
                sql.append(model_object.dump_table())
                sql.append('--')
                sql.append('-- Dumping data for table {}'.format(
                    model_object.__storm_table__
                ))
                sql.append('--\n')
                sql.append(model_object.dump_data())

                if self.backend == 'postgres':
                    references.append(model_object.dump_references())

                if self.backend in ('postgres', 'sqlite'):
                    if model.get('object').dump_indexes():
                        indexes.append(model_object.dump_indexes())

        if self.backend == 'mysql':
            sql += [
                '--',
                '-- Enable foreign key checks',
                '--',
                'SET FOREIGN_KEY_CHECKS = 1;'
            ]

        for reference in references:
            sql.append(reference)

        for index in indexes:
            sql.append(index)

        return '\n'.join(sql)
예제 #4
0
    raise RuntimeError("Mamba requires Python 2.7 or later.")

from setuptools import setup, find_packages

from mamba import version

long_description = '''
This is a new release of Mamba the web applications framework for Twisted. Read
the `relnotes <https://github.com/DamnWidget/mamba/blob/master/docs/relnotes/
{}.rst>`_ to know more about this specific Mamba release.

If you like to live at the edge, you can also install the in-development
version <https://github.com/DamnWidget/mamba.git>

For more information visit the `Mamba website <http://www.pymamba.com>`_
'''.format(version.short())

setup(
    name='mamba-framework',
    version=version.short(),
    description=('Mamba is a high-level RAD Web Applications framework '
                 'based on Twisted Web that uses Storm ORM as database '
                 'access layer'),
    long_description=long_description,
    author='Oscar Campos',
    author_email='*****@*****.**',
    url='http://www.pymamba.com',
    license='GPL',
    packages=find_packages(),
    package_data={'mamba': [
        'templates/*.tpl',
예제 #5
0
    def dump(self, model_manager, scheme=None, full=False):
        """
        Dumps the full database

        :param model_manager: the model manager from mamba application
        :type model_manager: :class:`~mamba.application.model.ModelManager`
        :param scheme: dump which scheme? if None just everything
        :type scheme: str
        :param full: should be dumped full?
        :type full: bool
        """

        references = []
        indexes = []
        backend, host, database = self._parse_config_scheme(scheme)
        sql = [
            '--',
            '-- Mamba SQL dump {}'.format(version.short()),
            '--',
            '-- Database Backend: {}'.format(backend),
            '-- Host: {}\tDatabase: {}'.format(host, database)
        ]
        app = config.Application('config/application.json')
        try:
            sql += [
                '-- Application: {}'.format(app.name.decode('utf-8')),
                '-- Application Version: {}'.format(app.version),
                '-- Application Description: {}'.format(
                    app.description.encode('utf-8')
                )
            ]
        except AttributeError:
            pass

        sql += [
            '-- ---------------------------------------------------------',
            '-- Dumped on: {}'.format(datetime.datetime.now().isoformat()),
            '--'
        ]

        if self.backend == 'mysql':
            sql += [
                '-- Disable foreign key checks for table creation',
                '--',
                'SET FOREIGN_KEY_CHECKS = 0;'
            ]

        if full is False:
            self._dump_scheme(sql, references, indexes, model_manager, scheme)
        else:
            self._dump_data(sql, references, indexes, model_manager, scheme)

        if self.backend == 'mysql':
            sql += [
                '--',
                '-- Enable foreign key checks',
                '--',
                'SET FOREIGN_KEY_CHECKS = 1;'
            ]

        for reference in references:
            sql.append(reference)

        for index in indexes:
            sql.append(index)

        return '\n'.join(sql)