from rest_framework import serializers
from permabots.models import TelegramUser, TelegramChat, TelegramMessage, TelegramUpdate, TelegramCallbackQuery
from datetime import datetime
import time
[docs]class UserSerializer(serializers.HyperlinkedModelSerializer):
id = serializers.IntegerField()
[docs]class ChatSerializer(serializers.HyperlinkedModelSerializer):
id = serializers.IntegerField()
[docs]class TimestampField(serializers.Field):
[docs] def to_internal_value(self, data):
return datetime.fromtimestamp(data)
[docs] def to_representation(self, value):
return int(time.mktime(value.timetuple()))
[docs]class MessageSerializer(serializers.HyperlinkedModelSerializer):
message_id = serializers.IntegerField()
# reserved word field 'from' changed dynamically
from_ = UserSerializer(many=False, source="from_user")
chat = ChatSerializer(many=False)
date = TimestampField()
def __init__(self, *args, **kwargs):
super(MessageSerializer, self).__init__(*args, **kwargs)
self.fields['from'] = self.fields['from_']
del self.fields['from_']
[docs]class CallbackQuerySerializer(serializers.HyperlinkedModelSerializer):
from_ = UserSerializer(many=False, source="from_user")
message = MessageSerializer(many=False, required=False)
id = serializers.CharField(source="callback_id")
def __init__(self, *args, **kwargs):
super(CallbackQuerySerializer, self).__init__(*args, **kwargs)
self.fields['from'] = self.fields['from_']
del self.fields['from_']
[docs]class UpdateSerializer(serializers.HyperlinkedModelSerializer):
update_id = serializers.IntegerField()
message = MessageSerializer(many=False, required=False)
callback_query = CallbackQuerySerializer(many=False, required=False)
[docs]class UserAPISerializer(serializers.HyperlinkedModelSerializer):