Changeset 56

Show
Ignore:
Timestamp:
01/14/05 21:00:43 (20 years ago)
Author:
jerome
Message:

Implemented classes for user and user quota

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykoticon/trunk/bin/pykoticon

    r55 r56  
    2424 
    2525import sys 
    26 import os 
    27 import pwd 
    28 import time 
    2926import urllib 
    3027import urllib2 
    3128 
    3229DUMPYKOTA_URL = "http://cgi.librelogiciel.com/cgi-bin/dumpykota.cgi" 
    33 USERNAME = "jerome" 
    3430 
     31class UserQuota : 
     32    """A class for PyKota User Print Quota entries.""" 
     33    def __init__(self, printername, pagecount, softlimit, hardlimit, datelimit): 
     34        """Initialize user print quota datas.""" 
     35        self.PrinterName = printername 
     36        try : 
     37            self.PageCounter = int(pagecount) 
     38        except (ValueError, TypeError) : 
     39            self.PageCounter = 0 
     40        try : 
     41            self.SoftLimit = int(softlimit) 
     42        except (ValueError, TypeError) : 
     43            self.SoftLimit = None 
     44        try : 
     45            self.HardLimit = int(hardlimit) 
     46        except (ValueError, TypeError) : 
     47            self.HardLimit = None 
     48        self.DateLimit = datelimit 
     49         
     50class User : 
     51    """A class for PyKota users.""" 
     52    def __init__(self, username, userinfo, userquotas) : 
     53        """Initialize user datas.""" 
     54        self.Name = username 
     55        self.LimitBy = userinfo["limitby"][0].lower() 
     56        try : 
     57            self.Balance = float(userinfo["balance"][0]) 
     58        except (ValueError, TypeError) : 
     59            self.Balance = 0.0 
     60        try : 
     61            self.LifeTimePaid = float(userinfo["lifetimepaid"][0]) 
     62        except (ValueError, TypeError) : 
     63            self.LifeTimePaid = 0.0 
     64        self.Quotas = [] 
     65        for i in range(len(userquotas["printername"])) : 
     66            printername = userquotas["printername"][i] 
     67            pagecounter = userquotas["pagecounter"][i] 
     68            softlimit = userquotas["softlimit"][i] 
     69            hardlimit = userquotas["hardlimit"][i] 
     70            datelimit = userquotas["datelimit"][i] 
     71            self.Quotas.append(UserQuota(printername, pagecounter, softlimit, \ 
     72                                         hardlimit, datelimit)) 
     73             
    3574class CGINetworkInterface : 
    3675    """A class for all network interactions.""" 
    37     def __init__(self, url, username=None, password=None) : 
     76    def __init__(self, cgiurl, authname=None, authpw=None) : 
    3877        """Initialize CGI connection datas.""" 
    39         self.url = url 
    40         self.username = username 
    41         self.password = password 
     78        self.cgiurl = cgiurl 
     79        self.authname = authname 
     80        self.authpw = authpw 
    4281         
    4382    def retrieveDatas(self, arguments, fieldnames) : 
     
    4988        answer = {} 
    5089        try :             
    51             url = "%s?%s" % (self.url, urllib.urlencode(args)) 
     90            url = "%s?%s" % (self.cgiurl, urllib.urlencode(args)) 
    5291            u = urllib2.urlopen(url) 
    5392            lines = u.readlines() 
     
    61100                indices = [fields.index(fname) for fname in fieldnames] 
    62101                answer = dict([ (fieldname, \ 
    63                                   [ line[fields.index(fieldname)][1:-1] for line in lines[1:] ]) \ 
     102                                  [ line[fields.index(fieldname)][1:-1] \ 
     103                                    for line in lines[1:] ]) \ 
    64104                                for fieldname in fieldnames ]) 
    65105            except :     
     
    87127                      "filter" : "username=%s" % username, 
    88128                    }   
    89         return self.retrieveDatas(arguments, ("printername", "pagecounter", "softlimit", "datelimit")) 
     129        return self.retrieveDatas(arguments, ("printername", "pagecounter", \ 
     130                                              "softlimit", "hardlimit", "datelimit")) 
     131                                               
     132    def getUser(self, username) : 
     133        """Retrieves the user account and quota information.""" 
     134        info = self.getUserInfo(username) 
     135        quotas = self.getUserPQuotas(username) 
     136        return User(username, info, quotas) 
    90137     
    91138if __name__ == "__main__" : 
    92139    net = CGINetworkInterface(DUMPYKOTA_URL) 
    93     print "List of printers : ", net.getPrinterNames() 
     140    #print "List of printers : ", net.getPrinterNames() 
    94141     
    95     print "User : ", net.getUserInfo("jerome") 
     142    #print "User : ", net.getUserInfo("jerome") 
    96143     
    97     print "User print quotas : ", net.getUserPQuotas("jerome") 
     144    #print "User print quotas : ", net.getUserPQuotas("jerome") 
     145    jerome = net.getUser("jerome") 
    98146