119 lines
2.8 KiB
Python
119 lines
2.8 KiB
Python
import json
|
|
import random
|
|
import sys
|
|
import requests
|
|
|
|
HOST = sys.argv[1]
|
|
PORT = 1337
|
|
BASE = f"http://{HOST}:{PORT}"
|
|
|
|
|
|
def random_string(length=8):
|
|
letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
return ''.join(random.choice(letters) for _ in range(length))
|
|
|
|
|
|
def register_teacher(
|
|
first_name,
|
|
last_name,
|
|
password,
|
|
username,
|
|
education="Pony",
|
|
middle_name="Автотестович",
|
|
):
|
|
url = f"{BASE}/api/users"
|
|
data = {
|
|
"имя": first_name,
|
|
"фамилия": last_name,
|
|
"отчество": middle_name,
|
|
"образование": education,
|
|
"пароль": password,
|
|
"повтор пароля": password,
|
|
}
|
|
|
|
response = requests.post(url, data=json.dumps(data, ensure_ascii=False))
|
|
|
|
if response.status_code != 201:
|
|
print(
|
|
f"Failed to register teacher: {response.status_code} "
|
|
f"{response.text}"
|
|
)
|
|
sys.exit(1)
|
|
|
|
data = response.json()
|
|
|
|
return (username, password, data["идентификатор"])
|
|
|
|
|
|
def register_random_teacher():
|
|
first_name = random_string()
|
|
last_name = random_string()
|
|
password = random_string()
|
|
username = f"{first_name}.{last_name}"
|
|
|
|
return register_teacher(first_name, last_name, password, username)
|
|
|
|
|
|
def create_class(teacher_credentials):
|
|
headers = get_auth_headers(teacher_credentials)
|
|
|
|
url = f"{BASE}/api/classes"
|
|
data = {
|
|
"номер": 11,
|
|
"буква": "Б",
|
|
}
|
|
|
|
response = requests.post(
|
|
url,
|
|
data=json.dumps(data, ensure_ascii=False),
|
|
headers=headers
|
|
)
|
|
|
|
if response.status_code != 201:
|
|
print(
|
|
f"Failed to create class: {response.status_code} {response.text}"
|
|
)
|
|
sys.exit(1)
|
|
|
|
class_info = response.json()
|
|
return class_info["идентификатор"]
|
|
|
|
|
|
def create_student(teacher_credentials):
|
|
headers = get_auth_headers(teacher_credentials)
|
|
password = random_string()
|
|
|
|
url = f"{BASE}/api/students"
|
|
data = {
|
|
"имя": random_string(),
|
|
"фамилия": random_string(),
|
|
"отчество": "Автотестович",
|
|
"снилс": random_string(),
|
|
"паспорт": random_string(),
|
|
"пароль": password,
|
|
"повтор пароля": password,
|
|
}
|
|
|
|
response = requests.post(
|
|
url,
|
|
data=json.dumps(data, ensure_ascii=False),
|
|
headers=headers
|
|
)
|
|
|
|
if response.status_code != 201:
|
|
print(
|
|
f"Failed to create student: {response.status_code} {response.text}"
|
|
)
|
|
sys.exit(1)
|
|
|
|
class_info = response.json()
|
|
return class_info["идентификатор"]
|
|
|
|
|
|
def get_auth_headers(teacher_credentials):
|
|
return {
|
|
"Authorization": (
|
|
f"Basic {teacher_credentials[0]} {teacher_credentials[1]}"
|
|
)
|
|
}
|