Commit 2e4e8698 authored by terry%netscape.com's avatar terry%netscape.com

Get rid of .tcl files; we're a perl app now.

parent 0a37fa49
This diff is collapsed. Click to expand it.
......@@ -32,6 +32,9 @@ Also, note that the "whineatnews" script has changed name (it now has
an extension of .pl instead of .tcl), so you'll need to change your
cron job.
And the "comments" file has been moved to the data directory. Just do
"cat comments >> data/comments" to restore any old comments that may
have been lost.
......
# -*- Mode: tcl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public License
# Version 1.0 (the "License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
# License for the specific language governing rights and limitations
# under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are Copyright (C) 1998
# Netscape Communications Corporation. All Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
set query "
select
bug_id,
product,
version,
rep_platform,
op_sys,
bug_status,
resolution,
priority,
bug_severity,
component,
assigned_to,
reporter,
bug_file_loc,
short_desc,
date_format(creation_ts,'Y-m-d')
from bugs
where bug_id = $FORM(id)";
SendSQL $query
set ret [FetchSQLData]
if {$ret != ""} {
set count 0
foreach field { bug_id product version rep_platform op_sys bug_status
resolution priority bug_severity component
assigned_to reporter bug_file_loc short_desc
creation_ts} {
if { [regexp {^\{(.*)\}$} [lindex $ret $count] junk bug($field)] == 0 } {
set bug($field) [lindex $ret $count]
}
incr count
}
set error "none"
} else {
puts "<TITLE>Bug Splat Error</TITLE>"
puts "<H1>Query Error</H1>Somehow something went wrong. Possibly if you"
puts "mail this page to $maintainer, he will be able to fix things.<HR>"
puts "Bug $FORM(id) not found<H2>Query Text</H2><PRE>$query<PRE>"
exit 0
}
set bug(assigned_to) [DBID_to_name $bug(assigned_to)]
set bug(reporter) [DBID_to_name $bug(reporter)]
set bug(long_desc) [GetLongDescription $FORM(id)]
GetVersionTable
#
# These should be read from the database ...
#
set resolution_popup [make_options $legal_resolution_no_dup $bug(resolution)]
set platform_popup [make_options $legal_platform $bug(rep_platform)]
set priority_popup [make_options $legal_priority $bug(priority)]
set sev_popup [make_options $legal_severity $bug(bug_severity)]
set component_popup [make_options $components($bug(product)) $bug(component)]
set cc_element "<INPUT NAME=cc SIZE=30 VALUE=\"[ShowCcList $FORM(id)]\">"
if {$bug(bug_file_loc) != "none" && $bug(bug_file_loc) != "NULL" && $bug(bug_file_loc) != ""} {
set URL "<B><A HREF=\"$bug(bug_file_loc)\">URL:</A></B>"
} else {
set URL "<B>URL:</B>"
}
puts "
<HEAD><TITLE>Bug $FORM(id) -- [html_quote $bug(short_desc)]</TITLE></HEAD><BODY>
<FORM NAME=changeform METHOD=POST ACTION=\"process_bug.cgi\">
<INPUT TYPE=HIDDEN NAME=\"id\" VALUE=$FORM(id)>
<INPUT TYPE=HIDDEN NAME=\"was_assigned_to\" VALUE=\"$bug(assigned_to)\">
<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
<TD ALIGN=RIGHT><B>Bug#:</B></TD><TD>$bug(bug_id)</TD>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.html#rep_platform\">Platform:</A></B></TD>
<TD><SELECT NAME=rep_platform>$platform_popup</SELECT></TD>
<TD ALIGN=RIGHT><B>Version:</B></TD>
<TD><SELECT NAME=version>[make_options $versions($bug(product)) $bug(version)]</SELECT></TD>
</TR><TR>
<TD ALIGN=RIGHT><B>Product:</B></TD>
<TD><SELECT NAME=product>[make_options $legal_product $bug(product)]</SELECT></TD>
<TD ALIGN=RIGHT><B>OS:</B></TD><TD>$bug(op_sys)</TD>
<TD ALIGN=RIGHT><B>Reporter:</B></TD><TD>$bug(reporter)</TD>
</TR><TR>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.html\">Status:</A></B></TD>
<TD>$bug(bug_status)</TD>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.html#priority\">Priority:</A></B></TD>
<TD><SELECT NAME=priority>$priority_popup</SELECT></TD>
<TD ALIGN=RIGHT><B>Cc:</B></TD>
<TD> $cc_element </TD>
</TR><TR>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.html\">Resolution:</A></B></TD>
<TD>$bug(resolution)</TD>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.html#severity\">Severity:</A></B></TD>
<TD><SELECT NAME=bug_severity>$sev_popup</SELECT></TD>
<TD ALIGN=RIGHT><B>Component:</B></TD>
<TD><SELECT NAME=component>$component_popup</SELECT></TD>
</TR><TR>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.html#assigned_to\">Assigned&nbsp;To:
</A></B></TD>
<TD>$bug(assigned_to)</TD>
</TR><TR>
<TD ALIGN=\"RIGHT\">$URL
<TD COLSPAN=6>
<INPUT NAME=bug_file_loc VALUE=\"$bug(bug_file_loc)\" SIZE=60></TD>
</TR><TR>
<TD ALIGN=\"RIGHT\"><B>Summary:</B>
<TD COLSPAN=6>
<INPUT NAME=short_desc VALUE=\"[value_quote $bug(short_desc)]\" SIZE=60></TD>
</TR>
</TABLE>
<br>
<B>Additional Comments:</B>
<BR>
<TEXTAREA WRAP=HARD NAME=comment ROWS=5 COLS=80></TEXTAREA><BR>
<br>
<INPUT TYPE=radio NAME=knob VALUE=none CHECKED>
Leave as <b>$bug(bug_status) $bug(resolution)</b><br>"
# knum is which knob number we're generating, in javascript terms.
set knum 1
if {[cequal $bug(bug_status) NEW] || [cequal $bug(bug_status) ASSIGNED] || \
[cequal $bug(bug_status) REOPENED]} {
if {![cequal $bug(bug_status) ASSIGNED]} {
puts "<INPUT TYPE=radio NAME=knob VALUE=accept>
Accept bug (change status to <b>ASSIGNED</b>)<br>"
incr knum
}
if {[clength $bug(resolution)] > 0} {
puts "<INPUT TYPE=radio NAME=knob VALUE=clearresolution>"
puts "Clear the resolution (remove the current resolution of"
puts "<b>$bug(resolution)</b>)<br>"
incr knum
}
puts "<INPUT TYPE=radio NAME=knob VALUE=resolve>
Resolve bug, changing <A HREF=\"bug_status.html\">resolution</A> to
<SELECT NAME=resolution
ONCHANGE=\"document.changeform.knob\[$knum\].checked=true\">
$resolution_popup</SELECT><br>"
incr knum
puts "<INPUT TYPE=radio NAME=knob VALUE=duplicate>
Resolve bug, mark it as duplicate of bug #
<INPUT NAME=dup_id SIZE=6 ONCHANGE=\"document.changeform.knob\[$knum\].checked=true\"><br>"
incr knum
set assign_element "<INPUT NAME=assigned_to SIZE=32 ONCHANGE=\"document.changeform.knob\[$knum\].checked=true\" VALUE=$bug(assigned_to)>"
puts "<INPUT TYPE=radio NAME=knob VALUE=reassign>
<A HREF=\"bug_status.html#assigned_to\">Reassign</A> bug to
$assign_element
<br>"
incr knum
puts "<INPUT TYPE=radio NAME=knob VALUE=reassignbycomponent>
Reassign bug to owner of selected component<br>"
incr knum
} else {
puts "<INPUT TYPE=radio NAME=knob VALUE=reopen> Reopen bug<br>"
incr knum
if {[cequal $bug(bug_status) RESOLVED]} {
puts "<INPUT TYPE=radio NAME=knob VALUE=verify>
Mark bug as <b>VERIFIED</b><br>"
incr knum
}
if {![cequal $bug(bug_status) CLOSED]} {
puts "<INPUT TYPE=radio NAME=knob VALUE=close>
Mark bug as <b>CLOSED</b><br>"
incr knum
}
}
puts "
<INPUT TYPE=\"submit\" VALUE=\"Commit\">
<INPUT TYPE=\"reset\" VALUE=\"Reset\">
<INPUT TYPE=hidden name=form_name VALUE=process_bug>
<BR>
<FONT size=\"+1\"><B>
<A HREF=\"show_activity.cgi?id=$FORM(id)\">View Bug Activity</A>
<A HREF=\"long_list.cgi?buglist=$FORM(id)\">Format For Printing</A>
</B></FONT><BR>
</FORM>
<table><tr><td align=left><B>Description:</B></td><td width=100%>&nbsp;</td>
<td align=right>Opened:&nbsp;$bug(creation_ts)</td></tr></table>
<HR>
<PRE>
[html_quote $bug(long_desc)]
</PRE>
<HR>"
# To add back option of editing the long description, insert after the above
# long_list.cgi line:
# <A HREF=\"edit_desc.cgi?id=$FORM(id)\">Edit Long Description</A>
navigation_header
puts "</BODY>"
flush stdout
#! /usr/bonsaitools/bin/mysqltcl
# -*- Mode: tcl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public License
# Version 1.0 (the "License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
# License for the specific language governing rights and limitations
# under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are Copyright (C) 1998
# Netscape Communications Corporation. All Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
# This file defines all the parameters that we have a GUI to edit within
# Bugzilla.
proc WriteParams {} {
global param param_list param_default
set tmpname "params.[id process]"
set fid [open $tmpname "w"]
foreach i $param_list {
if {![info exists param($i)]} {
set param($i) $param_default($i)
}
puts $fid [list set param($i) $param($i)]
}
close $fid
frename $tmpname "params"
catch {chmod 0666 "params"}
}
proc DefParam {id desc type default {checker {}}} {
global param_list param_desc param_type param_default param_checker
lappend param_list $id
set param_desc($id) $desc
set param_type($id) $type
set param_default($id) $default
set param_checker($id) $checker
}
proc check_numeric {value} {
if {[catch {incr value}]} {
return "must be a numeric value"
}
return ""
}
set param_list {}
# OK, here are the definitions themselves.
#
# The type of parameters (the third parameter to DefParam) can be one
# of the following:
#
# t -- A short text entry field (suitable for a single line)
# l -- A long text field (suitable for many lines)
# b -- A boolean value (either 1 or 0)
# defenum -- This param defines an enum that defines a column in one of
# the database tables. The name of the parameter is of the form
# "tablename.columnname".
# This very first one is silly. At some point, "superuserness" should be an
# attribute of the person's profile entry, and not a single name like this.
#
# When first installing bugzilla, you need to either change this line to be
# you, or (better) edit the initial "params" file and change the entry for
# param(maintainer).
DefParam maintainer {The email address of the person who maintains this installation of Bugzilla.} t terry@mozilla.org
DefParam urlbase {The URL that is the common initial leading part of all Bugzilla URLs.} t {http://cvs-mirror.mozilla.org/webtools/bugzilla/} check_urlbase
proc check_urlbase {url} {
if {![regexp {^http.*/$} $url]} {
return "must be a legal URL, that starts with http and ends with a slash."
}
return ""
}
DefParam usedespot {If this is on, then we are using the Despot system to control our database of users. Bugzilla won't ever write into the user database, it will let the Despot code maintain that. And Bugzilla will send the user over to Despot URLs if they need to change their password. Also, in that case, Bugzilla will treat the passwords stored in the database as being crypt'd, not plaintext.} b 0
DefParam despotbaseurl {The base URL for despot. Used only if <b>usedespot</b> is turned on, above.} t {http://cvs-mirror.mozilla.org/webtools/despot/despot.cgi} check_despotbaseurl
proc check_despotbaseurl {url} {
if {![regexp {^http.*cgi$} $url]} {
return "must be a legal URL, that starts with http and ends with .cgi"
}
return ""
}
DefParam bannerhtml {The html that gets emitted at the head of every Bugzilla page.} l {<TABLE BGCOLOR="#000000" WIDTH="100%" BORDER=0 CELLPADDING=0 CELLSPACING=0>
<TR><TD><A HREF="http://www.mozilla.org/"><IMG
SRC="http://www.mozilla.org/images/mozilla-banner.gif" ALT=""
BORDER=0 WIDTH=600 HEIGHT=58></A></TD></TR></TABLE>}
DefParam blurbhtml {A blurb that appears as part of the header of every Bugzilla page. This is a place to put brief warnings, pointers to one or two related pages, etc.} l { This is <B>Bugzilla</B>: the Mozilla bug system. For more
information about what Bugzilla is and what it can do, see
<A HREF="http://www.mozilla.org/">mozilla.org</A>'s
<A HREF="http://www.mozilla.org/bugs/"><B>bug pages</B></A>.
}
DefParam whinedays {The number of days that we'll let a bug sit untouched in a NEW state before our cronjob will whine at the owner.} t 7 check_numeric
DefParam whinemail {The email that gets sent to anyone who has a NEW bug that hasn't been touched for more than <b>whinedays</b>. Within this text, %email% gets replaced by the offender's email address. %<i>anythingelse</i>% gets replaced by the definition of that parameter (as defined on this page).<p> It is a good idea to make sure this message has a valid From: address, so that if the mail bounces, a real person can know that there are bugs assigned to an invalid address.} l {From: %maintainer%
To: %email%
Subject: Your Bugzilla buglist needs attention.
[This e-mail has been automatically generated.]
You have one or more bugs assigned to you in the Bugzilla
bugsystem (%urlbase%) that require
attention.
All of these bugs are in the NEW state, and have not been touched
in %whinedays% days or more. You need to take a look at them, and
decide on an initial action.
Generally, this means one of three things:
(1) You decide this bug is really quick to deal with (like, it's INVALID),
and so you get rid of it immediately.
(2) You decide the bug doesn't belong to you, and you reassign it to someone
else. (Hint: if you don't know who to reassign it to, make sure that
the Component field seems reasonable, and then use the "Reassign bug to
owner of selected component" option.)
(3) You decide the bug belongs to you, but you can't solve it this moment.
Just use the "Accept bug" command.
To get a list of all NEW bugs, you can use this URL (bookmark it if you like!):
%urlbase%buglist.cgi?bug_status=NEW&assigned_to=%email%
Or, you can use the general query page, at
%urlbase%query.cgi.
Appended below are the individual URLs to get to all of your NEW bugs that
haven't been touched for a week or more.
You will get this message once a day until you've dealt with these bugs!
}
DefParam defaultquery {This is the default query that initially comes up when you submit a bug. It's in URL parameter format, which makes it hard to read. Sorry!} t "bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&product=Mozilla&order=%22Importance%22"
DefParam bugs.bug_status {The different statuses that a bug
#! /usr/bonsaitools/bin/mysqltcl
# -*- Mode: tcl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public License
# Version 1.0 (the "License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
# License for the specific language governing rights and limitations
# under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are Copyright (C) 1998
# Netscape Communications Corporation. All Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
# This is a script suitable for running once a day from a cron job. It
# looks at all the bugs, and sends whiny mail to anyone who has a bug
# assigned to them that has status NEW that has not been touched for
# more than 7 days.
source "globals.tcl"
source "defparams.tcl"
ConnectToDatabase
SendSQL "select bug_id,login_name from bugs,profiles where bug_status = 'NEW' and to_days(now()) - to_days(delta_ts) > [Param whinedays] and userid=assigned_to"
set bugs(zz) x
unset bugs(zz)
while {[MoreSQLData]} {
lassign [FetchSQLData] id email
if {$id == ""} {
continue
}
lappend bugs($email) $id
}
set template [Param whinemail]
foreach i $param_list {
regsub -all "%$i%" $template [Param $i] template
}
foreach email [lsort [array names bugs]] {
regsub -all {%email%} $template $email msg
set list [lsort -integer $bugs($email)]
foreach i $list {
append msg " http://cvs-mirror.mozilla.org/webtools/bugzilla/show_bug.cgi?id=$i\n"
}
exec /usr/lib/sendmail -t << $msg
puts "$email $list"
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment