-
+
- FAQ
- {% trans 'Contact' %} {% if terms_required %}
- {% trans 'Terms of Use' %} {% endif %} +
diff --git a/accounts/forms.py b/accounts/forms.py index a338adfee..b369d0efe 100644 --- a/accounts/forms.py +++ b/accounts/forms.py @@ -5,6 +5,7 @@ from django.conf import settings from timtec.settings import ACCOUNT_REQUIRED_FIELDS as fields from accounts.models import UserSocialAccount +from hcaptcha2.fields import hCaptchaField User = get_user_model() @@ -77,6 +78,7 @@ class SignupForm(AcceptTermsForm): city = forms.CharField(max_length=50, label=_('City'), widget=forms.Select, required=False) how_you_know = forms.CharField(max_length=50, label=_('How do you know the platform?'), required=False) how_you_know_complement = forms.CharField(max_length=50, label=_('Complement for "How do you know the platform?"'), required=False) + hcaptcha = hCaptchaField() def __init__(self, *args, **kwargs): super(SignupForm, self).__init__(*args, **kwargs) diff --git a/core/forms.py b/core/forms.py index baae0a953..5dff3c659 100644 --- a/core/forms.py +++ b/core/forms.py @@ -5,6 +5,8 @@ from django.contrib.auth import get_user_model from django.conf import settings +from hcaptcha2.fields import hCaptchaField + from .models import Class import logging @@ -17,6 +19,7 @@ class ContactForm(forms.Form): name = forms.CharField(label=_('Name'), max_length=128) email = forms.EmailField(label=_('Email')) message = forms.CharField(label=_('Message'), max_length=255) + hcaptcha = hCaptchaField() def send_email(self): subject = self.cleaned_data.get('subject') diff --git a/core/views.py b/core/views.py index 4d4fc8cc8..85d1dc014 100644 --- a/core/views.py +++ b/core/views.py @@ -23,6 +23,9 @@ from rest_framework.permissions import IsAuthenticatedOrReadOnly from braces.views import LoginRequiredMixin from notes.models import Note +from django.http import HttpResponse +import pychrome +import base64 from .serializers import (CourseSerializer, CourseProfessorSerializer, CourseThumbSerializer, LessonSerializer, @@ -43,7 +46,7 @@ from .forms import (ContactForm, RemoveStudentForm) -from .permissions import IsProfessorCoordinatorOrAdminPermissionOrReadOnly, IsAdminOrReadOnly, MessageAnswerPermission +from .permissions import IsProfessorCoordinatorOrAdminPermissionOrReadOnly, IsAdminOrReadOnly, MessageAnswerPermission, IsAdmin class HomeView(ListView): @@ -412,17 +415,34 @@ def render_to_response(self, context, **response_kwargs): width, height = CERTIFICATE_SIZE url = self.request.build_absolute_uri().split('download')[0] + 'print/' + png_path = os.path.join(MEDIA_ROOT, certificate.link_hash + '.png') pdf_filename = certificate.link_hash + today + '.pdf' pdf_path = os.path.join(MEDIA_ROOT, pdf_filename) - - driver = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH) - driver.set_window_size(width, height) - driver.get(url) - driver.save_screenshot(filename=png_path) - - driver.service.process.send_signal(SIGTERM) - driver.quit() + + # FIXME: remover esse hardcode do localhost e porta daqui + browser = pychrome.Browser(url="http://127.0.0.1:9222") + tab = browser.new_tab() + + def request_will_be_sent(**kwargs): + print("loading: %s" % kwargs.get('request').get('url')) + + tab.Network.requestWillBeSent = request_will_be_sent + + tab.start() + tab.Network.enable() + tab.Page.navigate(url=url, _timeout=5) + tab.wait(2) + + + try: + data = tab.Page.captureScreenshot() + with open(png_path, 'wb') as fd: + fd.write(base64.b64decode(data['data'])) + finally: + tab.stop() + browser.close_tab(tab) + Image.open(png_path).convert("RGB").save(pdf_path, format='PDF', quality=100, dpi=(300, 300)) response = HttpResponse(content_type='application/pdf') @@ -639,7 +659,8 @@ def list(self, request, *args, **kwargs): serializer = self.get_serializer(queryset, many=True) return Response(serializer.data) - + + permission_classes = (IsAdmin,) def post(self, request, **kwargs): course = self.get_object() serializer = CourseSerializer(course, request.data) diff --git a/themes/default/static/less/default/pages/courses.less b/themes/default/static/less/default/pages/courses.less index 32007a6ce..9363a71c3 100644 --- a/themes/default/static/less/default/pages/courses.less +++ b/themes/default/static/less/default/pages/courses.less @@ -20,7 +20,7 @@ color: #000; } .info{ - height: 85px; + height: 40px; padding: 0.5em; h3{ color: #555; diff --git a/themes/default/templates/_contact_form.html b/themes/default/templates/_contact_form.html index d97d023a3..38969478f 100644 --- a/themes/default/templates/_contact_form.html +++ b/themes/default/templates/_contact_form.html @@ -41,3 +41,12 @@ + +{{ contact_form.hcaptcha }} + + + +{% for message in form.captcha.errors %} +