ruz-bot/daemons/api.py
emmatveev 272233fc67
All checks were successful
Deploy Dev / Build (pull_request) Successful in 5s
Deploy Dev / Push (pull_request) Successful in 9s
Deploy Dev / Deploy dev (pull_request) Successful in 21s
trial
2024-11-17 22:52:50 +03:00

78 lines
6.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from flask import Flask, request
import settings
from helpers.alice import Processor
from helpers.mongo import mongo
from daemons import base
class Daemon(base.Daemon):
def execute(self):
app = Flask(__name__)
@app.route('/stats/json', methods=['GET'])
def stats_json():
all_users = mongo.users_collection.count_documents({})
teachers = mongo.users_collection.count_documents({"is_teacher": True})
return {
"Всего пользователей": all_users,
"Пользователей прошедших регистрацию": mongo.users_collection.count_documents({'email': {'$ne': None}}),
"Преподавателей": teachers,
"Отписались от уведомлений": mongo.users_collection.count_documents({'notify_minutes': None}),
"Отправлено уведомлений за сегодня": mongo.lessons_collection.count_documents({'notified': True}),
"Проиндексировано занятий из РУЗа": mongo.lessons_collection.count_documents({}),
"Пользователей из Москвы": mongo.users_collection.count_documents(
{'campus': 'Москва'}) + mongo.users_collection.count_documents({'campus': {'$exists': False}}),
"Пользователей из Москвы (регистрация)": mongo.users_collection.count_documents(
{'campus': 'Москва', 'email': {'$ne': None}}) + mongo.users_collection.count_documents(
{'campus': {'$exists': False}, 'email': {'$ne': None}}),
"Пользователей из Перми": mongo.users_collection.count_documents({'campus': 'Пермь'}),
"Пользователей из Перми (регистрация)": mongo.users_collection.count_documents(
{'campus': 'Пермь', 'email': {'$ne': None}}),
"Пользователей из Нижнего Новгорода": mongo.users_collection.count_documents({'campus': 'Нижний Новгород'}),
"Пользователей из Нижнего Новгорода (регистрация)": mongo.users_collection.count_documents(
{'campus': 'Нижний Новгород', 'email': {'$ne': None}}),
"Пользователей из Санкт-Петербурга": mongo.users_collection.count_documents({'campus': 'Санкт-Петербург'}),
"Пользователей из Санкт-Петербурга (регистрация)": mongo.users_collection.count_documents(
{'campus': 'Санкт-Петербург', 'email': {'$ne': None}})
}
@app.route('/stats', methods=['GET'])
def stats():
all_users = mongo.users_collection.count_documents({})
teachers = mongo.users_collection.count_documents({"is_teacher": True})
text = f"Всего пользователей: {all_users}<br>" \
f"Пользователей прошедших регистрацию: {mongo.users_collection.count_documents({'email': {'$ne': None}})}<br>" \
f"Студентов: {all_users - teachers}<br>" \
f"Преподавателей: {teachers}<br>" \
f"Отписались от уведомлений: {mongo.users_collection.count_documents({'notify_minutes': None})}<br>" \
f"Отправлено уведомлений за сегодня: {mongo.lessons_collection.count_documents({'notified': True})}<br>" \
f"Проиндексировано занятий из РУЗа: {mongo.lessons_collection.count_documents({})}<br>" \
f"<br>" \
f"<br>" \
f"Пользователей из Москвы: {mongo.users_collection.count_documents({'campus': 'Москва'}) + mongo.users_collection.count_documents({'campus': {'$exists': False}})}<br>" \
f"Пользователей из Москвы (регистрация): {mongo.users_collection.count_documents({'campus': 'Москва', 'email': {'$ne': None}}) + mongo.users_collection.count_documents({'campus': {'$exists': False}, 'email': {'$ne': None}})}<br>" \
f"Пользователей из Перми: {mongo.users_collection.count_documents({'campus': 'Пермь'})}<br>" \
f"Пользователей из Перми (регистрация): {mongo.users_collection.count_documents({'campus': 'Пермь', 'email': {'$ne': None}})}<br>" \
f"Пользователей из Нижнего Новгорода: {mongo.users_collection.count_documents({'campus': 'Нижний Новгород'})}<br>" \
f"Пользователей из Нижнего Новгорода (регистрация): {mongo.users_collection.count_documents({'campus': 'Нижний Новгород', 'email': {'$ne': None}})}<br>" \
f"Пользователей из Санкт-Петербурга: {mongo.users_collection.count_documents({'campus': 'Санкт-Петербург'})}<br>" \
f"Пользователей из Санкт-Петербурга (регистрация): {mongo.users_collection.count_documents({'campus': 'Санкт-Петербург', 'email': {'$ne': None}})}<br>"
return text
@app.route('/alice', methods=['POST'])
def alice():
req = request.json
processor = Processor(req)
response = {
"version": req['version'],
"session": req['session'],
"response": {
"end_session": False
}
}
response['response'].update(processor.process())
return response
app.run(host="0.0.0.0", port=1238, debug=settings.DEBUG)