- Timestamp:
- 07/29/03 22:55:17 (21 years ago)
- Location:
- pykota/trunk
- Files:
-
- 12 modified
Legend:
- Unmodified
- Added
- Removed
-
pykota/trunk/bin/edpykota
r1105 r1113 23 23 # 24 24 # $Log$ 25 # Revision 1.56 2003/07/29 20:55:17 jalet 26 # 1.14 is out ! 27 # 25 28 # Revision 1.55 2003/07/28 09:11:12 jalet 26 29 # PyKota now tries to add its attributes intelligently in existing LDAP … … 538 541 539 542 if __name__ == "__main__" : 543 retcode = 0 540 544 try : 541 545 defaults = { \ … … 584 588 raise PyKotaToolError, _("incompatible options, see help.") 585 589 else : 586 sys.exit(editor.main(args, options))590 retcode = editor.main(args, options) 587 591 except (PyKotaToolError, PyKotaConfigError, PyKotaStorageError), msg : 588 592 sys.stderr.write("%s\n" % msg) 589 593 sys.stderr.flush() 590 sys.exit(-1) 591 594 retcode = -1 595 596 try : 597 editor.storage.close() 598 except (TypeError, NameError, AttributeError) : 599 pass 600 601 sys.exit(retcode) -
pykota/trunk/bin/pykota
r1080 r1113 23 23 # 24 24 # $Log$ 25 # Revision 1.37 2003/07/29 20:55:17 jalet 26 # 1.14 is out ! 27 # 25 28 # Revision 1.36 2003/07/10 06:09:52 jalet 26 29 # Incorrect documentation string … … 232 235 return -1 233 236 234 def main( ) :237 def main(thefilter) : 235 238 """Do it, and do it right !""" 236 # Initializes the current tool237 kotafilter = PyKotaFilter()238 239 239 # 240 240 # If this is a CUPS filter, we should act and die like a CUPS filter when needed 241 if kotafilter.printingsystem == "CUPS" :241 if thefilter.printingsystem == "CUPS" : 242 242 if len(sys.argv) not in (6, 7) : 243 243 sys.stderr.write("ERROR: %s job-id user title copies options [file]\n" % sys.argv[0]) 244 return kotafilter.removeJob()244 return thefilter.removeJob() 245 245 246 246 # Get the last page counter and last username from the Quota Storage backend 247 printer = kotafilter.storage.getPrinter(kotafilter.printername)247 printer = thefilter.storage.getPrinter(thefilter.printername) 248 248 if not printer.Exists : 249 249 # The printer is unknown from the Quota Storage perspective 250 250 # we let the job pass through, but log a warning message 251 kotafilter.logger.log_message(_("Printer %s not registered in the PyKota system") % kotafilter.printername, "warn")251 thefilter.logger.log_message(_("Printer %s not registered in the PyKota system") % thefilter.printername, "warn") 252 252 else : 253 user = kotafilter.storage.getUser(kotafilter.username)253 user = thefilter.storage.getUser(thefilter.username) 254 254 if not user.Exists : 255 255 # The user is unknown from the Quota Storage perspective … … 257 257 # either let the job pass through or reject it, but we 258 258 # log a message in any case. 259 policy = kotafilter.config.getPrinterPolicy(kotafilter.printername)259 policy = thefilter.config.getPrinterPolicy(thefilter.printername) 260 260 if policy == "ALLOW" : 261 261 action = "POLICY_ALLOW" 262 262 else : 263 263 action = "POLICY_DENY" 264 kotafilter.logger.log_message(_("User %s not registered in the PyKota system, applying default policy (%s) for printer %s") % (kotafilter.username, action, kotafilter.printername), "warn")264 thefilter.logger.log_message(_("User %s not registered in the PyKota system, applying default policy (%s) for printer %s") % (thefilter.username, action, thefilter.printername), "warn") 265 265 if action == "POLICY_DENY" : 266 return kotafilter.removeJob()266 return thefilter.removeJob() 267 267 else : 268 268 # Now does the accounting and act depending on the result 269 action = kotafilter.accounter.doAccounting(printer, user)269 action = thefilter.accounter.doAccounting(printer, user) 270 270 271 271 # if not allowed to print then die, else proceed. 272 272 if action == "DENY" : 273 273 # No, just die cleanly 274 return kotafilter.removeJob()274 return thefilter.removeJob() 275 275 276 276 # pass the job untouched to the underlying layer 277 kotafilter.accounter.filterInput(kotafilter.inputfile)277 thefilter.accounter.filterInput(thefilter.inputfile) 278 278 279 return kotafilter.acceptJob()279 return thefilter.acceptJob() 280 280 281 281 if __name__ == "__main__" : 282 282 retcode = -1 283 283 try : 284 retcode = main() 284 # Initializes the current tool 285 kotafilter = PyKotaFilter() 286 retcode = main(kotafilter) 285 287 except (PyKotaToolError, PyKotaConfigError, PyKotaStorageError, PyKotaAccounterError, AttributeError, KeyError, IndexError, ValueError, IOError), msg : 286 288 sys.stderr.write("ERROR : PyKota filter failed (%s)\n" % msg) 287 289 sys.stderr.flush() 290 retcode = -1 291 292 try : 293 kotafilter.storage.close() 294 except (TypeError, NameError, AttributeError) : 295 pass 296 288 297 sys.exit(retcode) 289 -
pykota/trunk/bin/pykotme
r1099 r1113 23 23 # 24 24 # $Log$ 25 # Revision 1.3 2003/07/29 20:55:17 jalet 26 # 1.14 is out ! 27 # 25 28 # Revision 1.2 2003/07/25 10:41:29 jalet 26 29 # Better documentation. … … 150 153 151 154 if __name__ == "__main__" : 155 retcode = 0 152 156 try : 153 157 defaults = { \ … … 173 177 sender.display_version_and_quit() 174 178 else : 175 sys.exit(sender.main(args, options))179 retcode = sender.main(args, options) 176 180 except (PyKotaToolError, PyKotaConfigError, PyKotaStorageError), msg : 177 181 sys.stderr.write("%s\n" % msg) 178 182 sys.stderr.flush() 179 sys.exit(-1)183 retcode = -1 180 184 185 try : 186 sender.storage.close() 187 except (TypeError, NameError, AttributeError) : 188 pass 189 190 sys.exit(retcode) -
pykota/trunk/bin/repykota
r1071 r1113 23 23 # 24 24 # $Log$ 25 # Revision 1.42 2003/07/29 20:55:17 jalet 26 # 1.14 is out ! 27 # 25 28 # Revision 1.41 2003/07/07 12:19:52 jalet 26 29 # Now repykota and warnpykota --groups check the groups the user is a member of … … 287 290 raise PyKotaToolError, _("incompatible options, see help.") 288 291 else : 289 sys.exit(reportTool.main(args, options))292 retcode = reportTool.main(args, options) 290 293 except (PyKotaToolError, PyKotaConfigError, PyKotaStorageError, PyKotaReporterError), msg : 291 294 sys.stderr.write("%s\n" % msg) 292 295 sys.stderr.flush() 293 sys.exit(-1) 294 296 retcode = -1 297 298 try : 299 reportTool.storage.close() 300 except (TypeError, NameError, AttributeError) : 301 pass 302 303 sys.exit(retcode) -
pykota/trunk/bin/warnpykota
r1071 r1113 23 23 # 24 24 # $Log$ 25 # Revision 1.22 2003/07/29 20:55:17 jalet 26 # 1.14 is out ! 27 # 25 28 # Revision 1.21 2003/07/07 12:19:52 jalet 26 29 # Now repykota and warnpykota --groups check the groups the user is a member of … … 199 202 200 203 if __name__ == "__main__" : 204 retcode = 0 201 205 try : 202 206 defaults = { \ … … 226 230 raise PyKotaToolError, _("incompatible options, see help.") 227 231 else : 228 sys.exit(sender.main(args, options))232 retcode = sender.main(args, options) 229 233 except (PyKotaToolError, PyKotaConfigError, PyKotaStorageError), msg : 230 234 sys.stderr.write("%s\n" % msg) 231 235 sys.stderr.flush() 232 sys.exit(-1) 233 236 retcode = -1 237 238 try : 239 sender.storage.close() 240 except (TypeError, NameError, AttributeError) : 241 pass 242 243 sys.exit(retcode) -
pykota/trunk/cgi-bin/printquota.cgi
r1054 r1113 23 23 # 24 24 # $Log$ 25 # Revision 1.12 2003/07/29 20:55:17 jalet 26 # 1.14 is out ! 27 # 25 28 # Revision 1.11 2003/07/01 12:37:31 jalet 26 29 # Nicer UI … … 179 182 admin.guiAction() 180 183 admin.guiDisplay() 184 185 try : 186 admin.storage.close() 187 except (TypeError, NameError, AttributeError) : 188 pass 189 190 sys.exit(0) -
pykota/trunk/NEWS
r1111 r1113 22 22 PyKota NEWS : 23 23 24 - 1.14 : 25 26 - The PostgreSQL database connection is now always closed before 27 exit. The LDAP database connection too, but it didn't suffer 28 from the problem anyway, AFAICT. 29 24 30 - 1.14beta2 : 25 31 -
pykota/trunk/pykota/storages/ldapstorage.py
r1112 r1113 21 21 # 22 22 # $Log$ 23 # Revision 1.24 2003/07/29 20:55:17 jalet 24 # 1.14 is out ! 25 # 23 26 # Revision 1.23 2003/07/29 19:52:32 jalet 24 27 # Forgot to read the email field from LDAP … … 143 146 144 147 def __del__(self) : 148 """Ensures that the database connection is closed.""" 149 self.close() 150 151 def close(self) : 145 152 """Closes the database connection.""" 146 153 if not self.closed : -
pykota/trunk/pykota/storages/pgstorage.py
r1087 r1113 21 21 # 22 22 # $Log$ 23 # Revision 1.11 2003/07/29 20:55:17 jalet 24 # 1.14 is out ! 25 # 23 26 # Revision 1.10 2003/07/16 21:53:08 jalet 24 27 # Really big modifications wrt new configuration file's location and content. … … 90 93 91 94 def __del__(self) : 95 """Ensures that the database connection is closed.""" 96 self.close() 97 98 def close(self) : 92 99 """Closes the database connection.""" 93 100 if not self.closed : -
pykota/trunk/pykota/tool.py
r1091 r1113 21 21 # 22 22 # $Log$ 23 # Revision 1.49 2003/07/29 20:55:17 jalet 24 # 1.14 is out ! 25 # 23 26 # Revision 1.48 2003/07/21 23:01:56 jalet 24 27 # Modified some messages aout soft limit … … 234 237 self.smtpserver = self.config.getSMTPServer() 235 238 239 def clean(self) : 240 """Ensures that the database is closed.""" 241 try : 242 self.storage.close() 243 except (TypeError, NameError, AttributeError) : 244 pass 245 236 246 def display_version_and_quit(self) : 237 247 """Displays version number, then exists successfully.""" 248 self.clean() 238 249 print version.__version__ 239 250 sys.exit(0) … … 241 252 def display_usage_and_quit(self) : 242 253 """Displays command line usage, then exists successfully.""" 254 self.clean() 243 255 print self.documentation 244 256 sys.exit(0) -
pykota/trunk/pykota/version.py
r1111 r1113 21 21 # 22 22 23 __version__ = "1.14 beta2_unofficial"23 __version__ = "1.14_unofficial" 24 24 25 25 __doc__ = """PyKota : a complete Printing Quota Solution for CUPS and LPRng.""" -
pykota/trunk/setup.py
r1111 r1113 23 23 # 24 24 # $Log$ 25 # Revision 1.23 2003/07/29 20:55:17 jalet 26 # 1.14 is out ! 27 # 25 28 # Revision 1.22 2003/07/29 09:54:03 jalet 26 29 # Added configurable LDAP mail attribute support … … 271 274 sys.stdout.write("DATABASE SCHEMA USING initscripts/postgresql/upgrade-to-1.14.sql\n") 272 275 sys.stdout.write("PLEASE READ DOCUMENTATION IN initscripts/postgresql/ TO LEARN HOW TO DO.\n") 276 sys.stdout.write("YOU CAN DO THAT AFTER THE INSTALLATION IS FINISHED, OR PRESS CTRL+C NOW.\n") 273 277 sys.stdout.write("\n\nYOU DON'T HAVE ANYTHING SPECIAL TO DO IF THIS IS YOUR FIRST INSTALLATION.\n\n") 274 278 dummy = raw_input("Please press ENTER when you have read the message above. ")