function dynamicSort(property, _numeric=true, _locales=undefined) {
let sortOrder = 1;
let options = { numeric: _numeric };
let locales = _locales;
if (property[0] === "-") {
sortOrder = -1;
property = property.substr(1);
}
return function (a, b) {
if (sortOrder == -1) {
return b[property].toString().localeCompare(a[property], locales, options);
} else {
return a[property].toString().localeCompare(b[property], locales, options);
}
}
}
class Landing(BaseModel):
"""
Лендинг привязаный к вебинару
"""
title = models.CharField(verbose_name='Название', blank=True, null=True, max_length=250)
owner = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='Пользователь')
webinar = models.ForeignKey(Webinar, on_delete=models.CASCADE, verbose_name='Вебинар')
landing_HTML = models.TextField(verbose_name='HTML код лендинга', blank=True, null=True)
class Meta:
verbose_name = 'Лендинг'
verbose_name_plural = 'Лендинги'
def __str__(self):
if self.title:
return self.title
return '{} > {}'.format(self.owner, self.webinar)
def get_absolute_url(self):
return reverse('webinar-view', kwargs={'pk': self.id, 'webinar_slug': self.webinar.slug})
def get_edit_premium_link(self):
return reverse('landing:edit-premium', kwargs={'pk': self.id})
def get_count_email(self):
"""
Получает количество email собранных этим лендингом
:return: int
"""
return WebinarUser.objects.filter(landing=self).count()