Example #1
0
 def test_reload_test(self):
     if tools.config.options['test_enable']:
         cr = self.cr
         module_info = modules.load_information_from_description_file(
             "l10n_pe_retest")
         for dat in module_info.get('depends', []):
             cr.commit()
             try:
                 mod_info = modules.load_information_from_description_file(
                     dat)
                 for test_module in mod_info.get('test', []):
                     if test_module in self.test_deprecate:
                         continue
                     pathname = os.path.join(dat, test_module)
                     fp = tools.file_open(pathname)
                     _logger.info(
                         "Try againt Test: {} of Module: {}".format(
                             test_module, dat))
                     try:
                         tools.convert_yaml_import(cr,
                                                   dat,
                                                   fp,
                                                   kind="test",
                                                   idref={},
                                                   mode="init")
                     except BaseException:
                         _logger.exception(
                             'module %s: an exception occurred in a test',
                             dat)
             finally:
                 if tools.config.options['test_commit']:
                     cr.commit()
                 else:
                     cr.rollback()
Example #2
0
 def get_module_info(cls, name):
     info = {}
     try:
         info = modules.load_information_from_description_file(name)
     except Exception:
         _logger.debug("Error when trying to fetch information for " "module %s", name, exc_info=True)
     return info
def load_information_from_zip(filepath):
    """ Return module name and description """
    terp = {}

    with zipfile.ZipFile(filepath, mode='r') as z:
        namelist = set(z.namelist())
        module = os.path.commonprefix(namelist).strip('/')

        if not module_name_pattern.match(module):
            raise exceptions.Warning(
                _('Unable to get a valid module name: %s') % module)

        manifest = os.path.join(module, modules.module.MANIFEST)
        if manifest in namelist:
            tmpdir = tempfile.mkdtemp()
            try:
                z.extract(manifest, tmpdir)
                module_path = os.path.join(tmpdir, module)
                terp = modules.load_information_from_description_file(
                    module, module_path)
            finally:
                shutil.rmtree(tmpdir)
        else:
            _logger.warning("The module '%s' has no manifest file.")

    return module, terp
Example #4
0
 def get_module_info(cls, name):
     info = {}
     try:
         info = modules.load_information_from_description_file(name)
     except Exception:
         _logger.debug('Error when trying to fetch informations for '
                       'module %s', name, exc_info=True)
     return info
Example #5
0
 def get_module_info(cls, name):
     info = {}
     try:
         info = addons.load_information_from_description_file(name)
         info['version'] = release.major_version + '.' + info['version']
     except Exception:
         _logger.debug('Error when trying to fetch informations for '
                       'module %s', name, exc_info=True)
     return info
Example #6
0
 def get_module_info(cls, name):
     info = {}
     try:
         info = addons.load_information_from_description_file(name)
         info['version'] = release.major_version + '.' + info['version']
     except Exception:
         _logger.debug('Error when trying to fetch informations for '
                       'module %s', name, exc_info=True)
     return info
Example #7
0
    def analyze_code_one(self, branch):
        # Change log level to avoid warning, when parsing odoo manifests
        logger1 = logging.getLogger('openerp.modules.module')
        logger2 = logging.getLogger('openerp.addons.base.module.module')
        currentLevel1 = logger1.level
        currentLevel2 = logger2.level
        logger1.setLevel(logging.ERROR)
        logger2.setLevel(logging.ERROR)

        try:
            module_version_obj = self.env['odoo.module.version']
            # Delete all associated module versions
            module_versions = module_version_obj.search([
                ('repository_branch_id', '=', branch.id)])
            module_versions.with_context(
                dont_change_repository_branch_state=True).unlink()

            # Compute path(s) to analyze
            if branch.module_paths:
                paths = []
                for path in branch.module_paths.split('\n'):
                    if path.strip():
                        paths.append(os.path.join(branch.local_path, path))
            else:
                paths = [branch.local_path]

            # Scan each path, if exists
            for path in paths:
                if not os.path.exists(path):
                    _logger.warning(
                        "Unable to analyse %s. Source code not found." % (
                            path))
                else:
                    # Analyze folders and create module versions
                    _logger.info("Analyzing repository %s ..." % (path))
                    for module_name in self.listdir(path):
                        full_module_path = os.path.join(path, module_name)
                        module_info = load_information_from_description_file(
                            module_name, full_module_path)

                        # Create module version, if the module is installable
                        # in the serie
                        if module_info.get('installable', False):
                            module_info['technical_name'] = module_name
                            module_version_obj.create_or_update_from_manifest(
                                module_info, branch, full_module_path)
        finally:
            # Reset Original level for module logger
            logger1.setLevel(currentLevel1)
            logger2.setLevel(currentLevel2)
        return super(GithubRepositoryBranch, self).analyze_code_one(branch)
    def _analyze_code(self):
        module_version_obj = self.env['oca.module.version']
        for repository_branch in self:
            # Delete all associated module versions
            module_versions = module_version_obj.search([
                ('repository_branch_id', '=', repository_branch.id)
            ])
            module_versions.with_context(
                dont_change_repository_branch_state=True).unlink()

            # Compute path(s) to analyze
            if repository_branch.module_paths:
                paths = []
                for path in repository_branch.module_paths.split('\n'):
                    if path.strip():
                        paths.append(
                            self._get_local_path(
                                repository_branch.complete_name) + '/' + path)
            else:
                paths = [self._get_local_path(repository_branch.complete_name)]
            # Scan each path, if exists
            for path in paths:
                if not os.path.exists(path):
                    _logger.warning(
                        "Unable to analyse %s. Source code not found." %
                        (path))
                else:
                    # Scan folder
                    _logger.info("Analyzing repository %s ..." % (path))
                    for module_name in self.listdir(path):
                        module_info = load_information_from_description_file(
                            module_name, path + '/' + module_name)
                        # Create module version, if the module is installable
                        # in the serie
                        if module_info.get('installable', False):
                            module_info['name'] = module_name
                            module_version_obj.create_or_update_from_manifest(
                                module_info, repository_branch)
                        self._cr.commit()
                    repository_branch.write({
                        'last_analyze_date':
                        datetime.today(),
                        'state':
                        'analyzed',
                    })
            self._cr.commit()
Example #9
0
import time
import psycopg2
from datetime import datetime
from dateutil.relativedelta import relativedelta

import openerp
from openerp import netsvc
from openerp.osv import fields, osv
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
from openerp.tools.safe_eval import safe_eval as eval
from openerp.tools.translate import _
from openerp.modules import load_information_from_description_file

_logger = logging.getLogger(__name__)

BASE_VERSION = load_information_from_description_file('base')['version']


def str2tuple(s):
    return eval('tuple(%s)' % (s or ''))


_intervalTypes = {
    'work_days': lambda interval: relativedelta(days=interval),
    'days': lambda interval: relativedelta(days=interval),
    'hours': lambda interval: relativedelta(hours=interval),
    'weeks': lambda interval: relativedelta(days=7 * interval),
    'months': lambda interval: relativedelta(months=interval),
    'minutes': lambda interval: relativedelta(minutes=interval),
}
Example #10
0
import time
import psycopg2
from datetime import datetime
from dateutil.relativedelta import relativedelta

import openerp
from openerp import SUPERUSER_ID, netsvc, api
from openerp.osv import fields, osv
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
from openerp.tools.safe_eval import safe_eval as eval
from openerp.tools.translate import _
from openerp.modules import load_information_from_description_file

_logger = logging.getLogger(__name__)

BASE_VERSION = load_information_from_description_file('base')['version']

def str2tuple(s):
    return eval('tuple(%s)' % (s or ''))

_intervalTypes = {
    'work_days': lambda interval: relativedelta(days=interval),
    'days': lambda interval: relativedelta(days=interval),
    'hours': lambda interval: relativedelta(hours=interval),
    'weeks': lambda interval: relativedelta(days=7*interval),
    'months': lambda interval: relativedelta(months=interval),
    'minutes': lambda interval: relativedelta(minutes=interval),
}

class ir_cron(osv.osv):
    """ Model describing cron jobs (also called actions or tasks).
Example #11
0
            'get_inc': self._get_inc(aeroo_print),
            'prev': self._prev(aeroo_print),
            'next': self._next(aeroo_print)
        })

        user_name = pool.get('res.users').browse(cr, uid, uid, {}).name
        model_id = pool.get('ir.model').search(
            cr, uid, [('model', '=', context.get('active_model', data['model'])
                       or data['model'])])[0]
        model_name = pool.get('ir.model').browse(cr, uid, model_id).name

        #basic = Template(source=None, filepath=odt_path)

        basic.Serializer.add_title(model_name)
        basic.Serializer.add_creation_user(user_name)
        module_info = load_information_from_description_file('report_aeroo')
        version = module_info['version']
        basic.Serializer.add_generator_info('Aeroo Lib/%s Aeroo Reports/%s' %
                                            (aeroolib_version, version))
        basic.Serializer.add_custom_property('Aeroo Reports %s' % version,
                                             'Generator')
        basic.Serializer.add_custom_property('Odoo %s' % release.version,
                                             'Software')
        basic.Serializer.add_custom_property(module_info['website'], 'URL')
        basic.Serializer.add_creation_date(time.strftime('%Y-%m-%dT%H:%M:%S'))

        try:
            if deferred:
                deferred.set_status(_('Generate document'))
            data = basic.generate(**oo_parser.localcontext).render().getvalue()
        except osv.except_osv, e:
Example #12
0
        oo_parser.localcontext['progress_update'] = deferred and deferred.progress_update or (lambda:True)
        ####### Add counter functons to localcontext #######
        oo_parser.localcontext.update({'def_inc':self._def_inc(aeroo_print),
                                      'get_inc':self._get_inc(aeroo_print),
                                      'prev':self._prev(aeroo_print),
                                      'next':self._next(aeroo_print)})

        user_name = pool.get('res.users').browse(cr, uid, uid, {}).name
        model_id = pool.get('ir.model').search(cr, uid, [('model','=',context.get('active_model', data['model']) or data['model'])])[0]
        model_name = pool.get('ir.model').browse(cr, uid, model_id).name

        #basic = Template(source=None, filepath=odt_path)

        basic.Serializer.add_title(model_name)
        basic.Serializer.add_creation_user(user_name)
        module_info = load_information_from_description_file('report_aeroo')
        version = module_info['version']
        basic.Serializer.add_generator_info('Aeroo Lib/%s Aeroo Reports/%s' % (aeroolib_version, version))
        basic.Serializer.add_custom_property('Aeroo Reports %s' % version, 'Generator')
        basic.Serializer.add_custom_property('Odoo %s' % release.version, 'Software')
        basic.Serializer.add_custom_property(module_info['website'], 'URL')
        basic.Serializer.add_creation_date(time.strftime('%Y-%m-%dT%H:%M:%S'))

        try:
            if deferred:
                deferred.set_status(_('Generate document'))
            data = basic.generate(**oo_parser.localcontext).render().getvalue()
        except osv.except_osv, e:
            raise
        except Exception, e:
            self._raise_exception(e, print_id)
Example #13
0
import time
import psycopg2
from datetime import datetime
from dateutil.relativedelta import relativedelta

import openerp
from openerp import SUPERUSER_ID, netsvc, api
from openerp.osv import fields, osv
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
from openerp.tools.safe_eval import safe_eval as eval
from openerp.tools.translate import _
from openerp.modules import load_information_from_description_file

_logger = logging.getLogger(__name__)

BASE_VERSION = load_information_from_description_file("base")["version"]


def str2tuple(s):
    return eval("tuple(%s)" % (s or ""))


_intervalTypes = {
    "work_days": lambda interval: relativedelta(days=interval),
    "days": lambda interval: relativedelta(days=interval),
    "hours": lambda interval: relativedelta(hours=interval),
    "weeks": lambda interval: relativedelta(days=7 * interval),
    "months": lambda interval: relativedelta(months=interval),
    "minutes": lambda interval: relativedelta(minutes=interval),
}
Example #14
0
def skipIfModule(module_name, reason):
    try:
        modules.load_information_from_description_file(module_name)
        return unittest.skip(reason)
    except Exception:
        return lambda func: func
Example #15
0
    def create_aeroo_report(self,
                            cr,
                            uid,
                            ids,
                            data,
                            report_xml,
                            context=None,
                            output='odt',
                            style_io=None):
        """ Returns an aeroo report generated with aeroolib
        """
        pool = RegistryManager.get(cr.dbname)
        if context is None:
            context = {}
        else:
            context = context.copy()

        if self.name == 'report.printscreen.list':
            context['model'] = data['model']
            context['ids'] = ids

        # create parser
        oo_parser = self.parser(cr, uid, self.name2, context=context)
        objects = not context.get('no_objects', False) and self.getObjects_mod(
            cr, uid, ids, report_xml, context, parser=oo_parser) or []
        report_obj = pool.get("ir.actions.report.xml")

        # check for report forward
        if hasattr(oo_parser, "_report_forward"):
            report_forward = oo_parser._report_forward(objects)
            if report_forward:
                report_forward_inst = report_obj._lookup_report(
                    cr, report_forward["name"])
                forward_report_data, forward_report_format = report_forward_inst.create(
                    cr, uid, report_forward["ids"], data, context)
                return self._onResult(
                    cr,
                    uid,
                    objects, (forward_report_data, forward_report_format),
                    context=context)

        # report replacement
        file_data = None
        if objects and len(objects) == 1:
            # get replacement
            repl_report_xml, style_io = report_obj._get_replacement(
                cr, uid, objects[0], report_xml, context=context)
            if repl_report_xml:
                if isinstance(repl_report_xml, basestring):
                    file_data = base64.decodestring(repl_report_xml)
                elif repl_report_xml.id != report_xml.id:
                    return self.create_aeroo_report(cr,
                                                    uid,
                                                    ids,
                                                    data,
                                                    repl_report_xml,
                                                    context=context,
                                                    output=output,
                                                    style_io=style_io)

        oo_parser.objects = objects
        self.set_xml_data_fields(objects, oo_parser)  # Get/Set XML

        oo_parser.localcontext['objects'] = objects
        oo_parser.localcontext['data'] = data
        oo_parser.localcontext['user_lang'] = context.get('lang', False)
        if len(objects) == 1:
            oo_parser.localcontext['o'] = objects[0]
        xfunc = ExtraFunctions(cr, uid, report_xml.id, oo_parser.localcontext)
        oo_parser.localcontext.update(xfunc.functions)

        # get style
        if not style_io:
            style_io = self.get_styles_file(cr, uid, report_xml, context)

        # get template
        if not file_data:
            if report_xml.tml_source in ('file', 'database'):
                file_data = base64.decodestring(report_xml.report_sxw_content)
            else:
                file_data = self.get_other_template(cr, uid, data, oo_parser)

        # process template
        if not file_data and not report_xml.report_sxw_content:
            return False, output
        else:
            if report_xml.preload_mode == 'preload' and hasattr(
                    self, 'serializer'):
                serializer = copy.copy(self.serializer)
                serializer.apply_style(style_io)
                template_io = serializer.template
            else:
                template_io = StringIO()
                template_io.write(
                    file_data
                    or base64.decodestring(report_xml.report_sxw_content))
                serializer = OOSerializer(template_io, oo_styles=style_io)
            basic = Template(source=template_io, serializer=serializer)

        aeroo_ooo = context.get('aeroo_ooo', False)
        oo_parser.localcontext['include_subreport'] = self._subreport(
            cr, uid, output='odt', aeroo_ooo=aeroo_ooo, context=context)
        oo_parser.localcontext['include_document'] = self._include_document(
            aeroo_ooo)

        ####### Add counter functons to localcontext #######
        oo_parser.localcontext.update({
            'def_inc': self._def_inc,
            'get_inc': self._get_inc,
            'prev': self._prev,
            'next': self._next
        })

        user_name = pool.get('res.users').browse(cr, uid, uid, {}).name

        report_tile = report_xml.name
        eval_model = data.get("model", context.get("active_model"))
        if eval_model:
            modeldef_obj = pool.get('ir.model')
            modeldef_id = modeldef_obj.search(cr, uid,
                                              [('model', '=', eval_model)])[0]
            report_title = modeldef_obj.browse(cr, uid, modeldef_id).name

        #basic = Template(source=None, filepath=odt_path)

        basic.Serializer.add_title(report_tile)
        basic.Serializer.add_creation_user(user_name)
        version = addons.load_information_from_description_file(
            'report_aeroo')['version']
        basic.Serializer.add_generator_info('Aeroo Lib/%s Aeroo Reports/%s' %
                                            (aeroolib.__version__, version))
        basic.Serializer.add_custom_property('Aeroo Reports %s' % version,
                                             'Generator')
        basic.Serializer.add_custom_property('OpenERP %s' % release.version,
                                             'Software')
        basic.Serializer.add_custom_property('http://www.alistek.com/', 'URL')
        basic.Serializer.add_creation_date(time.strftime('%Y-%m-%dT%H:%M:%S'))

        try:
            data = basic.generate(**oo_parser.localcontext).render().getvalue()
        except Exception, e:
            tb_s = reduce(
                lambda x, y: x + y,
                traceback.format_exception(sys.exc_type, sys.exc_value,
                                           sys.exc_traceback))
            logger.error(tb_s)
            self._cleanup_subreports()
            raise Exception(
                _("Aeroo Reports: Error while generating the report."), e,
                str(e), _("For more reference inspect error logs."))