Update app.py
Browse files
app.py
CHANGED
@@ -1802,67 +1802,73 @@ def show_registrations():
|
|
1802 |
# Маршрут для вывода данных за период
|
1803 |
@app.route('/registrations_period', methods=['GET'])
|
1804 |
def registrations_period():
|
1805 |
-
|
1806 |
-
|
1807 |
-
|
1808 |
-
|
1809 |
-
|
1810 |
-
|
1811 |
-
|
1812 |
-
|
1813 |
-
|
1814 |
-
|
1815 |
-
|
1816 |
-
|
1817 |
-
|
1818 |
-
|
1819 |
-
|
1820 |
-
|
1821 |
-
|
1822 |
-
|
1823 |
-
|
1824 |
-
|
1825 |
-
|
1826 |
-
|
1827 |
-
|
1828 |
-
|
1829 |
-
|
1830 |
-
|
1831 |
-
|
1832 |
-
|
1833 |
-
|
1834 |
-
|
1835 |
-
|
1836 |
-
|
1837 |
-
|
1838 |
-
|
1839 |
-
|
1840 |
-
|
1841 |
-
|
1842 |
-
|
1843 |
-
|
1844 |
-
|
1845 |
-
|
1846 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1847 |
|
1848 |
-
|
1849 |
-
|
1850 |
-
|
1851 |
-
|
1852 |
-
|
1853 |
-
|
1854 |
-
'x': day,
|
1855 |
-
'y': count
|
1856 |
})
|
1857 |
-
|
1858 |
-
|
1859 |
-
|
1860 |
-
|
1861 |
-
|
1862 |
-
|
1863 |
-
'daily_data': list(daily_data.values()) # Данные по дням для каждой метки
|
1864 |
-
})
|
1865 |
-
|
1866 |
|
1867 |
# Маршрут для отображения страницы с графиком за период
|
1868 |
@app.route('/show_registrations_period', methods=['GET'])
|
@@ -1876,7 +1882,6 @@ def show_registrations_period():
|
|
1876 |
|
1877 |
|
1878 |
|
1879 |
-
|
1880 |
# Поднятие страницы с таблицей
|
1881 |
@app.route('/data_gc_tab', methods=['GET'])
|
1882 |
def data_gc_tab():
|
|
|
1802 |
# Маршрут для вывода данных за период
|
1803 |
@app.route('/registrations_period', methods=['GET'])
|
1804 |
def registrations_period():
|
1805 |
+
try:
|
1806 |
+
# Получаем даты из параметров запроса
|
1807 |
+
start_date = request.args.get('start_date')
|
1808 |
+
end_date = request.args.get('end_date')
|
1809 |
+
|
1810 |
+
# Подключаемся к базе данных
|
1811 |
+
conn = sqlite3.connect('data_gc.db')
|
1812 |
+
cursor = conn.cursor()
|
1813 |
+
|
1814 |
+
# SQL-запрос для выборки данных за период
|
1815 |
+
query = """
|
1816 |
+
SELECT utm_source, COUNT(*) as count
|
1817 |
+
FROM contacts
|
1818 |
+
WHERE date(data_t) BETWEEN ? AND ?
|
1819 |
+
GROUP BY utm_source
|
1820 |
+
"""
|
1821 |
+
cursor.execute(query, (start_date, end_date))
|
1822 |
+
results = cursor.fetchall()
|
1823 |
+
|
1824 |
+
# Формируем данные для столбчатого графика
|
1825 |
+
labels = [row[0] for row in results] # Значения utm_source
|
1826 |
+
values = [row[1] for row in results] # Количество регистраций
|
1827 |
+
|
1828 |
+
# SQL-запрос для выборки данных по дням
|
1829 |
+
daily_query = """
|
1830 |
+
SELECT utm_source, date(data_t) as day, COUNT(*) as count
|
1831 |
+
FROM contacts
|
1832 |
+
WHERE date(data_t) BETWEEN ? AND ?
|
1833 |
+
GROUP BY utm_source, day
|
1834 |
+
ORDER BY day
|
1835 |
+
"""
|
1836 |
+
cursor.execute(daily_query, (start_date, end_date))
|
1837 |
+
daily_results = cursor.fetchall()
|
1838 |
+
|
1839 |
+
# Закрываем соединение с базой данных
|
1840 |
+
conn.close()
|
1841 |
+
|
1842 |
+
# Формируем данные для линейного графика
|
1843 |
+
daily_data = {}
|
1844 |
+
for row in daily_results:
|
1845 |
+
utm_source = row[0]
|
1846 |
+
day = row[1]
|
1847 |
+
count = row[2]
|
1848 |
+
|
1849 |
+
if utm_source not in daily_data:
|
1850 |
+
daily_data[utm_source] = {
|
1851 |
+
'label': utm_source,
|
1852 |
+
'data': []
|
1853 |
+
}
|
1854 |
+
daily_data[utm_source]['data'].append({
|
1855 |
+
'x': day,
|
1856 |
+
'y': count
|
1857 |
+
})
|
1858 |
|
1859 |
+
# Возвращаем данные в формате JSON
|
1860 |
+
return jsonify({
|
1861 |
+
'labels': labels,
|
1862 |
+
'values': values,
|
1863 |
+
'dates': list(daily_data.keys()), # Дни периода
|
1864 |
+
'daily_data': list(daily_data.values()) # Данные по дням для каждой метки
|
|
|
|
|
1865 |
})
|
1866 |
+
except Exception as e:
|
1867 |
+
# Логируем ошибку и возвращаем сообщение об ошибке
|
1868 |
+
print(f"Ошибка: {e}")
|
1869 |
+
return jsonify({
|
1870 |
+
'error': 'Произошла ошибка на сервере. Про��ерьте логи для подробностей.'
|
1871 |
+
}), 500
|
|
|
|
|
|
|
1872 |
|
1873 |
# Маршрут для отображения страницы с графиком за период
|
1874 |
@app.route('/show_registrations_period', methods=['GET'])
|
|
|
1882 |
|
1883 |
|
1884 |
|
|
|
1885 |
# Поднятие страницы с таблицей
|
1886 |
@app.route('/data_gc_tab', methods=['GET'])
|
1887 |
def data_gc_tab():
|