pax_global_header 0000666 0000000 0000000 00000000064 14316405376 0014523 g ustar 00root root 0000000 0000000 52 comment=9308c9202c6823fb526ee2c237f425131c32a671
website-events-master/ 0000775 0000000 0000000 00000000000 14316405376 0015324 5 ustar 00root root 0000000 0000000 website-events-master/.gitignore 0000664 0000000 0000000 00000000036 14316405376 0017313 0 ustar 00root root 0000000 0000000 *.swp
*.pyc
__pycache__
venv/
website-events-master/README.md 0000664 0000000 0000000 00000000431 14316405376 0016601 0 ustar 00root root 0000000 0000000 # Coredump Website: Add weekly events
This script generates weekly recurring events for our website with Selenium.
## Usage
- Edit `USERNAME` and `PASSWORD`
- Edit `START_DATE` and `END_DATE`
- Run the script in fullscreen mode (so that the responsive layout does not activate)
website-events-master/add_weekly_events.py 0000664 0000000 0000000 00000007722 14316405376 0021402 0 ustar 00root root 0000000 0000000 """
Please update all uppercase variables below.
"""
import sys
from time import sleep
from datetime import date, timedelta, time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
USERNAME = ''
PASSWORD = ''
TITLE = 'Weekly Hacknight'
TEXT = 'Wir treffen uns in der Regel ab etwa 20 Uhr in unserem Vereinsraum um ' + \
'spannende Themen zu diskutieren, an unseren Projekten zu arbeiten, oder einfach ' + \
'eine Flasche Club Mate oder ein Bier zu trinken. Manchmal sind Leute schon früher ' + \
'vor Ort, manchmal auch erst etwas später.\n\n' + \
'Besucher sind jederzeit willkommen! Eine kurze Voranmeldung an ' + \
'vorstand@coredump.ch ' + \
'ist hilfreich, jedoch nicht notwendig.\n\n' + \
'Eine Wegbeschreibung gibt es auf der Kontakt-Seite.'
TAGS = 'weekly, hacknight'
START_DATE = date(2023, 1, 30)
END_DATE = date(2023, 12, 31)
START_TIME = time(20, 0)
END_TIME = time(23, 45)
def yn_choice(message, default='y'):
choices = 'Y/n' if default.lower() in ('y', 'yes') else 'y/N'
choice = input("%s (%s) " % (message, choices))
values = ('y', 'yes', '') if choices == 'Y/n' else ('y', 'yes')
return choice.strip().lower() in values
def login(driver):
driver.get("https://www.coredump.ch/wp-admin/")
assert 'Log In' in driver.title
username = driver.find_element(By.ID, 'user_login')
username.clear()
username.send_keys(USERNAME)
password = driver.find_element(By.ID, 'user_pass')
password.clear()
password.send_keys(PASSWORD)
password.send_keys(Keys.RETURN)
def add_event(driver, day: date):
driver.get("https://www.coredump.ch/wp-admin/post-new.php?post_type=tribe_events")
assert 'Add New Event' in driver.title
driver.find_element(By.ID, 'title').send_keys(TITLE)
driver.find_element(By.ID, 'content-html').click()
content = driver.find_element(By.ID, 'content')
content.send_keys(TEXT)
# Set category
driver.find_element(By.ID, 'in-tribe_events_cat-75').click()
# Set tags
tags = driver.find_element(By.ID, 'new-tag-post_tag')
tags.click()
tags.send_keys(TAGS)
tags.send_keys(Keys.RETURN)
# Choose venue
driver.find_element(By.ID, 'select2-saved_tribe_venue-container').click()
venue_name = driver.find_element(By.CLASS_NAME, 'select2-search__field')
venue_name.send_keys('Coredump')
venue_name.send_keys(Keys.DOWN)
venue_name.send_keys(Keys.RETURN)
driver.find_element(By.ID, 'EventShowMapLink').click()
# Set date and time
start_day = driver.find_element(By.ID, 'EventStartDate')
start_day.clear()
start_day.send_keys(day.isoformat())
start_time = driver.find_element(By.ID, 'EventStartTime')
start_time.clear()
start_time.send_keys(START_TIME.isoformat()[:5])
end_time = driver.find_element(By.ID, 'EventEndTime')
end_time.clear()
end_time.send_keys(END_TIME.isoformat()[:5])
end_day = driver.find_element(By.ID, 'EventEndDate')
end_day.clear()
end_day.send_keys(day.isoformat())
# Publish
sleep(1)
driver.find_element(By.ID, 'publish').click()
if __name__ == '__main__':
# Calculate days
days = [START_DATE]
while True:
next_date = days[-1] + timedelta(days=7)
if next_date <= END_DATE:
days.append(next_date)
else:
break
# Request confirmation
print('Will add the following %d events:' % len(days))
for day in days:
print(' - %s' % day)
ok = yn_choice('Continue?')
if not ok:
print('Aborting.')
sys.exit(1)
# Start webdriver
driver = webdriver.Chrome()
# Log in
login(driver)
# Add events
for day in days:
print('Adding %s...' % day.isoformat())
add_event(driver, day)
sleep(3)
driver.get('https://www.coredump.ch/wp-admin/index.php')
print('Done.')
driver.quit()
website-events-master/requirements.txt 0000664 0000000 0000000 00000000020 14316405376 0020600 0 ustar 00root root 0000000 0000000 selenium==4.5.0