~ubuntu-branches/ubuntu/quantal/python-django/quantal-security

« back to all changes in this revision

Viewing changes to tests/modeltests/validation/models.py

  • Committer: Bazaar Package Importer
  • Author(s): Chris Lamb
  • Date: 2010-05-21 07:52:55 UTC
  • mfrom: (1.3.6 upstream)
  • mto: This revision was merged to the branch mainline in revision 28.
  • Revision ID: james.westby@ubuntu.com-20100521075255-ii78v1dyfmyu3uzx
Tags: upstream-1.2
ImportĀ upstreamĀ versionĀ 1.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from datetime import datetime
 
2
from django.core.exceptions import ValidationError
 
3
from django.db import models
 
4
from django.test import TestCase
 
5
 
 
6
 
 
7
def validate_answer_to_universe(value):
 
8
    if value != 42:
 
9
        raise ValidationError('This is not the answer to life, universe and everything!', code='not42')
 
10
 
 
11
class ModelToValidate(models.Model):
 
12
    name = models.CharField(max_length=100)
 
13
    created = models.DateTimeField(default=datetime.now)
 
14
    number = models.IntegerField(db_column='number_val')
 
15
    parent = models.ForeignKey('self', blank=True, null=True, limit_choices_to={'number': 10})
 
16
    email = models.EmailField(blank=True)
 
17
    url = models.URLField(blank=True)
 
18
    f_with_custom_validator = models.IntegerField(blank=True, null=True, validators=[validate_answer_to_universe])
 
19
 
 
20
    def clean(self):
 
21
        super(ModelToValidate, self).clean()
 
22
        if self.number == 11:
 
23
            raise ValidationError('Invalid number supplied!')
 
24
 
 
25
class UniqueFieldsModel(models.Model):
 
26
    unique_charfield = models.CharField(max_length=100, unique=True)
 
27
    unique_integerfield = models.IntegerField(unique=True)
 
28
    non_unique_field = models.IntegerField()
 
29
 
 
30
class CustomPKModel(models.Model):
 
31
    my_pk_field = models.CharField(max_length=100, primary_key=True)
 
32
 
 
33
class UniqueTogetherModel(models.Model):
 
34
    cfield = models.CharField(max_length=100)
 
35
    ifield = models.IntegerField()
 
36
    efield = models.EmailField()
 
37
 
 
38
    class Meta:
 
39
        unique_together = (('ifield', 'cfield',), ['ifield', 'efield'])
 
40
 
 
41
class UniqueForDateModel(models.Model):
 
42
    start_date = models.DateField()
 
43
    end_date = models.DateTimeField()
 
44
    count = models.IntegerField(unique_for_date="start_date", unique_for_year="end_date")
 
45
    order = models.IntegerField(unique_for_month="end_date")
 
46
    name = models.CharField(max_length=100)
 
47
 
 
48
class CustomMessagesModel(models.Model):
 
49
    other  = models.IntegerField(blank=True, null=True)
 
50
    number = models.IntegerField(db_column='number_val',
 
51
        error_messages={'null': 'NULL', 'not42': 'AAARGH', 'not_equal': '%s != me'},
 
52
        validators=[validate_answer_to_universe]
 
53
    )
 
54
 
 
55
class Author(models.Model):
 
56
    name = models.CharField(max_length=100)
 
57
 
 
58
class Article(models.Model):
 
59
    title = models.CharField(max_length=100)
 
60
    author = models.ForeignKey(Author)
 
61
    pub_date = models.DateTimeField(blank=True)
 
62
 
 
63
    def clean(self):
 
64
        if self.pub_date is None:
 
65
            self.pub_date = datetime.now()