diff --git a/.github/instructions/jinja.instructions.md b/.github/instructions/jinja.instructions.md new file mode 100644 index 00000000000..f1c229a5d7f --- /dev/null +++ b/.github/instructions/jinja.instructions.md @@ -0,0 +1,16 @@ +--- +applyTo: "app/eventyay/**/jinja-templates/**/*.jinja" +--- + +# Jinja Template Instructions + +## Formatting + +- Prefer single quotes in template markup and expressions. +- Use different quote styles when nesting quotes inside expressions. +- Use 2-space indentation. + +## Template logic + +- Keep templates focused on presentation. Move non-trivial business logic to Python views/forms/helpers. +- Avoid complex conditional chains inside HTML attributes. Compute values before rendering when possible. diff --git a/app/eventyay/base/configurations/default_setting.py b/app/eventyay/base/configurations/default_setting.py index 3c013ad9192..6219c46fb53 100644 --- a/app/eventyay/base/configurations/default_setting.py +++ b/app/eventyay/base/configurations/default_setting.py @@ -15,7 +15,6 @@ from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_noop, pgettext, pgettext_lazy from i18nfield.forms import I18nFormField, I18nTextarea, I18nTextInput -from eventyay.base.forms import I18nAutoExpandingTextarea from i18nfield.strings import LazyI18nString from rest_framework import serializers @@ -27,7 +26,7 @@ from eventyay.base.configurations.lazy_i18n_string_list_base import ( LazyI18nStringList, ) -from eventyay.base.forms import I18nURLFormField +from eventyay.base.forms import I18nAutoExpandingTextarea, I18nURLFormField from eventyay.base.models.tax import TaxRule from eventyay.base.reldate import ( RelativeDateField, @@ -234,7 +233,7 @@ def primary_font_kwargs(): ), }, 'include_wikimedia_username': { - 'default': 'False', + 'default': 'True', 'type': bool, 'form_class': forms.BooleanField, 'serializer_class': serializers.BooleanField, @@ -2790,7 +2789,7 @@ def primary_font_kwargs(): ), 'concatenation': lambda d: ( str(d.get('family_name', '')) - + str((', ' if d.get('family_name') and d.get('given_name') else '')) + + str(', ' if d.get('family_name') and d.get('given_name') else '') + str(d.get('given_name', '')) ), 'sample': { @@ -2893,7 +2892,7 @@ def primary_font_kwargs(): ), 'concatenation': lambda d: ( ' '.join(str(p) for p in (d.get(key, '') for key in ['title', 'given_name', 'family_name']) if p) - + str((', ' if d.get('degree') else '')) + + str(', ' if d.get('degree') else '') + str(d.get('degree', '')) ), 'sample': { diff --git a/app/eventyay/jinja-templates/socialaccount/signup.jinja b/app/eventyay/jinja-templates/socialaccount/signup.jinja new file mode 100644 index 00000000000..a628e62dcd5 --- /dev/null +++ b/app/eventyay/jinja-templates/socialaccount/signup.jinja @@ -0,0 +1,67 @@ +{% extends 'account/base.jinja' %} + +{% block head_title %} + {{ _('Sign Up') }} +{% endblock head_title %} + +{% block content %} +
+

{{ _('Sign Up') }}

+ +

+ {% set provider_name = account.get_provider().name %} + {{ _( + 'You are about to use your {provider_name} account to login to {site_name}. ' + 'As a final step, please complete the following form:' + ).format(provider_name=provider_name, site_name=site.name) }} +

+ + {% if form.non_field_errors() %} +
+ + {% for error in form.non_field_errors() %} +

{{ error }}

+ {% endfor %} +
+ {% endif %} + +
+ + + {% for hidden in form.hidden_fields() %} + {{ hidden }} + {% endfor %} + + {% for field in form.visible_fields() %} +
+ + {{ field }} + {% if field.errors %} +
+ {% for error in field.errors %} + {{ error }} + {% endfor %} +
+ {% endif %} + {% if field.help_text %} +
{{ field.help_text }}
+ {% endif %} +
+ {% endfor %} + + {% if redirect_field %} + {{ redirect_field }} + {% elif redirect_field_name and redirect_field_value %} + + {% endif %} + + +
+
+{% endblock content %} diff --git a/app/eventyay/orga/forms/speaker.py b/app/eventyay/orga/forms/speaker.py index 2d2c5ad46b1..1bbc260a36d 100644 --- a/app/eventyay/orga/forms/speaker.py +++ b/app/eventyay/orga/forms/speaker.py @@ -2,10 +2,9 @@ from django.utils.functional import cached_property from django.utils.translation import gettext_lazy as _ +from eventyay.base.models import SubmissionStates, User from eventyay.common.text.phrases import phrases from eventyay.orga.forms.export import ExportForm -from eventyay.base.models import User -from eventyay.base.models import SubmissionStates class SpeakerExportForm(ExportForm): @@ -54,6 +53,11 @@ def __init__(self, *args, **kwargs): label=_('Picture License'), help_text=_("The license of the speaker's profile picture"), ) + self.fields['wikimedia_username'] = forms.BooleanField( + required=False, + label=_('Wikimedia Username'), + initial=True, + ) @cached_property def questions(self): @@ -74,6 +78,7 @@ def export_field_names(self): 'avatar_license', 'submission_ids', 'submission_titles', + 'wikimedia_username', ] def get_queryset(self): @@ -99,6 +104,9 @@ def _get_submission_ids_value(self, obj): def _get_submission_titles_value(self, obj): return list(obj.submissions.filter(event=self.event).values_list('title', flat=True)) + def _get_wikimedia_username_value(self, obj): + return obj.wikimedia_username + def _prepare_object_data(self, obj): obj._profile = obj.event_profile(self.event) return obj