Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • kif/pretix-public-registrations
1 result
Show changes
Commits on Source (2)
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")
...@@ -125,9 +130,11 @@ def add_public_registrations_table(sender, **kwargs): ...@@ -125,9 +130,11 @@ def add_public_registrations_table(sender, **kwargs):
else [] else []
) )
+ [ + [
public_answers[(pop.pk, pq.pk)].answer (
if public_answers.get((pop.pk, pq.pk)) public_answers[(pop.pk, pq.pk)].answer
else "" if public_answers.get((pop.pk, pq.pk))
else ""
)
for pq in public_questions for pq in public_questions
], ],
} }
...@@ -142,7 +149,7 @@ def add_public_registrations_table(sender, **kwargs): ...@@ -142,7 +149,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,
......