gama_api/core/models.py

52 lines
1.7 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib.auth.models import User
from django.db import models
from django.contrib.postgres.fields import JSONField
from django.utils.encoding import python_2_unicode_compatible
@python_2_unicode_compatible
class api_owners(models.Model):
# Users who are allowed to have an API app
user = models.OneToOneField(User, unique=True, blank=False)
date_added = models.DateField(blank=False)
date_deactivated = models.DateField()
active = models.BooleanField(blank=False)
def __str__(self):
return '%s (%s)' % (self.user.username, self.user.id)
@python_2_unicode_compatible
class api_apps(models.Model):
# An Application registered with our API
owner = models.ForeignKey('api_owners', blank=False)
apikey = models.CharField(max_length=256, unique=True, blank=False)
name = models.CharField(max_length=512, unique=True, blank=False)
description = models.CharField(max_length=2048)
website = models.URLField(max_length=3000)
callback_uri = models.URLField(max_length=3000)
settings = JSONField()
def __str__(self):
return '%s (%s) - %s' % (self.name, self.owner.name, self.apikey)
@python_2_unicode_compatible
class api_heartbeat(models.Model):
# If callback_uri is configured and heartbeat is enabled in settings,
# this can be used to 'ping' the application, as well as communicate
# changes right away (bypass sync operation and change setting directly, etc)
api = models.ForeignKey('api_apps', blank=False)
enabled = models.BooleanField(blank=False)
time_sent = models.DateTimeField(blank=False)
time_rcvd = models.DateTimeField(blank=False)
latency = models.FloatField(blank=False)
data = JSONField()
def __str__(self):
return '%s (%s ms)' % (self.api.name, self.latency)