root / pykota / trunk / TODO @ 2310

Revision 2310, 6.2 kB (checked in by jerome, 19 years ago)

Added a note about the denyduplicates directive : maybe
adding such an attribute to users is not necessary anymore.

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