route handlers for account/main
This commit is contained in:
@@ -10,4 +10,26 @@ class FAQMainSerializer(serializers.ModelSerializer):
|
||||
class NewsMainSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = News
|
||||
fields= "__all__"
|
||||
fields= "__all__"
|
||||
|
||||
class TelegramSerializer(serializers.Serializer):
|
||||
"""Отправляем сообщение в телеграм канал компании с полями:
|
||||
- Источник
|
||||
- Имя пользователя
|
||||
- Номер телефона
|
||||
- Сообщение"""
|
||||
|
||||
SOURCE_CHOICES = [
|
||||
("main", "Main"),
|
||||
("admin", "Admin"),
|
||||
("userAccount", "Account"),
|
||||
("contact-us", "Contact Us")
|
||||
]
|
||||
|
||||
source = serializers.ChoiceField(choices=SOURCE_CHOICES)
|
||||
name = serializers.CharField(max_length=255)
|
||||
phone_number = serializers.CharField(max_length=20)
|
||||
message = serializers.CharField(max_length=1000)
|
||||
|
||||
def create(self, validated_data):
|
||||
return type('TelegramMessage', (), validated_data)
|
||||
@@ -1,9 +1,11 @@
|
||||
import requests
|
||||
from django.conf import settings
|
||||
from rest_framework import status
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.response import Response
|
||||
from api.utils.decorators import handle_exceptions
|
||||
|
||||
from api.main.serializers import FAQMainSerializer, NewsMainSerializer
|
||||
from api.main.serializers import FAQMainSerializer, NewsMainSerializer, TelegramSerializer
|
||||
from sitemanagement.models import FAQ, News
|
||||
|
||||
class FAQView(APIView):
|
||||
@@ -27,4 +29,40 @@ class NewsView(APIView):
|
||||
'news': NewsMainSerializer(news, many=True).data
|
||||
}
|
||||
|
||||
return Response(data, status=status.HTTP_200_OK)
|
||||
return Response(data, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
class TelegramMessageView(APIView):
|
||||
@handle_exceptions
|
||||
def post(self, request):
|
||||
serializer = TelegramSerializer(data=request.data)
|
||||
|
||||
if not serializer.is_valid():
|
||||
return Response(
|
||||
{"error": "Invalid data provided", "details": serializer.errors},
|
||||
status=status.HTTP_400_BAD_REQUEST
|
||||
)
|
||||
|
||||
# формируем сообщение из полей
|
||||
message_obj = serializer.save()
|
||||
message = (
|
||||
f"#{message_obj.source}\n"
|
||||
f"Name: {message_obj.name}\n"
|
||||
f"Phone number: {message_obj.phone_number}\n"
|
||||
f"Message: {message_obj.message}"
|
||||
)
|
||||
|
||||
response = requests.post(
|
||||
f'https://api.telegram.org/bot{settings.BOT_TOKEN}/sendMessage',
|
||||
json={
|
||||
'chat_id': settings.CHAT_ID,
|
||||
'text': message,
|
||||
}
|
||||
)
|
||||
|
||||
response.raise_for_status()
|
||||
|
||||
return Response(
|
||||
{"success": "Message sent successfully"},
|
||||
status=status.HTTP_201_CREATED
|
||||
)
|
||||
Reference in New Issue
Block a user