Changeset 1787

Show
Ignore:
Timestamp:
10/07/04 11:37:53 (20 years ago)
Author:
jalet
Message:

Fixes recently introduced bug wrt users groups (was it three days ago ?)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/pykota/storages/sql.py

    r1778 r1787  
    2222# 
    2323# $Log$ 
     24# Revision 1.55  2004/10/07 09:37:53  jalet 
     25# Fixes recently introduced bug wrt users groups (was it three days ago ?) 
     26# 
    2427# Revision 1.54  2004/10/05 10:05:04  jalet 
    2528# UnicodeEncodeError isn't defined in Python2.1 
     
    197200        """Extracts group information given its name.""" 
    198201        group = StorageGroup(self, groupname) 
    199         result = self.doSearch("SELECT groups.*,sum(balance) AS balance, sum(lifetimepaid) AS lifetimepaid FROM groups,users WHERE groupname=%s AND users.id IN (SELECT userid FROM groupsmembers WHERE groupid=groups.id) GROUP BY groups.id,groups.groupname,groups.limitby LIMIT 1" % self.doQuote(groupname)) 
     202        result = self.doSearch("SELECT * FROM groups WHERE groupname=%s LIMIT 1" % self.doQuote(groupname)) 
    200203        if result : 
    201204            fields = result[0] 
     
    203206            group.Name = fields.get("groupname", groupname) 
    204207            group.LimitBy = fields.get("limitby") 
    205             group.AccountBalance = fields.get("balance") 
    206             group.LifeTimePaid = fields.get("lifetimepaid") 
     208            result = self.doSearch("SELECT SUM(balance) AS balance, SUM(lifetimepaid) AS lifetimepaid FROM users WHERE id IN (SELECT userid FROM groupsmembers WHERE groupid=%s)" % self.doQuote(group.ident)) 
     209            if result : 
     210                fields = result[0] 
     211                group.AccountBalance = fields.get("balance") or 0.0 
     212                group.LifeTimePaid = fields.get("lifetimepaid") or 0.0 
    207213            group.Exists = 1 
    208214        return group 
     
    242248        grouppquota = StorageGroupPQuota(self, group, printer) 
    243249        if group.Exists : 
    244             result = self.doSearch("SELECT grouppquota.*,sum(pagecounter) AS pagecounter,sum(lifepagecounter) AS lifepagecounter FROM grouppquota,userpquota WHERE groupid=%s AND grouppquota.printerid=%s AND userpquota.printerid=%s AND userid IN (SELECT userid FROM groupsmembers WHERE groupsmembers.groupid=grouppquota.groupid) GROUP BY grouppquota.id,grouppquota.groupid,grouppquota.printerid,grouppquota.softlimit,grouppquota.hardlimit,grouppquota.datelimit" % (self.doQuote(group.ident), self.doQuote(printer.ident), self.doQuote(printer.ident))) 
     250            result = self.doSearch("SELECT id, softlimit, hardlimit, datelimit FROM grouppquota WHERE groupid=%s AND printerid=%s" % (self.doQuote(group.ident), self.doQuote(printer.ident))) 
    245251            if result : 
    246252                fields = result[0] 
     
    249255                grouppquota.HardLimit = fields.get("hardlimit") 
    250256                grouppquota.DateLimit = fields.get("datelimit") 
    251                 grouppquota.PageCounter = fields.get("pagecounter") 
    252                 grouppquota.LifePageCounter = fields.get("lifepagecounter") 
     257                result = self.doSearch("SELECT SUM(lifepagecounter) AS lifepagecounter, SUM(pagecounter) AS pagecounter FROM userpquota WHERE printerid=%s AND userid IN (SELECT userid FROM groupsmembers WHERE groupid=%s)" % (self.doQuote(printer.ident), self.doQuote(group.ident))) 
     258                if result : 
     259                    fields = result[0] 
     260                    grouppquota.PageCounter = fields.get("pagecounter") or 0 
     261                    grouppquota.LifePageCounter = fields.get("lifepagecounter") or 0 
    253262                grouppquota.Exists = 1 
    254263        return grouppquota