# -*- coding: utf-8 -*- import collections from django.db import models from django.db.models import Sum from jsonfield import JSONField class OblOtdelen(models.Model): """Центральное отделение.""" oblast = models.TextField(u'регион', max_length=255, default='') oblast_short = models.TextField(u'регион - коротко', max_length=255, default='') po_regionu = models.TextField(u'по региону', max_length=255, default='') po_regionu_short = models.TextField(u'по региону - коротко', max_length=255, default='') regiona = models.TextField(u'региона', max_length=255, default='') regiona_short = models.TextField(u'региона коротко', max_length=255, default='') regionalnoe = models.TextField(u'региональное', max_length=255, default='') otdely = models.TextField(u'отделы и управления', max_length=255, blank=True, default='') addr = models.TextField(u'адрес', max_length=255, blank=True, default='') tel_hotline = models.TextField(u'телефон горячей линии', max_length=1000, blank=True, default='') priemnaya = models.TextField(u'приемная', max_length=1000, blank=True, default='') fax = models.CharField(u'факс', max_length=255, blank=True, default='') smi = models.TextField(u'работа со СМИ', max_length=1000, blank=True, default='') head = models.TextField(u'руководитель отделения', max_length=1000, blank=True, default='') min_pensia = models.FloatField(u'мин.пенсия', null=True) doplata = models.FloatField(u'соц.доплата', null=True) slug = models.SlugField(unique=True, help_text=u'Уникальная часть названия, используемая в URL.') created_at = models.DateTimeField(u'создан', auto_now_add=True) updated_at = models.DateTimeField(u'изменен', auto_now=True) class Meta: verbose_name = u'центральное отделение' verbose_name_plural = u'центральные отделения' ordering = ['oblast'] permissions = [['can_import_export_oblotdelen', u'Импорт/экспорт']] def __unicode__(self): result = (u'%s' % (self.oblast)).strip() if len(result) > 2: return result return u'нет данных (id=%d)' % self.pk def save(self, *args, **kwargs): super(OblOtdelen, self).save(*args, **kwargs) class NasPunkt(models.Model): """Населённый пункт.""" obl_otdelen = models.ForeignKey(OblOtdelen, verbose_name=u'регион', related_name='naspunkts') name = models.CharField(u'нас. пункт', max_length=255) slug = models.SlugField(unique=False) # short_description = models.CharField(u'подпись к нас. пункту', max_length=255, blank=True, default='') gde = models.CharField(u'где', max_length=255, blank=True, default='') chego = models.CharField(u'чего', max_length=255, blank=True, default='') chemu = models.CharField(u'чему', max_length=255, blank=True, default='') kakoy = models.CharField(u'какой', max_length=255, blank=True, default='') kakoe = models.CharField(u'какое', max_length=255, blank=True, default='') kakie = models.CharField(u'какие', max_length=255, blank=True, default='') people_count = models.PositiveIntegerField(u'пенсионеры', blank=True, default=0) created_at = models.DateTimeField(u'создан', auto_now_add=True) updated_at = models.DateTimeField(u'изменен', auto_now=True) class Meta: verbose_name = u'населенный пункт' verbose_name_plural = u'населенные пункты' ordering = ['obl_otdelen', 'name'] permissions = [['can_import_export_naspunkts', u'Импорт/экспорт']] unique_together = ['obl_otdelen', 'name'] index_together = [['obl_otdelen', 'name']] def __unicode__(self): return (u'%s (%s)' % (self.name, self.obl_otdelen.oblast)).strip() if len(result) > 2: return result return u'нет данных (id=%d)' % self.pk class NasPunktOtdelen(models.Model): """Отделение в нас. пункте.""" obl_otdelen = models.ForeignKey(OblOtdelen, verbose_name=u'центральное отделение', related_name='obl_naspunkt_otdelens') naspunkt = models.ForeignKey(NasPunkt, verbose_name=u'населенный пункт', related_name='naspunkt_otdelens', blank=True, null=True, default=None) obj = models.CharField(u'объект', max_length=255) addr = models.CharField(u'адрес', max_length=255, blank=True, default='') tel_hotline = models.TextField(u'телефон горячей линии', max_length=1000, blank=True, default='') tel_priemn = models.TextField(u'телефон приемной', max_length=1000, blank=True, default='') tel_info = models.TextField(u'другие телефоны', max_length=1000, blank=True, default='') ordering = models.IntegerField(u'сортировка', null=True, blank=True, db_index=True, help_text=u'Изменяет порядок сортировки.') created_at = models.DateTimeField(u'создан', auto_now_add=True) updated_at = models.DateTimeField(u'изменен', auto_now=True) class Meta: verbose_name = u'отделение в нас. пункте' verbose_name_plural = u'отделения в нас. пунктах' ordering = ['obl_otdelen', 'naspunkt', 'ordering', 'obj'] permissions = [['can_import_export_naspunktotdelen', u'Импорт/экспорт']] def __unicode__(self): obj = self.obj.strip() if obj: return obj return u'нет данных (id=%d)' % self.pk class OtdelType(models.Model): """Справочник отделов""" name = models.TextField(u'название отдела') def __unicode__(self): return self.name class Otdel(models.Model): """Отдел в отделении""" nas_punkt_otdelen = models.ForeignKey(NasPunktOtdelen, verbose_name=u'отделение', related_name='otdels') otdel_type = models.ForeignKey(OtdelType, verbose_name=u'тип отдела', related_name='otdels') phones = models.TextField(u'Телефоны') text_block = models.TextField(u'Текст в блок') schedule = JSONField(load_kwargs={'object_pairs_hook': collections.OrderedDict}) def __unicode__(self): return u'{} {}'.format(self.nas_punkt_otdelen.obj, self.otdel_type.name)