Changeset 3413 for pykota/trunk/cgi-bin

Show
Ignore:
Timestamp:
09/27/08 22:02:37 (16 years ago)
Author:
jerome
Message:

Removed unnecessary spaces at EOL.

Location:
pykota/trunk/cgi-bin
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/cgi-bin/dumpykota.cgi

    r3411 r3413  
    1111# the Free Software Foundation, either version 3 of the License, or 
    1212# (at your option) any later version. 
    13 #  
     13# 
    1414# This program is distributed in the hope that it will be useful, 
    1515# but WITHOUT ANY WARRANTY; without even the implied warranty of 
    1616# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
    1717# GNU General Public License for more details. 
    18 #  
     18# 
    1919# You should have received a copy of the GNU General Public License 
    2020# along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     
    4242    <script type="text/javascript"> 
    4343    <!-- 
    44       function checkvalues()  
     44      function checkvalues() 
    4545      { 
    4646          if ((document.mainform.format.value == "cups") && (document.mainform.datatype.value != "history")) 
     
    4949              return false; 
    5050          } 
    51            
     51 
    5252          if (document.mainform.sum.checked && (document.mainform.datatype.value != "payments") && (document.mainform.datatype.value != "history")) 
    5353          { 
     
    5555              return false; 
    5656          } 
    57            
     57 
    5858          if (document.mainform.sum.checked && (document.mainform.format.value == "cups")) 
    5959          { 
     
    6161              return false; 
    6262          } 
    63            
     63 
    6464          return true; 
    6565      } 
     
    9292          %s 
    9393        </p>""" 
    94      
     94 
    9595footer = """ 
    9696        <table> 
     
    100100            </td> 
    101101          </tr> 
    102         </table>   
     102        </table> 
    103103      </form> 
    104     </p>   
     104    </p> 
    105105    <hr width="25%%" /> 
    106106    <p> 
    107107      <font size="-2"> 
    108108        <a href="http://www.pykota.com/">%s</a> 
    109         &copy; %s %s  
     109        &copy; %s %s 
    110110        <br /> 
    111111        <pre> 
     
    115115    </p> 
    116116  </body> 
    117 </html>"""   
     117</html>""" 
    118118 
    119119class PyKotaDumperGUI(DumPyKota) : 
     
    137137        content.append(u"<br />") 
    138138        content.append(self.htmlSumCheckbox(self.options.sum)) 
    139         content.append(footer % (_("Dump"),  
    140                                  version.__doc__,  
    141                                  version.__years__,  
    142                                  version.__author__,  
     139        content.append(footer % (_("Dump"), 
     140                                 version.__doc__, 
     141                                 version.__years__, 
     142                                 version.__author__, 
    143143                                 saxutils.escape(version.__gplblurb__))) 
    144144        for c in content : 
    145145            sys.stdout.write(c.encode(self.charset, "replace")) 
    146146        sys.stdout.flush() 
    147          
    148     def htmlListDataTypes(self, selected="") :     
     147 
     148    def htmlListDataTypes(self, selected="") : 
    149149        """Displays the datatype selection list.""" 
    150150        message = '<table><tr><td valign="top">%s :</td><td valign="top"><select name="datatype">' % _("Data Type") 
     
    156156        message += '</select></td></tr></table>' 
    157157        return message 
    158          
    159     def htmlListFormats(self, selected="") :     
     158 
     159    def htmlListFormats(self, selected="") : 
    160160        """Displays the formats selection list.""" 
    161161        message = '<table><tr><td valign="top">%s :</td><td valign="top"><select name="format">' % _("Output Format") 
     
    167167        message += '</select></td></tr></table>' 
    168168        return message 
    169          
    170     def htmlFilterInput(self, value="") :     
     169 
     170    def htmlFilterInput(self, value="") : 
    171171        """Input the optional dump filter.""" 
    172172        return _("Filter") + (' : <input type="text" name="filter" size="40" value="%s" /> <em>e.g. <strong>username=jerome printername=HP2100 start=today-30</strong></em>' % (value or "")) 
    173          
    174     def htmlOrderbyInput(self, value="") :     
     173 
     174    def htmlOrderbyInput(self, value="") : 
    175175        """Input the optional ordering.""" 
    176176        return _("Ordering") + (' : <input type="text" name="orderby" size="40" value="%s" /> <em>e.g. <strong>+username,-printername</strong></em>' % (value or "")) 
    177          
    178     def htmlSumCheckbox(self, checked="") :     
     177 
     178    def htmlSumCheckbox(self, checked="") : 
    179179        """Input the optional Sum option.""" 
    180180        return _("Summarize") + (' : <input type="checkbox" name="sum" %s /> <em>%s</em>' % ((checked and 'checked="checked"'), _("only for payments or history"))) 
    181          
     181 
    182182    def guiAction(self) : 
    183183        """Main function""" 
    184184        try : 
    185185            wantreport = self.form.has_key("report") 
    186         except TypeError :     
     186        except TypeError : 
    187187            pass # WebDAV request probably, seen when trying to open a csv file in OOo 
    188         else :     
     188        else : 
    189189            if wantreport : 
    190190                try : 
     
    193193                    if self.form.has_key("format") : 
    194194                        self.options.format = self.form["format"].value 
    195                     if self.form.has_key("filter") :     
     195                    if self.form.has_key("filter") : 
    196196                        self.arguments = self.form["filter"].value.split() 
    197                     if self.form.has_key("sum") :     
     197                    if self.form.has_key("sum") : 
    198198                        self.options.sum = self.form["sum"].value 
    199                     if self.form.has_key("orderby") :     
     199                    if self.form.has_key("orderby") : 
    200200                        self.options.orderby = self.form["orderby"].value 
    201                     # when no authentication is done, or when the remote username     
     201                    # when no authentication is done, or when the remote username 
    202202                    # is 'root' (even if not run as root of course), then unrestricted 
    203203                    # dump is allowed. 
    204                     remuser = os.environ.get("REMOTE_USER", "root")     
     204                    remuser = os.environ.get("REMOTE_USER", "root") 
    205205                    # special hack to accomodate mod_auth_ldap Apache module 
    206206                    try : 
    207207                        remuser = remuser.split("=")[1].split(",")[0] 
    208                     except IndexError :     
     208                    except IndexError : 
    209209                        pass 
    210210                    if remuser != "root" : 
     
    214214                        if self.options.data not in ["printers", "pmembers", "groups", "gpquotas"] : 
    215215                            self.arguments.append("username=%s" % remuser) 
    216                          
    217                     fname = "error"     
     216 
     217                    fname = "error" 
    218218                    ctype = "text/plain" 
    219219                    if self.options.format in ("csv", "ssv") : 
     
    231231                        ctype = "text/plain" 
    232232                        fname = "page_log" 
    233                     print "Content-type: %s" % ctype     
    234                     print "Content-disposition: attachment; filename=%s" % fname  
     233                    print "Content-type: %s" % ctype 
     234                    print "Content-disposition: attachment; filename=%s" % fname 
    235235                    print 
    236236                    self.main(self.arguments, self.options, restricted=0) 
    237237                except : 
    238238                    print 'Content-type: text/html\n\n<html><head><title>CGI Error</title></head><body><p><font color="red">%s</font></p></body></html>' % self.crashed("CGI Error").replace("\n", "<br />") 
    239             else :         
     239            else : 
    240240                self.guiDisplay() 
    241              
    242 class FakeCommandLineOptions :             
     241 
     242class FakeCommandLineOptions : 
    243243    """A class to fake command line options.""" 
    244244    output = "-" 
     
    247247    sum = None 
    248248    orderby = None 
    249      
     249 
    250250if __name__ == "__main__" : 
    251251    utils.reinitcgilocale() 
     
    258258    try : 
    259259        admin.storage.close() 
    260     except (TypeError, NameError, AttributeError) :     
     260    except (TypeError, NameError, AttributeError) : 
    261261        pass 
    262          
     262 
    263263    sys.exit(0) 
  • pykota/trunk/cgi-bin/printquota.cgi

    r3411 r3413  
    1111# the Free Software Foundation, either version 3 of the License, or 
    1212# (at your option) any later version. 
    13 #  
     13# 
    1414# This program is distributed in the hope that it will be useful, 
    1515# but WITHOUT ANY WARRANTY; without even the implied warranty of 
    1616# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
    1717# GNU General Public License for more details. 
    18 #  
     18# 
    1919# You should have received a copy of the GNU General Public License 
    2020# along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     
    6868          </tr> 
    6969        </table>""" 
    70      
     70 
    7171footer = """ 
    7272        <table> 
     
    7676            </td> 
    7777          </tr> 
    78         </table>   
     78        </table> 
    7979      </form> 
    8080    </p> 
     
    8383      <font size="-2"> 
    8484        <a href="http://www.pykota.com/">%s</a> 
    85         &copy; %s %s  
     85        &copy; %s %s 
    8686        <br /> 
    8787        <pre> 
     
    9191    </p> 
    9292  </body> 
    93 </html>"""   
     93</html>""" 
    9494 
    9595class PyKotaReportGUI(PyKotaTool) : 
     
    104104                              version.__version__, _("PyKota Reports"), \ 
    105105                              _("Report")) ] 
    106         content.append(self.body)                       
    107         content.append(footer % (_("Report"),  
    108                                  version.__doc__,  
    109                                  version.__years__,  
    110                                  version.__author__,  
     106        content.append(self.body) 
     107        content.append(footer % (_("Report"), 
     108                                 version.__doc__, 
     109                                 version.__years__, 
     110                                 version.__author__, 
    111111                                 saxutils.escape(version.__gplblurb__))) 
    112112        for c in content : 
    113113            sys.stdout.write(c.encode(self.charset, "replace")) 
    114114        sys.stdout.flush() 
    115          
     115 
    116116    def error(self, message) : 
    117117        """Adds an error message to the GUI's body.""" 
    118118        if message : 
    119119            self.body = '<p><font color="red">%s</font></p>\n%s' % (message, self.body) 
    120          
    121     def htmlListPrinters(self, selected=[], mask="*") :     
     120 
     121    def htmlListPrinters(self, selected=[], mask="*") : 
    122122        """Displays the printers multiple selection list.""" 
    123123        printers = self.storage.getMatchingPrinters(mask) 
     
    131131        message += '</select></td></tr></table>' 
    132132        return message 
    133          
    134     def htmlUGNamesInput(self, value="*") :     
     133 
     134    def htmlUGNamesInput(self, value="*") : 
    135135        """Input field for user/group names wildcard.""" 
    136136        return _("User / Group names mask") + (' : <input type="text" name="ugmask" size="20" value="%s" /> <em>e.g. <strong>jo*</strong></em>' % (value or "*")) 
    137          
     137 
    138138    def htmlGroupsCheckbox(self, isgroup=0) : 
    139139        """Groups checkbox.""" 
    140140        if isgroup : 
    141141            return _("Groups report") + ' : <input type="checkbox" checked="checked" name="isgroup" />' 
    142         else :     
     142        else : 
    143143            return _("Groups report") + ' : <input type="checkbox" name="isgroup" />' 
    144              
     144 
    145145    def guiAction(self) : 
    146146        """Main function""" 
    147147        printers = ugmask = isgroup = None 
    148         remuser = os.environ.get("REMOTE_USER", "root")     
     148        remuser = os.environ.get("REMOTE_USER", "root") 
    149149        # special hack to accomodate mod_auth_ldap Apache module 
    150150        try : 
    151151            remuser = remuser.split("=")[1].split(",")[0] 
    152         except IndexError :     
     152        except IndexError : 
    153153            pass 
    154154        self.body = "<p>%s</p>\n" % _("Please click on the above button") 
     
    159159                    printersfield = [ printersfield ] 
    160160                printers = [self.storage.getPrinter(p.value) for p in printersfield] 
    161             else :     
     161            else : 
    162162                printers = self.storage.getMatchingPrinters("*") 
    163163            if remuser == "root" : 
    164                 if self.form.has_key("ugmask") :      
     164                if self.form.has_key("ugmask") : 
    165165                    ugmask = self.form["ugmask"].value 
    166                 else :      
     166                else : 
    167167                    ugmask = "*" 
    168             else :         
    169                 if self.form.has_key("isgroup") :     
     168            else : 
     169                if self.form.has_key("isgroup") : 
    170170                    user = self.storage.getUser(remuser) 
    171171                    if user.Exists : 
    172172                        ugmask = " ".join([ g.Name for g in self.storage.getUserGroups(user) ]) 
    173                     else :     
     173                    else : 
    174174                        ugmask = remuser # result will probably be empty, we don't care 
    175                 else :     
     175                else : 
    176176                    ugmask = remuser 
    177             if self.form.has_key("isgroup") :     
     177            if self.form.has_key("isgroup") : 
    178178                isgroup = 1 
    179             else :     
     179            else : 
    180180                isgroup = 0 
    181         self.body += self.htmlListPrinters(printers or [])             
     181        self.body += self.htmlListPrinters(printers or []) 
    182182        self.body += "<br />" 
    183183        self.body += self.htmlUGNamesInput(ugmask) 
     
    189189                    self.reportingtool = openReporter(admin, "html", printers, ugmask.split(), isgroup) 
    190190                    self.body += "%s" % self.reportingtool.generateReport() 
    191             else :         
     191            else : 
    192192                if remuser != "root" : 
    193193                    username = remuser 
    194                 elif self.form.has_key("username") :     
     194                elif self.form.has_key("username") : 
    195195                    username = self.form["username"].value 
    196                 else :     
     196                else : 
    197197                    username = None 
    198                 if username is not None :     
     198                if username is not None : 
    199199                    user = self.storage.getUser(username) 
    200                 else :     
     200                else : 
    201201                    user = None 
    202202                if self.form.has_key("printername") : 
    203203                    printer = self.storage.getPrinter(self.form["printername"].value) 
    204                 else :     
     204                else : 
    205205                    printer = None 
    206                 if self.form.has_key("datelimit") :     
     206                if self.form.has_key("datelimit") : 
    207207                    datelimit = self.form["datelimit"].value 
    208                 else :     
     208                else : 
    209209                    datelimit = None 
    210                 if self.form.has_key("hostname") :     
     210                if self.form.has_key("hostname") : 
    211211                    hostname = self.form["hostname"].value 
    212                 else :     
     212                else : 
    213213                    hostname = None 
    214                 if self.form.has_key("billingcode") :     
     214                if self.form.has_key("billingcode") : 
    215215                    billingcode = self.form["billingcode"].value 
    216                 else :     
     216                else : 
    217217                    billingcode = None 
    218                 self.report = ["<h2>%s</h2>" % _("History")]     
     218                self.report = ["<h2>%s</h2>" % _("History")] 
    219219                history = self.storage.retrieveHistory(user=user, printer=printer, hostname=hostname, billingcode=billingcode, end=datelimit) 
    220220                if not history : 
     
    232232                    for job in history : 
    233233                        oddeven += 1 
    234                         if job.JobAction == "ALLOW" :     
     234                        if job.JobAction == "ALLOW" : 
    235235                            if oddeven % 2 : 
    236236                                oddevenclass = "odd" 
    237                             else :     
     237                            else : 
    238238                                oddevenclass = "even" 
    239239                        else : 
     
    243243                        if job.JobHostName : 
    244244                            hostname_url = '<a href="%s?%s">%s</a>' % (os.environ.get("SCRIPT_NAME", ""), urllib.urlencode({"history" : 1, "hostname" : job.JobHostName}), job.JobHostName) 
    245                         else :     
     245                        else : 
    246246                            hostname_url = None 
    247247                        if job.JobBillingCode : 
    248248                            billingcode_url = '<a href="%s?%s">%s</a>' % (os.environ.get("SCRIPT_NAME", ""), urllib.urlencode({"history" : 1, "billingcode" : job.JobBillingCode}), job.JobBillingCode) 
    249                         else :     
     249                        else : 
    250250                            billingcode_url = None 
    251251                        curdate = DateTime.ISO.ParseDateTime(str(job.JobDate)[:19]) 
     
    286286                    if printer and printer.Exists : 
    287287                        dico.update({ "printername" : printer.Name }) 
    288                     if hostname :     
     288                    if hostname : 
    289289                        dico.update({ "hostname" : hostname }) 
    290290                    prevurl = "%s?%s" % (os.environ.get("SCRIPT_NAME", ""), urllib.urlencode(dico)) 
    291291                    self.report.append('<a href="%s">%s</a>' % (prevurl, _("Previous page"))) 
    292                 self.body = "\n".join(self.report)     
     292                self.body = "\n".join(self.report) 
    293293        except : 
    294294                self.body += '<p><font color="red">%s</font></p>' % self.crashed("CGI Error").replace("\n", "<br />") 
    295              
     295 
    296296if __name__ == "__main__" : 
    297297    utils.reinitcgilocale() 
     
    303303    try : 
    304304        admin.storage.close() 
    305     except (TypeError, NameError, AttributeError) :     
     305    except (TypeError, NameError, AttributeError) : 
    306306        pass 
    307          
     307 
    308308    sys.exit(0) 
  • pykota/trunk/cgi-bin/pykotme.cgi

    r3411 r3413  
    1111# the Free Software Foundation, either version 3 of the License, or 
    1212# (at your option) any later version. 
    13 #  
     13# 
    1414# This program is distributed in the hope that it will be useful, 
    1515# but WITHOUT ANY WARRANTY; without even the implied warranty of 
    1616# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
    1717# GNU General Public License for more details. 
    18 #  
     18# 
    1919# You should have received a copy of the GNU General Public License 
    2020# along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     
    3838 
    3939from pkpgpdls import analyzer, pdlparser 
    40      
     40 
    4141 
    4242header = """Content-type: text/html;charset=%s 
     
    6969          </tr> 
    7070        </table>""" 
    71      
     71 
    7272footer = """ 
    7373        <table> 
     
    7777            </td> 
    7878          </tr> 
    79         </table>   
     79        </table> 
    8080      </form> 
    8181    </p> 
     
    8484      <font size="-2"> 
    8585        <a href="http://www.pykota.com/">%s</a> 
    86         &copy; %s %s  
     86        &copy; %s %s 
    8787        <br /> 
    8888        <pre> 
     
    9292    </p> 
    9393  </body> 
    94 </html>"""   
     94</html>""" 
    9595 
    9696class PyKotMeGUI(PyKotaTool) : 
     
    106106                        _("Quote")) ] 
    107107        content.append(self.body) 
    108         content.append(footer % (_("Quote"),  
    109                                  version.__doc__,  
    110                                  version.__years__,  
    111                                  version.__author__,  
     108        content.append(footer % (_("Quote"), 
     109                                 version.__doc__, 
     110                                 version.__years__, 
     111                                 version.__author__, 
    112112                                 saxutils.escape(version.__gplblurb__))) 
    113113        for c in content : 
    114114            sys.stdout.write(c.encode(self.charset, "replace")) 
    115115        sys.stdout.flush() 
    116          
     116 
    117117    def error(self, message) : 
    118118        """Adds an error message to the GUI's body.""" 
    119119        if message : 
    120120            self.body = '<p><font color="red">%s</font></p>\n%s' % (message, self.body) 
    121          
    122     def htmlListPrinters(self, selected=[], mask="*") :     
     121 
     122    def htmlListPrinters(self, selected=[], mask="*") : 
    123123        """Displays the printers multiple selection list.""" 
    124124        printers = self.storage.getMatchingPrinters(mask) 
     
    132132        message += '</select></td></tr></table>' 
    133133        return message 
    134          
     134 
    135135    def guiAction(self) : 
    136136        """Main function""" 
     
    143143                    printersfield = [ printersfield ] 
    144144                printers = [self.storage.getPrinter(p.value) for p in printersfield] 
    145             else :     
     145            else : 
    146146                printers = self.storage.getMatchingPrinters("*") 
    147             if self.form.has_key("inputfile") :     
     147            if self.form.has_key("inputfile") : 
    148148                inputfile = self.form["inputfile"].value 
    149                  
    150         if os.environ.get("REMOTE_USER") is not None :         
    151             self.body += self.htmlListPrinters(printers or [])             
     149 
     150        if os.environ.get("REMOTE_USER") is not None : 
     151            self.body += self.htmlListPrinters(printers or []) 
    152152            self.body += "<br />" 
    153153        self.body += _("Filename") + " : " 
     
    158158                parser = analyzer.PDLAnalyzer(cStringIO.StringIO(inputfile)) 
    159159                jobsize = parser.getJobSize() 
    160             except pdlparser.PDLParserError, msg :     
     160            except pdlparser.PDLParserError, msg : 
    161161                self.body += '<p><font color="red">%s</font></p>' % msg 
    162162                jobsize = 0 # unknown file format ? 
    163             else :     
     163            else : 
    164164                self.body += "<p>%s</p>" % (_("Job size : %i pages") % jobsize) 
    165                  
     165 
    166166            remuser = os.environ.get("REMOTE_USER") 
    167167            # special hack to accomodate mod_auth_ldap Apache module 
    168168            try : 
    169169                remuser = remuser.split("=")[1].split(",")[0] 
    170             except :     
     170            except : 
    171171                pass 
    172             if not remuser :     
     172            if not remuser : 
    173173                self.body += "<p>%s</p>" % _("The exact cost of a print job can only be determined for a particular user. Please retry while logged-in.") 
    174             else :     
    175                 try :     
     174            else : 
     175                try : 
    176176                    user = self.storage.getUser(remuser) 
    177177                    if user.Exists : 
    178178                        if user.LimitBy == "noprint" : 
    179179                            self.body += "<p>%s</p>" % _("Your account settings forbid you to print at this time.") 
    180                         else :     
     180                        else : 
    181181                            for printer in printers : 
    182182                                upquota = self.storage.getUserPQuota(user, printer) 
     
    184184                                    if printer.MaxJobSize and (jobsize > printer.MaxJobSize) : 
    185185                                        msg = _("You are not allowed to print so many pages on printer %s at this time.") % printer.Name 
    186                                     else :     
     186                                    else : 
    187187                                        cost = upquota.computeJobPrice(jobsize) 
    188188                                        msg = _("Cost on printer %s : %.2f") % (printer.Name, cost) 
    189189                                        if printer.PassThrough : 
    190190                                            msg = "%s (%s)" % (msg, _("won't be charged, printer is in passthrough mode")) 
    191                                         elif user.LimitBy == "nochange" :     
     191                                        elif user.LimitBy == "nochange" : 
    192192                                            msg = "%s (%s)" % (msg, _("won't be charged, your account is immutable")) 
    193193                                    self.body += "<p>%s</p>" % msg 
    194194                except : 
    195195                    self.body += '<p><font color="red">%s</font></p>' % self.crashed("CGI Error").replace("\n", "<br />") 
    196              
     196 
    197197if __name__ == "__main__" : 
    198198    utils.reinitcgilocale() 
     
    204204    try : 
    205205        admin.storage.close() 
    206     except (TypeError, NameError, AttributeError) :     
     206    except (TypeError, NameError, AttributeError) : 
    207207        pass 
    208          
     208 
    209209    sys.exit(0) 
  • pykota/trunk/cgi-bin/README

    r3275 r3413  
    2424Be sure to restrict access to these CGI scripts as necessary. 
    2525 
    26 If you protect access to printquota.cgi or dumpykota.cgi with  
     26If you protect access to printquota.cgi or dumpykota.cgi with 
    2727username+password authentication, the REMOTE_USER CGI environment variable 
    2828is honored, so an user can only see his own datas, but not 
     
    3636authentication, then only the job's size will be displayed 
    3737to you. This is due to the cost of a print job on a particular printer 
    38 depending on the user because of the overcharging factor's value.  
    39 So if you want pykotme.cgi to produce complete web quotes, you must  
    40 ensure that the user logs in from his web browser whenever he uses  
     38depending on the user because of the overcharging factor's value. 
     39So if you want pykotme.cgi to produce complete web quotes, you must 
     40ensure that the user logs in from his web browser whenever he uses 
    4141this CGI script. 
    4242 
     
    4545PyKota's pykotadmin.conf configuration file is necessary though. 
    4646 
    47 The web server doesn't need to be a print server nor a PyKota  
    48 Storage Backend server, but it must contain a correctly configured  
    49 PyKota installation.  
     47The web server doesn't need to be a print server nor a PyKota 
     48Storage Backend server, but it must contain a correctly configured 
     49PyKota installation. 
    5050 
    5151====================================================================