示例#1
0
    def get_datasource_settings(self):

        # Container for datasource settings
        datasource_settings = Munch({
            'datasources': [],
            'datasource': Munch(),
            'total': munchify({'fulltext_countries': [], 'details_countries': []}),
        })

        # Read datasource settings from configuration
        datasource_settings.datasources = read_list(self.application_settings.get('ip_navigator', {}).get('datasources'))
        datasource_settings.protected_fields = read_list(self.application_settings.get('ip_navigator', {}).get('datasources_protected_fields'))
        for datasource in datasource_settings.datasources:
            settings_key = 'datasource:{name}'.format(name=datasource)
            datasource_info = self.application_settings.get(settings_key, {})
            datasource_info['fulltext_enabled'] = asbool(datasource_info.get('fulltext_enabled', False))
            datasource_info['fulltext_countries'] = read_list(datasource_info.get('fulltext_countries', ''))
            datasource_info['details_enabled'] = asbool(datasource_info.get('details_enabled', False))
            datasource_info['details_countries'] = read_list(datasource_info.get('details_countries', ''))
            datasource_settings.datasource[datasource] = munchify(datasource_info)

            # Aggregate data for all countries
            datasource_settings.total.fulltext_countries += datasource_info['fulltext_countries']

        return datasource_settings
示例#2
0
    def get_datasource_settings(self, vendor=None):

        # Container for datasource settings.
        datasource_settings = SmartBunch({
            'datasources': [],
            'datasource': SmartBunch(),
            'total': SmartBunch.bunchify({'fulltext_countries': [], 'details_countries': []}),
        })

        # Read datasource settings from configuration.
        datasource_settings.datasources = read_list(self.application_settings.get('ip_navigator', {}).get('datasources'))
        datasource_settings.protected_fields = read_list(self.application_settings.get('ip_navigator', {}).get('datasources_protected_fields'))

        for datasource in datasource_settings.datasources:
            datasource_info = SmartBunch()
            if vendor is None:
                settings_key = 'datasource:{name}'.format(name=datasource)
            else:
                settings_key = 'datasource:{name}:{vendor}'.format(name=datasource, vendor=vendor)

            ds_settings = self.application_settings.get(settings_key, {})
            datasource_info.setdefault('fulltext_enabled', asbool(ds_settings.get('fulltext_enabled', False)))
            datasource_info.setdefault('fulltext_countries', read_list(ds_settings.get('fulltext_countries', '')))
            datasource_info.setdefault('details_enabled', asbool(ds_settings.get('details_enabled', False)))
            datasource_info.setdefault('details_countries', read_list(ds_settings.get('details_countries', '')))
            for key, value in ds_settings.iteritems():
                datasource_info.setdefault(key, value)

            datasource_settings.datasource[datasource] = SmartBunch.bunchify(datasource_info)

            # Aggregate data for all countries.
            datasource_settings.total.fulltext_countries += datasource_info['fulltext_countries']

        return datasource_settings
示例#3
0
def development_mode():
    registry = get_current_registry()
    try:
        return asbool(
            registry.application_settings.ip_navigator.development_mode)
    except:
        return False
示例#4
0
def prepare_search(request):

    #pprint(request.params)

    # CQL expression string
    expression = request.params.get('expression', '').strip()

    # Compute expression syntax
    syntax_cql = asbool(
        request.params.get('query_data[modifiers][syntax-cql]'))
    syntax_ikofax = asbool(
        request.params.get('query_data[modifiers][syntax-ikofax]'))
    syntax = 'cql'
    if syntax_ikofax or expression.startswith('ikofax:'):
        expression = expression.replace('ikofax:', '')
        syntax = 'ikofax'

    log.info(u'DEPATISnet query: {}, syntax: {}'.format(expression, syntax))

    # Compute query options, like
    # - limit
    # - sorting
    # - whether to remove family members
    options = {}
    options.update({'syntax': syntax})

    # propagate request parameters to search options parameters
    request_to_options(request, options)

    # Transcode query expression
    if syntax == 'cql':
        search = cql_prepare_query(expression)
    elif syntax == 'ikofax':
        search = ikofax_prepare_query(expression)
    else:
        request.errors.add('depatisnet-search', 'expression',
                           u'Unknown syntax {}'.format(syntax))

    # Propagate keywords to highlighting component
    keywords_to_response(request, search=search)

    return search, options
示例#5
0
    def theme_settings(self):
        """define default settings"""

        data_source_list = [
            '<a href="https://ops.epo.org/" target="_blank" class="incognito pointer">EPO/OPS</a>',
            '<a href="https://depatisnet.dpma.de" target="_blank" class="incognito pointer">DPMA/DEPATISnet</a>',
            '<a href="https://www.uspto.gov/" target="_blank" class="incognito pointer">USPTO/PATIMG</a>',
            '<a href="http://cipo.gc.ca" target="_blank" class="incognito pointer">CIPO</a>',
            '<a href="https://www.ificlaims.com/" target="_blank" class="incognito pointer">IFI CLAIMS</a>',
            '<a href="https://depa.tech/" target="_blank" class="incognito pointer">MTC depa.tech</a>',
            #'<a href="https://patentfamily.com/" target="_blank" class="incognito pointer">SIP</a>',
        ]

        software_version_label = 'PatZilla release: ' + self.registry.application_settings.software_version
        software_version_link  = '<a href="https://github.com/ip-tools/ip-navigator" target="_blank" ' \
                                 'class="incognito pointer">{label}</a>'.format(label=software_version_label)

        vendor = self.vendor

        # Format email addresses
        email_support = parseaddr(vendor.email.addressbook.support)[1]
        email_purchase = parseaddr(vendor.email.addressbook.purchase)[1]

        data = {
            'ui.vendor.name': vendor.organization,
            'ui.vendor.copyright': vendor.copyright_html,
            'ui.productname': vendor.productname,
            'ui.productname.rich': vendor.productname_html,
            'ui.productname.html': vendor.productname_html,
            'ui.productname.login': '******' in vendor and vendor.productname_login or vendor.productname_html,
            'ui.email.support': email_support,
            'ui.email.purchase': email_purchase,

            'ui.version': software_version_link,
            'ui.page.title': vendor.get('page_title', ''), # + ' &nbsp; ' + self.beta_badge,
            'ui.page.subtitle': '',
            'ui.page.footer': 'Data sources: ' + ', '.join(data_source_list),
        }

        # Transfer all properties having designated prefixes 1:1
        prefixes = ['ui.', 'feature.']
        for key, value in vendor.items():
            for prefix in prefixes:
                if key.startswith(prefix):
                    if key.endswith('.enabled'):
                        value = asbool(value)
                    data[key] = value

        # Backward compatibility
        if 'ui.stylesheet' not in data:
            data['ui.stylesheet'] = vendor.get('stylesheet_uri')

        return data
示例#6
0
    def get_application_settings(self):
        """
        Read configuration file to get global settings
        """

        # TODO: Optimize: Only read once, not on each request!
        settings = get_configuration(self.configfile, kind=Munch)

        # Add some global settings
        settings['software_version'] = __version__

        # Amend settings: Make real Booleans from strings
        settings['smtp']['tls'] = asbool(settings['smtp'].get('tls', True))

        return settings