You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
3.0 KiB
68 lines
3.0 KiB
from flask import abort, request, render_template, url_for, jsonify |
|
from webApp import * |
|
from webApp import webApp |
|
import gspread |
|
from oauth2client.service_account import ServiceAccountCredentials |
|
import json |
|
import datetime |
|
from config import config |
|
|
|
# Авторизация Google API |
|
def authorize_google(): |
|
# google_json = {} |
|
# for key in config["GOOGLE"].keys(): |
|
# google_json[key] = config["GOOGLE"][key] |
|
scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/drive"] |
|
creds = ServiceAccountCredentials.from_json_keyfile_name("botforclinic-436512-0c117dd103a8.json", scope) |
|
# creds = ServiceAccountCredentials.from_json_keyfile_dict(google_json, scope) |
|
client = gspread.authorize(creds) |
|
return client |
|
|
|
# Функция проверки существования пользователя в таблице |
|
def user_exists(sheet, fio, tel): #, user_id): |
|
records = sheet.get_all_values() # Получаем все данные таблицы без заголовков |
|
|
|
for row in records[1:]: # Пропускаем первую строку, если там заголовки, или уберите [1:], если заголовков нет |
|
if len(row) > 1 and row[0] == fio and row[1] == tel:# and row[13] == user_id: |
|
return True # Если ФИО, телефон и user_id совпадают, значит, запись уже существует |
|
return False |
|
|
|
|
|
# Обработка формы |
|
@webApp.route('/form_submit', methods=['POST']) |
|
def form_submit(): |
|
data = json.loads(request.data) |
|
# {'fio': '', 'tel': '', 'email': '', 'passport': '', 'passport_date': '', 'postal_code': '', 'address': '', 'snils': '', 'inn': '', 'dob': ''} |
|
data['current_time'] = datetime.datetime.now().strftime("%d.%m.%Y, %H:%M") |
|
|
|
# Авторизация и добавление данных в Google Sheets |
|
sheet = authorize_google().open("Информация о сотрудниках").sheet1 |
|
|
|
# Проверка, существует ли уже пользователь |
|
if user_exists(sheet, data['fio'], data['tel']): #, data['user_id']): |
|
return jsonify({'success': False, 'error': 'Ваши данные уже присутствуют в таблице'}), 400 |
|
|
|
sheet.append_row([ |
|
data['fio'], |
|
data['tel'], |
|
data['email'], |
|
data['passport'][:5], |
|
data['passport'][5:], |
|
data['passport_issued_by'], |
|
data['passport_date'], |
|
data['postal_code'], |
|
data['address'], |
|
data['residential_address'], |
|
data['snils'], |
|
data['inn'], |
|
data['dob'], |
|
data['user_id'], # Записываем Telegram ID пользователя |
|
data['current_time'] # Записываем время отправки данных |
|
]) |
|
|
|
return jsonify({'success':True}) |
|
|
|
|
|
@webApp.route('/') |
|
def main_page_2_0(): |
|
return render_template('2.0/main_page.pug', user_id=request.args.get('user_id', None))
|
|
|