Browse Source

новый коммит#5

Anton 1 year ago
parent
commit
be7da10b9e
  1. 2
      .gitignore
  2. 31
      README.md
  3. 4
      adminpanel/config.py
  4. 1
      adminpanelapp/admin.py
  5. 39
      adminpanelapp/models.py
  6. 6
      adminpanelapp/templates/send_telegram_message.html
  7. 4
      adminpanelapp/views.py
  8. 7
      bot_sys/config.py
  9. 1
      requirements.txt

2
.gitignore vendored

@ -3,3 +3,5 @@ config_root_ids
__pycache__
log.txt
bot.db
adminpanelapp/migrations
adminpanel/__init__.py

31
README.md

@ -1,4 +1,4 @@
## TPlatformBot
TPlatformBot
### Видеоинструкции
@ -17,21 +17,21 @@
3. Профиль пользователя
4. Права доступа
5. Пользователи и группы пользователей
4. Проекты
5. Задачи
6. Потребности
7. Комментарии
8. Языки (сообщения и кнопки)
9. Заказы
10. Подписки
6. Проекты
7. Задачи
8. Потребности
9. Комментарии
10. Языки (сообщения и кнопки)
11. Заказы
12. Подписки
---------
---
Данный бот позволяет создать свою площадку для взаимодействия на некоммерческой основе в мессенджере Telegram и обмениваться ресурсами и компетенциями для реализации различных проектов.
Сам бот разработан на языке программирования **Python** с использованием фреймворка **Aiogram**. База данных - **SQLite3**.
------
---
**Установка, первичная настройка и запуск**
@ -66,3 +66,14 @@
Тестовая версия запущена по ссылке
http://t.me/Test_TPlatform_bot
## Запуск Админ панели
1. Выполните миграции
python manage.py migrate
2. Создайте суперпользователя
python manage.py createsupgiteruser
3. Введите имя пользователя, почту и пароль
4. Запустите сервер
python manage.py runserver
5. Перейдите по адерсу http://127.0.0.1:8000/ (адрес выведится в терминале) и введите данные ранее созданного пользователя и пароль

4
adminpanel/config.py

@ -4,8 +4,6 @@ g_telegram_bot_api_token = ''
telegram_bot_api_token_file_name = 'config_telegram_bot_api_token'
# ---------------------------------------------------------
# Дополнительные функции
def ClearReadLine(a_Line):
return a_Line[:-1]
def GetFirstLineFromFile(a_FileName):
f = open(a_FileName, 'r')
result = f.readline()
@ -21,5 +19,5 @@ def GetAllLinesFromFile(a_FileName):
def GetTelegramBotApiToken():
global g_telegram_bot_api_token
if len(g_telegram_bot_api_token) == 0:
g_telegram_bot_api_token = ClearReadLine(GetFirstLineFromFile(telegram_bot_api_token_file_name))
g_telegram_bot_api_token = str().strip(GetFirstLineFromFile(telegram_bot_api_token_file_name))
return g_telegram_bot_api_token

1
adminpanelapp/admin.py

@ -14,6 +14,7 @@ class OrdersAdmin(admin.ModelAdmin):
actions =['send_message']
exclude = ['orderAccess', 'userID', 'orderPhoto', 'orderPhotoPay']
def show_photo(self, obj):
html = obj.get_photo_html()
return mark_safe(html)

39
adminpanelapp/models.py

@ -1,3 +1,4 @@
import time
from urllib.parse import quote
import requests
@ -14,7 +15,7 @@ class Orders(models.Model):
orderName = models.CharField(max_length=100, verbose_name='наименование', null=True)
orderDesc = models.TextField(verbose_name='описание', null=True)
orderPhoto = models.ImageField(verbose_name='фото', null=True)
orderPhotoPay = models.ImageField(upload_to='photo/', verbose_name='чек')
orderPhotoPay = models.ImageField(verbose_name='чек')
orderAddress = models.CharField(max_length=100, verbose_name='адрес доставки', blank=True, null=True)
orderAccess = models.CharField(max_length=100, verbose_name='доступ', blank=True, null=True)
orderCreateDateTime = models.DateTimeField(auto_now_add=True, null=True, verbose_name='дата и время создания')
@ -37,12 +38,13 @@ class Orders(models.Model):
<body>
<img src="{photo_url}" width="{width}" height="{height}" class="small-photo">
<img src="{photo_url}" width="{large_width}" height="{large_height}" class="large-photo">
<a href="#" onclick="togglePhoto()" id="toggle-button" class="button">Увеличить фото</a>
<a href="#" onclick="togglePhoto(event)" class="button">Увеличить фото</a>
<script>
function togglePhoto() {{
var smallPhoto = document.getElementsByClassName("small-photo")[0];
var largePhoto = document.getElementsByClassName("large-photo")[0];
var toggleButton = document.getElementById("toggle-button");
function togglePhoto(event) {{
var toggleButton = event.target;
var container = toggleButton.parentNode;
var smallPhoto = container.querySelector(".small-photo");
var largePhoto = container.querySelector(".large-photo");
if (smallPhoto.style.display === "none") {{
smallPhoto.style.display = "block";
@ -86,6 +88,7 @@ class Orders(models.Model):
response = requests.get(url)
data = response.json()
if data['ok']:
file_path = data["result"]["file_path"]
photo_url = f"https://api.telegram.org/file/bot{token}/{quote(file_path, safe='')}"
@ -95,20 +98,21 @@ class Orders(models.Model):
<body>
<img src="{photo_url}" width="{width}" height="{height}" class="small-photo">
<img src="{photo_url}" width="{large_width}" height="{large_height}" class="large-photo">
<a href="#" onclick="togglePhotoPay()" id="toggle-button" class="button">Увеличить фото</a>
<a href="#" onclick="togglePhoto(event)" class="button">Увеличить фото</a>
<script>
function togglePhotoPay() {{
var smallPhotoPay = document.getElementsByClassName("small-photo")[1];
var largePhotoPay = document.getElementsByClassName("large-photo")[1];
var toggleButton = document.getElementById("toggle-button");
if (smallPhotoPay.style.display === "none") {{
smallPhotoPay.style.display = "block";
largePhotoPay.style.display = "none";
function togglePhoto(event) {{
var toggleButton = event.target;
var container = toggleButton.parentNode;
var smallPhoto = container.querySelector(".small-photo");
var largePhoto = container.querySelector(".large-photo");
if (smallPhoto.style.display === "none") {{
smallPhoto.style.display = "block";
largePhoto.style.display = "none";
toggleButton.innerHTML = "Увеличить фото";
}} else {{
smallPhotoPay.style.display = "none";
largePhotoPay.style.display = "block";
smallPhoto.style.display = "none";
largePhoto.style.display = "block";
toggleButton.innerHTML = "Уменьшить фото";
}}
}}
@ -135,6 +139,7 @@ class Orders(models.Model):
"""
return html
class Meta:
verbose_name_plural = 'Заказы'

6
adminpanelapp/templates/send_telegram_message.html

@ -0,0 +1,6 @@
<form method="post">
{% csrf_token %}
<label for="message">Сообщение:</label>
<input type="text" chat_id="message" name="message">
<button type="submit">Отправить сообщение</button>
</form>

4
adminpanelapp/views.py

@ -3,14 +3,14 @@ from django.http import HttpResponseRedirect
import requests
from django.urls import reverse
from django.shortcuts import render
from bot_sys.config import g_telegram_bot_api_token
from bot_sys.config import GetTelegramBotApiToken
def send_telegram_message(request, chat_id):
if request.method == 'POST':
message = request.POST.get('message')
bot_token = g_telegram_bot_api_token
bot_token = GetTelegramBotApiToken()
url = f'https://api.telegram.org/bot{bot_token}/sendMessage?text={message}&chat_id={chat_id}'
response = requests.get(url)

7
bot_sys/config.py

@ -24,11 +24,8 @@ root_ids_file_name = 'config_root_ids'
# Дополнительные функции
def ClearReadLine(a_Line):
cleaned_line = ""
for char in a_Line:
if char.isprintable():
cleaned_line += char
return cleaned_line
line = a_Line.strip()
return line
def GetFirstLineFromFile(a_FileName):
f = open(a_FileName, 'r')

1
requirements.txt

@ -1,2 +1,3 @@
aiogram==2.20
colorama==0.4.5
Django==4.2.5
Loading…
Cancel
Save