Skip to content

senjun-team/scene

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scene

Веб-интерфейс senjun.ru.

Перед запуском

Для полноценной работы сайта нужно, чтобы рядом работали сервисы handyman и watchman_cpp.

Настройка проекта

Склонировать проект:

git clone https://github.com/senjun-team/scene.git

Настроить окружение:

cd scene
python3 -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txt

Создать свой конфиг и заполнить его значениями:

cd scene
cp conf-template.json conf.json

Внутри conf.json как минимум нужно задать свой пароль для бд, с которой работает проект. В отладочных целях другие поля кастомизировать не обязательно.

Для работы проекту требуедся бд. Можно поднять PostgreSQL в докере:

docker run  -e POSTGRES_PASSWORD=senjun_pass -p 5432:5432 -v postgres-senjun-data:/var/lib/postgresql/data -d postgres

Заходим внутрь контейнера, запускаем psql

docker exec -it CONTAINER_ID bash
psql -U postgres

Создаем бд для проекта:

CREATE DATABASE scene;
CREATE USER scene WITH password 'scene';
ALTER ROLE scene SET client_encoding TO 'utf8';
ALTER ROLE scene SET default_transaction_isolation TO 'read committed';
ALTER ROLE scene SET timezone TO 'UTC';
ALTER DATABASE scene OWNER TO scene;
GRANT ALL PRIVILEGES ON DATABASE scene TO scene;

Проводим миграцию табличек:

cd ..
python manage.py makemigrations
python manage.py migrate

Настраиваем кеш. Он нужен для рейт-лимита на аутентификационные апи:

python3 manage.py createcachetable

Создаем пользователя, под которым можно будет логиниться на сайте:

cd scene
python3 manage.py shell

Попав в шел джанги, пишем:

from django.contrib.auth.models import User
user = User.objects.create_user(username='login', email='mail@example.com', password='password')
user.save()

После этого запускаем проект:

python3 manage.py runserver --insecure 127.0.0.1:8001

По адресу http://127.0.0.1:8001/ открывается сайт. Можно логиниться.

Запросы для телеграм бота

Получение внутреннего id пользователя:

curl -X POST   -d '{"key":"key_from_conf", "user_id":522727992}'   "http://127.0.0.1:8001/v1/get_user_id/telegram_bot/"

Синхронизация учеток пользователя в боте и на сайте:

curl -X POST   -d '{"key":"key_from_conf", "user_id":522727992, "activation_key":"9c7kjbb-_l6)rt6%mf1p$p#z*81a2in04!2w)%wuo65we)=0mh"}'   "http://127.0.0.1:8001/sync_tg_bot_with_site/"

При синхронизации внутренний id пользователя в боте не изменится. Изменится внутренний id пользователя на сайте. В качестве "user_id" нужно передавать айди пользователя из телеграма (не внутренний).

Варианты ответов:

  • Пустой json. Какая-то ошибка, скорее всего связанная с попытками опрокинуть сцену.
  • {"status":0} - json с полем status. Если status=0, то все ок и синхронизация произошла успешно. Нужно перезапросить новый внутрнний id пользователя. Если 1, то activation_key заэкспайрился (ему больше суток). Другие коды - опять же какая-то ошибка, скорее всего связанная с опрокидыванием.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •