def validate(self, issuePass=False): self.arr = [] self.arr.append(self.idVar.get()) if not self.fnameVar.get(): logTC("First name field may not be empty", "ERROR") e = ErrorWindow(self.piwin, "First name field may not be empty.") return -1 valid = validateName(self.fnameVar.get()) if not valid[0]: logTC("Invalid character in first name field: '" + valid[1] + "'", "ERROR") e = ErrorWindow(self.piwin, "Invalid character in first name field: '" + valid[1] + "'") return -1 self.arr.append(self.fnameVar.get().upper()) if not self.mnameVar.get(): logTC("Middle name field may not be empty", "ERROR") e = ErrorWindow(self.piwin, "Middle name field may not be empty.") return -1 valid = validateName(self.mnameVar.get()) if not valid[0]: logTC("Invalid character in middle name field: '" + valid[1] + "'", "ERROR") e = ErrorWindow(self.piwin, "Invalid character in middle name field: '" + valid[1] + "'") return -1 self.arr.append(self.mnameVar.get().upper()) if not self.lnameVar.get(): logTC("Last name field may not be empty", "ERROR") e = ErrorWindow(self.piwin, "Last name field may not be empty.") return -1 valid = validateName(self.lnameVar.get()) if not valid[0]: logTC("Invalid character in last name field: '" + valid[1] + "'", "ERROR") e = ErrorWindow(self.piwin, "Invalid character in last name field: '" + valid[1] + "'") return -1 self.arr.append(self.lnameVar.get().upper()) if not self.muniVar.get(): logTC("Location field may not be empty", "ERROR") e = ErrorWindow(self.piwin, "Location field may not be empty.") return -1 valid = validateMuni(self.muniVar.get().upper()) if not valid[0]: logTC("Invalid character in the location field: '" + valid[1] + "'", "ERROR") e = ErrorWindow(self.piwin, "Invalid character in the location field: '" + valid[1] + "'") return -1 self.arr.append(self.muniVar.get().upper()) self.arr.append(self.stateOptionsVar.get()) self.arr.append(self.dat[6]) if self.statusOptionsVar.get() == 'OK': self.arr.append(None) elif self.statusOptionsVar.get() == 'BLOCKED': self.arr.append('BLOCKED') elif self.statusOptionsVar.get() == 'BARRED': self.arr.append('BARRED') else: self.arr.append(None) if self.bandateVar.get(): if self.bandateVar.get() in ("NEVER", "CONDITIONAL"): logTC("Invalid argument in bandate field!", "ERROR") e = ErrorWindow(self.piwin, "You cannot use NEVER or CONDITIONAL in the ban date field.", "425x100") return -1 try: sd = Date(self.bandateVar.get()) self.arr.append(self.bandateVar.get()) except Exception as e: logTC("Invalid ban date entered!", "ERROR") e = ErrorWindow(self.piwin, "Invalid ban date entered!") return -1 else: self.arr.append(None) if self.expdateVar.get(): try: sd = Date(self.expdateVar.get()) self.arr.append(self.expdateVar.get()) except Exception as e: logTC("Invalid expiration date entered!", "ERROR") e = ErrorWindow(self.piwin, "Invalid expiration date entered!") return -1 else: self.arr.append(None) if self.barcodeVar.get(): barcode = self.barcodeVar.get() if not validateBarcode(barcode): logTC("Invalid barcode!", "ERROR") e = ErrorWindow(self.piwin, "Invalid barcode entered!") else: self.arr.append(self.barcodeVar.get()) else: self.arr.append(None) if any(letter.isalpha() for letter in self.reasonText.get("1.0", tk.END)): self.arr.append(self.reasonText.get("1.0", tk.END)) else: self.arr.append(None) self.arr.append(self.aiText.get("1.0", tk.END)) if self.arr[7] in ("BLOCKED", "BARRED"): if not self.arr[8]: logTC("Patron with isBanned == BLOCKED or BARRED cannot have NULL Ban Date field.", "ERROR") e = ErrorWindow(self.piwin, "A BLOCKED or BARRED patron may not have their Ban Date field be blank.", "425x100") return -1 if not self.arr[11]: logTC("Patron with isBanned == BLOCKED or BARRED cannot have NULL reason field.", "ERROR") e = ErrorWindow(self.piwin, "A BLOCKED or BARRED patron may not have their reason field be blank.", "425x100") return -1 logArrTC(self.arr, dbArr=True) self.allowEdit(False) if issuePass: self.issuePass() else: self.commitToDB()
def commitToDB(self): self.commitButton.configure(state=tk.DISABLED) logTC("Committing the following new record to database:") logArrTC(self.arr, dbArr=True) addRecord("patrons", self.arr) self.close()