From: Yoan Le Clanche Date: Mon, 21 Dec 2020 14:40:25 +0000 (+0100) Subject: Merge branch 'prodev' of git.parisson.com:git/teleforma into prodev X-Git-Tag: 2.8.1-pro~180 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=95bb036cc6717f2025e31602fdd5de4a07f2069a;p=teleforma.git Merge branch 'prodev' of git.parisson.com:git/teleforma into prodev --- 95bb036cc6717f2025e31602fdd5de4a07f2069a diff --cc teleforma/models/core.py index 4c6542f3,9428d1e5..a9d4ab63 --- a/teleforma/models/core.py +++ b/teleforma/models/core.py @@@ -530,24 -530,39 +530,58 @@@ class Media(MediaBase) ordering = ['rank'] +class SuggestionsMixin(Model): + suggested_seminars = models.ManyToManyField('Seminar', related_name="%(class)ss_related", + verbose_name=_('suggested seminars'), + blank=True, null=True) + suggested_conferences = models.ManyToManyField('Conference', related_name="%(class)ss_related", + verbose_name=_('suggested conferences'), + blank=True, null=True) - ++ + class Meta(MetaCore): + abstract = True + + @property + def visible_suggested_seminars(self): + return self.suggested_seminars.published() + + def visible_suggested_conferences(self): + return self.suggested_conferences.published().filter(date_begin__gte=datetime.datetime.today()) + ++ + class ProductCodeMixin(Model): + product_code = models.CharField("Code produit", max_length=8, blank=True, null=True) + + class Meta(MetaCore): + abstract = True + + def save(self, **kwargs): + # generate a new code if code does not exists + if not self.product_code: + prefix = "" + klass = None + current = None + if self.__class__.__name__ == 'Seminar': + prefix = "SEMI" + from teleforma.models.pro import Seminar + klass = Seminar + elif self.__class__.__name__ == 'Conference': + prefix = "CONF" + klass = Conference + else: + raise NotImplemented + if klass: + sorted_objs = klass.objects.filter(product_code__isnull=False).order_by('-product_code') + if sorted_objs.count(): + current = sorted_objs[0].product_code + if current: + new_code = int(current[4:]) + 1 + else: + new_code = 1 + new_code = str(new_code) + code = prefix + new_code.zfill(4) + self.product_code = code + super(ProductCodeMixin, self).save(**kwargs) class WebclassMixin(Model): @@@ -697,8 -712,7 +731,8 @@@ # raise ValidationError("Dates are incorrect") - class Conference(Displayable, WebclassMixin, SuggestionsMixin): -class Conference(Displayable, ProductCodeMixin, WebclassMixin): ++class Conference(Displayable, WebclassMixin, ProductCodeMixin, SuggestionsMixin): + sub_title = models.CharField(_('sub title'), max_length=1024, blank=True) public_id = models.CharField(_('public id'), max_length=255, blank=True) department = models.ForeignKey('Department', related_name='conference', verbose_name=_('department'), diff --cc teleforma/models/pro.py index d15c8227,b2ea3025..af5f5844 --- a/teleforma/models/pro.py +++ b/teleforma/models/pro.py @@@ -56,7 -56,7 +56,7 @@@ class SeminarType(models.Model) verbose_name = _('Seminar type') - class Seminar(ClonableMixin, Displayable, SuggestionsMixin): -class Seminar(ClonableMixin, Displayable, ProductCodeMixin): ++class Seminar(ClonableMixin, Displayable, ProductCodeMixin, SuggestionsMixin): # title, description, keywords, dates and status are given by Displayable # status values : 1: draft, 2: published