diff --git a/.bin/Scripts/functions/osticket.py b/.bin/Scripts/functions/osticket.py index bc207b04..0c051974 100644 --- a/.bin/Scripts/functions/osticket.py +++ b/.bin/Scripts/functions/osticket.py @@ -344,6 +344,38 @@ class osTicket(): return type_str + def get_flag(self, ticket_id, flag_name): + """Get flag in osTicket.""" + flag_value = None + self.connect(silent=True) + + # Bail if disabled + if self.disabled: + return + + # Build SQL cmd + sql_cmd = "SELECT `{column}` FROM `{Name}`.`{Ticket}`".format( + column=flag_name, + **OSTICKET['Database'], + **OSTICKET['Tables']) + sql_cmd += "WHERE `{Ticket}`.`ticket_id` = {ticket_id}".format( + ticket_id=ticket_id, + **OSTICKET['Tables']) + sql_cmd += ";" + + # Run SQL cmd and get value + try: + self.db_cursor.execute(sql_cmd) + for s in self.db_cursor: + flag_value = s[0] + except mariadb.errors.Error: + # Set self.errors to enable warning line on results screen + self.errors = True + + # Done + self.disconnect() + return flag_value + def get_ticket_name(self, ticket_id): """Lookup ticket and return name as str.""" name = None @@ -451,6 +483,14 @@ class osTicket(): def set_disk_passed(self, ticket_id): """Mark disk as passed in osTicket.""" + current_value = self.get_flag(ticket_id, OSTICKET['Disk Flag']['Name']) + + # Bail early? + if current_value == OSTICKET['Disk Flag']['Fail']: + print_warning('Not replacing osTicket disk checkbox FAILED value') + return + + # Current value != FAILED, set to passed self.set_flag( ticket_id, OSTICKET['Disk Flag']['Name'], @@ -458,7 +498,7 @@ class osTicket(): def set_flag(self, ticket_id, flag_name, flag_value): """Set flag in osTicket.""" - self.connect() + self.connect(silent=True) # Bail if disabled if self.disabled: