Changeset 890:01626215f2ac


Ignore:
Timestamp:
08/28/10 13:53:37 (3 years ago)
Author:
fl
Branch:
trunk
Message:

[svn r1236] performance tuning

Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • adhocracy/controllers/proposal.py

    r864 r890  
    44from pylons.i18n import _ 
    55from formencode import foreach, Invalid 
     6from sqlalchemy import or_, and_ 
     7from sqlalchemy.orm import eagerload_all, eagerload 
    68 
    79from adhocracy.lib.base import * 
     
    132134    @RequireInstance 
    133135    def show(self, id, format='html'): 
    134         c.proposal = get_entity_or_abort(model.Proposal, id)      
    135         require.proposal.show(c.proposal) 
     136        c.proposal = get_entity_or_abort(model.Proposal, id) 
     137        require.proposal.show(c.proposal) 
     138         
     139        #q = model.meta.Session.query(model.Proposal) 
     140        #id = int(unicode(id).split('-', 1)[0]) 
     141        #q = q.filter(model.Proposal.id==id) 
     142        #q = q.filter(model.Proposal.instance_id==c.instance.id) 
     143        #q = q.filter(or_(model.Proposal.delete_time==None, 
     144        #                 model.Proposal.delete_time>datetime.utcnow())) 
     145        #q = q.options(eagerload_all('parents')) 
     146        #q = q.options(eagerload_all('rate_poll.tallies')) 
     147        #q = q.options(eagerload_all('creator')) 
     148        #q = q.options(eagerload_all('rate_poll.tallies')) 
     149        #q = q.options(eagerload_all('taggings')) 
     150        #q = q.options(eagerload_all('description')) 
     151        #q = q.options(eagerload_all('description.creator')) 
     152        #q = q.options(eagerload_all('description.comments.revisions')) 
     153        #q = q.options(eagerload_all(model.Proposal._selections)) 
     154        #q = q.options(eagerload_all('_selections.page._texts')) 
     155        #q = q.options(eagerload_all('children')) 
     156        #q = q.options(eagerload_all('parents')) 
     157        #c.proposal = q.first() 
    136158         
    137159        if format == 'rss': 
  • adhocracy/lib/auth/authorization.py

    r784 r890  
    5959    even when they are not protected, thus making the authorization system more  
    6060    configurable. 
    61     """     
     61    """ 
     62     
    6263    def evaluate(self, environ, credentials): 
    6364        if c.user: 
    6465            super(has_permission, self).evaluate(environ, credentials) 
    6566        else: 
    66             anon_group = model.Group.by_code(model.Group.CODE_ANONYMOUS) 
    67             for perm in anon_group.permissions: 
    68                 if perm.permission_name == self.permission_name: 
    69                     return 
    70             self.unmet() 
     67            if environ.get('anonymous_permissions') is None: 
     68                anon_group = model.Group.by_code(model.Group.CODE_ANONYMOUS) 
     69                environ['anonymous_permissions'] = [p.permission_name for p in anon_group.permissions] 
     70            if not self.permission_name in environ['anonymous_permissions']: 
     71                self.unmet() 
    7172         
    7273 
  • adhocracy/lib/democracy/__init__.py

    r788 r890  
    1616        try: 
    1717            for vote in model.Vote.all(): 
    18                 handle_vote(vote) 
     18                pass 
     19                #handle_vote(vote) 
    1920        except Exception, e: 
    2021            log.exception("Cannot update tallies: %s" % e) 
  • adhocracy/model/__init__.py

    r839 r890  
    7575mapper(Proposal, proposal_table, inherits=Delegateable, polymorphic_identity='proposal', properties={ 
    7676    'description': relation(Page, primaryjoin=proposal_table.c.description_id==page_table.c.id,  
    77                         uselist=False, backref=backref('_proposal')), 
     77                        uselist=False, lazy=True, backref=backref('_proposal')), 
    7878    'rate_poll': relation(Poll, primaryjoin=proposal_table.c.rate_poll_id==poll_table.c.id,  
    79                         uselist=False, lazy=True), 
     79                        uselist=False, lazy=False), 
    8080    'adopt_poll': relation(Poll, primaryjoin=proposal_table.c.adopt_poll_id==poll_table.c.id,  
    8181                        uselist=False, lazy=True) 
     
    9797                     backref=backref('revisions', lazy=True, cascade='all')), 
    9898    'comment': relation(Comment, lazy=False, backref=backref('revisions', cascade='all', 
    99                         lazy=True, order_by=revision_table.c.create_time.desc())), 
     99                        lazy=False, order_by=revision_table.c.create_time.desc())), 
    100100    'title': synonym('_title', map_column=True) 
    101101    }, extension=meta.extension) 
     
    165165 
    166166mapper(Tally, tally_table, properties={ 
    167     'poll': relation(Poll, backref=backref('tallies', lazy='dynamic')), 
     167    'poll': relation(Poll, backref=backref('tallies', order_by=tally_table.c.create_time.desc(), lazy=True)), 
    168168    'vote': relation(Vote, backref=backref('tally', uselist=False)) 
    169169    }, extension=meta.extension) 
     
    190190    'parent': relation(Text, lazy=True, uselist=False,  
    191191                       primaryjoin=text_table.c.parent_id==text_table.c.id), 
    192     'page': relation(Page, lazy=True, backref=backref('_texts', order_by=text_table.c.create_time.desc()), 
     192    'page': relation(Page, lazy=True, backref=backref('_texts', lazy=False, order_by=text_table.c.create_time.desc()), 
    193193                     primaryjoin=text_table.c.page_id==page_table.c.id) 
    194194    }, extension=meta.extension) 
     
    198198    'proposal': relation(Proposal, lazy=True, backref=backref('_selections'),  
    199199                         primaryjoin=selection_table.c.proposal_id==proposal_table.c.id), 
    200     'page': relation(Page, lazy=False, backref=backref('_selections'), 
     200    'page': relation(Page, lazy=True, backref=backref('_selections'), 
    201201                     primaryjoin=selection_table.c.page_id==page_table.c.id) 
    202202    }, extension=meta.extension) 
  • adhocracy/model/poll.py

    r778 r890  
    33 
    44from sqlalchemy import Table, Column, Integer, Unicode, UnicodeText, ForeignKey, DateTime, func, or_ 
    5 from sqlalchemy.orm import reconstructor 
     5from sqlalchemy.orm import reconstructor, aliased, eagerload, eagerload_all 
    66 
    77import meta 
     
    9393    def tally(self): 
    9494        if self._tally is None: 
    95             from tally import Tally 
    96             q = self.tallies 
    97             q = q.order_by(Tally.create_time.desc()) 
    98             q = q.order_by(Tally.id.desc()) 
    99             _tally = q.limit(1).first() 
    100             if _tally is None: 
    101                 _tally = Tally.create_from_poll(self) 
    102             self._tally = _tally 
     95            if len(self.tallies): 
     96                self._tally = self.tallies[0] 
     97            else: 
     98                from tally import Tally 
     99                self._tally = Tally.create_from_poll(self) 
    103100        return self._tally 
    104101     
     
    198195            q = meta.Session.query(Poll) 
    199196            q = q.filter(Poll.subject.in_(subjects)) 
     197            q = q.options(eagerload(Poll.tallies)) 
    200198            if not include_deleted: 
    201199                q = q.filter(or_(Poll.end_time==None, 
  • adhocracy/model/user.py

    r778 r890  
    55 
    66from sqlalchemy import Table, Column, Integer, Unicode, UnicodeText, Boolean, DateTime, func, or_ 
     7from sqlalchemy.orm import eagerload_all 
    78 
    89from babel import Locale 
     
    270271                             User.delete_time>datetime.utcnow())) 
    271272        if instance: 
     273            q = q.options(eagerload_all('memberships')) 
    272274            q = q.join(Membership) 
    273275            q = q.filter(or_(Membership.expire_time==None, 
  • adhocracy/templates/proposal/tiles.html

    r887 r890  
    4343                <li><a title="${_('Who is receiving delegations?')}"  
    4444                       href="${h.entity_url(proposal, member='delegations')}" 
    45                 class="delegations ttip">${_("Delegations")} (${len(proposal.current_delegations())})</a></li> 
     45                class="delegations ttip">${_("Delegations")}  
     46            ##(${len(proposal.current_delegations())}) 
     47                </a></li> 
    4648        %endif 
    4749        <li><a title="${_('Who has helped?')}"  
    4850               href="${h.entity_url(proposal, member='contributors')}" class="contributors ttip"> 
    49                ${_("Contributors")} (${len(proposal.contributors())})</a></li> 
     51               ${_("Contributors")}  
     52               ##(${len(proposal.contributors())}) 
     53            </a></li> 
    5054        </ul> 
    5155        <br/> 
  • development.ini

    r433 r890  
    107107# Logging configuration 
    108108[loggers] 
    109 keys = root, routes, adhocracy, sqlalchemy 
     109keys = root, adhocracy, sqlalchemy 
    110110 
    111111[handlers] 
     
    131131 
    132132[logger_sqlalchemy] 
    133 #level = INFO 
    134 level = WARN 
    135 #level = DEBUG 
    136 handlers = 
     133level = DEBUG 
     134handlers = console 
    137135qualname = sqlalchemy.engine 
    138 # "level = INFO" logs SQL queries. 
    139 # "level = DEBUG" logs SQL queries and results. 
    140 # "level = WARN" logs neither.  (Recommended for production systems.) 
    141136 
    142137[handler_console] 
Note: See TracChangeset for help on using the changeset viewer.