root / pykota / trunk / TODO @ 2315

Revision 2315, 6.3 kB (checked in by jerome, 19 years ago)

Added a note about a future improvement to pkprinters

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1# $Id$
2
3PyKota - Print Quota for CUPS and LPRng
4
5(c) 2003, 2004, 2005 Jerome Alet <alet@librelogiciel.com>
6This program is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2 of the License, or
9(at your option) any later version.
10
11This program is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with this program; if not, write to the Free Software
18Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19
20============================================================
21
22TODO, in no particular order :
23       
24        - Add the listing of the member printers in pkprinters if the printer
25          is a printer group.
26         
27        - Add a new external hook to allow the overwriting of the job's ticket       
28          (mainly username and billing code) at startup time :
29         
30            1 - hook is launched and can do whatever it wants, like asking
31                the user for username+password or billing code
32               
33            2 - hook prints any (or all) of :   
34           
35                USER:some_username
36                BILLING:some_billingcode
37                DENY
38               
39                if hook doesn't print anything, job processed as usual.
40                if DENY, job is rejected.
41               
42            3 - if billing code or username is invalid, and if PyKota
43                is configured to loop in this case, hook is launched
44                again, otherwise job is rejected.
45               
46            4 - if billing code and/or username is valid, the job's
47                billing code and/or username are overwritten with
48                these values, and PyKota processes the job as usual.
49         
50        - Add a table listing all the allowed billing codes. Unknown
51          billing codes should produce an action which is configurable
52          (reject the job being the default). The billing codes table
53          will contains total pages and cost, and life time pages
54          and cost => speedup for LDAP, and allows people to cleanup
55          the printing history in any case. A tool to manage the
56          table of billing codes must be written, but this will
57          be easy.
58         
59        - Pass-through mode for printers : history correctly filled (including
60          job size) but no impact on user's page counter or account
61          balance : this is meant to be a temporary situation for
62          a printer to be in pass-through mode, for example during
63          an exam where the faculty pays for the printouts and we
64          don't want our users to complain about their credits being
65          "eaten" for mandatory printouts.
66         
67        - Allow several levels of administrative priviledges by allowing
68          files like ~pykota/pykotadmin.someusername.conf (readonly by
69          user 'someusername'), and have the database server deal
70          with the permissions : no need for additionnal code or data
71          in PyKota's database !
72       
73        - Add a "printing denied" indicator on user print quota entries, 
74          to temporarily forbid an user to print on a particular printer.
75         
76        - Maybe per user "denyduplicates" : my 5 years old daughter
77          just prints again when the printer is off...
78          Maybe not needed anymore since denyduplicates now allows
79          an external command to decide if the job should be allowed
80          or denied.
81         
82        - Now that the job size is ALWAYS precomputed, add a
83          MaxJobSize attribute to users and groups (printers as
84          well, maybe ?) to limit each job's size if needed.
85         
86        - Add precomputed job size (and price) to the history for
87          controlling purpose.
88         
89        - Try to talk to education based distribution coordinators
90          (SambaEdu, SkoleLinux, K12LTSP, ...) to see how to
91          better integrate PyKota with these.
92         
93        - Allow soft and hard limits to be increased/decreased.
94       
95        - Add most configuration directives to the database itself,
96          while still allowing to overwrite them with the configuration
97          files at run time.
98       
99        - Ink accounting ala PrintBill.
100       
101        - Price and statistics per page format.
102       
103        - Add a description field to users/groups.
104       
105        - Allow the admin to choose an action to take when the database
106          is unavailable (server is down or something like that), so
107          introduce two directives :
108         
109            nodb: accept|reject|hold
110            lognodb: /path/to/file/for/later/batch/update/of/database
111       
112        - CUPS accepts the "STATE: ..." message as backchannel
113          data : use this to tell CUPS what action has been taken
114          for current job. I did some testing but wasn't able to
115          make it work...
116         
117        - Think about some possible client <=> PyKota dialog
118          possibilities, like embedding a small web server in
119          PyKota for example, or something like that.
120       
121        - Log something when --add is used with existing entries.
122          Maybe add a new command line option to force/not force
123          modification of existing entries.
124         
125        - Finish implementation of quota-then-balance and
126          balance-then-quota.
127         
128        - Introduce the pkusers command.
129          pkusers --nogroup
130          pkusers --ingroups gr1,gr2,... --outgroups gr3,gr4,...
131         
132        - Allow the --ingroups command line option to repykota, to
133          report only users members of the specified groups.
134         
135        - Documentation...
136         
137        - Learn more bits of PHP to help with phpPyKotaAdmin, which
138          is a GREAT tool !
139       
140        - Multidatabase support, e.g. store users in LDAP, quota 
141          related datas in PostgreSQL, history in text file,
142          and so on... For 2.0, probably not before.
143       
144       
145============================================================
146
147Please e-mail bugs to: alet@librelogiciel.com (Jerome Alet)
Note: See TracBrowser for help on using the browser.