Show
Ignore:
Timestamp:
11/19/03 00:43:12 (20 years ago)
Author:
jalet
Message:

Mailto can be any external command now, as usual.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/pykota/tool.py

    r1171 r1192  
    2222# 
    2323# $Log$ 
     24# Revision 1.55  2003/11/18 23:43:12  jalet 
     25# Mailto can be any external command now, as usual. 
     26# 
    2427# Revision 1.54  2003/10/24 21:52:46  jalet 
    2528# Now can force language when coming from CGI script. 
     
    506509        return action 
    507510     
     511    def externalMailTo(self, cmd, action, user, printername, message) : 
     512        """Warns the user with an external command.""" 
     513        username = user.Name 
     514        email = user.Email or user.Name 
     515        if "@" not in email : 
     516            email = "%s@%s" % (email, self.smtpserver) 
     517        os.system(cmd % locals()) 
     518     
    508519    def warnGroupPQuota(self, grouppquota) : 
    509520        """Checks a group quota and send messages if quota is exceeded on current printer.""" 
     
    512523        admin = self.config.getAdmin(printer.Name) 
    513524        adminmail = self.config.getAdminMail(printer.Name) 
    514         mailto = self.config.getMailTo(printer.Name) 
     525        (mailto, arguments) = self.config.getMailTo(printer.Name) 
    515526        action = self.checkGroupPQuota(grouppquota) 
    516527        if action.startswith("POLICY_") : 
     
    521532            if mailto in [ "BOTH", "ADMIN" ] : 
    522533                self.sendMessageToAdmin(adminmail, _("Print Quota"), adminmessage) 
    523             if mailto in [ "BOTH", "USER" ] : 
     534            if mailto in [ "BOTH", "USER", "EXTERNAL" ] : 
    524535                for user in self.storage.getGroupMembers(group) : 
    525                     self.sendMessageToUser(admin, adminmail, user, _("Print Quota Exceeded"), self.config.getHardWarn(printer.Name)) 
     536                    if mailto != "EXTERNAL" : 
     537                        self.sendMessageToUser(admin, adminmail, user, _("Print Quota Exceeded"), self.config.getHardWarn(printer.Name)) 
     538                    else :     
     539                        self.externalMailTo(arguments, action, user, printer.Name, message) 
    526540        elif action == "WARN" :     
    527541            adminmessage = _("Print Quota low for group %s on printer %s") % (group.Name, printer.Name) 
     
    533547            else :      
    534548                message = self.config.getSoftWarn(printer.Name) 
    535             if mailto in [ "BOTH", "USER" ] : 
     549            if mailto in [ "BOTH", "USER", "EXTERNAL" ] : 
    536550                for user in self.storage.getGroupMembers(group) : 
    537                     self.sendMessageToUser(admin, adminmail, user, _("Print Quota Exceeded"), message) 
     551                    if mailto != "EXTERNAL" : 
     552                        self.sendMessageToUser(admin, adminmail, user, _("Print Quota Exceeded"), message) 
     553                    else :     
     554                        self.externalMailTo(arguments, action, user, printer.Name, message) 
    538555        return action         
    539556         
     
    544561        admin = self.config.getAdmin(printer.Name) 
    545562        adminmail = self.config.getAdminMail(printer.Name) 
    546         mailto = self.config.getMailTo(printer.Name) 
     563        (mailto, arguments) = self.config.getMailTo(printer.Name) 
    547564        action = self.checkUserPQuota(userpquota) 
    548565        if action.startswith("POLICY_") : 
     
    551568            adminmessage = _("Print Quota exceeded for user %s on printer %s") % (user.Name, printer.Name) 
    552569            self.logger.log_message(adminmessage) 
    553             if mailto in [ "BOTH", "USER" ] : 
    554                 self.sendMessageToUser(admin, adminmail, user, _("Print Quota Exceeded"), self.config.getHardWarn(printer.Name)) 
     570            if mailto in [ "BOTH", "USER", "EXTERNAL" ] : 
     571                message = self.config.getHardWarn(printer.Name) 
     572                if mailto != "EXTERNAL" : 
     573                    self.sendMessageToUser(admin, adminmail, user, _("Print Quota Exceeded"), message) 
     574                else :     
     575                    self.externalMailTo(arguments, action, user, printer.Name, message) 
    555576            if mailto in [ "BOTH", "ADMIN" ] : 
    556577                self.sendMessageToAdmin(adminmail, _("Print Quota"), adminmessage) 
     
    558579            adminmessage = _("Print Quota low for user %s on printer %s") % (user.Name, printer.Name) 
    559580            self.logger.log_message(adminmessage) 
    560             if mailto in [ "BOTH", "USER" ] : 
     581            if mailto in [ "BOTH", "USER", "EXTERNAL" ] : 
    561582                if user.LimitBy and (user.LimitBy.lower() == "balance") :  
    562583                    message = self.config.getPoorWarn() 
    563584                else :      
    564585                    message = self.config.getSoftWarn(printer.Name) 
    565                 self.sendMessageToUser(admin, adminmail, user, _("Print Quota Low"), message) 
     586                if mailto != "EXTERNAL" :     
     587                    self.sendMessageToUser(admin, adminmail, user, _("Print Quota Low"), message) 
     588                else :     
     589                    self.externalMailTo(arguments, action, user, printer.Name, message) 
    566590            if mailto in [ "BOTH", "ADMIN" ] : 
    567591                self.sendMessageToAdmin(adminmail, _("Print Quota"), adminmessage)