Initial commit
This commit is contained in:
87
AutoTicket.py
Normal file
87
AutoTicket.py
Normal 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! ✧⋆٩(ˊ ᗜ ˋ )و ♡✧")
|
||||
Reference in New Issue
Block a user