Files
test-auth/app/api/models.py

53 lines
1.7 KiB
Python

import uuid
from django.db import models
class AuthAPIKeyPermission(models.Model):
""" Auth API Key permissions """
key = models.CharField("Permission Key", max_length=32)
name = models.CharField("Permission Name", max_length=200)
def __unicode__(self):
return self.name
class Meta:
verbose_name = 'API Key Permission'
verbose_name_plural = 'API Key Permissions'
class AuthAPIKey(models.Model):
""" Auth API Key storage model """
name = models.CharField("Service Name", max_length=200)
url = models.CharField("Service URL", max_length=200, blank=True, help_text="URL that the service is available at.")
active = models.BooleanField(default=True)
key = models.CharField("API Key", max_length=200, blank=True, help_text="API key for the service to use.")
callback = models.CharField("Callback URL", max_length=200, blank=True, help_text="URL for the callback service to connect to.")
permissions = models.ManyToManyField(AuthAPIKeyPermission, related_name='keys', help_text="API calls this API key is allowed to access.")
def save(self, *args, **kwargs):
if not self.key or self.key == '':
self.key = uuid.uuid4()
models.Model.save(self, *args, **kwargs)
def __unicode__(self):
return self.name
class Meta:
verbose_name = 'API Key'
verbose_name_plural = "API Keys"
class AuthAPILog(models.Model):
""" Auth API Access Log """
access_datetime = models.DateTimeField("Date/Time Accessed")
key = models.ForeignKey(AuthAPIKey)
url = models.CharField("Accessed URL", max_length=200)
class Meta:
ordering = ['access_datetime']
verbose_name = 'API Access Log'
verbose_name_plural = "API Access Logs"