-
Notifications
You must be signed in to change notification settings - Fork 136
fix (cleanup): simplifies “Create Event” page and remove unstable options #1229
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: enext
Are you sure you want to change the base?
Conversation
Reviewer's GuideRemoves unstable component-selection UI from the “Create Event” page and enhances the Class diagram for updated Event initialization logicclassDiagram
class Event {
+build_initial_data()
cfp
schedules
items
score_categories
}
class CfP {
event
default_type
}
class Schedule {
event
}
class ItemCategory {
event
name
}
class Item {
event
name
default_price
category
}
class ReviewScoreCategory {
event
name
}
class ReviewScore {
category
value
label
}
Event --> CfP
Event --> Schedule
Event --> ItemCategory
ItemCategory --> Item
Event --> ReviewScoreCategory
ReviewScoreCategory --> ReviewScore
File-Level Changes
Assessment against linked issues
Possibly linked issues
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey there - I've reviewed your changes - here's some feedback:
- The create_foundation.html template is cluttered with large commented-out sections; consider removing dead code or wrapping it behind a feature flag for better maintainability.
- In build_initial_data, use get_or_create for ItemCategory and Item instead of always create to make initialization idempotent and avoid IntegrityErrors on reruns.
- Ensure the automatic ticket setup covers any additional Pretix requirements (like quotas or tax rules) so no essential configurations are missing post-creation.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- The create_foundation.html template is cluttered with large commented-out sections; consider removing dead code or wrapping it behind a feature flag for better maintainability.
- In build_initial_data, use get_or_create for ItemCategory and Item instead of always create to make initialization idempotent and avoid IntegrityErrors on reruns.
- Ensure the automatic ticket setup covers any additional Pretix requirements (like quotas or tax rules) so no essential configurations are missing post-creation.
## Individual Comments
### Comment 1
<location> `talk/src/pretalx/event/models/event.py:647-657` </location>
<code_context>
+ # --- New Section: Initialize Tickets system automatically ---
+ from pretix.presale.models import Item, ItemCategory # adjust import if needed
+ if not self.items.exists():
+ category = ItemCategory.objects.create(event=self, name=_("Tickets"))
+ Item.objects.create(
</code_context>
<issue_to_address>
**suggestion (bug_risk):** Check for existing ticket categories/items with more granularity.
Currently, the check does not differentiate between ticket and non-ticket items, which may result in duplicate ticket categories. Please update the logic to specifically check for an existing 'Tickets' category or 'General Admission' item.
```suggestion
# --- New Section: Initialize Tickets system automatically ---
from pretix.presale.models import Item, ItemCategory # adjust import if needed
# Check for existing 'Tickets' category
tickets_category = ItemCategory.objects.filter(event=self, name=_("Tickets")).first()
if not tickets_category:
tickets_category = ItemCategory.objects.create(event=self, name=_("Tickets"))
# Check for existing 'General Admission' item in the 'Tickets' category
general_admission_item = Item.objects.filter(
event=self,
name=_("General Admission"),
category=tickets_category
).first()
if not general_admission_item:
Item.objects.create(
event=self,
name=_("General Admission"),
default_price=0,
category=tickets_category,
)
# ------------------------------------------------------------
```
</issue_to_address>Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
| # --- New Section: Initialize Tickets system automatically --- | ||
| from pretix.presale.models import Item, ItemCategory # adjust import if needed | ||
| if not self.items.exists(): | ||
| category = ItemCategory.objects.create(event=self, name=_("Tickets")) | ||
| Item.objects.create( | ||
| event=self, | ||
| name=_("General Admission"), | ||
| default_price=0, | ||
| category=category, | ||
| ) | ||
| # ------------------------------------------------------------ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
suggestion (bug_risk): Check for existing ticket categories/items with more granularity.
Currently, the check does not differentiate between ticket and non-ticket items, which may result in duplicate ticket categories. Please update the logic to specifically check for an existing 'Tickets' category or 'General Admission' item.
| # --- New Section: Initialize Tickets system automatically --- | |
| from pretix.presale.models import Item, ItemCategory # adjust import if needed | |
| if not self.items.exists(): | |
| category = ItemCategory.objects.create(event=self, name=_("Tickets")) | |
| Item.objects.create( | |
| event=self, | |
| name=_("General Admission"), | |
| default_price=0, | |
| category=category, | |
| ) | |
| # ------------------------------------------------------------ | |
| # --- New Section: Initialize Tickets system automatically --- | |
| from pretix.presale.models import Item, ItemCategory # adjust import if needed | |
| # Check for existing 'Tickets' category | |
| tickets_category = ItemCategory.objects.filter(event=self, name=_("Tickets")).first() | |
| if not tickets_category: | |
| tickets_category = ItemCategory.objects.create(event=self, name=_("Tickets")) | |
| # Check for existing 'General Admission' item in the 'Tickets' category | |
| general_admission_item = Item.objects.filter( | |
| event=self, | |
| name=_("General Admission"), | |
| category=tickets_category | |
| ).first() | |
| if not general_admission_item: | |
| Item.objects.create( | |
| event=self, | |
| name=_("General Admission"), | |
| default_price=0, | |
| category=tickets_category, | |
| ) | |
| # ------------------------------------------------------------ |
|
Please use a descriptive title for the PR. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR simplifies the "Create Event" page by removing unstable component-selection UI elements and ensures automatic initialization of event components (Tickets, Talk, and Video) during event creation.
- Removed "Create this event for" section with Tickets/Talk/Video toggles from the event creation template
- Attempted to add automatic ticket system initialization in the backend
- Commented out "Event series or time slot booking" option to prevent scheduling sync issues
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 5 comments.
| File | Description |
|---|---|
| talk/src/pretalx/event/models/event.py | Added automatic ticket initialization logic and commented out old build_initial_data method; however, contains critical import and model reference errors |
| app/eventyay/eventyay_common/templates/eventyay_common/events/create_foundation.html | Commented out component selection UI and event series option with malformed comment syntax |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| <!-- {# --> | ||
| <div class="big-radio radio"> | ||
| <label> | ||
| <input type="radio" value="on" name="{{ form.has_subevents.html_name }}" {% if form.has_subevents.avalue %}checked{% endif %}> | ||
| <span class="fa fa-calendar"></span> | ||
| <strong>{% trans "Event series or time slot booking" %}</strong> | ||
| <div class="help-block"> | ||
| {% blocktrans trimmed %} | ||
| A series of events that share the same configuration. They can still be different in | ||
| their dates, locations, prices, and capacities. | ||
| {% endblocktrans %} | ||
| </div> | ||
| <div class="help-block"> | ||
| {% blocktrans trimmed %} | ||
| Examples: Multiple presentations of the same show, same concert in multiple locations, | ||
| museums, libraries, or swimming pools, | ||
| events that need to be booked together in one cart. | ||
| {% endblocktrans %} | ||
| </div> | ||
| </label> | ||
| </div> | ||
| {% bootstrap_field form.locales layout="horizontal" %} | ||
| {% endblock %} | ||
| <!-- #} --> |
Copilot
AI
Nov 20, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The HTML comment syntax appears to be malformed. The opening is <!-- {# but the closing is <!-- #} -->, mixing HTML comments with Django template comments. This should either be:
- Pure HTML comments:
<!-- ... --> - Or pure Django template comments:
{# ... #}
The current mixed syntax may cause template parsing issues or unexpected rendering behavior.
| <!-- {# --> | ||
| <div class="big-radio radio"> | ||
| <label> | ||
| <input type="radio" value="on" name="{{ form.has_subevents.html_name }}" {% if form.has_subevents.avalue %}checked{% endif %}> |
Copilot
AI
Nov 20, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's a typo in the template condition: avalue should be value. The correct attribute to check the value of a form field is value, not avalue.
| <input type="radio" value="on" name="{{ form.has_subevents.html_name }}" {% if form.has_subevents.avalue %}checked{% endif %}> | |
| <input type="radio" value="on" name="{{ form.has_subevents.html_name }}" {% if form.has_subevents.value %}checked{% endif %}> |
| # name=str(_("Score")), | ||
| # ) | ||
| # ReviewScore.objects.create( | ||
| # category=category, | ||
| # value=0, | ||
| # label=str(_("No")), | ||
| # ) | ||
| # ReviewScore.objects.create( | ||
| # category=category, | ||
| # value=1, | ||
| # label=str(_("Maybe")), | ||
| # ) | ||
| # ReviewScore.objects.create( | ||
| # category=category, | ||
| # value=2, | ||
| # label=str(_("Yes")), | ||
| # ) | ||
| # self.save() | ||
|
|
||
| # build_initial_data.alters_data = True |
Copilot
AI
Nov 20, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nitpick] Large block of commented-out code (66 lines) should be removed rather than left in the codebase. Since this is intentionally being removed as per the PR description ("Remove unstable component selection"), the commented code should be deleted entirely. If the code needs to be preserved for future reference, it can be retrieved from version control history.
Keeping large blocks of commented code reduces code readability and maintainability.
| # name=str(_("Score")), | |
| # ) | |
| # ReviewScore.objects.create( | |
| # category=category, | |
| # value=0, | |
| # label=str(_("No")), | |
| # ) | |
| # ReviewScore.objects.create( | |
| # category=category, | |
| # value=1, | |
| # label=str(_("Maybe")), | |
| # ) | |
| # ReviewScore.objects.create( | |
| # category=category, | |
| # value=2, | |
| # label=str(_("Yes")), | |
| # ) | |
| # self.save() | |
| # build_initial_data.alters_data = True |
| from pretix.presale.models import Item, ItemCategory # adjust import if needed | ||
| if not self.items.exists(): | ||
| category = ItemCategory.objects.create(event=self, name=_("Tickets")) | ||
| Item.objects.create( | ||
| event=self, | ||
| name=_("General Admission"), | ||
| default_price=0, | ||
| category=category, | ||
| ) |
Copilot
AI
Nov 20, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The import statement from pretix.presale.models import Item, ItemCategory appears to be incorrect for this codebase. The pretalx Event model (in talk/src/pretalx/event/models/event.py) does not have an items field or relationship, and the pretix.presale module is part of a different application (eventyay/pretix, not pretalx/talk).
This code will likely fail at runtime when self.items.exists() is called, as the Event model doesn't have this attribute. Consider using the correct models and relationships from the pretalx/eventyay architecture, or remove this section if ticket initialization should be handled elsewhere.
| from pretix.presale.models import Item, ItemCategory # adjust import if needed | |
| if not self.items.exists(): | |
| category = ItemCategory.objects.create(event=self, name=_("Tickets")) | |
| Item.objects.create( | |
| event=self, | |
| name=_("General Admission"), | |
| default_price=0, | |
| category=category, | |
| ) |
Remove unstable component selection and ensure initial event data setup (closes #1154)
Summary
This PR removes the unstable component selection UI (Tickets, Talk, Video) from the “Create Event” page and ensures all three components are initialized automatically when a new event is created.
Changes
eventyay/eventyay_common/templates/eventyay_common/events/create_foundation.htmltalk/src/pretalx/event/models/event.py) builds all default components on event creation.Expected Behavior
Screenshots
Before:

After:


TODO (Future)
(closes #1154)
Summary by Sourcery
Remove the component-selection toggles from the event creation template and ensure all event components (Tickets, Talk, Video) are initialized by default during event setup.
Bug Fixes:
Enhancements: