Parse Drakdoo response into model fields
This commit is contained in:
parent
20a4e21eaa
commit
bc27748396
|
@ -1,18 +1,21 @@
|
|||
from serde import Model, fields
|
||||
|
||||
|
||||
class Market(Model):
|
||||
exchange = fields.Str()
|
||||
item = fields.Str()
|
||||
currency = fields.Str()
|
||||
contract = fields.Str()
|
||||
|
||||
|
||||
class Timestamp(Model):
|
||||
sent = fields.DateTime()
|
||||
trade = fields.DateTime()
|
||||
|
||||
|
||||
class BaseDrakdoo(Model):
|
||||
title = fields.Str()
|
||||
message = fields.Str()
|
||||
period = fields.Str()
|
||||
market = fields.Nested(Market)
|
||||
timestamp = fields.Nested(Timestamp)
|
||||
timestamp = fields.Nested(Timestamp)
|
||||
|
|
|
@ -83,7 +83,16 @@ class Hook(models.Model):
|
|||
|
||||
class Callback(models.Model):
|
||||
hook = models.ForeignKey(Hook, on_delete=models.CASCADE)
|
||||
data = models.JSONField()
|
||||
title = models.CharField(max_length=1024, null=True, blank=True)
|
||||
message = models.CharField(max_length=1024, null=True, blank=True)
|
||||
period = models.CharField(max_length=255, null=True, blank=True)
|
||||
market = models.CharField(max_length=255, null=True, blank=True)
|
||||
timestamp_sent = models.DateTimeField(null=True, blank=True)
|
||||
timestamp_trade = models.DateTimeField(null=True, blank=True)
|
||||
market_exchange = models.CharField(max_length=255, null=True, blank=True)
|
||||
market_item = models.CharField(max_length=255, null=True, blank=True)
|
||||
market_currency = models.CharField(max_length=255, null=True, blank=True)
|
||||
market_contract = models.CharField(max_length=255, null=True, blank=True)
|
||||
|
||||
|
||||
# class Perms(models.Model):
|
||||
|
|
|
@ -21,5 +21,5 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>\
|
||||
{% endblock %}
|
||||
|
|
|
@ -7,16 +7,16 @@ from django.shortcuts import render
|
|||
from django.views import View
|
||||
from rest_framework.parsers import FormParser, JSONParser
|
||||
from rest_framework.views import APIView
|
||||
|
||||
from core.forms import HookForm
|
||||
from core.models import Callback, Hook
|
||||
|
||||
from core.lib.serde import drakdoo
|
||||
from serde import ValidationError
|
||||
from util import log
|
||||
|
||||
from core.forms import HookForm
|
||||
from core.lib.serde import drakdoo
|
||||
from core.models import Callback, Hook
|
||||
|
||||
log = log.get_logger(__name__)
|
||||
|
||||
|
||||
def get_hooks(user):
|
||||
hooks = Hook.objects.filter(user=user)
|
||||
return hooks
|
||||
|
@ -41,6 +41,20 @@ class HookAPI(APIView):
|
|||
log.error(f"HookAPI POST: {e}")
|
||||
return HttpResponseBadRequest(e)
|
||||
|
||||
data = {
|
||||
"title": hook_resp.title,
|
||||
"message": hook_resp.message,
|
||||
"period": hook_resp.period,
|
||||
"market": hook_resp.market,
|
||||
"timestamp_sent": hook_resp.timestamp.sent,
|
||||
"timestamp_trade": hook_resp.timestamp.trade,
|
||||
"market_exchange": hook_resp.market.exchange,
|
||||
"market_item": hook_resp.market.item,
|
||||
"market_currency": hook_resp.market.currency,
|
||||
"market_contract": hook_resp.market.contract,
|
||||
}
|
||||
log.debug("HookAPI callback: data: %s", data)
|
||||
|
||||
# Try getting the hook
|
||||
try:
|
||||
hook = Hook.objects.get(hook=hook_name)
|
||||
|
@ -48,10 +62,7 @@ class HookAPI(APIView):
|
|||
return HttpResponseBadRequest("Hook does not exist.")
|
||||
|
||||
# Create the callback object
|
||||
callback = Callback.objects.create(
|
||||
hook=hook,
|
||||
data=request.data,
|
||||
)
|
||||
callback = Callback.objects.create(hook=hook, **data)
|
||||
callback.save()
|
||||
# Bump received count
|
||||
hook.received = hook.received + 1
|
||||
|
|
Loading…
Reference in New Issue