"""compute recipient if 'auto' is set"""
recipients = self.cleaned_data['recipients']
return recipients
+
+
+class RetractationForm(ModelForm):
+ class Meta:
+ model = Student
+ fields = ['stop_retractation']
+
\ No newline at end of file
--- /dev/null
+# Generated by Django 3.2.13 on 2024-03-14 17:07
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('teleforma', '0026_period_nb_script_per_session'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='student',
+ name='stop_retractation',
+ field=models.BooleanField(default=False, verbose_name='Abandonne son droit de retractation'),
+ ),
+ ]
unique=True)
payment_generated = models.BooleanField(_('échances générées'), default=False)
+ stop_retractation = models.BooleanField('En accédant à la plateforme et à donc à son contenu, je renonce à mon droit de rétractation.', default=False)
def __str__(self):
try:
}
#content .home-text p {
padding-left: 0.8em;
+}
+
+#retractation-form {
+ padding: 20px;
+}
+#retractation-form p, #retractation-form input {
+ margin-left: 20px;
+}
+#retractation-form p {
+ display: flex;
+ flex-direction: row-reverse;
+ justify-content: start;
+ font-weight: bold;
}
\ No newline at end of file
--- /dev/null
+{% extends "teleforma/courses.html" %}
+{% load i18n %}
+{% load teleforma_tags %}
+
+{% block courses %}
+{% for c in all_courses %}
+ {% with c.course as course %}
+ <li><a href="{% url 'teleforma-desk-period-course' period.id course.id %}">{{ course.title }}</a></li>
+ {% endwith %}
+ {% endfor %}
+{% endblock courses %}
+
+{% block course %}
+
+<form action="" method="POST" id="retractation-form">
+ {% csrf_token %}
+ {{ form.as_p }}
+
+ <input type="submit" value="Valider" />
+</form>
+{% endblock course %}
+
+{% block chat %}
+{% endblock chat %}
CRFPAProfileView, NewsItemCreate, NewsItemDelete,
NewsItemList, NewsItemUpdate, ReceiptPDFView,
ReceiptPDFViewDownload, RegistrationPDFView,
- RegistrationPDFViewDownload, UserAddView,
+ RegistrationPDFViewDownload, RetractationView, UserAddView,
UserCompleteView, UserLoginView, UsersExportView,
UsersView, WriteView, update_training,
UserAddUseYourLawOriginView)
url(r'^desk/periods/(?P<period_id>.*)/courses/(?P<pk>.*)/detail/$',
CourseView.as_view(),
name="teleforma-desk-period-course"),
+ url(r'^desk/periods/(?P<period_id>.*)/courses/(?P<pk>.*)/retractation/$',
+ RetractationView.as_view(),
+ name="teleforma-desk-period-course-retractation"),
# Media
url(r'^desk/periods/(?P<period_id>.*)/medias/transcode/(?P<pk>.*)/detail/$',
@method_decorator(access_required)
def dispatch(self, *args, **kwargs):
+
+ # redirect to a retractation page if the student has paid in the 14 last days
+ print(args)
+ print(kwargs)
+ student = None
+ # import pdb;pdb.set_trace()
+ try:
+ student = self.request.user.student.get()
+ except Student.DoesNotExist:
+ pass
+ if student and student.total_fees and not student.stop_retractation:
+ if student.total_fees:
+ two_week_ago = None
+ two_week_ago = datetime.datetime.now() - datetime.timedelta(days=14)
+ old_payments = student.payments.filter(date_paid__lt=two_week_ago).count()
+ print(old_payments)
+ if old_payments:
+ pass
+ # student.stop_retractation = True
+ # student.save()
+ else:
+ payment_in_retractation_period = student.payments.filter(date_paid__gte=two_week_ago).count()
+ if payment_in_retractation_period:
+ return HttpResponseRedirect(reverse('teleforma-desk-period-course-retractation', kwargs={'period_id': kwargs['period_id'], 'pk': kwargs['pk']}))
+
return super(CourseView, self).dispatch(*args, **kwargs)
@jsonrpc_method('teleforma.get_course_media_urls')
from django.utils.translation import ugettext_lazy as _
from django.views.decorators.csrf import csrf_exempt
from django.views.generic.base import TemplateView, View
-from django.views.generic.edit import CreateView, DeleteView, UpdateView
+from django.views.generic.detail import DetailView
+from django.views.generic.edit import CreateView, DeleteView, UpdateView, FormView
from django.views.generic.list import ListView
from postman.forms import AnonymousWriteForm
from postman.views import WriteView as PostmanWriteView
from django.conf import settings
from ..decorators import access_required
-from ..forms import (CorrectorForm, NewsItemForm, UserForm, WriteForm,
+from ..forms import (CorrectorForm, NewsItemForm, RetractationForm, UserForm, WriteForm,
get_unique_username, UserUseYourLawOriginForm)
from ..models.core import Course, CourseType, Document, NamePaginator, Period
from ..models.crfpa import (IEJ, Discount, NewsItem, Parameters, Payback,
Payment, Profile, Student, Training, months_choices, payment_choices)
-from ..views.core import (PDFTemplateResponseMixin, format_courses,
+from ..views.core import (CourseAccessMixin, PDFTemplateResponseMixin, format_courses,
get_courses, get_periods)
from ..views.profile import ProfileView
form_class = UserUseYourLawOriginForm
-
class UserCompleteView(TemplateView):
template_name = 'registration/registration_complete.html'
return context
+class RetractationView(CourseAccessMixin, DetailView, UpdateView):
+
+ model = Course
+ form_class = RetractationForm
+ template_name = 'teleforma/retractation.html'
+
+ def get_context_data(self, **kwargs):
+ context = super(RetractationView, self).get_context_data(**kwargs)
+ return context
+
+ def get_form_kwargs(self):
+ kwargs = super(RetractationView, self).get_form_kwargs()
+ kwargs['instance'] = self.request.user.student.get()
+ return kwargs
+
+ def post(self, request, *args, **kwargs):
+ return FormView.post(self, request, *args, **kwargs)
+
+ def get_success_url(self):
+ return reverse_lazy('teleforma-desk-period-course', kwargs = {'pk': self.kwargs['pk'], 'period_id': self.kwargs['period_id']})
+
+
+
class RegistrationPDFView(PDFTemplateResponseMixin, TemplateView):
template_name = 'registration/registration_pdf.html'