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)
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)
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',
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)