DmitrMakeev commited on
Commit
6703fe3
·
verified ·
1 Parent(s): 4c5d8bb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +65 -60
app.py CHANGED
@@ -1802,67 +1802,73 @@ def show_registrations():
1802
  # Маршрут для вывода данных за период
1803
  @app.route('/registrations_period', methods=['GET'])
1804
  def registrations_period():
1805
- # Получаем даты из параметров запроса
1806
- start_date = request.args.get('start_date')
1807
- end_date = request.args.get('end_date')
1808
-
1809
- # Подключаемся к базе данных
1810
- conn = sqlite3.connect('data_gc.db')
1811
- cursor = conn.cursor()
1812
-
1813
- # SQL-запрос для выборки данных за период
1814
- query = """
1815
- SELECT utm_source, COUNT(*) as count
1816
- FROM contacts
1817
- WHERE date(data_t) BETWEEN ? AND ?
1818
- GROUP BY utm_source
1819
- """
1820
- cursor.execute(query, (start_date, end_date))
1821
- results = cursor.fetchall()
1822
-
1823
- # Формируем данные для столбчатого графика
1824
- labels = [row[0] for row in results] # Значения utm_source
1825
- values = [row[1] for row in results] # Количество регистраций
1826
-
1827
- # SQL-запрос для выборки данных по дням
1828
- daily_query = """
1829
- SELECT utm_source, date(data_t) as day, COUNT(*) as count
1830
- FROM contacts
1831
- WHERE date(data_t) BETWEEN ? AND ?
1832
- GROUP BY utm_source, day
1833
- ORDER BY day
1834
- """
1835
- cursor.execute(daily_query, (start_date, end_date))
1836
- daily_results = cursor.fetchall()
1837
-
1838
- # Закрываем соединение с базой данных
1839
- conn.close()
1840
-
1841
- # Формируем данные для линейного графика
1842
- daily_data = {}
1843
- for row in daily_results:
1844
- utm_source = row[0]
1845
- day = row[1]
1846
- count = row[2]
 
 
 
 
 
 
 
 
 
 
 
1847
 
1848
- if utm_source not in daily_data:
1849
- daily_data[utm_source] = {
1850
- 'label': utm_source,
1851
- 'data': []
1852
- }
1853
- daily_data[utm_source]['data'].push({
1854
- 'x': day,
1855
- 'y': count
1856
  })
1857
-
1858
- # Возвращаем данные в формате JSON
1859
- return jsonify({
1860
- 'labels': labels,
1861
- 'values': values,
1862
- 'dates': list(daily_data.keys()), # Дни периода
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():