mirror of
https://github.com/EDeev/yandex_lyceum.git
synced 2026-06-15 11:01:04 +03:00
273 lines
17 KiB
Python
273 lines
17 KiB
Python
from flask import Flask, url_for, request
|
||
|
||
app = Flask(__name__)
|
||
|
||
|
||
@app.route('/')
|
||
def index():
|
||
return "Миссия Колонизация Марса"
|
||
|
||
|
||
@app.route('/index')
|
||
def gimn():
|
||
return 'И на Марсе будут яблони цвести!'
|
||
|
||
|
||
@app.route('/promotion')
|
||
def promo():
|
||
return '</br>'.join(['Человечество вырастает из детства.',
|
||
'Человечеству мала одна планета.',
|
||
'Мы сделаем обитаемыми безжизненные пока планеты.',
|
||
'И начнем с Марса!', 'Присоединяйся!'])
|
||
|
||
|
||
@app.route('/image_mars')
|
||
def img():
|
||
return f"""<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<title>Привет, Марс!</title>
|
||
</head>
|
||
<body>
|
||
<h1>Жди нас, Марс!</h1>
|
||
<img src="{url_for('static', filename='img/planet.jpg')}"></br>
|
||
<a>Вот она какая, красная планета.</a>
|
||
</body>
|
||
</html>"""
|
||
|
||
|
||
@app.route('/promotion_image')
|
||
def promo_img():
|
||
return f"""<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<link rel="stylesheet" type="text/css" href="{url_for('static', filename='css/style.css')}" />
|
||
<title>Колонизация</title>
|
||
</head>
|
||
<body>
|
||
<h1 class="red" >Жди нас, Марс!</h1>
|
||
<img src="{url_for('static', filename='img/planet.jpg')}"></br>
|
||
<div class="font black"><b>Человечество вырастает из детства.</b></div></br>
|
||
<div class="font green"><b>Человечеству мала одна планета.</b></div></br>
|
||
<div class="font gray"><b>Мы сделаем обитаемыми безжизненные пока планеты.</b></div></br>
|
||
<div class="font yellow"><b>И начнем с Марса!</b></div></br>
|
||
<div class="font red"><b>Присоединяйся!</b></div>
|
||
</body>
|
||
</html>"""
|
||
|
||
|
||
@app.route('/astronaut_selection', methods=['POST', 'GET'])
|
||
def form_sample():
|
||
if request.method == 'GET':
|
||
return f'''<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||
<link rel="stylesheet"
|
||
href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css"
|
||
integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1"
|
||
crossorigin="anonymous">
|
||
<link rel="stylesheet" type="text/css" href="{url_for('static', filename='css/style.css')}" />
|
||
<title>Отбор астронавтов</title>
|
||
</head>
|
||
<body>
|
||
<h1 style="text-align:center">Анкета претендента</h1>
|
||
<h2 style="text-align:center">на участие в миссии</h2>
|
||
<div>
|
||
<form class="login_form" method="post">
|
||
<input type="text" class="form-control" id="text" placeholder="Введите фамилию" name="text1">
|
||
<input type="text" class="form-control" id="text" placeholder="Введите имя" name="text2"></br>
|
||
<input type="email" class="form-control" id="email" aria-describedby="emailHelp" placeholder="Введите адрес почты" name="email">
|
||
<div class="form-group">
|
||
<label for="classSelect">Какое у Вас образование?</label>
|
||
<select class="form-control" id="classSelect" name="class">
|
||
<option>Начальное</option>
|
||
<option>Среднее оконченное</option>
|
||
<option>Среднее неоконченное</option>
|
||
<option>Высшее оконченное</option>
|
||
<option>Высшее неоконченное</option>
|
||
</select>
|
||
</div></br>
|
||
<label for="classSelect">Какие у Вас есть профессии?</label>
|
||
<div class="form-group form-check">
|
||
<input type="checkbox" class="form-check-input" id="acceptRules" name="accept1">
|
||
<label class="form-check-label" for="acceptRules">Инженер-исследователь</label></br>
|
||
<input type="checkbox" class="form-check-input" id="acceptRules" name="accept2">
|
||
<label class="form-check-label" for="acceptRules">Инженер-строитель</label></br>
|
||
<input type="checkbox" class="form-check-input" id="acceptRules" name="accept3">
|
||
<label class="form-check-label" for="acceptRules">Пилот</label></br>
|
||
<input type="checkbox" class="form-check-input" id="acceptRules" name="accept4">
|
||
<label class="form-check-label" for="acceptRules">Метеоролог</label></br>
|
||
<input type="checkbox" class="form-check-input" id="acceptRules" name="accept5">
|
||
<label class="form-check-label" for="acceptRules">Инженер по жизнеобеспечению</label></br>
|
||
<input type="checkbox" class="form-check-input" id="acceptRules" name="accept6">
|
||
<label class="form-check-label" for="acceptRules">Инженер по радиационной защите</label></br>
|
||
<input type="checkbox" class="form-check-input" id="acceptRules" name="accept7">
|
||
<label class="form-check-label" for="acceptRules">Врач</label></br>
|
||
<input type="checkbox" class="form-check-input" id="acceptRules" name="accept8">
|
||
<label class="form-check-label" for="acceptRules">Экзобиолог</label></br>
|
||
</div></br>
|
||
<div class="form-group">
|
||
<label for="form-check">Укажите пол</label>
|
||
<div class="form-check">
|
||
<input class="form-check-input" type="radio" name="sex" id="male" value="male">
|
||
<label class="form-check-label" for="male">
|
||
Мужской
|
||
</label>
|
||
</div>
|
||
<div class="form-check">
|
||
<input class="form-check-input" type="radio" name="sex" id="female" value="female">
|
||
<label class="form-check-label" for="female">
|
||
Женский
|
||
</label>
|
||
</div>
|
||
</div></br>
|
||
<div class="form-group">
|
||
<label for="about">Почему Вы хотите принять участие в миссии?</label>
|
||
<textarea class="form-control" id="about" rows="3" name="about"></textarea>
|
||
</div></br>
|
||
<div class="form-group">
|
||
<label for="photo">Приложите фотографию</label></br>
|
||
<input type="file" class="form-control-file" id="photo" name="file">
|
||
</div></br>
|
||
<div class="form-group form-check">
|
||
<input type="checkbox" class="form-check-input" id="acceptRules" name="accept">
|
||
<label class="form-check-label" for="acceptRules">Готовы остаться на Марсе?</label>
|
||
</div></br>
|
||
<button type="submit" class="btn btn-primary">Отправить</button>
|
||
</form>
|
||
</div>
|
||
</body>
|
||
</html>'''
|
||
elif request.method == 'POST':
|
||
print("Фамилия -", request.form.get('text1'))
|
||
print("Имя -", request.form.get('text2'))
|
||
print("Почта -", request.form.get('email'))
|
||
print("Образование -", request.form.get('class'))
|
||
prof = []
|
||
typis = {'accept1': "Инженер-исследователь", 'accept2': "Инженер-строитель", 'accept3': "Пилот",
|
||
'accept4': "Метеоролог", 'accept5': 'Инженер по жизнеобеспечению',
|
||
'accept6': 'Инженер по радиационной защите', 'accept7': "Врач", 'accept8': "Экзобиолог"}
|
||
for i in typis:
|
||
a = request.form.get(i)
|
||
if a:
|
||
prof.append(typis[i])
|
||
print("Профкссия(-и):", ", ".join(prof))
|
||
print("Пол -", request.form.get('sex'))
|
||
print("Причины участия -", request.form.get('about'))
|
||
print("Фото -", request.form.get('file'))
|
||
if request.form.get('accept'):
|
||
print("Подписан на программу")
|
||
else:
|
||
print("Отказался от программы")
|
||
return "Форма отправлена"
|
||
|
||
|
||
@app.route('/choice/<planet_name>')
|
||
def choice(planet_name):
|
||
return f"""<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<link rel="stylesheet" type="text/css" href="{url_for('static', filename='css/style.css')}" />
|
||
<title>Колонизация</title>
|
||
</head>
|
||
<body>
|
||
<h1 class="font">Моё предложение: {planet_name}</h1>
|
||
<h1>Эта планета близка к Земле;</h1>
|
||
<div class="font green"><b>На ней много необходимых ресурсов;</b></div></br>
|
||
<div class="font gray"><b>На ней есть вода и атмосфера;</b></div></br>
|
||
<div class="font yellow"><b>На ней есть небольшое магнитное поле;</b></div></br>
|
||
<div class="font red"><b>Наконец, она просто красива!</b></div></br>
|
||
</body>
|
||
</html>"""
|
||
|
||
|
||
@app.route('/results/<nickname>/<int:level>/<float:rating>')
|
||
def result(nickname, level, rating):
|
||
return f"""<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<link rel="stylesheet" type="text/css" href="{url_for('static', filename='css/style.css')}" />
|
||
<title>Колонизация</title>
|
||
</head>
|
||
<body>
|
||
<h1 class="font">Результаты отбора</h1>
|
||
<h1>Претендента на участие в миссии {nickname}:</h1>
|
||
<div class="font green"><b>Поздравляем! Ваш рейтинг после {level} этапа отбора</b></div>
|
||
<h1>составляет {rating}!</h1>
|
||
<div class="font yellow"><b>Желаем удачи!</b></div></br>
|
||
</body>
|
||
</html>"""
|
||
|
||
|
||
@app.route('/load_photo', methods=['POST', 'GET'])
|
||
def photo():
|
||
if request.method == 'GET':
|
||
return f'''<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||
<link rel="stylesheet"
|
||
href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css"
|
||
integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1"
|
||
crossorigin="anonymous">
|
||
<link rel="stylesheet" type="text/css" href="{url_for('static', filename='css/style.css')}" />
|
||
<title>Отбор астронавтов</title>
|
||
</head>
|
||
<body>
|
||
<h1 style="text-align:center">Загрузка фотографии</h1>
|
||
<h2 style="text-align:center">для участия в миссии</h2>
|
||
<div>
|
||
<form class="login_form" method="post" enctype="multipart/form-data">
|
||
<div class="form-group">
|
||
<label for="photo">Приложите фотографию</label></br>
|
||
<input type="file" class="form-control-file" id="photo" name="file">
|
||
</div></br>
|
||
<img class="width" src="{url_for('static', filename='img/img.png')}"></br>
|
||
<button type="submit" class="btn btn-primary">Отправить</button>
|
||
</form>
|
||
</div>
|
||
</body>
|
||
</html>'''
|
||
elif request.method == 'POST':
|
||
f = request.files['file']
|
||
if f:
|
||
with open("static/img/img.png", "wb") as file:
|
||
file.write(f.read())
|
||
return f'''<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||
<link rel="stylesheet"
|
||
href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css"
|
||
integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1"
|
||
crossorigin="anonymous">
|
||
<link rel="stylesheet" type="text/css" href="{url_for('static', filename='css/style.css')}" />
|
||
<title>Отбор астронавтов</title>
|
||
</head>
|
||
<body>
|
||
<h1 style="text-align:center">Загрузка фотографии</h1>
|
||
<h2 style="text-align:center">для участия в миссии</h2>
|
||
<div>
|
||
<form class="login_form" method="post" enctype="multipart/form-data">
|
||
<div class="form-group">
|
||
<label for="photo">Приложите фотографию</label></br>
|
||
<input type="file" class="form-control-file" id="photo" name="file">
|
||
</div></br>
|
||
<img class="width" src="{url_for('static', filename='img/img.png')}"></br>
|
||
<button type="submit" class="btn btn-primary">Отправить</button>
|
||
</form>
|
||
</div>
|
||
</body>
|
||
</html>'''
|
||
|
||
|
||
if __name__ == '__main__':
|
||
app.run(port=8080, host='127.0.0.1')
|