Changeset fe06c0 in indico


Ignore:
Timestamp:
02/14/11 15:37:17 (2 years ago)
Author:
Jose Benito <jose.benito.gonzalez@…>
Branches:
master, burotel, hello-world-walkthrough, ipv6, v0.98-series, v0.98.2, v0.98.3, v0.98b1, v0.98b2, v0.99, 051b2622c51afb171a1dedb46a0df4fbb0cbd02e, 4c7d4152dff271ba5df5a8606605969cab454080
Children:
f9e2b0
Parents:
83db8b
git-author:
Leszek Syroka <leszek.marek.syroka@…> (08/12/10 16:31:06)
git-committer:
Jose Benito <jose.benito.gonzalez@…> (02/14/11 15:37:17)
Message:

[OPT] Contribution list optimization

  • filters are not checked when not necessary
  • material links are not fetched from database at the display page
  • filters data are not calculated when filter menu is closed
  • list creation optimized
  • optimization of url.py, made in registrant list optimization ticket, will enchance performance
  • schedule check removed - exception is thrown instead
  • fixes #507
Location:
indico
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • indico/MaKaC/webinterface/common/contribFilters.py

    r069bd0 rfe06c0  
    3131        """ 
    3232        """ 
    33         if contribution.getType() is None: 
    34             return self._showNoValue 
    35         return contribution.getType().getId() in self._values 
     33        if len(self._conf._contribTypes) == self._values: 
     34            return True 
     35        elif contribution.getType() is None: 
     36            return self._showNoValue 
     37        else: 
     38            return contribution.getType().getId() in self._values 
    3639 
    3740 
     
    5154        """ 
    5255        """ 
    53         if contribution.getTrack(): 
     56        if len(self._conf.program) == len(self._values): 
     57            return True 
     58        elif contribution.getTrack(): 
    5459            if contribution.getTrack().getId() in self._values: 
    5560                return True 
     
    7479        """ 
    7580        """ 
    76         if contribution.getSession(): 
     81        if len(self._conf.sessions) == len(self._values): 
     82            return True 
     83        elif contribution.getSession(): 
    7784            if contribution.getSession().getId() in self._values: 
    7885                return True 
     
    112119        """ 
    113120        """ 
     121        if len(ContribStatusList._statusIds) == len(self._values): 
     122            return True 
    114123        stKlass=contribution.getCurrentStatus().__class__ 
    115124        return ContribStatusList().getId(stKlass) in self._values 
     
    145154        """ 
    146155        """ 
     156        #all options selected 
     157        if len(self._values) == 4: 
     158            return True 
    147159        from MaKaC.webinterface.materialFactories import PaperFactory 
    148160        paper=contribution.getPaper() 
  • indico/MaKaC/webinterface/pages/conferences.py

    r8c5d649 rfe06c0  
    69156915        return url 
    69166916 
     6917 
     6918    def _createMaterialURL(self, contrib): 
     6919        """ Creates link to material management menu of given contribution. 
     6920            This method is faster than fetching material object from the 
     6921            database and getting link from it """ 
     6922 
     6923        url = urlHandlers.UHContribModifMaterials._getURL() 
     6924        url.addParam('returnURL','') 
     6925        url.addParam('contribId',contrib.getId()) 
     6926        url.addParam('confId',contrib.getConference().getId()) 
     6927        return url 
     6928 
     6929 
    69176930    def _getMaterialsHTML(self, contrib): 
    69186931        materials=[] 
    69196932        if contrib.getPaper() is not None: 
    6920             url=urlHandlers.UHMaterialModification.getURL(contrib.getPaper()) 
    6921             iconHTML="""<img border="0" src=%s alt="paper">"""%quoteattr(str(PaperFactory().getIconURL())) 
    6922             if len(contrib.getPaper().getResourceList())>0: 
    6923                 r=contrib.getPaper().getResourceList()[0] 
    6924                 if isinstance(r,conference.Link): 
    6925                     iconHTML="""<a href=%s>%s</a>"""%(quoteattr(str(r.getURL())),iconHTML) 
    6926                 elif isinstance(r,conference.LocalFile): 
    6927                     iconHTML="""<a href=%s>%s</a>"""%(quoteattr(str(urlHandlers.UHFileAccess.getURL(r))),iconHTML) 
    6928             materials.append("""%s<a href=%s>%s</a>"""%(iconHTML,quoteattr(str(url)),self.htmlText(PaperFactory().getTitle().lower()))) 
     6933            url= urlHandlers.UHMaterialBrowse.getURL() 
     6934            url.addParams({'contribId' : contrib.getId(), 'confId' : contrib.getConference().getId(), 'materialId' : 'paper'}) 
     6935            materials.append("""<a href=%s>%s</a>"""%(quoteattr(str(url)),self.htmlText(PaperFactory().getTitle().lower()))) 
    69296936        if contrib.getSlides() is not None: 
    6930             url=urlHandlers.UHMaterialModification.getURL(contrib.getSlides()) 
    6931             iconHTML="""<img border="0" src=%s alt="slides">"""%quoteattr(str(SlidesFactory().getIconURL())) 
    6932             if len(contrib.getSlides().getResourceList())>0: 
    6933                 r=contrib.getSlides().getResourceList()[0] 
    6934                 if isinstance(r,conference.Link): 
    6935                     iconHTML="""<a href=%s>%s</a>"""%(quoteattr(str(r.getURL())),iconHTML) 
    6936                 elif isinstance(r,conference.LocalFile): 
    6937                     iconHTML="""<a href=%s>%s</a>"""%(quoteattr(str(urlHandlers.UHFileAccess.getURL(r))),iconHTML) 
    6938             materials.append("""%s<a href=%s>%s</a>"""%(iconHTML,quoteattr(str(url)),self.htmlText(SlidesFactory().getTitle().lower()))) 
     6937            url= urlHandlers.UHMaterialBrowse.getURL() 
     6938            url.addParams({'contribId' : contrib.getId(), 'confId' : contrib.getConference().getId(), 'materialId' : 'slides'}) 
     6939            materials.append("""<a href=%s>%s</a>"""%(quoteattr(str(url)),self.htmlText(SlidesFactory().getTitle().lower()))) 
    69396940        if contrib.getPoster() is not None: 
    6940             url=urlHandlers.UHMaterialModification.getURL(contrib.getPoster()) 
    6941             iconHTML="""<img border="0" src=%s alt="slides">"""%quoteattr(str(PosterFactory().getIconURL())) 
    6942             if len(contrib.getPoster().getResourceList())>0: 
    6943                 r=contrib.getPoster().getResourceList()[0] 
    6944                 if isinstance(r,conference.Link): 
    6945                     iconHTML="""<a href=%s>%s</a>"""%(quoteattr(str(r.getURL())),iconHTML) 
    6946                 elif isinstance(r,conference.LocalFile): 
    6947                     iconHTML="""<a href=%s>%s</a>"""%(quoteattr(str(urlHandlers.UHFileAccess.getURL(r))),iconHTML) 
    6948             materials.append("""%s<a href=%s>%s</a>"""%(iconHTML,quoteattr(str(url)),self.htmlText(PosterFactory.getTitle().lower()))) 
    6949         video=contrib.getVideo() 
    6950         if video is not None: 
    6951             materials.append("""<a href=%s><img src=%s border="0" alt="video"> %s</a>"""%( 
    6952                 quoteattr(str(urlHandlers.UHMaterialModification.getURL(video))), 
    6953                 quoteattr(str(materialFactories.VideoFactory.getIconURL())), 
     6941            url= urlHandlers.UHMaterialBrowse.getURL() 
     6942            url.addParams({'contribId' : contrib.getId(), 'confId' : contrib.getConference().getId(), 'materialId' : 'poster'}) 
     6943            materials.append("""<a href=%s>%s</a>"""%(quoteattr(str(url)),self.htmlText(PosterFactory().getTitle().lower()))) 
     6944        if contrib.getVideo() is not None: 
     6945            materials.append("""<a href=%s>%s</a>"""%( 
     6946                quoteattr(str(self._createMaterialURL(contrib))), 
    69546947                self.htmlText(materialFactories.VideoFactory.getTitle()))) 
    6955         minutes=contrib.getMinutes() 
    6956         if minutes is not None: 
    6957             materials.append("""<a href=%s><img src=%s border="0" alt="minutes"> %s</a>"""%( 
    6958                 quoteattr(str(urlHandlers.UHMaterialModification.getURL(minutes))), 
    6959                 quoteattr(str(materialFactories.MinutesFactory.getIconURL())), 
     6948        if contrib.getMinutes() is not None: 
     6949            materials.append("""<a href=%s>%s</a>"""%( 
     6950                quoteattr(str(self._createMaterialURL(contrib))), 
    69606951                self.htmlText(materialFactories.MinutesFactory.getTitle()))) 
    6961         iconURL=quoteattr(str(Config.getInstance().getSystemIconURL("material"))) 
    69626952        for material in contrib.getMaterialList(): 
    6963             url=urlHandlers.UHMaterialModification.getURL(material) 
    6964             materials.append("""<a href=%s><img src=%s border="0" alt=""> %s</a>"""%( 
    6965                 quoteattr(str(url)),iconURL,self.htmlText(material.getTitle()))) 
     6953            url=self._createMaterialURL(contrib) 
     6954            materials.append("""<a href=%s>%s</a>"""%( 
     6955                quoteattr(str(url)),self.htmlText(material.getTitle()))) 
    69666956        return "<br>".join(materials) 
    69676957 
    69686958    def _getContribHTML( self, contrib ): 
    6969         sdate = "" 
    6970         if contrib.isScheduled(): 
     6959        try: 
    69716960            sdate=contrib.getAdjustedStartDate().strftime("%d-%b-%Y %H:%M" ) 
     6961        except AttributeError: 
     6962            sdate = "" 
    69726963        title = """<a href=%s>%s</a>"""%( quoteattr( str( urlHandlers.UHContributionModification.getURL( contrib ) ) ), self.htmlText( contrib.getTitle() )) 
    69736964        strdur = "" 
     
    69766967            dur = contrib.getDuration() 
    69776968            self._totaldur = self._totaldur + dur 
    6978         l = [] 
    6979         for spk in contrib.getSpeakerList(): 
    6980             l.append( self.htmlText( spk.getFullName() ) ) 
     6969 
     6970        l = [self.htmlText( spk.getFullName() ) for spk in contrib.getSpeakerList()] 
    69816971        speaker = "<br>".join( l ) 
    69826972        session = "" 
     
    71567146        vars["filterPostURL"]=quoteattr(str(urlHandlers.UHConfModifContribList.getURL(self._conf))) 
    71577147        authSearch=vars.get("authSearch","").strip() 
    7158         vars["authSearch"]=quoteattr(str(authSearch)) 
    7159         vars["types"]=self._getTypeItemsHTML() 
    7160         vars["sessions"]=self._getSessionItemsHTML() 
    7161         vars["tracks"]=self._getTrackItemsHTML() 
    7162         vars["status"]=self._getStatusItemsHTML() 
    7163         vars["materials"]=self._getMaterialItemsHTML() 
     7148        if self._menuStatus == 'open': 
     7149            vars["authSearch"]=quoteattr(str(authSearch)) 
     7150            vars["types"]=self._getTypeItemsHTML() 
     7151            vars["sessions"]=self._getSessionItemsHTML() 
     7152            vars["tracks"]=self._getTrackItemsHTML() 
     7153            vars["status"]=self._getStatusItemsHTML() 
     7154            vars["materials"]=self._getMaterialItemsHTML() 
    71647155        cl=self._conf.getContribsMatchingAuth(authSearch) 
    71657156 
     
    72627253        vars["trackSortingURL"] = quoteattr( str( url ) ) 
    72637254 
    7264         l=[] 
    7265         numContribs=0 
    72667255        f=filters.SimpleFilter(self._filterCrit,self._sortingCrit) 
    7267         contribsToPrint = [] 
    7268         for contrib in f.apply(cl): 
    7269             l.append(self._getContribHTML(contrib)) 
    7270             numContribs+=1 
    7271             contribsToPrint.append("""<input type="hidden" name="contributions" value="%s">"""%contrib.getId()) 
     7256        filteredContribs = f.apply(cl) 
     7257        l = [self._getContribHTML(contrib) for contrib in filteredContribs] 
     7258        contribsToPrint = ["""<input type="hidden" name="contributions" value="%s">"""%contrib.getId() for contrib in filteredContribs] 
     7259        numContribs = len(filteredContribs) 
     7260 
    72727261        if self._order =="up": 
    72737262            l.reverse() 
  • indico/MaKaC/webinterface/rh/materialDisplay.py

    rbdd862 rfe06c0  
    4949        else: 
    5050            raise MaKaCError( _("you are not authorised to manage material for this contribution")) 
     51 
     52 
     53class RHMaterialBrowse( RHMaterialDisplayBase ): 
     54    _uh = urlHandlers.UHMaterialBrowse 
     55 
     56    def _checkParams(self, params): 
     57        confId = int(params["confId"]) 
     58        contribId = int(params["contribId"]) 
     59        materialId = params["materialId"] 
     60        conf = conference.ConferenceHolder().getById( confId ) 
     61        contr = conf.getContributionById(contribId) 
     62 
     63        self._material = self._target = contr.getMaterialById(materialId) 
     64 
     65    def _process( self ): 
     66 
     67        # material pages should not be cached, since protection can change 
     68        self._disableCaching() 
     69 
     70        if len(self._material.getResourceList()) == 1: 
     71            res = self._material.getResourceList()[0] 
     72            if isinstance(res, conference.Link): 
     73                url = res.getURL() 
     74                if url.find(".wmv") != -1: 
     75                    urlwmv = urlHandlers.UHVideoWmvAccess().getURL(res) 
     76                    self._redirect( urlwmv ) 
     77                elif url.find(".flv") != -1 or url.find(".f4v") != -1 or url.find("rtmp://") != -1: 
     78                    urlflash = urlHandlers.UHVideoFlashAccess().getURL(res) 
     79                    self._redirect( urlflash, noCache=True) 
     80                else: 
     81                    self._redirect( res.getURL(), noCache=True ) 
     82            elif isinstance(res, conference.LocalFile): 
     83                self._redirect( urlHandlers.UHFileAccess.getURL( res ), noCache=True ) 
     84        else: 
     85            self._redirect( urlHandlers.UHContribModifMaterials.getURL( self._material )) 
     86 
    5187 
    5288class RHMaterialDisplay( RHMaterialDisplayBase ): 
  • indico/MaKaC/webinterface/urlHandlers.py

    rebf84a rfe06c0  
    28062806class UHMaterialDisplay( URLHandler ): 
    28072807    _relativeURL = "materialDisplay.py" 
     2808 
     2809class UHMaterialBrowse( URLHandler ): 
     2810    _relativeURL = "materialDisplay.py/browseMaterial" 
    28082811 
    28092812class UHConferenceProgram( URLHandler ): 
  • indico/htdocs/materialDisplay.py

    rbdd862 rfe06c0  
    2929def index(req, **params): 
    3030    return materialDisplay.RHMaterialDisplay( req ).process( params ) 
     31 
     32def browseMaterial(req, **params): 
     33    return materialDisplay.RHMaterialBrowse( req ).process( params ) 
    3134 
    3235def removeResource(req, **params): 
Note: See TracChangeset for help on using the changeset viewer.