Skip to content
Snippets Groups Projects
Commit e9dfa96e authored by Felix Schäfer's avatar Felix Schäfer :construction_worker:
Browse files

Change gravatar URLs to SHA256 hashes #11

parent aedf61b6
Branches
No related tags found
No related merge requests found
import hashlib
from django import forms from django import forms
from django.dispatch import receiver from django.dispatch import receiver
from django.template.loader import get_template from django.template.loader import get_template
from django.urls import resolve, reverse from django.urls import resolve, reverse
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django_gravatar.helpers import get_gravatar_url
from pretix.base.models import Order, OrderPosition, QuestionAnswer from pretix.base.models import Order, OrderPosition, QuestionAnswer
from pretix.base.settings import settings_hierarkey from pretix.base.settings import settings_hierarkey
from pretix.base.signals import event_copy_data from pretix.base.signals import event_copy_data
...@@ -14,6 +14,7 @@ from pretix.presale.signals import ( ...@@ -14,6 +14,7 @@ from pretix.presale.signals import (
process_response, process_response,
question_form_fields, question_form_fields,
) )
from urllib.parse import urlencode
settings_hierarkey.add_default("public_registrations_items", [], list) settings_hierarkey.add_default("public_registrations_items", [], list)
settings_hierarkey.add_default("public_registrations_questions", [], list) settings_hierarkey.add_default("public_registrations_questions", [], list)
...@@ -67,6 +68,12 @@ def add_public_registration_question(sender, position, **kwargs): ...@@ -67,6 +68,12 @@ def add_public_registration_question(sender, position, **kwargs):
@receiver(signal=front_page_bottom, dispatch_uid="public_registrations_table") @receiver(signal=front_page_bottom, dispatch_uid="public_registrations_table")
def add_public_registrations_table(sender, **kwargs): def add_public_registrations_table(sender, **kwargs):
def get_gravatar_url(email, size=40):
email_encoded = email.lower().encode("utf-8")
email_hash = hashlib.sha256(email_encoded).hexdigest()
params = urlencode({"d": "wavatar", "s": str(size), "r": "g"})
return f"https://gravatar.com/avatar/{email_hash}?{params}"
if not sender.settings.get("public_registrations_items") and not ( if not sender.settings.get("public_registrations_items") and not (
sender.settings.get("public_registrations_questions") sender.settings.get("public_registrations_questions")
and sender.settings.get("public_registrations_show_item_name") and sender.settings.get("public_registrations_show_item_name")
...@@ -111,9 +118,7 @@ def add_public_registrations_table(sender, **kwargs): ...@@ -111,9 +118,7 @@ def add_public_registrations_table(sender, **kwargs):
public_answers = {(a.orderposition_id, a.question_id): a for a in answers} public_answers = {(a.orderposition_id, a.question_id): a for a in answers}
public_registrations = [ public_registrations = [
{ {
"gr_url": get_gravatar_url( "gr_url": get_gravatar_url(pop.attendee_email or pop.order.code, size=24),
pop.attendee_email or pop.order.code, size=24, default="wavatar"
),
"fields": ( "fields": (
[pop.item.name] [pop.item.name]
if sender.settings.get("public_registrations_show_item_name") if sender.settings.get("public_registrations_show_item_name")
...@@ -142,7 +147,7 @@ def add_public_registrations_table(sender, **kwargs): ...@@ -142,7 +147,7 @@ def add_public_registrations_table(sender, **kwargs):
@receiver(signal=process_response, dispatch_uid="public_registragions_csp_headers") @receiver(signal=process_response, dispatch_uid="public_registragions_csp_headers")
def add_public_registrations_csp_headers(sender, request=None, response=None, **kwargs): def add_public_registrations_csp_headers(sender, request=None, response=None, **kwargs):
if "event.index" in resolve(request.path_info).url_name: if "event.index" in resolve(request.path_info).url_name:
response["Content-Security-Policy"] = "img-src https://secure.gravatar.com" response["Content-Security-Policy"] = "img-src https://gravatar.com"
return response return response
......
...@@ -47,7 +47,7 @@ setup( ...@@ -47,7 +47,7 @@ setup(
"License :: OSI Approved :: MIT License", "License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3", "Programming Language :: Python :: 3",
], ],
install_requires=["django-gravatar2"], install_requires=[],
packages=find_packages(exclude=["tests", "tests.*"]), packages=find_packages(exclude=["tests", "tests.*"]),
include_package_data=True, include_package_data=True,
cmdclass=cmdclass, cmdclass=cmdclass,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment