cross-posting/cms/views.py

57 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from json import JSONDecoder, JSONEncoder
import requests
import os
from django.http import JsonResponse
from django.views import View
from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_exempt
from cms.models import Article
@method_decorator(csrf_exempt, name='dispatch')
class ArticleView(View):
def _promote_to_channel(self, article: Article):
bot_token = os.getenv('TELEGRAM_BOT_TOKEN')
channel_id = os.getenv('TELEGRAM_CHAT_ID')
long_text = f'{article.title}\n{article.body}'
send_message_url = f'https://api.telegram.org/bot{bot_token}/sendMessage?chat_id={channel_id}&text={long_text}'
response = requests.get(send_message_url)
result = response.json()
if result['ok']:
print('Мы послали сообщение, ура!')
else:
print('Похоже, нас послали доделывать приложение :-(')
def _promote_to_joomla(self, article: Article):
joomla_token = os.getenv('JOOMLA_TOKEN')
headers = {
'X-Joomla-Token': joomla_token,
'Content-Type': 'application/json'
}
article_json = {
"alias": article.title,
"articletext": article.body,
"catid": "8",
"language": "*",
"metadesc": "",
"metakey": "",
"title": article.title,
"state": 1
}
response = requests.post('http://zv.mirokod.ru/api/index.php/v1/content/articles',
headers=headers,
data=JSONEncoder().encode(article_json))
result = response.json()
print(result)
def post(self, request):
article_data = JSONDecoder().decode(request.body.decode())
article = Article.objects.create(**article_data)
self._promote_to_channel(article)
self._promote_to_joomla(article)
response = {'ok': True}
return JsonResponse(response)