html_module.py 1.42 KB
Newer Older
1
import json
2
import logging
3

4
from x_module import XModule, XModuleDescriptor
5 6
from lxml import etree

7 8 9
log = logging.getLogger("mitx.courseware")

#-----------------------------------------------------------------------------
10 11
class ModuleDescriptor(XModuleDescriptor):
    pass
12

13
class Module(XModule):
14 15 16 17 18
    id_attribute = 'filename'

    def get_state(self):
        return json.dumps({ })

19 20 21
    @classmethod
    def get_xml_tags(c):
        return ["html"]
22 23
        
    def get_html(self):
24
        if self.filename==None:
Piotr Mitros committed
25 26 27 28
            xmltree=etree.fromstring(self.xml)
            textlist=[xmltree.text]+[etree.tostring(i) for i in xmltree]+[xmltree.tail]
            textlist=[i for i in textlist if type(i)==str]
            return "".join(textlist)
29
        try: 
30 31
            filename="html/"+self.filename
            return self.filestore.open(filename).read()
32
        except: # For backwards compatibility. TODO: Remove
33 34
            if self.DEBUG:
                log.info('[courseware.modules.html_module] filename=%s' % self.filename)
35
            return self.system.render_template(self.filename, {'id': self.item_id}, namespace='course')
36

37 38
    def __init__(self, system, xml, item_id, state=None):
        XModule.__init__(self, system, xml, item_id, state)
Piotr Mitros committed
39 40 41 42 43
        xmltree=etree.fromstring(xml)
        self.filename = None
        filename_l=xmltree.xpath("/html/@filename")
        if len(filename_l)>0:
            self.filename=str(filename_l[0])