PageRenderTime 29ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/tests/modeltests/validation/models.py

https://code.google.com/p/mango-py/
Python | 81 lines | 65 code | 16 blank | 0 comment | 3 complexity | e10b3fd71c8ba11cefd0791fb0987673 MD5 | raw file
Possible License(s): BSD-3-Clause
  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. def validate_answer_to_universe(value):
  6. if value != 42:
  7. raise ValidationError('This is not the answer to life, universe and everything!', code='not42')
  8. class ModelToValidate(models.Model):
  9. name = models.CharField(max_length=100)
  10. created = models.DateTimeField(default=datetime.now)
  11. number = models.IntegerField(db_column='number_val')
  12. parent = models.ForeignKey('self', blank=True, null=True, limit_choices_to={'number': 10})
  13. email = models.EmailField(blank=True)
  14. url = models.URLField(blank=True)
  15. url_verify = models.URLField(blank=True, verify_exists=True)
  16. f_with_custom_validator = models.IntegerField(blank=True, null=True, validators=[validate_answer_to_universe])
  17. def clean(self):
  18. super(ModelToValidate, self).clean()
  19. if self.number == 11:
  20. raise ValidationError('Invalid number supplied!')
  21. class UniqueFieldsModel(models.Model):
  22. unique_charfield = models.CharField(max_length=100, unique=True)
  23. unique_integerfield = models.IntegerField(unique=True)
  24. non_unique_field = models.IntegerField()
  25. class CustomPKModel(models.Model):
  26. my_pk_field = models.CharField(max_length=100, primary_key=True)
  27. class UniqueTogetherModel(models.Model):
  28. cfield = models.CharField(max_length=100)
  29. ifield = models.IntegerField()
  30. efield = models.EmailField()
  31. class Meta:
  32. unique_together = (('ifield', 'cfield',), ['ifield', 'efield'])
  33. class UniqueForDateModel(models.Model):
  34. start_date = models.DateField()
  35. end_date = models.DateTimeField()
  36. count = models.IntegerField(unique_for_date="start_date", unique_for_year="end_date")
  37. order = models.IntegerField(unique_for_month="end_date")
  38. name = models.CharField(max_length=100)
  39. class CustomMessagesModel(models.Model):
  40. other = models.IntegerField(blank=True, null=True)
  41. number = models.IntegerField(db_column='number_val',
  42. error_messages={'null': 'NULL', 'not42': 'AAARGH', 'not_equal': '%s != me'},
  43. validators=[validate_answer_to_universe]
  44. )
  45. class Author(models.Model):
  46. name = models.CharField(max_length=100)
  47. class Article(models.Model):
  48. title = models.CharField(max_length=100)
  49. author = models.ForeignKey(Author)
  50. pub_date = models.DateTimeField(blank=True)
  51. def clean(self):
  52. if self.pub_date is None:
  53. self.pub_date = datetime.now()
  54. class Post(models.Model):
  55. title = models.CharField(max_length=50, unique_for_date='posted', blank=True)
  56. slug = models.CharField(max_length=50, unique_for_year='posted', blank=True)
  57. subtitle = models.CharField(max_length=50, unique_for_month='posted', blank=True)
  58. posted = models.DateField()
  59. def __unicode__(self):
  60. return self.name
  61. class FlexibleDatePost(models.Model):
  62. title = models.CharField(max_length=50, unique_for_date='posted', blank=True)
  63. slug = models.CharField(max_length=50, unique_for_year='posted', blank=True)
  64. subtitle = models.CharField(max_length=50, unique_for_month='posted', blank=True)
  65. posted = models.DateField(blank=True, null=True)