unibrementypo3auto/make_typo3_publication_template.py

152 lines
4.4 KiB
Python
Raw Normal View History

2023-05-17 17:44:01 +02:00
import json
from login.login import login
from login.close_login_popup import close_login_popup
from get_tree.get_layout_url import get_layout_url
from getpass import getpass
from selenium import webdriver
from selenium.webdriver.firefox.service import Service as FirefoxService
from webdriver_manager.firefox import GeckoDriverManager
from content.change_url import change_url
from content.get_xy_singlegrid import get_xy_singlegrid
from content.get_xy_tab import get_xy_tab
from content.get_xy_textmedia import get_xy_textmedia
from content.get_drop_targets import get_drop_targets
from content.make_drop_map import make_drop_map
from content.get_content_list import get_content_list
from content.press_save_button import press_save_button
from content.press_close_button import press_close_button
from content.set_input_field import set_input_field
from content.scroll_down_content_page import scroll_down_content_page
from content.action_chain_drag_and_drop import action_chain_drag_and_drop
import numpy as np
import time
def main(
driver: webdriver.firefox.webdriver.WebDriver,
zfn_user: str,
zfn_password: str,
page_id: int,
base_url: str,
):
# Login
if login(driver, base_url, zfn_user, zfn_password) is False:
print("Login failed")
exit(1)
# Get rid of the popup
close_login_popup(driver)
# Get the protected URL to the pages
page_url_base = get_layout_url(driver, base_url)
# Change to page
page_url: str = page_url_base + f"&id={int(page_id)}"
change_url(driver, page_url)
# ###########################################################
# Make outer grid
scroll_down_content_page(driver)
x_from, y_from = get_xy_singlegrid(driver)
center_x, center_y, _ = get_drop_targets(driver)
organization_matrix = make_drop_map(center_x, center_y)
# Last line
temp = organization_matrix[-1, :]
# first element
idx = np.where(temp >= 0)[0]
id = temp[idx][0]
action_chain_drag_and_drop(driver, x_from, y_from, center_x[id], center_y[id])
time.sleep(1)
# ###########################################################
# Make tab
scroll_down_content_page(driver)
x_from, y_from = get_xy_tab(driver)
center_x, center_y, _ = get_drop_targets(driver)
organization_matrix = make_drop_map(center_x, center_y)
# 2. last line
temp = organization_matrix[-2, :]
# first element
idx = np.where(temp >= 0)[0]
id = temp[idx][0]
action_chain_drag_and_drop(driver, x_from, y_from, center_x[id], center_y[id])
time.sleep(1)
# ###########################################################
with open("types_db.json", "r") as file:
type_dict = json.load(file)
for t_element in type_dict.keys():
assert len(type_dict[t_element]) == 3
# Make textmedia
content_id_pre, _, _ = get_content_list(driver)
scroll_down_content_page(driver)
x_from, y_from = get_xy_textmedia(driver)
center_x, center_y, _ = get_drop_targets(driver)
organization_matrix = make_drop_map(center_x, center_y)
# 2. last line
temp = organization_matrix[-3, :]
# first element
idx = np.where(temp >= 0)[0]
id = temp[idx][0]
action_chain_drag_and_drop(driver, x_from, y_from, center_x[id], center_y[id])
time.sleep(1)
content_id_post, content_type, urls = get_content_list(driver)
new_item_list = list(set(content_id_post) - set(content_id_pre))
assert len(new_item_list) == 1
idx_id: int = content_id_post.index(new_item_list[0])
assert content_type[idx_id] == "textmedia"
change_url(driver, base_url + urls[idx_id])
new_header_text: str | None = type_dict[t_element][1]
set_input_field(driver, str("header"), new_header_text)
# Press save button
time.sleep(1)
press_save_button(driver)
# Press close button
time.sleep(1)
press_close_button(driver)
time.sleep(1)
# ###########################################################
page_id: int = 59581
base_url: str = "https://www.uni-bremen.de"
zfn_password: str = getpass()
with open("username.json", "r") as file:
json_dict = json.load(file)
zfn_user: str = json_dict["zfn_user"]
driver = webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install()))
main(
driver,
zfn_user,
zfn_password,
page_id,
base_url,
)
print("Close shop")
driver.close()
driver.quit()