Initial commit

This commit is contained in:
2024-02-15 12:24:58 -08:00
commit 2fbcad3cfa
3 changed files with 418 additions and 0 deletions

87
AutoTicket.py Normal file
View File

@@ -0,0 +1,87 @@
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
def get_filters(driver):
print("Setting up filters...")
driver.find_element(By.CLASS_NAME, "select2-selection__clear").click()
group_fields = search_fields = driver.find_elements(By.CLASS_NAME, "select2-search__field")
group_fields[1].send_keys("noc-prov")
group_fields[1].send_keys(Keys.ENTER)
group_fields[1].send_keys("provisioning")
group_fields[1].send_keys(Keys.ENTER)
driver.find_element(By.CSS_SELECTOR, ".fa-cogs").click()
clear_buttons = driver.find_elements(By.CLASS_NAME, "select2-selection__clear")
clear_buttons[1].click()
driver.find_element(By.CSS_SELECTOR, ".search-btn").click()
WebDriverWait(driver, 3)
def get_names(users,driver):
tbody = driver.find_element(By.TAG_NAME, "tbody")
rows = tbody.find_elements(By.TAG_NAME, "tr")
name_count = {}
for name in users:
count = 0
for row in rows:
tds = row.find_elements(By.TAG_NAME, 'td')
if name in tds[2].text:
count += 1
name_count[name] = count
return name_count
def find_lowest_and_increment(dictionary):
if not dictionary:
return None
min_key = min(dictionary, key=dictionary.get)
dictionary[min_key] += 1
return min_key
def assign_tickets(namecount,driver):
original_window = driver.current_window_handle
tbody = driver.find_element(By.TAG_NAME, "tbody")
rows = tbody.find_elements(By.TAG_NAME, "tr")
for row in rows:
tds = row.find_elements(By.TAG_NAME, 'td')
if tds[2].text == "none":
lowest_name = find_lowest_and_increment(namecount)
tds[1].find_element(By.TAG_NAME, 'a').send_keys(Keys.CONTROL + Keys.ENTER)
WebDriverWait(driver, 10).until(EC.number_of_windows_to_be(2))
for window_handle in driver.window_handles:
if window_handle != original_window:
driver.switch_to.window(window_handle)
break
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "owner")))
controls = driver.find_element(By.ID, 'ticket-controls').find_elements(By.CLASS_NAME, "ticket-control")
owner_button = controls[3].find_element(By.CLASS_NAME, 'select2-container')
owner_button.click()
search_fields = driver.find_elements(By.CLASS_NAME, 'select2-search__field')
owner_field = search_fields[3]
owner_field.send_keys(lowest_name)
owner_field.send_keys(Keys.ENTER)
print("Check to see if this worked, then press enter")
input()
driver.find_element(By.CLASS_NAME, 'update').click()
driver.close()
driver.switch_to.window(original_window)
def auto_ticket(urls,users,driver):
driver.get(urls['TICKETS'])
print("")
print("Please use the browser to log in. I won't look (づ_ど)")
try:
element = WebDriverWait(driver, 500).until(
EC.presence_of_element_located((By.CLASS_NAME, "select2-selection__clear"))
)
finally:
get_filters(driver)
namecount = get_names(users,driver)
print(namecount)
assign_tickets(namecount,driver)
print("Done! ✧⋆٩(ˊˋ )و ♡✧")