BE
Size: a a a
BE
A
A
A
BE
A
A
A
A
BE
AF
AF
A
AF
A
DN
DN
# площадки
class IntranetUsersDatatableView(ClientObjectsDatatableView):
model = IntranetUsers
formset = UserForm
viewname_create = 'portal:create_area'
viewname_edit = 'portal:edit_area'
create_object_title = 'Новая площадка'
datatable_options = {
'columns': [
('Тип площадки', 'tip__name'),
('name'),
('address_primary'),
('address'),
(None, 'phone', make_tel_link),
(None, 'polz_id', 'get_user_url'),
(None, 'kontakt', 'get_user_url'),
("Время работы", None, 'get_work_time'),
("Дата и время\n предоставления услуг\n по контракту", None, 'get_contract_time'),
("Номер контракта", 'kontrakt_id__dogovor'),
('prof'),
(None, 'komm', helpers.make_xeditable(extra_attrs=['emptytext'], emptytext='не указан', type='textarea')),
("modal_header", None, 'get_modal_header'),
("edit", None, 'get_edit_url'),
("delete", None, 'get_delete_url')
],
'hidden_columns': ['modal_header', 'edit', 'delete', 'city'],
'unsearchable_columns': ["Время работы", "Дата и время\n предоставления услуг\n по контракту"]
}
field_mapping = {'tip': 0, 'name': 1, 'address_primary': 2, 'address': 3, 'phone': 4, 'polz_id': 5, 'kontakt': 6,
'rabota_from': 7, 'rabota_to': 7, 'days': 8, 'kontrakt_id__dogovor': 9, 'prof': 10, 'komm': 11}
def get_contract_time(self, instance, *args, **kwargs):
try:
kontrakt = IntranetKontrakt.objects.get(pk=instance.kontrakt_id.id)
except IntranetKontrakt.DoesNotExist:
return 'нд'
work_days = ''
days = kontrakt.days.split(';')
for day in days:
if len(day) == 0:
continue
if len(work_days) > 0:
work_days += ', '
if day == '1':
work_days += 'рабочие'
if day == '3':
work_days += 'пн'
if day == '4':
work_days += 'вт'
if day == '5':
work_days += 'ср'
if day == '6':
work_days += 'чт'
if day == '7':
work_days += 'пт'
if kontrakt.usluga_from == instance.usluga_to and kontrakt.usluga_from_min == kontrakt.usluga_to_min:
return 'Круглосуточно'
else:
return work_days + '. ' + str(kontrakt.usluga_from) + '.' + str(kontrakt.usluga_from_min) + \
'-' + str(kontrakt.usluga_to) + '.' + str(kontrakt.usluga_to_min) + " МСК"
def get_work_time(self, instance, *args, **kwargs):
if instance.rabota_from == instance.rabota_to:
return 'Круглосуточно'
else:
return str(instance.rabota_from) + '-' + str(instance.rabota_to) + " МСК"
def get_user_url(self, instance, *args, **kwargs):
if kwargs['field_data'][1] == 'polz_id':
if instance.polz_id is None:
return 'нд'
try:
polzovatel = IntranetPolzovatel.objects.get(pk=instance.polz_id.id)
except IntranetPolzovatel.DoesNotExist:
return 'нд'
else:
if instance.kontakt is None:
return 'нд'
try:
polzovatel = IntranetPolzovatel.objects.get(pk=instance.kontakt.id)
except IntranetPolzovatel.DoesNotExist:
return 'нд'
data = kwargs.get('default_value', instance)
href = reverse_lazy('portal:edit_polzovatel', kwargs={'client_id': instance.kid, 'object_id': polzovatel.id})
if data is not None:
data = '<a href="{href}" class="btn-show-form" data-header="Пользователь">{name}</a>'.format(href=href, name=polzovatel.fio)
return data
DN
def get_date_add(self, instance, *args, **kwargs):
if instance.time_add == 0:
return '-'
try:
return datetime.datetime.fromtimestamp(instance.time_add).strftime('%d.%m.%Y %H:%M:%S')
except:
return '-'
def get_modal_header(self, instance, *args, **kwargs):
return 'Площадка ' + instance.name
def get_edit_url(self, instance, *args, **kwargs):
edit_url = reverse_lazy('portal:edit_area', kwargs={'client_id': instance.kid, 'object_id': instance.id})
return edit_url
def get_delete_url(self, instance, *args, **kwargs):
delete_url = reverse_lazy('portal:delete_area', kwargs={'client_id': instance.kid, 'object_id': instance.id})
return delete_url
def get_context_data(self, **kwargs):
self.add_url = reverse_lazy('portal:create_area', kwargs={'client_id': self.client_id})
context = super(IntranetUsersDatatableView, self).get_context_data(**kwargs)
return context
DN
DN
class IntranetUsers(models.Model):
PROF = (
('Да', 'Да'),
('Нет', 'Нет'),
)
id = models.AutoField(unique=True, primary_key=True)
city = models.CharField(max_length=255, null=True, blank=True, verbose_name='Город')
tip = models.ForeignKey('IntranetTip', on_delete=models.CASCADE, db_column='tip', verbose_name='Тип площадки')
address_primary = models.TextField(blank=True, verbose_name='Адрес')
address = models.TextField(blank=True, verbose_name='Комментарии к адресу')
phone = models.CharField(max_length=255, null=True, blank=True, verbose_name='Телефон')
rabota_from = models.IntegerField(blank=True, verbose_name='Начало рабочего дня')
contact = models.CharField(max_length=255, null=True, blank=True, verbose_name='Пользователь')
rabota_to = models.IntegerField(blank=True, verbose_name='Конец рабочего дня')
usluga_from = models.IntegerField(blank=True, null=True, verbose_name='Начало предоставления услуги')
usluga_to = models.IntegerField(blank=True, null=True, verbose_name='Конец предоставления услуги')
dogovor = models.CharField(max_length=255, blank=True, verbose_name='Номер договора')
start = models.IntegerField(blank=True, null=True, verbose_name='Старт?')
email = models.EmailField(max_length=255, null=True, blank=True, verbose_name='Почта')
email_ot = models.EmailField(max_length=255, null=True, blank=True, verbose_name='Почта для отчетов')
email_buh = models.EmailField(max_length=255, null=True, blank=True, verbose_name='Почта бухгалтерии')
prof = models.CharField(max_length=3, choices=PROF, default='Нет', verbose_name='Проводится профилактика?')
time_add = models.IntegerField(blank=True, null=True, verbose_name='Время добавления')
kid = models.IntegerField()
phone2 = models.CharField(max_length=255, null=True, blank=True, verbose_name='Дополнительный телефон')
phone3 = models.CharField(max_length=255, null=True, blank=True, verbose_name='Дополнительный телефон 2')
contact2 = models.CharField(max_length=255, null=True, blank=True, verbose_name='Дополнительный контакт')
contact3 = models.CharField(max_length=255, null=True, blank=True, verbose_name='Дополнительный контакт 2')
name = models.CharField(max_length=255, blank=True, verbose_name='Дополнительное название')
politika = models.CharField(max_length=20, null=True, blank=True, verbose_name='Политика лицензирования')
kontakt_no = models.IntegerField(blank=True, null=True, verbose_name='Номер контакта?')
komm = models.TextField(blank=True, verbose_name='Комментарий')
kontrakt_id = models.ForeignKey('IntranetKontrakt', on_delete=models.CASCADE, db_column='kontrakt_id', verbose_name='Контракт')
polz_id = models.ForeignKey('IntranetPolzovatel', related_name="contact_user", on_delete=models.CASCADE, db_column='polz_id', verbose_name='Контактный сотрудник', blank=True, null=True)
kontakt = models.ForeignKey('IntranetPolzovatel', related_name="license_user", on_delete=models.CASCADE, db_column='kontakt', verbose_name='Контакт для лицензирования', blank=True, null=True)
class Meta:
managed = True
db_table = 'intranet_users'
def __str__(self):
city = ''
if self.city:
if RepresentsInt(self.city):
tmp = IntranetCity.objects.get(pk=self.city)
if tmp is not None:
city = tmp.name
else:
city = self.city
if self.name != '':
return u'{0}'.format(city + ' - ' + self.tip.name + ' - ' + self.name)
else:
return u'{0}'.format(city + ' - ' + self.tip.name)