Exemplo n.º 1
0
    def test_get_format_template(self):
        """bibformat - format template parsing and returned structure"""

        #Test correct parsing and structure
        template_1 = bibformat_engine.get_format_template("Test1.bft",
                                                          with_attributes=True)
        self.assert_(template_1 is not None)
        self.assertEqual(
            template_1['code'],
            "test\n<name>this value should stay as it is</name>\n<description>this one too</description>\n"
        )
        self.assertEqual(template_1['attrs']['name'], "name_test")
        self.assertEqual(template_1['attrs']['description'], "desc_test")

        #Test correct parsing and structure of file without description or name
        template_2 = bibformat_engine.get_format_template("Test_2.bft",
                                                          with_attributes=True)
        self.assert_(template_2 is not None)
        self.assertEqual(template_2['code'], "test")
        self.assertEqual(template_2['attrs']['name'], "Test_2.bft")
        self.assertEqual(template_2['attrs']['description'], "")

        #Test correct parsing and structure of file without description or name
        unknown_template = bibformat_engine.get_format_template(
            "test_no_template.test", with_attributes=True)
        self.assertEqual(unknown_template, None)
    def test_get_format_template(self):
        """bibformat - format template parsing and returned structure"""

        bibformat_engine.CFG_BIBFORMAT_TEMPLATES_PATH = CFG_BIBFORMAT_TEMPLATES_PATH

        # Test correct parsing and structure
        template_1 = bibformat_engine.get_format_template("Test1.bft", with_attributes=True)
        self.assert_(template_1 is not None)
        self.assertEqual(
            template_1["code"],
            "test\n<name>this value should stay as it is</name>\n<description>this one too</description>\n",
        )
        self.assertEqual(template_1["attrs"]["name"], "name_test")
        self.assertEqual(template_1["attrs"]["description"], "desc_test")

        # Test correct parsing and structure of file without description or name
        template_2 = bibformat_engine.get_format_template("Test_2.bft", with_attributes=True)
        self.assert_(template_2 is not None)
        self.assertEqual(template_2["code"], "test")
        self.assertEqual(template_2["attrs"]["name"], "Test_2.bft")
        self.assertEqual(template_2["attrs"]["description"], "")

        # Test correct parsing and structure of file without description or name
        unknown_template = bibformat_engine.get_format_template("test_no_template.test", with_attributes=True)
        self.assertEqual(unknown_template, None)
    def test_format_with_format_template(self):
        """ bibformat - correct formatting with given template"""
        bibformat_engine.CFG_BIBFORMAT_OUTPUTS_PATH = self.old_outputs_path
        template = bibformat_engine.get_format_template("Test3.bft")
        result = bibformat_engine.format_with_format_template(format_template_filename = None,
                                                              bfo=self.bfo_1,
                                                              verbose=0,
                                                              format_template_code=template['code'])

        self.assertEqual(result,'''<h1>hi</h1> this is my template\ntest<bfe_non_existing_element must disappear/><test_1  non prefixed element must stay as any normal tag/>tfrgarbage\n<br/>test me!&lt;b&gt;ok&lt;/b&gt;a default valueeditor\n<br/>test me!<b>ok</b>a default valueeditor\n<br/>test me!&lt;b&gt;ok&lt;/b&gt;a default valueeditor\n99999''')
    def test_get_format_template(self):
        """bibformat - format template parsing and returned structure"""

        #Test correct parsing and structure
        template_1 = bibformat_engine.get_format_template("Test1.bft", with_attributes=True)
        self.assert_(template_1 is not None)
        self.assertEqual(template_1['code'],  "test\n<name>this value should stay as it is</name>\n<description>this one too</description>\n")
        self.assertEqual(template_1['attrs']['name'], "name_test")
        self.assertEqual(template_1['attrs']['description'], "desc_test")

        #Test correct parsing and structure of file without description or name
        template_2 = bibformat_engine.get_format_template("Test_2.bft", with_attributes=True)
        self.assert_(template_2 is not None)
        self.assertEqual(template_2['code'],  "test")
        self.assertEqual(template_2['attrs']['name'], "Test_2.bft")
        self.assertEqual(template_2['attrs']['description'], "")

        #Test correct parsing and structure of file without description or name
        unknown_template = bibformat_engine.get_format_template("test_no_template.test", with_attributes=True)
        self.assertEqual(unknown_template,  None)
Exemplo n.º 5
0
    def test_format_with_format_template(self):
        """ bibformat - correct formatting with given template"""
        bibformat_engine.CFG_BIBFORMAT_OUTPUTS_PATH = self.old_outputs_path
        template = bibformat_engine.get_format_template("Test3.bft")
        result = bibformat_engine.format_with_format_template(
            format_template_filename=None,
            bfo=self.bfo_1,
            verbose=0,
            format_template_code=template['code'])

        self.assertEqual(
            result,
            '''<h1>hi</h1> this is my template\ntest<bfe_non_existing_element must disappear/><test_1  non prefixed element must stay as any normal tag/>tfrgarbage\n<br/>test me!&lt;b&gt;ok&lt;/b&gt;a default valueeditor\n<br/>test me!<b>ok</b>a default valueeditor\n<br/>test me!&lt;b&gt;ok&lt;/b&gt;a default valueeditor\n99999'''
        )
    def test_format_with_format_template(self):
        """ bibformat - correct formatting with given template"""
        bibformat_engine.CFG_BIBFORMAT_ELEMENTS_PATH = CFG_BIBFORMAT_ELEMENTS_PATH
        bibformat_engine.CFG_BIBFORMAT_ELEMENTS_IMPORT_PATH = CFG_BIBFORMAT_ELEMENTS_IMPORT_PATH
        bibformat_engine.CFG_BIBFORMAT_TEMPLATES_PATH = CFG_BIBFORMAT_TEMPLATES_PATH

        template = bibformat_engine.get_format_template("Test3.bft")
        result = bibformat_engine.format_with_format_template(
            format_template_filename=None, bfo=self.bfo_1, verbose=0, format_template_code=template["code"]
        )

        self.assert_(isinstance(result, tuple))
        self.assertEqual(
            result[0],
            """<h1>hi</h1> this is my template\ntest<bfe_non_existing_element must disappear/><test_1  non prefixed element must stay as any normal tag/>tfrgarbage\n<br/>test me!&lt;b&gt;ok&lt;/b&gt;a default valueeditor\n<br/>test me!<b>ok</b>a default valueeditor\n<br/>test me!&lt;b&gt;ok&lt;/b&gt;a default valueeditor\n99999""",
        )
    def test_format_with_format_template(self):
        """ bibformat - correct formatting with given template"""
        bibformat_engine.CFG_BIBFORMAT_ELEMENTS_PATH = CFG_BIBFORMAT_ELEMENTS_PATH
        bibformat_engine.CFG_BIBFORMAT_ELEMENTS_IMPORT_PATH = CFG_BIBFORMAT_ELEMENTS_IMPORT_PATH
        bibformat_engine.CFG_BIBFORMAT_TEMPLATES_PATH = CFG_BIBFORMAT_TEMPLATES_PATH

        template = bibformat_engine.get_format_template("Test3.bft")
        result = bibformat_engine.format_with_format_template(format_template_filename = None,
                                                              bfo=self.bfo_1,
                                                              verbose=0,
                                                              format_template_code=template['code'])

        self.assert_(isinstance(result, tuple))

        # Infoscience modification : 
        # Fix this test as we don't have the same configuration

        # original
        # self.assertEqual(result[0],'''<h1>hi</h1> this is my template\ntest<bfe_non_existing_element must disappear/><test_1  non prefixed element must stay as any normal tag/>tfrgarbage\n<br/>test me!&lt;b&gt;ok&lt;/b&gt;a default valueeditor\n<br/>test me!<b>ok</b>a default valueeditor\n<br/>test me!&lt;b&gt;ok&lt;/b&gt;a default valueeditor\n99999''')
        # modified
        self.assertEqual(result[0],'''<h1>hi</h1> this is my template\ntest<bfe_non_existing_element must disappear/><test_1  non prefixed element must stay as any normal tag/>tfrgarbage\n<br/>test me!&lt;b&gt;ok&lt;/b&gt;a default valueeditor\n<br/>test me!<b>ok</b>a default valueeditor\n<br/>test me!&lt;b&gt;ok&lt;/b&gt;a default valueeditor\n''')
Exemplo n.º 8
0
def format_template_show_preview_or_save(
    req,
    bft,
    ln=CFG_SITE_LANG,
    code=None,
    ln_for_preview=CFG_SITE_LANG,
    pattern_for_preview="",
    content_type_for_preview="text/html",
    save_action=None,
    navtrail="",
):
    """
    Print the preview of a record with a format template. To be included inside Format template
    editor. If the save_action has a value, then the code should also be saved at the same time

    @param req: the request object
    @param code: the code of a template to use for formatting
    @param ln: language
    @param ln_for_preview: the language for the preview (for bfo)
    @param pattern_for_preview: the search pattern to be used for the preview (for bfo)
    @param content_type_for_preview: the content-type to use to serve the preview page
    @param save_action: has a value if the code has to be saved
    @param bft: the filename of the template to save
    @param navtrail: navigation trail
    @return: a web page
    """
    ln = wash_language(ln)
    _ = gettext_set_language(ln)

    (auth_code, auth_msg) = check_user(req, "cfgbibformat")
    if not auth_code:
        user_info = collect_user_info(req)
        uid = user_info["uid"]
        bft = wash_url_argument(bft, "str")
        if save_action is not None and code is not None:
            # save
            bibformatadminlib.update_format_template_code(bft, code=code)
        bibformat_engine.clear_caches()
        if code is None:
            code = bibformat_engine.get_format_template(bft)["code"]

        ln_for_preview = wash_language(ln_for_preview)
        pattern_for_preview = wash_url_argument(pattern_for_preview, "str")
        if pattern_for_preview == "":
            try:
                recID = search_pattern(p="-collection:DELETED").pop()
            except KeyError:
                return page(
                    title="No Document Found",
                    body="",
                    uid=uid,
                    language=ln_for_preview,
                    navtrail="",
                    lastupdated=__lastupdated__,
                    req=req,
                    navmenuid="search",
                )

            pattern_for_preview = "recid:%s" % recID
        else:
            try:
                recID = search_pattern(p=pattern_for_preview + " -collection:DELETED").pop()
            except KeyError:
                return page(
                    title="No Record Found for %s" % pattern_for_preview,
                    body="",
                    uid=uid,
                    language=ln_for_preview,
                    navtrail="",
                    lastupdated=__lastupdated__,
                    req=req,
                )

        units = create_basic_search_units(None, pattern_for_preview, None)
        keywords = [unit[1] for unit in units if unit[0] != "-"]
        bfo = bibformat_engine.BibFormatObject(
            recID=recID, ln=ln_for_preview, search_pattern=keywords, xml_record=None, user_info=user_info
        )
        (body, errors) = bibformat_engine.format_with_format_template(bft, bfo, verbose=7, format_template_code=code)

        if content_type_for_preview == "text/html":
            # Standard page display with CDS headers, etc.
            return page(
                title="",
                body=body,
                uid=uid,
                language=ln_for_preview,
                navtrail=navtrail,
                lastupdated=__lastupdated__,
                req=req,
                navmenuid="search",
            )
        else:
            # Output with chosen content-type.
            req.content_type = content_type_for_preview
            req.send_http_header()
            req.write(body)
    else:
        return page_not_authorized(req=req, text=auth_msg)
Exemplo n.º 9
0
def format_template_show_preview_or_save(req,
                                         bft,
                                         ln=CFG_SITE_LANG,
                                         code=None,
                                         ln_for_preview=CFG_SITE_LANG,
                                         pattern_for_preview="",
                                         content_type_for_preview='text/html',
                                         save_action=None,
                                         navtrail=""):
    """
    Print the preview of a record with a format template. To be included inside Format template
    editor. If the save_action has a value, then the code should also be saved at the same time

    @param req: the request object
    @param code: the code of a template to use for formatting
    @param ln: language
    @param ln_for_preview: the language for the preview (for bfo)
    @param pattern_for_preview: the search pattern to be used for the preview (for bfo)
    @param content_type_for_preview: the content-type to use to serve the preview page
    @param save_action: has a value if the code has to be saved
    @param bft: the filename of the template to save
    @param navtrail: navigation trail
    @return: a web page
    """
    ln = wash_language(ln)
    _ = gettext_set_language(ln)

    (auth_code, auth_msg) = check_user(req, 'cfgbibformat')
    if not auth_code:
        user_info = collect_user_info(req)
        uid = user_info['uid']
        bft = wash_url_argument(bft, 'str')
        if save_action is not None and code is not None:
            #save
            bibformatadminlib.update_format_template_code(bft, code=code)
        bibformat_engine.clear_caches()
        if code is None:
            code = bibformat_engine.get_format_template(bft)['code']

        ln_for_preview = wash_language(ln_for_preview)
        pattern_for_preview = wash_url_argument(pattern_for_preview, 'str')
        if pattern_for_preview == "":
            try:
                recID = search_pattern(p='-collection:DELETED').pop()
            except KeyError:
                return page(title="No Document Found",
                            body="",
                            uid=uid,
                            language=ln_for_preview,
                            navtrail="",
                            lastupdated=__lastupdated__,
                            req=req,
                            navmenuid='search')

            pattern_for_preview = "recid:%s" % recID
        else:
            try:
                recID = search_pattern(p=pattern_for_preview + \
                                        ' -collection:DELETED').pop()
            except KeyError:
                return page(title="No Record Found for %s" %
                            pattern_for_preview,
                            body="",
                            uid=uid,
                            language=ln_for_preview,
                            navtrail="",
                            lastupdated=__lastupdated__,
                            req=req)

        units = create_basic_search_units(None, pattern_for_preview, None)
        keywords = [unit[1] for unit in units if unit[0] != '-']
        bfo = bibformat_engine.BibFormatObject(recID=recID,
                                               ln=ln_for_preview,
                                               search_pattern=keywords,
                                               xml_record=None,
                                               user_info=user_info)
        body = format_with_format_template(bft,
                                           bfo,
                                           verbose=7,
                                           format_template_code=code)

        if content_type_for_preview == 'text/html':
            #Standard page display with CDS headers, etc.
            return page(title="",
                        body=body,
                        uid=uid,
                        language=ln_for_preview,
                        navtrail=navtrail,
                        lastupdated=__lastupdated__,
                        req=req,
                        navmenuid='search')
        else:
            #Output with chosen content-type.
            req.content_type = content_type_for_preview
            req.send_http_header()
            req.write(body)
    else:
        return page_not_authorized(req=req, text=auth_msg)