def handle(self):

        db = self.__db
        cursor = self.__cursor
        hostname = self.__hostname

        mail_server = self.__mail_server  # August 19, 2011
        mail_admin = self.__mail_admin  # August 19, 2011

        clone_request = self.__clone_request

        form = cgi.FieldStorage(keep_blank_values="True")

        uHandler = UserHandler(db, cursor)

        # print "Content-type:text/html"		# TEMPORARY, REMOVE AFTER DEBUGGING TO HAVE SCRIPT REDIRECT PROPERLY!!!!!!
        # print					# DITTO
        # print `form`

        if form.has_key("curr_username"):
            # store the user ID for use throughout the session; add to other views in addition to create in PHP
            currUname = form.getvalue("curr_username")
            currUser = uHandler.getUserByDescription(currUname)

            Session.setUser(currUser)

        elif form.has_key("curr_user_id"):
            currUID = form.getvalue("curr_user_id")
            currUser = uHandler.getUserByID(currUID)
            Session.setUser(currUser)

        if form.has_key("add_user"):
            self.addUser(form)

        elif form.has_key("modify_user"):
            self.modifyUser(form)

        elif form.has_key("cancel_user"):
            self.cancelUserModification(form)

        elif form.has_key("save_user"):
            self.saveUser(form)

        elif form.has_key("delete_user"):
            self.deleteUser(form)

        elif (
            form.has_key("view_user")
            and form.getvalue("view_user") != ""
            and not form.has_key("modify_lab")
            and not form.has_key("delete_lab")
        ):
            self.viewUser(form)

            # Nov. 17/07 - Personal user page
        elif (
            form.has_key("view_user")
            and form.getvalue("view_user") == ""
            and not form.has_key("modify_lab")
            and not form.has_key("delete_lab")
        ):
            self.printUserInfo("view", currUser)

        elif form.has_key("add_lab"):
            self.addLab(form)

        elif form.has_key("view_lab"):
            self.viewLab(form)

        elif form.has_key("modify_lab"):
            self.modifyLab(form)

        elif form.has_key("save_lab"):
            self.saveLab(form)

        elif form.has_key("cancel_lab"):
            self.cancelLabModification(form)

        elif form.has_key("delete_lab"):
            self.deleteLab(form)

        elif form.has_key("bug_report"):
            self.submitBug(form)

        elif form.has_key("send_order"):

            ######################################################################
            # CHANGE SERVER NAME AND EMAIL TO YOUR LOCAL CREDENTIALS
            ######################################################################

            userID = form.getvalue("curr_user_id")
            userDescr = form.getvalue("curr_username")

            from_email = uHandler.findEmail(userID)

            if not from_email:
                from_email = userDescr

            to_email = clone_request

            email_subject = userDescr + ": Clone Request"

            f_in = form.getvalue("outputContent")
            infile = open(f_in, "rb")

            msg = email.MIMEMultipart.MIMEMultipart()
            # msg.attach(email.MIMEText.MIMEText(infile.read()))	# no, this attaches plain text
            msg["Subject"] = email_subject

            part = email.MIMEBase.MIMEBase("application", "octet-stream")
            part.set_payload(infile.read())
            email.Utils.base64.standard_b64encode(infile.read())
            part.add_header("Content-Disposition", 'attachment; filename="%s"' % os.path.basename(f_in))
            msg.attach(part)

            server = smtplib.SMTP(mail_server)

            server.set_debuglevel(1)

            # Send a request to your clone request address
            server.sendmail(from_email, to_email, msg.as_string())

            # AND send a copy to the user (change the subject)
            # msg['Subject'] = "Clone request confirmation"		# doesn't change, investigate later

            # Return email text changed March 31/08

            #######################################
            # CHANGE TEXT AS NEEDED
            #######################################
            msg.attach(
                email.MIMEText.MIMEText(
                    "This is a copy of your clone request.  Please retain for your records.  You will be notified by e-mail when your clone is ready."
                )
            )

            server.sendmail(to_email, from_email, msg.as_string())
            server.quit()

            # Method 2
            # sendmail = "/usr/sbin/sendmail"

            # o = os.popen("%s -t" %  sendmail,"w")
            # o.write("To: %s\r\n" %  to_email)

            # if from_email:
            # o.write("From: %s\r\n" %  from_email)
            # o.write("Subject: %s\r\n" %  email_subject)
            # o.write("\r\n")
            # o.write("%s\r\n" % msg)

            # o.close()

            os.remove(f_in)  # delete the file from /tmp dir

            utils.redirect(hostname + "User.php?View=8&Sent=1")

            # June 1, 2010: Automated password reset
        elif form.has_key("reset_pw"):

            # change June 2, 2010: Don't enter email, rather, ask users to enter their username - more secure
            # to_email = form.getvalue("email")

            from_email = mail_admin

            # success = True

            chars = string.letters + string.digits
            new_passwd = ""

            for i in range(10):
                new_passwd += choice(chars)

                # reset it in the database
            if form.has_key("uName"):
                u_name = form.getvalue("uName")

                userID = uHandler.findUserIDByUsername(u_name)

                if userID > 0:
                    u_descr = uHandler.findDescription(userID)

                    to_email = uHandler.findEmail(userID)

                    uHandler.setUserPropertyValue(userID, "password", new_passwd)

                    email_subject = "OpenFreezer Password Change"

                    msg = email.MIMEMultipart.MIMEMultipart()
                    # msg.attach(email.MIMEText.MIMEText(infile.read()))	# no, this attaches plain text

                    msg["Subject"] = email_subject

                    ###################################
                    # CHANGE TEXT AS NEEDED
                    ###################################
                    msg.attach(
                        email.MIMEText.MIMEText(
                            "Dear "
                            + u_descr
                            + ",\n\nYour password for OpenFreezer has been changed.\n\nYour temporary new password is: "
                            + new_passwd
                            + ".\n\nPlease change the temporary password as soon as you log into the system.\n\nYour username for OpenFreezer is '"
                            + u_name
                            + "'.\n\nFor any questions, please refer to http://openfreezer.org. \n\nSincerely,\nOpenFreezer support team.\n--------------------------------\nThis is an automatically generated e-mail message.  Please do not reply to this e-mail.  All questions should be directed to your local administrator."
                        )
                    )

                    server = smtplib.SMTP(mail_server)

                    server.set_debuglevel(1)

                    server.sendmail(from_email, to_email, msg.as_string())
                    server.quit()

                    utils.redirect(hostname + "User.php?View=6&Reset=1&uid=" + ` userID `)
                else:
                    # retry by description
                    if form.has_key("uDesc"):
                        u_descr = form.getvalue("uDesc")

                        # but account for whitespace
                        toks = u_descr.split(" ")

                        tmp_descr = ""

                        for tok in toks:
                            tmp_descr += tok.strip() + " "

                            # strip extra whitespace from end
                        tmp_descr = tmp_descr.strip()

                        userID = uHandler.findUserIDByDescription(tmp_descr)

                        if userID > 0:
                            u_name = uHandler.findUsername(userID)

                            to_email = uHandler.findEmail(userID)
                            uHandler.setUserPropertyValue(userID, "password", new_passwd)

                            email_subject = "OpenFreezer Password Change"

                            msg = email.MIMEMultipart.MIMEMultipart()
                            # msg.attach(email.MIMEText.MIMEText(infile.read()))	# no, this attaches plain text

                            msg["Subject"] = email_subject

                            ##############################
                            # CHANGE TEXT AS NEEDED
                            ##############################
                            msg.attach(
                                email.MIMEText.MIMEText(
                                    "Dear "
                                    + u_descr
                                    + ",\n\nYour password for OpenFreezer has been changed.\n\nYour temporary new password is: "
                                    + new_passwd
                                    + ".\n\nPlease change the temporary password as soon as you log into the system.\n\nYour username for OpenFreezer is '"
                                    + u_name
                                    + "'.\n\nPlease refer to http://openfreezer.org for additional support.\n\nSincerely,\nOpenFreezer support team.\n--------------------------------\nThis is an automatically generated e-mail message.  Please do not reply to this e-mail.  All questions should be directed to <a href='mailto:"
                                    + mail_admin
                                    + "'>"
                                    + mail_admin
                                    + "</a>"
                                )
                            )

                            server = smtplib.SMTP(mail_server)
                            server.set_debuglevel(1)

                            server.sendmail(from_email, to_email, msg.as_string())
                            server.quit()

                            utils.redirect(hostname + "User.php?View=6&Reset=1&uid=" + ` userID `)
                        else:
                            utils.redirect(hostname + "User.php?View=6&Reset=0")
                    else:
                        utils.redirect(hostname + "User.php?View=6&Reset=0")
            else:
                utils.redirect(hostname + "User.php?View=6&Reset=0")

        cursor.close()
        db.close()
    def handle(self):

        db = self.__db
        cursor = self.__cursor
        hostname = self.__hostname

        mail_server = self.__mail_server  # August 19, 2011
        mail_admin = self.__mail_admin  # August 19, 2011

        clone_request = self.__clone_request

        form = cgi.FieldStorage(keep_blank_values="True")

        uHandler = UserHandler(db, cursor)

        #print "Content-type:text/html"		# TEMPORARY, REMOVE AFTER DEBUGGING TO HAVE SCRIPT REDIRECT PROPERLY!!!!!!
        #print					# DITTO
        #print `form`

        if form.has_key("curr_username"):
            # store the user ID for use throughout the session; add to other views in addition to create in PHP
            currUname = form.getvalue("curr_username")
            currUser = uHandler.getUserByDescription(currUname)

            Session.setUser(currUser)

        elif form.has_key("curr_user_id"):
            currUID = form.getvalue("curr_user_id")
            currUser = uHandler.getUserByID(currUID)
            Session.setUser(currUser)

        if form.has_key("add_user"):
            self.addUser(form)

        elif form.has_key("modify_user"):
            self.modifyUser(form)

        elif form.has_key("cancel_user"):
            self.cancelUserModification(form)

        elif form.has_key("save_user"):
            self.saveUser(form)

        elif form.has_key("delete_user"):
            self.deleteUser(form)

        elif form.has_key("view_user") and form.getvalue(
                "view_user") != "" and not form.has_key(
                    "modify_lab") and not form.has_key("delete_lab"):
            self.viewUser(form)

        # Nov. 17/07 - Personal user page
        elif form.has_key("view_user") and form.getvalue(
                "view_user") == "" and not form.has_key(
                    "modify_lab") and not form.has_key("delete_lab"):
            self.printUserInfo('view', currUser)

        elif form.has_key("add_lab"):
            self.addLab(form)

        elif form.has_key("view_lab"):
            self.viewLab(form)

        elif form.has_key("modify_lab"):
            self.modifyLab(form)

        elif form.has_key("save_lab"):
            self.saveLab(form)

        elif form.has_key("cancel_lab"):
            self.cancelLabModification(form)

        elif form.has_key("delete_lab"):
            self.deleteLab(form)

        elif form.has_key("bug_report"):
            self.submitBug(form)

        elif form.has_key("send_order"):

            ######################################################################
            # CHANGE SERVER NAME AND EMAIL TO YOUR LOCAL CREDENTIALS
            ######################################################################

            userID = form.getvalue("curr_user_id")
            userDescr = form.getvalue("curr_username")

            from_email = uHandler.findEmail(userID)

            if not from_email:
                from_email = userDescr

            to_email = clone_request

            email_subject = userDescr + ": Clone Request"

            f_in = form.getvalue("outputContent")
            infile = open(f_in, 'rb')

            msg = email.MIMEMultipart.MIMEMultipart()
            #msg.attach(email.MIMEText.MIMEText(infile.read()))	# no, this attaches plain text
            msg['Subject'] = email_subject

            part = email.MIMEBase.MIMEBase('application', "octet-stream")
            part.set_payload(infile.read())
            email.Utils.base64.standard_b64encode(infile.read())
            part.add_header(
                'Content-Disposition',
                'attachment; filename="%s"' % os.path.basename(f_in))
            msg.attach(part)

            server = smtplib.SMTP(mail_server)

            server.set_debuglevel(1)

            # Send a request to your clone request address
            server.sendmail(from_email, to_email, msg.as_string())

            # AND send a copy to the user (change the subject)
            #msg['Subject'] = "Clone request confirmation"		# doesn't change, investigate later

            # Return email text changed March 31/08

            #######################################
            # CHANGE TEXT AS NEEDED
            #######################################
            msg.attach(
                email.MIMEText.MIMEText(
                    "This is a copy of your clone request.  Please retain for your records.  You will be notified by e-mail when your clone is ready."
                ))

            server.sendmail(to_email, from_email, msg.as_string())
            server.quit()

            # Method 2
            #sendmail = "/usr/sbin/sendmail"

            #o = os.popen("%s -t" %  sendmail,"w")
            #o.write("To: %s\r\n" %  to_email)

            #if from_email:
            #o.write("From: %s\r\n" %  from_email)
            #o.write("Subject: %s\r\n" %  email_subject)
            #o.write("\r\n")
            #o.write("%s\r\n" % msg)

            #o.close()

            os.remove(f_in)  # delete the file from /tmp dir

            utils.redirect(hostname + "User.php?View=8&Sent=1")

        # June 1, 2010: Automated password reset
        elif form.has_key("reset_pw"):

            # change June 2, 2010: Don't enter email, rather, ask users to enter their username - more secure
            #to_email = form.getvalue("email")

            from_email = mail_admin

            #success = True

            chars = string.letters + string.digits
            new_passwd = ""

            for i in range(10):
                new_passwd += choice(chars)

            # reset it in the database
            if form.has_key("uName"):
                u_name = form.getvalue("uName")

                userID = uHandler.findUserIDByUsername(u_name)

                if userID > 0:
                    u_descr = uHandler.findDescription(userID)

                    to_email = uHandler.findEmail(userID)

                    uHandler.setUserPropertyValue(userID, 'password',
                                                  new_passwd)

                    email_subject = "OpenFreezer Password Change"

                    msg = email.MIMEMultipart.MIMEMultipart()
                    #msg.attach(email.MIMEText.MIMEText(infile.read()))	# no, this attaches plain text

                    msg['Subject'] = email_subject

                    ###################################
                    # CHANGE TEXT AS NEEDED
                    ###################################
                    msg.attach(
                        email.MIMEText.MIMEText(
                            "Dear " + u_descr +
                            ",\n\nYour password for OpenFreezer has been changed.\n\nYour temporary new password is: "
                            + new_passwd +
                            ".\n\nPlease change the temporary password as soon as you log into the system.\n\nYour username for OpenFreezer is '"
                            + u_name +
                            "'.\n\nFor any questions, please refer to http://openfreezer.org. \n\nSincerely,\nOpenFreezer support team.\n--------------------------------\nThis is an automatically generated e-mail message.  Please do not reply to this e-mail.  All questions should be directed to your local administrator."
                        ))

                    server = smtplib.SMTP(mail_server)

                    server.set_debuglevel(1)

                    server.sendmail(from_email, to_email, msg.as_string())
                    server.quit()

                    utils.redirect(hostname + "User.php?View=6&Reset=1&uid=" +
                                   ` userID `)
                else:
                    # retry by description
                    if form.has_key("uDesc"):
                        u_descr = form.getvalue("uDesc")

                        # but account for whitespace
                        toks = u_descr.split(" ")

                        tmp_descr = ""

                        for tok in toks:
                            tmp_descr += tok.strip() + " "

                        # strip extra whitespace from end
                        tmp_descr = tmp_descr.strip()

                        userID = uHandler.findUserIDByDescription(tmp_descr)

                        if userID > 0:
                            u_name = uHandler.findUsername(userID)

                            to_email = uHandler.findEmail(userID)
                            uHandler.setUserPropertyValue(
                                userID, 'password', new_passwd)

                            email_subject = "OpenFreezer Password Change"

                            msg = email.MIMEMultipart.MIMEMultipart()
                            #msg.attach(email.MIMEText.MIMEText(infile.read()))	# no, this attaches plain text

                            msg['Subject'] = email_subject

                            ##############################
                            # CHANGE TEXT AS NEEDED
                            ##############################
                            msg.attach(
                                email.MIMEText.MIMEText(
                                    "Dear " + u_descr +
                                    ",\n\nYour password for OpenFreezer has been changed.\n\nYour temporary new password is: "
                                    + new_passwd +
                                    ".\n\nPlease change the temporary password as soon as you log into the system.\n\nYour username for OpenFreezer is '"
                                    + u_name +
                                    "'.\n\nPlease refer to http://openfreezer.org for additional support.\n\nSincerely,\nOpenFreezer support team.\n--------------------------------\nThis is an automatically generated e-mail message.  Please do not reply to this e-mail.  All questions should be directed to <a href='mailto:"
                                    + mail_admin + "'>" + mail_admin + "</a>"))

                            server = smtplib.SMTP(mail_server)
                            server.set_debuglevel(1)

                            server.sendmail(from_email, to_email,
                                            msg.as_string())
                            server.quit()

                            utils.redirect(hostname +
                                           "User.php?View=6&Reset=1&uid=" +
                                           ` userID `)
                        else:
                            utils.redirect(hostname +
                                           "User.php?View=6&Reset=0")
                    else:
                        utils.redirect(hostname + "User.php?View=6&Reset=0")
            else:
                utils.redirect(hostname + "User.php?View=6&Reset=0")

        cursor.close()
        db.close()