From: Guillaume Pellerin Date: Wed, 22 Apr 2020 22:25:21 +0000 (+0200) Subject: Merge branch 'dev' into feature/webclass X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=ec7c50587b47231c672ba4812d96fb0cb3d385f6;p=teleforma.git Merge branch 'dev' into feature/webclass --- ec7c50587b47231c672ba4812d96fb0cb3d385f6 diff --cc teleforma/models/core.py index 9dc13ee2,c9d63e2e..3bec3aa1 mode 100644,100755..100755 --- a/teleforma/models/core.py +++ b/teleforma/models/core.py @@@ -328,9 -342,9 +342,9 @@@ class Conference(models.Model) readers = models.ManyToManyField(User, related_name="conference", verbose_name=_('readers'), blank=True, null=True) status = models.IntegerField(_('status'), choices=STATUS_CHOICES, default=2) - streaming = models.BooleanField(_('streaming'), default=True) - web_class_group = models.ForeignKey('WebClassGroup', related_name='conferences', verbose_name=_('web class group'), + class_group = models.ForeignKey('ClassGroup', related_name='conferences', verbose_name=_('class group'), blank=True, null=True, on_delete=models.SET_NULL) - streaming = models.BooleanField(_('streaming')) ++ streaming = models.BooleanField(_('streaming'), default=True) @property def description(self): diff --cc teleforma/models/crfpa.py index 84cde210,a3bbef12..3ed1fecb --- a/teleforma/models/crfpa.py +++ b/teleforma/models/crfpa.py @@@ -111,8 -108,12 +111,12 @@@ class Training(Model) verbose_name=_('magistral'), blank=True, null=True) cost = models.FloatField(_('cost'), blank=True, null=True) + cost_elearning_fascicle = models.FloatField(_('e-learning cost with fascicle'), blank=True, null=True) + cost_elearning_nofascicle = models.FloatField(_('e-learning cost without fascicle'), blank=True, null=True) available = models.BooleanField(_('available')) + platform_only = models.BooleanField(_('e-learning platform only')) + duration = models.IntegerField(u"Durée en heures", default=0) - + def __unicode__(self): if self.name and self.period: return ' - '.join([self.name, self.period.name]) @@@ -179,6 -183,18 +186,18 @@@ class Student(Model) fascicule = models.BooleanField(_('envoi des fascicules'), blank=True, default=False) + payment_type = models.CharField(_('type de paiement'), choices=payment_choices, + max_length=64, blank=True, null=True, + default='online') + payment_schedule = models.CharField(_(u'échéancier de paiement'), + choices=payment_schedule_choices, + max_length=64, blank=True, null=True, + default='split') + comment = models.TextField(_('commentaire'), blank=True, null=True) + + receipt_id = models.IntegerField('numéro de facture', blank=True, null=True, + unique=True) - ++ def __unicode__(self): try: return self.user.last_name + ' ' + self.user.first_name @@@ -206,7 -222,15 +225,15 @@@ @property def total_payments(self): amount = 0 - for payment in self.payments.values('value'): + for payment in self.payments.values('value', 'type', 'online_paid'): + if payment['type'] != 'online' or payment['online_paid']: + amount += payment['value'] + return amount - ++ + @property + def total_payments_all(self): + amount = 0 + for payment in self.payments.values('value', 'type', 'online_paid'): amount += payment['value'] return amount @@@ -271,6 -305,38 +308,38 @@@ class Profile(models.Model) verbose_name = _('profile') + + PAY_STATUS_CHOICES = [ + ('honoraires', 'Honoraires'), + ('salarie', 'Salarié'), + ] + class Corrector(Model): + "A corrector profile, only used for registration for the moment" + + user = models.ForeignKey(User, related_name='corrector', verbose_name=_('user'), unique=True) + period = models.ForeignKey('Period', related_name='corrector', verbose_name=_('period'), + blank=True, null=True, on_delete=models.SET_NULL) + pay_status = models.CharField('Statut', choices=PAY_STATUS_CHOICES, + max_length=64, blank=True, null=True, + default='honoraire') - ++ + date_registered = models.DateTimeField(_('registration date'), auto_now_add=True, null=True, blank=True) - - ++ ++ + def __unicode__(self): + try: + return self.user.last_name + ' ' + self.user.first_name + except: + return '' + - ++ + class Meta(MetaCore): + db_table = app_label + '_' + 'corrector' + verbose_name = _('Correcteur') + verbose_name_plural = _('Correcteurs') + ordering = ['user__last_name', '-date_registered'] + + months_choices = [] for i in range(1,13): months_choices.append((i, datetime.date(2015, i, 1).strftime('%B'))) @@@ -287,6 -354,12 +357,12 @@@ class Payment(models.Model) date_created = models.DateTimeField(_('date created'), auto_now_add=True) date_modified = models.DateTimeField(_('date modified'), auto_now=True) + scheduled = models.DateField(u"date d'échéance", blank=True, null=True) + online_paid = models.BooleanField(u"payé", + help_text=u"paiement en ligne uniquement", + blank=True) + - ++ class Meta(MetaCore): db_table = app_label + '_' + 'payments' verbose_name = _("Payment") diff --cc teleforma/templates/teleforma/inc/conference_list.html index 18d11bad,c750fbc1..d295766c --- a/teleforma/templates/teleforma/inc/conference_list.html +++ b/teleforma/templates/teleforma/inc/conference_list.html @@@ -1,8 -1,8 +1,8 @@@ {% load teleforma_tags %} {% load i18n %} - {% with course.conference.all|from_course_type:type|from_period:period as conferences %} -{% with course.conference.all|from_course_type:type|streaming_only as conferences %} -{% if conferences|from_period:period %} ++{% with course.conference.all|from_course_type:type|from_period:period|streaming_only as conferences %} +{% if conferences %}

{% trans "Live conferences"%}

diff --cc teleforma/views/core.py index 37e9184a,0d661b74..7af64801 --- a/teleforma/views/core.py +++ b/teleforma/views/core.py @@@ -758,24 -760,28 +761,28 @@@ class ConferenceRecordView(FormView) conference.from_json_dict(conf_dict) conference.save() - for stream in conf_dict['streams']: - host = getattr(settings, "TELECASTER_LIVE_STREAMING_SERVER", stream['host']) - port = getattr(settings, "TELECASTER_LIVE_STREAMING_PORT", stream['port']) - server_type = stream['server_type'] - stream_type = stream['stream_type'] - #site = Site.objects.all()[0] - server, c = StreamingServer.objects.get_or_create(host=host, - port=port, - type=server_type) - stream = LiveStream(conference=conference, server=server, - stream_type=stream_type, streaming=True) - stream.save() - - if not conference.class_group: - try: - live_message(conference) - except: - pass + if conference.streaming: + for stream in conf_dict['streams']: + host = getattr(settings, "TELECASTER_LIVE_STREAMING_SERVER", stream['host']) + server_type = stream['server_type'] + stream_type = stream['stream_type'] + if server_type == 'icecast': + port = getattr(settings, "TELECASTER_LIVE_ICECAST_STREAMING_PORT", stream['port']) + elif server_type == 'stream-m': + port = getattr(settings, "TELECASTER_LIVE_STREAM_M_STREAMING_PORT", stream['port']) + #site = Site.objects.all()[0] + server, c = StreamingServer.objects.get_or_create(host=host, + port=port, + type=server_type) + stream = LiveStream(conference=conference, server=server, + stream_type=stream_type, streaming=True) + stream.save() + - if not conference.web_class_group: ++ if not conference.class_group: + try: + live_message(conference) + except: + pass else: raise 'Error : input must be a conference dictionnary'