2012-09-10 01:34:51 +02:00
|
|
|
# coding: utf-8
|
2013-02-27 00:59:28 +01:00
|
|
|
from __future__ import unicode_literals
|
2011-11-21 20:56:36 +01:00
|
|
|
from django.db import models
|
2012-03-01 23:29:15 +01:00
|
|
|
from django.utils.safestring import mark_safe
|
2015-04-19 14:29:16 +02:00
|
|
|
from django.utils.translation import ugettext, ugettext_lazy
|
2013-03-29 11:44:16 +01:00
|
|
|
import six
|
2011-11-21 20:56:36 +01:00
|
|
|
|
|
|
|
|
|
|
|
class Person(models.Model):
|
|
|
|
first_name = models.CharField(max_length=200)
|
|
|
|
|
2012-02-22 02:02:09 +01:00
|
|
|
last_name = models.CharField(max_length=200, verbose_name='surname')
|
2011-11-21 20:56:36 +01:00
|
|
|
|
|
|
|
occupation = models.ForeignKey(
|
|
|
|
'Occupation', related_name='people',
|
2012-02-22 02:02:09 +01:00
|
|
|
null=True, verbose_name='occupation')
|
2011-11-21 20:56:36 +01:00
|
|
|
|
|
|
|
trans_test = models.CharField(
|
|
|
|
max_length=200, blank=True,
|
2012-02-22 02:02:09 +01:00
|
|
|
verbose_name=ugettext("translation test"))
|
2011-11-21 20:56:36 +01:00
|
|
|
|
|
|
|
trans_test_lazy = models.CharField(
|
|
|
|
max_length=200, blank=True,
|
2012-02-22 02:02:09 +01:00
|
|
|
verbose_name=ugettext_lazy("translation test lazy"))
|
2011-11-21 20:56:36 +01:00
|
|
|
|
2012-03-01 23:29:15 +01:00
|
|
|
safe = models.CharField(
|
|
|
|
max_length=200, blank=True, verbose_name=mark_safe("<b>Safe</b>"))
|
|
|
|
|
2012-09-15 00:53:37 +02:00
|
|
|
class Meta:
|
|
|
|
verbose_name = "person"
|
|
|
|
verbose_name_plural = "people"
|
|
|
|
|
2011-11-21 20:56:36 +01:00
|
|
|
def __unicode__(self):
|
|
|
|
return self.first_name
|
|
|
|
|
2012-03-14 03:07:20 +01:00
|
|
|
@property
|
|
|
|
def name(self):
|
2013-02-27 00:59:28 +01:00
|
|
|
return "%s %s" % (self.first_name, self.last_name)
|
2012-03-14 03:07:20 +01:00
|
|
|
|
2011-11-21 20:56:36 +01:00
|
|
|
|
|
|
|
class Occupation(models.Model):
|
|
|
|
name = models.CharField(max_length=200)
|
|
|
|
region = models.ForeignKey('Region', null=True)
|
|
|
|
|
|
|
|
def __unicode__(self):
|
|
|
|
return self.name
|
|
|
|
|
|
|
|
|
|
|
|
class Region(models.Model):
|
|
|
|
name = models.CharField(max_length=200)
|
2012-09-21 04:54:01 +02:00
|
|
|
mayor = models.OneToOneField(Person, null=True)
|
2011-11-21 20:56:36 +01:00
|
|
|
|
|
|
|
def __unicode__(self):
|
|
|
|
return self.name
|
|
|
|
|
|
|
|
|
2015-04-29 23:11:27 +02:00
|
|
|
class PersonInformation(models.Model):
|
|
|
|
person = models.ForeignKey(
|
|
|
|
Person, related_name='info_list', verbose_name='Information')
|
|
|
|
|
|
|
|
|
2011-11-21 20:56:36 +01:00
|
|
|
# -- haystack -----------------------------------------------------------------
|
|
|
|
|
2013-03-29 11:44:16 +01:00
|
|
|
if not six.PY3: # Haystack isn't compatible with Python 3
|
2013-08-18 05:59:31 +02:00
|
|
|
from haystack import indexes
|
2011-11-21 20:56:36 +01:00
|
|
|
|
2013-08-18 05:59:31 +02:00
|
|
|
class PersonIndex(indexes.SearchIndex, indexes.Indexable):
|
|
|
|
first_name = indexes.CharField(document=True)
|
2011-11-21 20:56:36 +01:00
|
|
|
|
2013-08-18 05:59:31 +02:00
|
|
|
def get_model(self):
|
|
|
|
return Person
|
|
|
|
|
|
|
|
def index_queryset(self, using=None):
|
|
|
|
return self.get_model().objects.all()
|