1. """
    
  2. Models for testing various aspects of the djang.contrib.admindocs app
    
  3. """
    
  4. 
    
  5. from django.db import models
    
  6. from django.utils.functional import cached_property
    
  7. 
    
  8. 
    
  9. class Company(models.Model):
    
  10.     name = models.CharField(max_length=200)
    
  11. 
    
  12. 
    
  13. class Group(models.Model):
    
  14.     name = models.CharField(max_length=200)
    
  15. 
    
  16. 
    
  17. class Family(models.Model):
    
  18.     last_name = models.CharField(max_length=200)
    
  19. 
    
  20. 
    
  21. class Person(models.Model):
    
  22.     """
    
  23.     Stores information about a person, related to :model:`myapp.Company`.
    
  24. 
    
  25.     **Notes**
    
  26. 
    
  27.     Use ``save_changes()`` when saving this object.
    
  28. 
    
  29.     ``company``
    
  30.         Field storing :model:`myapp.Company` where the person works.
    
  31. 
    
  32.     (DESCRIPTION)
    
  33. 
    
  34.     .. raw:: html
    
  35.         :file: admin_docs/evilfile.txt
    
  36. 
    
  37.     .. include:: admin_docs/evilfile.txt
    
  38.     """
    
  39. 
    
  40.     first_name = models.CharField(max_length=200, help_text="The person's first name")
    
  41.     last_name = models.CharField(max_length=200, help_text="The person's last name")
    
  42.     company = models.ForeignKey(Company, models.CASCADE, help_text="place of work")
    
  43.     family = models.ForeignKey(Family, models.SET_NULL, related_name="+", null=True)
    
  44.     groups = models.ManyToManyField(Group, help_text="has membership")
    
  45. 
    
  46.     def _get_full_name(self):
    
  47.         return "%s %s" % (self.first_name, self.last_name)
    
  48. 
    
  49.     def rename_company(self, new_name):
    
  50.         self.company.name = new_name
    
  51.         self.company.save()
    
  52.         return new_name
    
  53. 
    
  54.     def dummy_function(self, baz, rox, *some_args, **some_kwargs):
    
  55.         return some_kwargs
    
  56. 
    
  57.     @property
    
  58.     def a_property(self):
    
  59.         return "a_property"
    
  60. 
    
  61.     @cached_property
    
  62.     def a_cached_property(self):
    
  63.         return "a_cached_property"
    
  64. 
    
  65.     def suffix_company_name(self, suffix="ltd"):
    
  66.         return self.company.name + suffix
    
  67. 
    
  68.     def add_image(self):
    
  69.         pass
    
  70. 
    
  71.     def delete_image(self):
    
  72.         pass
    
  73. 
    
  74.     def save_changes(self):
    
  75.         pass
    
  76. 
    
  77.     def set_status(self):
    
  78.         pass
    
  79. 
    
  80.     def get_full_name(self):
    
  81.         """
    
  82.         Get the full name of the person
    
  83.         """
    
  84.         return self._get_full_name()
    
  85. 
    
  86.     def get_status_count(self):
    
  87.         return 0
    
  88. 
    
  89.     def get_groups_list(self):
    
  90.         return []