Beispiel #1
0
    def make_xml(self):
        """
            Write the javascript representation of the XML files (theme XSLT and exam XML)
        """
        xslts = {}
        if self.question_xslt is not None:
            xslts['question'] = xml2js.encode(self.question_xslt)
        if self.part_xslt is not None:
            xslts['part'] = xml2js.encode(self.part_xslt)

        xslts_js = ',\n\t\t'.join('{}: "{}"'.format(name, body)
                                  for name, body in xslts.items())

        extensionfiles = []
        for extension in self.extensions:
            name = os.path.split(extension)[1]
            if os.path.exists(os.path.join(extension, name + '.js')):
                extensionfiles.append('extensions/' + name + '/' + name +
                                      '.js')

        custom_part_types = {}
        for pt in self.custom_part_types:
            custom_part_types[pt['short_name']] = pt

        self.xmls = xml2js.settings_js_template.format(
            **{
                'extensionfiles': extensionfiles,
                'templates': xslts_js,
                'examXML': xml2js.encode(self.examXML),
                'custom_part_types': json.dumps(custom_part_types),
            })
Beispiel #2
0
    def make_xml(self):
        """
            Write the javascript representation of the XML files (theme XSLT and exam XML)
        """
        xslts = {}
        for themedir in self.themepaths:
            xsltdir = os.path.join(themedir,'xslt')

            if os.path.exists(xsltdir):
                files = filter(lambda x: x[-5:]=='.xslt', os.listdir(xsltdir))
                for file in files:
                    name, ext = os.path.splitext(file)
                    xslts[name] = xml2js.encode(open(os.path.join(xsltdir,file),encoding='utf-8').read())

        if 'question' not in xslts and self.question_xslt is not None:
            xslts['question'] = xml2js.encode(self.question_xslt)

        xslts_js = ',\n\t\t'.join('{}: "{}"'.format(name,body) for name,body in xslts.items())

        extensionfiles = []
        for extension in self.extensions:
            name = os.path.split(extension)[1]
            if os.path.exists(os.path.join(extension,name+'.js')):
                extensionfiles.append('extensions/'+name+'/'+name+'.js')

        self.xmls = xml2js.rawxml_js_template.format(**{
            'extensionfiles': str(extensionfiles),
            'templates': xslts_js,
            'examXML': xml2js.encode(self.examXML),
        })
Beispiel #3
0
    def make_xml(self):
        """
            Write the javascript representation of the XML files (theme XSLT and exam XML)
        """
        xslts = {}
        for themedir in self.themepaths:
            xsltdir = os.path.join(themedir,'xslt')

            if os.path.exists(xsltdir):
                files = filter(lambda x: x[-5:]=='.xslt', os.listdir(xsltdir))
                for file in files:
                    name, ext = os.path.splitext(file)
                    xslts[name] = xml2js.encode(open(os.path.join(xsltdir,file),encoding='utf-8').read())

        if 'question' not in xslts and self.question_xslt is not None:
            xslts['question'] = xml2js.encode(self.question_xslt)

        xslts_js = ',\n\t\t'.join('{}: "{}"'.format(name,body) for name,body in xslts.items())

        extensionfiles = []
        for extension in self.extensions:
            name = os.path.split(extension)[1]
            if os.path.exists(os.path.join(extension,name+'.js')):
                extensionfiles.append('extensions/'+name+'/'+name+'.js')

        self.xmls = xml2js.rawxml_js_template.format(**{
            'extensionfiles': str(extensionfiles),
            'templates': xslts_js,
            'examXML': xml2js.encode(self.examXML),
        })
Beispiel #4
0
    def make_xml(self):
        """
            Write the javascript representation of the XML files (theme XSLT and exam XML)
        """
        xslts = {}
        if self.question_xslt is not None:
            xslts['question'] = xml2js.encode(self.question_xslt)
        if self.part_xslt is not None:
            xslts['part'] = xml2js.encode(self.part_xslt)

        xslts_js = ',\n\t\t'.join('{}: "{}"'.format(name, body) for name, body in xslts.items())

        extensionfiles = []
        for extension in self.extensions:
            path = Path(extension)
            if os.path.exists((path / path.name).with_suffix('.js')):
                extensionfiles.append(PurePath('extensions', path.name, path.name).with_suffix('.js'))

        custom_part_types = {}
        for pt in self.custom_part_types:
            custom_part_types[pt['short_name']] = pt

        self.xmls = xml2js.settings_js_template.format(**{
            'extensionfiles': [str(x) for x in extensionfiles],
            'templates': xslts_js,
            'examXML': xml2js.encode(self.examXML),
            'custom_part_types': json.dumps(custom_part_types),
        })