Show
Ignore:
Timestamp:
02/08/07 21:13:03 (17 years ago)
Author:
jerome
Message:

Make start= and end= filters also work with payments. For an unknown
reason it didn't already work (not implemented !)...
Ensures that these filters are only allowed for payments and
history, otherwise an SQL syntax error could have occured.

Location:
pykota/trunk/pykota/storages
Files:
2 modified

Legend:

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

    r3133 r3142  
    16201620    def extractPayments(self, extractonly={}) : 
    16211621        """Extracts all payment records.""" 
     1622        startdate = extractonly.get("start") 
     1623        enddate = extractonly.get("end") 
     1624        (startdate, enddate) = self.cleanDates(startdate, enddate) 
    16221625        uname = extractonly.get("username") 
    16231626        entries = [u for u in [self.getUser(name) for name in self.getAllUsersNames(uname)] if u.Exists] 
     
    16261629            for entry in entries : 
    16271630                for (date, amount, description) in entry.Payments : 
    1628                     result.append((entry.Name, amount, date, description)) 
     1631                    if ((startdate is None) and (enddate is None)) or \ 
     1632                       ((startdate is None) and (date <= enddate)) or \ 
     1633                       ((enddate is None) and (date >= startdate)) or \ 
     1634                       ((date >= startdate) and (date <= enddate)) : 
     1635                        result.append((entry.Name, amount, date, description)) 
    16291636            return result         
    16301637         
  • pykota/trunk/pykota/storages/sql.py

    r3139 r3142  
    187187    def extractPayments(self, extractonly={}) : 
    188188        """Extracts all payment records.""" 
     189        startdate = extractonly.get("start") 
     190        enddate = extractonly.get("end") 
     191        for limit in ("start", "end") : 
     192            try : 
     193                del extractonly[limit] 
     194            except KeyError :     
     195                pass 
    189196        thefilter = self.createFilter(extractonly) 
    190197        if thefilter : 
    191198            thefilter = "AND %s" % thefilter 
     199        (startdate, enddate) = self.cleanDates(startdate, enddate) 
     200        if startdate :  
     201            thefilter = "%s AND date>=%s" % (thefilter, self.doQuote(startdate)) 
     202        if enddate :  
     203            thefilter = "%s AND date<=%s" % (thefilter, self.doQuote(enddate)) 
    192204        result = self.doRawSearch("SELECT username,payments.* FROM users,payments WHERE users.id=payments.userid %s ORDER BY payments.id ASC" % thefilter) 
    193205        return self.prepareRawResult(result)