root / pykota / trunk / tests / filldb.py @ 3435

Revision 3435, 7.5 kB (checked in by jerome, 16 years ago)

Removed command line options incompatible with 'edpykota --groups'.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
RevLine 
[2682]1#! /usr/bin/env python
[3411]2# -*- coding: utf-8 -*-*-
[3259]3#
4# PyKota : Print Quotas for CUPS
5#
[3275]6# (c) 2003, 2004, 2005, 2006, 2007, 2008 Jerome Alet <alet@librelogiciel.com>
[3259]7# This program is free software: you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation, either version 3 of the License, or
10# (at your option) any later version.
[3413]11#
[3259]12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15# GNU General Public License for more details.
[3413]16#
[3259]17# You should have received a copy of the GNU General Public License
18# along with this program.  If not, see <http://www.gnu.org/licenses/>.
19#
[2682]20# $Id$
21
22
23import sys
24import os
25
26def createBillingCodes(number) :
27    """Creates a number of billing codes."""
[2683]28    sys.stdout.write("Adding %i billing codes...\n" % number)
29    billingcodes = [ "test-billingcode-%05i" % i for i in range(number) ]
30    argsfile = open("arguments.list", "w")
31    argsfile.write('--add\n--reset\n--description\n"a billing code"\n')
32    for bname in billingcodes :
33        argsfile.write("%s\n" % bname)
[3413]34    argsfile.close()
35    os.system('pkbcodes --arguments arguments.list')
[2729]36    return billingcodes
[2682]37
[2729]38def deleteBillingCodes(billingcodes) :
[2682]39    """Deletes all test billing codes."""
40    sys.stdout.write("Deleting billing codes...\n")
[2729]41    argsfile = open("arguments.list", "w")
42    argsfile.write('--delete\n')
43    for bname in billingcodes :
44        argsfile.write("%s\n" % bname)
[3413]45    argsfile.close()
46    os.system('pkbcodes --arguments arguments.list')
47
[2682]48def createPrinters(number) :
49    """Creates a number of printers."""
[2683]50    sys.stdout.write("Adding %i printers...\n" % number)
51    printernames = [ "test-printer-%05i" % i for i in range(number) ]
52    argsfile = open("arguments.list", "w")
53    argsfile.write('--add\n--charge\n0.05\n--maxjobsize\n5\n--passthrough\n--description\n"a printer"\n')
54    for pname in printernames :
55        argsfile.write("%s\n" % pname)
[3413]56    argsfile.close()
57    os.system('pkprinters --arguments arguments.list')
[2729]58    return printernames
[2682]59
[2729]60def deletePrinters(printernames) :
[2682]61    """Deletes all test printers."""
62    sys.stdout.write("Deleting printers...\n")
[2729]63    argsfile = open("arguments.list", "w")
64    argsfile.write('--delete\n')
65    for pname in printernames :
66        argsfile.write("%s\n" % pname)
[3413]67    argsfile.close()
68    os.system('pkprinters --arguments arguments.list')
69
[2682]70def createUsers(number) :
71    """Creates a number of users."""
[2683]72    sys.stdout.write("Adding %i users...\n" % number)
73    usernames = [ "test-user-%05i" % i for i in range(number) ]
74    argsfile = open("arguments.list", "w")
[2773]75    argsfile.write('--add\n--limitby\nbalance\n--balance\n50.0\n--description\n"an user"\n--comment\n"fake payment"\n')
[2683]76    for uname in usernames :
77        argsfile.write("%s\n" % uname)
[3413]78    argsfile.close()
79    os.system('pkusers --arguments arguments.list')
[2729]80    return usernames
[2682]81
[2729]82def deleteUsers(usernames) :
[2682]83    """Deletes all test users."""
84    sys.stdout.write("Deleting users...\n")
[2729]85    argsfile = open("arguments.list", "w")
86    argsfile.write('--delete\n')
87    for uname in usernames :
88        argsfile.write("%s\n" % uname)
[3413]89    argsfile.close()
90    os.system('pkusers --arguments arguments.list')
91
[2800]92def createGroups(number) :
93    """Creates a number of groups."""
94    sys.stdout.write("Adding %i groups...\n" % number)
95    groupnames = [ "test-group-%05i" % i for i in range(number) ]
96    argsfile = open("arguments.list", "w")
97    argsfile.write('--groups\n--add\n--limitby\nquota\n--description\n"a group"\n')
98    for gname in groupnames :
99        argsfile.write("%s\n" % gname)
[3413]100    argsfile.close()
101    os.system('pkusers --arguments arguments.list')
[2800]102    return groupnames
103
104def deleteGroups(groupnames) :
105    """Deletes all test groups."""
106    sys.stdout.write("Deleting groups...\n")
107    argsfile = open("arguments.list", "w")
108    argsfile.write('--groups\n--delete\n')
109    for gname in groupnames :
110        argsfile.write("%s\n" % gname)
[3413]111    argsfile.close()
112    os.system('pkusers --arguments arguments.list')
113
[2729]114def createUserPQuotas(usernames, printernames) :
115    """Creates a number of user print quota entries."""
116    number = len(usernames) * len(printernames)
117    sys.stdout.write("Adding %i user print quota entries...\n" % number)
118    argsfile = open("arguments.list", "w")
119    argsfile.write('--add\n--softlimit\n100\n--hardlimit\n110\n--reset\n--hardreset\n--printer\n')
120    argsfile.write("%s\n" % ",".join(printernames))
121    for uname in usernames :
122        argsfile.write("%s\n" % uname)
[3413]123    argsfile.close()
124    os.system('edpykota --arguments arguments.list')
[2729]125
126def deleteUserPQuotas(usernames, printernames) :
127    """Deletes all test user print quota entries."""
128    number = len(usernames) * len(printernames)
129    sys.stdout.write("Deleting user print quota entries...\n")
130    argsfile = open("arguments.list", "w")
131    argsfile.write('--delete\n--printer\n')
132    argsfile.write("%s\n" % ",".join(printernames))
133    for uname in usernames :
134        argsfile.write("%s\n" % uname)
[3413]135    argsfile.close()
136    os.system('edpykota --arguments arguments.list')
137
[2800]138def createGroupPQuotas(groupnames, printernames) :
139    """Creates a number of group print quota entries."""
140    number = len(groupnames) * len(printernames)
141    sys.stdout.write("Adding %i group print quota entries...\n" % number)
142    argsfile = open("arguments.list", "w")
[3435]143    argsfile.write('--groups\n--add\n--softlimit\n100\n--hardlimit\n110\n--printer\n')
[2800]144    argsfile.write("%s\n" % ",".join(printernames))
145    for gname in groupnames :
146        argsfile.write("%s\n" % gname)
[3413]147    argsfile.close()
148    os.system('edpykota --arguments arguments.list')
[2800]149
150def deleteGroupPQuotas(groupnames, printernames) :
151    """Deletes all test group print quota entries."""
152    number = len(groupnames) * len(printernames)
153    sys.stdout.write("Deleting group print quota entries...\n")
154    argsfile = open("arguments.list", "w")
155    argsfile.write('--groups\n--delete\n--printer\n')
156    argsfile.write("%s\n" % ",".join(printernames))
157    for gname in groupnames :
158        argsfile.write("%s\n" % gname)
[3413]159    argsfile.close()
160    os.system('edpykota --arguments arguments.list')
161
162if __name__ == "__main__" :
[2682]163    if len(sys.argv) == 1 :
[2800]164        sys.stderr.write("usage :  %s  [--nodelete]  NbBillingCodes  NbPrinters  NbUsers  NbGroups\n" % sys.argv[0])
[3413]165    else :
[2748]166        delete = True
167        args = sys.argv[1:]
168        if args[0] == "--nodelete" :
169            args = args[1:]
170            delete = False
171        nbbillingcodes = int(args[0])
172        nbprinters = int(args[1])
173        nbusers = int(args[2])
[2800]174        nbgroups = int(args[3])
[2683]175        if nbbillingcodes :
[2729]176            bcodes = createBillingCodes(nbbillingcodes)
[2683]177        if nbprinters :
[2729]178            printers = createPrinters(nbprinters)
[3413]179        if nbusers :
[2729]180            users = createUsers(nbusers)
[3413]181        if nbgroups :
[2800]182            groups = createGroups(nbgroups)
[3413]183
184        if nbusers and nbprinters :
[2729]185            createUserPQuotas(users, printers)
[2748]186            if delete :
187                deleteUserPQuotas(users, printers)
[3413]188
189        if nbgroups and nbprinters :
[2800]190            createGroupPQuotas(groups, printers)
191            if delete :
192                deleteGroupPQuotas(groups, printers)
[3413]193
194        if delete :
195            if nbbillingcodes :
[2748]196                deleteBillingCodes(bcodes)
[3413]197            if nbgroups :
[2800]198                deleteGroups(groups)
[3413]199            if nbusers :
[2800]200                deleteUsers(users)
[3413]201            if nbprinters :
[2800]202                deletePrinters(printers)
[2682]203        os.remove("arguments.list")
Note: See TracBrowser for help on using the browser.