Source code for replay.models
"""Django Replay Models
* Remember to use dumpdata and loaddata!
* Do not make actions into templates/generics without great care! Some data
like files may be deleted because they are stored outside the database.
"""
from django.db import models
HTTP_METHODS = (
('GET', 'GET'),
('POST', 'POST'),
)
[docs]class Scenario(models.Model):
name = models.TextField(unique=True)
priority = models.FloatField(
default=1.0,
help_text='Scenarios are run in ascending priority.',
)
def __str__(self):
return self.name
[docs]class Action(models.Model):
scenario = models.ForeignKey(Scenario, null=True, blank=True, default=None, on_delete=models.CASCADE)
order = models.FloatField(
default=1.0,
help_text='Actions are run in ascending order.',
)
name = models.TextField(blank=True, default='')
method = models.CharField(max_length=8, choices=HTTP_METHODS)
path = models.TextField()
data = models.TextField(
help_text='HTTP parameters in JSON format. Supports string templating.'
' Example: $name or $(name).',
)
files = models.TextField(
help_text='Uploaded files in JSON format. Key and value pairs'
' correspond to filename and file-path pairs. Supports string'
' templating. Example: $name and $(name).',
)
status_code = models.CharField(max_length=3)
content = models.TextField(blank=True)
def __str__(self):
fields = (self.id, self.method, self.path)
value = self.name or '<Action: %s %s %s>' % fields
return value[:68]
[docs]class Validator(models.Model):
action = models.ForeignKey(Action, related_name='validators', on_delete=models.CASCADE)
order = models.FloatField(
default=1.0,
help_text='Validators are run in ascending order.',
)
pattern = models.TextField(
help_text='Matched against HTTP response. Supports regular'
' expressions. Symbolic group names are stored and may be'
' used for string templating. Example: (?P<name>pattern)',
)
def __str__(self):
return self.pattern[:68]