You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
6.6 KiB
136 lines
6.6 KiB
# -*- 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)
|
|
|