Skip to content

Conversation

@suhailnadaf509
Copy link
Contributor

@suhailnadaf509 suhailnadaf509 commented Oct 12, 2025

Summary

This PR adds the video webapp to the unified eventyay-tickets project and connects it with the common dashboard.

What’s Done

  • Integrated the video webapp into the main project.
  • Updated configurations and routing to support it.
  • Linked the video interface through the common dashboard.

Testing

  • In the webapp directory, run:

npm install
npm run build

  • Start the Django server and access the video webapp from the common dashboard.

Notes

This brings the video webapp into the main system so users can access it directly without separate setup.
Screenshot from 2025-10-13 05-26-15
Screenshot from 2025-10-13 05-26-46
Screenshot from 2025-10-13 05-27-21

Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @suhailnadaf509, your pull request is larger than the review limit of 150000 diff characters

Copy link
Member

@mariobehling mariobehling left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Please resolve conflicts and add details to the PR description.
  2. It is not possible that such a huge PR has only such a limited description.
  • Please add info what this PR encompasses and very importantly what is does not solve.
  • Add screenshots especially about connected areas.

Copy link
Contributor

@Saksham-Sirohi Saksham-Sirohi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@suhailnadaf509 also mention what endpoints etc the webapp is served as so we can speed up testing

Copy link
Member

@mariobehling mariobehling left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧠 General Review

Thanks for working on this major step of integrating the eventyay-video functionality as a component of the unified eventyay core system.
I’ve taken a detailed look at this PR using AI-assisted analysis to identify both technical and structural issues.

⚙️ Please note: You can — and should — use AI tools yourself (for example ChatGPT or GitHub Copilot Chat) to pre-review your PRs and to generate comprehensive PR descriptions.

📄 A proper PR description is missing.
Please add one that includes:

  • Summary (what and why)
  • Scope / Non-scope
  • Development setup (backend via uv, frontend via Vite)
  • Integration details (URLs, auth, WebSocket paths)
  • Screenshots (landing page, room, sidebar, mobile, error view)
  • Test plan
  • Risks and mitigations

🔴 MUST FIX (critical items)

1. Configuration Cleanup (app/eventyay.cfg)

Problems

  • Duplicate and conflicting hostnames
  • Local URL committed (url=http://127.0.0.1:8000)
  • Secret committed ([django] secret=CHANGEME)
  • Redis/Celery DB indices inconsistent with comments
  • base_path=/tickets left unchanged while introducing /video

Fix

DJANGO_SECRET_KEY = os.environ.get("DJANGO_SECRET_KEY", "dev-only-not-for-prod")
VIDEO_HOSTNAME    = os.environ.get("VIDEO_HOSTNAME", "")
TALK_HOSTNAME     = os.environ.get("TALK_HOSTNAME", "")
VIDEO_BASE_PATH   = os.environ.get("VIDEO_BASE_PATH", "/video")
  • Remove hardcoded values and duplicates
  • Add .env.example with DJANGO_SECRET_KEY, VIDEO_HOSTNAME, TALK_HOSTNAME, VIDEO_BASE_PATH, Redis/Celery vars
  • Document environment usage in README

2. Remove Re-added Plugin Folders

Delete eventyay-talk-video/ and eventyay-ticket-video/ — they were already merged via #1029.


3. Multi-domain Module and Migration

eventyay/multidomain/maindomain_urlconf.py and its migration appear.
If multi-domain routing is not yet required, comment out its registration and exclude its migration.
If it is required now, state so in the PR description and ensure a single clean 0001_initial.py.


4. Migrations (Baseline only)

We’re re-initializing the app. Remove old migrations and keep only fresh ones:

rm app/*/migrations/00*.py
uv run python manage.py makemigrations video
uv run python manage.py migrate --plan

5. URL Wiring for the SPA

No explicit route ensures GET /video/ → index.html.
Add or confirm:

from django.views.generic import TemplateView
urlpatterns += [
    path('video/', TemplateView.as_view(template_name='webapp/index.html')),
]

Add a smoke test confirming HTTP 200.


6. Frontend Webapp Placement & Build Contract

  • In vite.config.js, set base: '/video/' (or from env).
  • Output → app/eventyay/webapp/dist.
  • config.js must use env variables, not hard-coded URLs.
  • Add app/eventyay/webapp/README.md with mount path, output, serving (Nginx/Django static), auth (session reuse), and dev proxy steps.

7. Admin and Template Changes

  • Clarify which admin/template edits are intentional.
  • Restore any unintended removals.
  • Verify /admin/ still loads.

8. WebSocket and Live Code

  • Document whether WebSocket or auth logic changed.
  • If unchanged, say “no change.”
  • If changed, list new endpoints and frontend discovery logic.

9. Docker Compose Alignment

  • Align services with VIDEO_BASE_PATH and Redis envs.
  • Add healthcheck: entries.
  • If not ready, remove compose changes and note in PR description.

10. Adopted uv Toolchain (✅ Required)

uv is now mandatory for dependency management.

Add to README.md and PR description:

pip install uv
uv sync --directory app
uv run python manage.py runserver
uv run python manage.py migrate

11. GitHub Actions Workflow (✅ Required)

Add .github/workflows/webapp-backend-ci.yml:

name: Webapp & Backend CI
on:
  pull_request:
    branches: [ enext ]
    paths:
      - "app/eventyay/webapp/**"
      - "app/**.py"
      - "app/**/**.py"
      - "app/pyproject.toml"
      - "app/uv.lock"

jobs:
  python-uv-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.11"
      - name: Install uv
        run: pip install uv
      - name: Sync dependencies
        run: uv sync --directory app
      - name: Django checks
        run: uv run python app/manage.py check

  webapp-build:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: app/eventyay/webapp
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: "20"
          cache: "npm"
          cache-dependency-path: app/eventyay/webapp/package-lock.json
      - name: Install
        run: npm ci
      - name: Build
        run: npm run build

🟨 Should Fix (after main corrections)

Area Issue Fix
Redis/Celery config Inline comments inconsistent Document final DB index allocation (0 = tickets, 1 = talk, 2 = video).
Multi-domain settings Possibly not ready Comment out until production ready; add header explaining intent.
Templates Minor changes Verify no side effects on talk/tickets pages.
Static build path Output directory unclear Ensure output → app/eventyay/webapp/dist and served from /video/.
Docker healthchecks Missing Add healthcheck: entries for each service.
.env and docs Incomplete Add .env.example and expand documentation with scope, setup, integration, screenshots, test plan.

🧪 Minimal Test Plan (before merge)

Backend

  • uv run python manage.py check → OK
  • uv run python manage.py migrate --plan → only clean initial steps
  • GET /video/ → 200 and serves SPA
  • /admin/ → loads without errors
  • ✅ Env variables load correctly

Frontend

  • npm ci && npm run build passes
  • ✅ Built app functions under /video/ (no 404 chunks)
  • ⚙️ Optional: npm run lint and npm run type-check pass

Integration

  • 🔗 If WebSocket used: npm run dev connects to expected endpoint; if unchanged, state so explicitly.

Docker

  • 🐳 docker compose up --build → services healthy
  • 🌐 /video/ reachable on expected port and path

✅ Summary Checklist for Follow-Up

  1. Add proper AI-generated PR description.
  2. Clean and externalize config (app/eventyay.cfg).
  3. Remove re-added plugin folders.
  4. Disable multi-domain module until ready.
  5. Keep only clean baseline migrations.
  6. Add explicit URL route for /video/.
  7. Document webapp build and serving contract.
  8. Clarify admin and template changes.
  9. Clarify WebSocket and auth adjustments.
  10. Align Docker Compose or remove temporarily.
  11. Finalize uv toolchain and document usage.
  12. Add GitHub Actions workflow for backend (uv) and frontend build.
  13. Document Redis/Celery DB allocations.
  14. Ensure static serve and healthchecks consistent.
  15. Add .env.example and expand documentation.
  16. Run and pass the minimal test plan before merge.

Once these are complete, the PR will be in good technical shape for UI/UX review and safe merge into the unified enext system.

Copy link
Member

@mariobehling mariobehling left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Duplication of already-merged modules (Re-add from PR #1029)

I am confused about commit 90cf27c. Am I getting something wrong? This commit re-adds the entire eventyay-talk-video codebase (including workflows, docs, and plugin files) inside this PR.
However, these modules — eventyay-talk-video and eventyay-ticket-video — were already merged into the enext branch in PR #1029.

So this change effectively duplicates the same code and will cause redundant files, duplicate migrations, and potential path conflicts.

Required action

  1. Rebase your branch onto the latest enext (which already includes PR #1029):
  2. Remove all vendored copies of eventyay-talk-video and .github/workflows that were re-added here.
  3. Verify after the rebase that the folder structure matches the unified layout and no nested duplicate directories like eventyay-talk-video/ remain.

@suhailnadaf509
Copy link
Contributor Author

@mariobehling Earlier, both repositories — eventyay-talk-video and eventyay-ticket-video — were mistakenly added as submodules because of a PR conflict.

This commit removes the submodule links and properly adds their actual code so that the files are tracked directly in the repository. It doesn’t duplicate existing work — it just replaces the submodule references with the real codebase.

@suhailnadaf509
Copy link
Contributor Author

@suhailnadaf509 also mention what endpoints etc the webapp is served as so we can speed up testing

The webapp is served at /video/{event_slug}. However, the first access requires an authentication token. To simplify this, please use the common dashboard to open the webapp — either by clicking the “Video” button next to the respective event on /common, or by selecting “Video Configuration” within the event’s dashboard.

@mariobehling
Copy link
Member

@sourcery-ai review this PR again

@sourcery-ai
Copy link
Contributor

sourcery-ai bot commented Oct 13, 2025

Sorry @mariobehling, your pull request is larger than the review limit of 150000 diff characters

@mariobehling mariobehling requested a review from Copilot October 13, 2025 13:35
Copy link
Contributor

Copilot AI left a 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 integrates the video webapp into the unified eventyay-tickets project, connecting it with the common dashboard. The integration includes updating pretix_venueless plugin to work with eventyay base models, adding Django URL patterns for serving the video SPA, and implementing automatic configuration setup for video functionality.

Key changes include:

  • Migration of pretix_venueless plugin from pretix to eventyay base models
  • Implementation of video SPA serving through Django with automatic event configuration
  • Frontend updates to remove @pretalx/schedule dependency and use local components

Reviewed Changes

Copilot reviewed 70 out of 79 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
eventyay-ticket-video/pretix_venueless/views.py Updates imports from pretix to eventyay base models
eventyay-ticket-video/pretix_venueless/apps.py Adds dual compatibility for eventyay plugin system
app/eventyay/webapp/ Frontend refactoring to remove external dependencies and use local components
app/eventyay/multidomain/maindomain_urlconf.py Adds video SPA serving endpoints with automatic event configuration
app/eventyay/eventyay_common/views/event.py Implements automatic video plugin configuration
Files not reviewed (1)
  • app/eventyay/webapp/package-lock.json: Language not supported

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

try: # Eventyay fork environment
from eventyay.base.plugins import PluginConfig as _BasePluginConfig # type: ignore
except Exception: # pragma: no cover - environment mismatch
from eventyay.base.plugins import PluginConfig as _BasePluginConfig # Fallback to eventyay
Copy link

Copilot AI Oct 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fallback import on line 9 is identical to line 7, making it ineffective. The second import should either be different or the fallback logic should be reconsidered.

Suggested change
from eventyay.base.plugins import PluginConfig as _BasePluginConfig # Fallback to eventyay
from pretix.base.plugins import PluginConfig as _BasePluginConfig # Fallback to pretix

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This suggestion would lead to a traceback error as pretix is no longer part of eventyay-tickets

Comment on lines 118 to +132
export function emojifyString(input) {
if (!input) return
return markdownIt.renderInline(input)
// Guard against non-string inputs to avoid markdown-it crashing with state.src.replace
if (input == null) return ''
let text = input
if (typeof text !== 'string') {
// Attempt to pick a meaningful string if a common shape is used
if (typeof input.name === 'string') text = input.name
else if (typeof input.title === 'string') text = input.title
else if (typeof input.text === 'string') text = input.text
else {
// Fallback: do not attempt to render arbitrary objects
return ''
}
}
return markdownIt.renderInline(text)
Copy link

Copilot AI Oct 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The function attempts to handle object inputs by checking common properties, but this creates unclear API expectations. Consider documenting this behavior or restricting input to strings only for better maintainability.

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the suggestion! The fallback was added mainly to prevent markdown-it from crashing when non-string inputs are passed — this was causing the admin section to throw an error and render a blank screen.
In regards to the documentation I've added a comment here

Comment on lines +218 to +227
// Backwards-compat: server emits 'event.updated' with a payload that contains both
// 'world' and 'event' keys. Mirror the 'world.updated' handling here.
'api::event.updated'({state, commit, dispatch}, payload) {
const world = payload.world || payload.event || payload
const rooms = payload.rooms || []
const permissions = payload.permissions
state.world = world
state.permission = permissions
commit('updateRooms', rooms)
},
Copy link

Copilot AI Oct 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The backwards compatibility handlers create code duplication with identical logic. Consider extracting the common logic into a shared function to reduce duplication and maintenance burden.

Copilot uses AI. Check for mistakes.
}
# Always prepend to guarantee execution before any module scripts
import json as _json
content = f"<script>window.venueless={_json.dumps(injected)}</script>" + content
Copy link

Copilot AI Oct 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Injecting JSON directly into script tags without proper escaping could be vulnerable to XSS if the data contains malicious content. Consider using json.dumps(..., ensure_ascii=True) or proper HTML escaping.

Suggested change
content = f"<script>window.venueless={_json.dumps(injected)}</script>" + content
safe_json = _json.dumps(injected, ensure_ascii=True).replace("</script>", "<\\/script>")
content = f"<script>window.venueless={safe_json}</script>" + content

Copilot uses AI. Check for mistakes.
Comment on lines +294 to +297
# In some flows (e.g., anonymous/kiosk or external auth), users can be created
# without an email. Guard against calling lower() on None.
if self.email:
self.email = self.email.lower()
Copy link

Copilot AI Oct 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While the guard prevents the immediate crash, the model field definition should properly handle the None case. Consider adding null=True, blank=True to the email field definition if users without emails are intentionally supported.

Copilot uses AI. Check for mistakes.
using co-pilot suggestion

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file is outdated but was newly added in this PR. It should probably be updated.

Copy link
Member

@mariobehling mariobehling left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please also check the following:

1. Multidomain Code Present

app/eventyay/multidomain/maindomain_urlconf.py is still included.
Currently, there’s no clear indication that multi-domain routing is part of the minimal baseline.

Please:

  • If multi-domain is not yet required, keep the file but comment out or disable any active imports and ensure it’s not listed in INSTALLED_APPS.

  • If it is intended to go live now, clarify this explicitly in the PR description and confirm that:

    • The migration is a single, clean 0001_initial.py.
    • It does not interfere with unified routing or existing URLs.
  • Add a short header comment in the file noting its current status (inactive placeholder vs. active baseline).


2. Make the SPA Route Explicit

In app/eventyay/storage/urls.py, please confirm that a route is defined so that
GET /video/ → serves the SPA entry (index.html), respecting VIDEO_BASE_PATH.

If not yet included, add:

from django.views.generic import TemplateView

urlpatterns += [
    path('video/', TemplateView.as_view(template_name='webapp/index.html')),
]

Also include a smoke test to assert:

response = self.client.get('/video/')
self.assertEqual(response.status_code, 200)

This ensures the frontend loads correctly on refresh and direct navigation.


3. Admin & Templates — Note Intent and Verify Smoke

The PR modifies app/eventyay/base/admin.py and control/templates/pretixcontrol/*.
It looks like a UI cleanup (“fixed admin header rendering”), but the reason and scope should be clear.

Please:

  • Add a short note in the PR description summarizing what was changed and why.
  • Verify locally that /admin/ still loads correctly and that the header and navigation render without regression.
  • If any admin registrations were removed temporarily, mention that explicitly.

4. WebSocket / Live Code — Document Status

The PR still modifies files in app/eventyay/features/live/ (e.g. consumers.py, modules/auth.py).

Please:

  • In the PR description, clearly state whether WebSocket endpoints or auth logic changed.

  • If unchanged, just add a line “WebSocket endpoints and auth logic remain the same as before.”

  • If changed, document:

    • The new WS endpoint paths.
    • How the frontend discovers them (config or env).
    • Any new authentication flow if applicable.

5. CI Workflow Missing

No GitHub Actions workflow was added in this PR.
For a large integration like this, CI coverage is required before merge.

Please add .github/workflows/webapp-backend-ci.yml with:

name: Webapp & Backend CI

on:
  pull_request:
    branches: [ enext ]
    paths:
      - "app/eventyay/webapp/**"
      - "app/**.py"
      - "app/**/**.py"
      - "app/pyproject.toml"
      - "app/uv.lock"

jobs:
  python-uv-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.11"
      - name: Install uv
        run: pip install uv
      - name: Sync deps
        run: uv sync --directory app
      - name: Django check
        run: uv run python app/manage.py check

  webapp-build:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: app/eventyay/webapp
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: "20"
          cache: "npm"
          cache-dependency-path: app/eventyay/webapp/package-lock.json
      - name: Install
        run: npm ci
      - name: Build
        run: npm run build

This ensures that both the backend (uv check) and frontend (Vite build) are validated before merging.

Copy link
Contributor

@Saksham-Sirohi Saksham-Sirohi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the basics of the webapp seem to be working fine but many features still does not work this works as a base pr subsequent pull requests shall fix these issues

@suhailnadaf509
Copy link
Contributor Author

the basics of the webapp seem to be working fine but many features still does not work this works as a base pr subsequent pull requests shall fix these issues

Yes this is a base PR there will soon be subsequent debugging PR's

if _PLUGIN_LOCAL.is_dir():
p = str(_PLUGIN_LOCAL)
if p not in sys.path:
sys.path.insert(0, p)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This sounds dangerous. It points to outside the app folder, and thus will break Docker builds etc.

Is this on purpose?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, the plugins are present outside the app directory

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How would docker deployment then work?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great catch this was pointing outside the app and would break Docker. I’ve moved the ticket-video plugin to app/plugins/eventyay-ticket-video and updated settings.py to load it from there, so the build stays within the image context

@suhailnadaf509
Copy link
Contributor Author

@Sak1012 I’ve addressed the following issues in the webapp:

  • CSP Emoji Image Issue – Added https://twemoji.maxcdn.com to img-src in middleware.py.
  • Media Upload Stuck Issue – Included storage URL patterns in maindomain_urlconf.py to fix endless loading.
  • Question Module WebSocket Error – Updated references after renaming the module from question to roomquestion.
  • Room Creation/Update Crash – Replaced refresh_from_db_if_outdated (not part of the event model) with refresh_from_db.
  • Iframe Embedding Issue – Added 'https:' to the frame-src directive in middleware.py.

],
'connect-src': ['{dynamic}', '{media}', 'https://checkout.stripe.com', 'https:', 'blob:'],
'img-src': ['{static}', '{media}', 'data:', 'https://*.stripe.com'] + img_src,
'img-src': ['{static}', '{media}', 'data:', 'https://*.stripe.com', 'https://twemoji.maxcdn.com'] + img_src,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the update — adding twemoji.maxcdn.com fixes the immediate CSP error, but using an external CDN for emojis isn’t ideal long-term.

Could you please switch to a self-hosted Twemoji or OpenMoji setup instead?
That way we avoid third-party requests, keep the CSP strict (img-src 'self' data:), and stay GDPR-compliant.

You can install and bundle the assets locally with npm install twemoji and serve them from /video/twemoji/ via Vite or Django staticfiles.

@suhailnadaf509
Copy link
Contributor Author

@mariobehling I've now implemented a self-hosted Twemoji setup, all emoji SVGs are served locally from /twemoji/svg/, CSP is fully strict (img-src 'self' data:), and CDN references have been removed. Documentation and assets are included in this PR

@mariobehling mariobehling self-requested a review October 21, 2025 08:59
</p>
{% endif %}
<p>
{% trans "Go to" %}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

don't use decprecated keyword, replace with translate

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

{% trans %} isn't deprecated - both {% trans %} and {% translate %} are valid in Django 5.2. {% translate %} was added as an alias in Django 3.1 for readability, but both work identically. No change needed here.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@suhailnadaf509

For new code, use {% translate %}, don't use old item {% trans %}. It is not correct that {% translate %} is an alias of {% trans %}. When Django introduces new things, it cannot expect users to migrate immediately, so it will keep the old items for a while, for users to migrate the code gradually, then remove it at some release in the future. So, if you see that {% trans %} is still working, it doesn't mean that we should continue to use it. If we continue to use it, we are creating more work to do in the future. It is when Django do the "clean up" step, we will still need to change our code (to replace trans with translate), but because there are too many trans, we need to work harder.

data-toggle="tooltip">Ticket Teams
</a>
<a href='/orga/organizer/{{ organizer.slug }}/teams/'
<a href='/talk/orga/organiser/{{ organizer.slug }}/teams/'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please change 'organiser' to 'organizer', we don't use organiser in talk anymore

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change was also unintentionally reintroduced during the rebase with the enext branch. These modifications are actually reverting the updates that were originally made in PR #882, I’ll remove them from this PR

notification_settings: QuerySet[NotificationSetting]

objects = UserManager().from_queryset(UserQuerySet)()
objects: UserManager = UserManager()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line number 110 in app/eventyay/agenda/views/talk.py uses '.with_profiles' defined in UserQuerySet. Won't your code affect this url: /<event_slug>/talk/

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right, this would cause an issue. I was trying to simplify from UserManager().from_queryset(UserQuerySet)() to UserManager.from_queryset(UserQuerySet)() (removing the unnecessary instance creation), but accidentally removed the .from_queryset() part entirely. Fixed now!

@suhailnadaf509
Copy link
Contributor Author

@Gagan-Ram , the webhook-related files were unintentionally reintroduced during a rebase with the latest enext branch. These files were previously removed in PR #899, but due to the rebase, they were brought back into the diff. I’ll remove them from this PR -- Great catch!

@mariobehling
Copy link
Member

Ok, merging this. Please follow up about open items in separate PRs. Thank you.

@mariobehling mariobehling merged commit 8978f7e into fossasia:enext Oct 22, 2025
1 check passed
@hongquan
Copy link
Member

image

The video doesn't work on my side. It showed a dialog for setting my name and avatar. After that, it goes blank.

@suhailnadaf509
Copy link
Contributor Author

suhailnadaf509 commented Oct 23, 2025

@hongquan If you're using the Docker setup for development, please refer to PR #1090 for the related changes.
If you're running the Django server directly, navigate to the eventyay/webapp directory and execute:
npm install
npm run build

@hongquan
Copy link
Member

@suhailnadaf509 I did run those commands, that's why a popup can appear to ask for my name and avatar. It is just that, after that popup, the page becomes blank.

@hongquan
Copy link
Member

After pressing F5 again and again, I got this error:

image

@hongquan
Copy link
Member

After restarting runserver command, I got another JS error:

image

@hongquan
Copy link
Member

The "page.markdown" error is due to empty room list

https://github.com/fossasia/eventyay-tickets/blob/enext/app/eventyay/webapp/src/views/rooms/RoomHeader.vue#L3

After creating a room, I can see the video, but encounter new error:

image

Note that, the PostgreSQL error at #1038 (comment) is critical. We can not bring the website to public before it is resolved, or the website will be down very soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants