root / pykota / trunk / TODO @ 2304

Revision 2304, 6.7 kB (checked in by jerome, 19 years ago)

New item

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