source: enpraxis.educommons/trunk/enpraxis/educommons/utilities/staticsiteutility.py @ 356

Revision 356, 3.9 KB checked in by david, 4 years ago (diff)

mistyped property, adding new corner case base functions

Line 
1import re
2
3from urlparse import urlparse, urlunparse, urlsplit
4
5from zope.interface import implements
6from zope.component import getUtility, getMultiAdapter
7
8from enpraxis.educommons.utilities.interfaces import IECUtility
9from enpraxis.staticsite.utilities.staticsiteutility import StaticSiteUtility
10from enpraxis.staticsite.utilities.interfaces import IStaticSiteUtility
11
12class eduStaticSiteUtility(StaticSiteUtility):
13    """ Deploy a static site """
14
15    implements(IStaticSiteUtility)
16
17    def runDocumentFilters(self, portal, current, soup, ssprops):
18        self.filterBaseTag(soup, current)
19        self.filterIgnoredSections(soup, ssprops)
20        self.filterIgnoredActions(soup, ssprops)
21        self.filterDocActionImages(soup, portal.portal_url(), current)
22        self.filterCSSLinks(soup, current)
23        self.filterIEFixesCSS(soup, current)
24        self.filterJSLinks(soup, current)
25        self.filterS5BaseUrl(soup, current)       
26        self.filterImageFullscreenBackLink(soup, current)
27        self.filterCourseDownloadLink(soup, current, portal, ssprops)
28        self.filterAttributionLinks(soup, current, portal, ssprops)
29        links = self.getDocumentLinks(soup)
30        for x in links:
31            orig = x['href']
32            x['href'] = self.filterDocumentLink(x['href'],
33                                                current,
34                                                portal,
35                                                ssprops.getProperty('views_to_add'))
36            print '   %s => %s' %(orig, x['href'])
37
38        return soup.prettify()
39
40    def filterCourseDownloadLink(self, soup, current, portal, ssprops):
41        link = soup.find('dd', id='download_course')
42        if link:
43            href = link.a['href']
44            result = current
45            hr = urlparse(current)
46            p = urlparse(portal.portal_url())
47            if p[1] == hr[1]:
48                h = hr[2].split('/')
49                if h[-1] == 'index.html':
50                    h = h[:-1]
51                for view in ssprops.getProperty('views_to_add'):
52                    if view in h[-1]:
53                        h[-1] = h[-1].replace('-%s.html' % view, '')                 
54                result = portal.portal_catalog.searchResults(query={'path':'/'.join(h),}, id=h[-1])[0].getObject()
55                course = getUtility(IECUtility).FindECParent(result)
56                zip_url = '%s/%s.zip' % (course.absolute_url(), course.id)
57                link.a['href'] = zip_url               
58               
59    def filterAttributionLinks(self, soup, current, portal, ssprops):
60        if current == portal.portal_url():
61            current += '/index.html'
62        elif '.htm' not in current:
63            current += '.html'
64        ccite = soup.find(id='click_citation')
65        pcite = soup.find(id='print_citation')
66        scite = soup.find(id='skinless_citation')
67        portal_url = portal.portal_url()
68        deploy_url = ssprops.getProperty('deployment_url')
69        if ccite:
70            sstring = ccite['onclick']
71            pattern = re.compile( r"\b(http:\/\/).*\b\." )
72            nstring = pattern.sub('%s.' % current, sstring)
73            nstring = nstring.replace(portal_url, deploy_url)
74            ccite['onclick'] = nstring
75        if pcite:
76            sstring = pcite.contents[0]
77            pattern = re.compile( r"\b(http:\/\/).*\b\." )
78            nstring = pattern.sub('%s.' % current, sstring)
79            nstring = nstring.replace(portal_url, deploy_url)
80            pcite.contents[0].replaceWith(nstring)
81        if scite:
82            sstring = scite.span.contents[0]
83            pattern = re.compile( r"\b(http:\/\/).*\b\." )
84            nstring = pattern.sub('%s.' % current, sstring)
85            nstring = nstring.replace(portal_url, deploy_url)
86            scite.span.contents[0].replaceWith(nstring)
87           
88
89
90
91
92           
93           
94#rewrite obj ids on FS to match doc_action links
95
96       
Note: See TracBrowser for help on using the repository browser.