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}
" \ f"Пользователей прошедших регистрацию: {mongo.users_collection.count_documents({'email': {'$ne': None}})}
" \ f"Студентов: {all_users - teachers}
" \ f"Преподавателей: {teachers}
" \ f"Отписались от уведомлений: {mongo.users_collection.count_documents({'notify_minutes': None})}
" \ f"Отправлено уведомлений за сегодня: {mongo.lessons_collection.count_documents({'notified': True})}
" \ f"Проиндексировано занятий из РУЗа: {mongo.lessons_collection.count_documents({})}
" \ f"
" \ f"
" \ f"Пользователей из Москвы: {mongo.users_collection.count_documents({'campus': 'Москва'}) + mongo.users_collection.count_documents({'campus': {'$exists': False}})}
" \ f"Пользователей из Москвы (регистрация): {mongo.users_collection.count_documents({'campus': 'Москва', 'email': {'$ne': None}}) + mongo.users_collection.count_documents({'campus': {'$exists': False}, 'email': {'$ne': None}})}
" \ f"Пользователей из Перми: {mongo.users_collection.count_documents({'campus': 'Пермь'})}
" \ f"Пользователей из Перми (регистрация): {mongo.users_collection.count_documents({'campus': 'Пермь', 'email': {'$ne': None}})}
" \ f"Пользователей из Нижнего Новгорода: {mongo.users_collection.count_documents({'campus': 'Нижний Новгород'})}
" \ f"Пользователей из Нижнего Новгорода (регистрация): {mongo.users_collection.count_documents({'campus': 'Нижний Новгород', 'email': {'$ne': None}})}
" \ f"Пользователей из Санкт-Петербурга: {mongo.users_collection.count_documents({'campus': 'Санкт-Петербург'})}
" \ f"Пользователей из Санкт-Петербурга (регистрация): {mongo.users_collection.count_documents({'campus': 'Санкт-Петербург', 'email': {'$ne': None}})}
" 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)