Skip to content

Commit d23bfeb

Browse files
Chore: Unify and Update Docs (#1148)
* docs fix * Unify documentation structure and setup GitHub Pages deployment - Consolidate documentation from tickets, talk, and video into /doc - Move talk docs from talk/doc to doc/talk - Move video docs from video/docs to doc/video - Configure automated deployment to docs.eventyay.com via GitHub Actions - Update Sphinx configurations with Eventyay branding - Switch to alabaster theme with custom CSS - Add comprehensive README.md with build instructions - Configure CNAME for custom domain - Remove legacy documentation folders * acheive comprehensive documentation * fix deployment and workflows * remove duplication * acheived higher coverage for components fixed typos --------- Co-authored-by: Mario Behling <[email protected]>
1 parent 022023e commit d23bfeb

File tree

282 files changed

+9405
-14483
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

282 files changed

+9405
-14483
lines changed

.github/workflows/deploy-docs.yml

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
name: Deploy Documentation
2+
3+
on:
4+
push:
5+
branches:
6+
- enext
7+
- main
8+
paths:
9+
- 'doc/**'
10+
- '.github/workflows/deploy-docs.yml'
11+
workflow_dispatch:
12+
13+
permissions:
14+
contents: read
15+
pages: write
16+
id-token: write
17+
18+
concurrency:
19+
group: "pages"
20+
cancel-in-progress: false
21+
22+
jobs:
23+
build:
24+
runs-on: ubuntu-latest
25+
steps:
26+
- name: Checkout
27+
uses: actions/checkout@v4
28+
with:
29+
submodules: recursive
30+
31+
- name: Set up Python
32+
uses: actions/setup-python@v5
33+
with:
34+
python-version: '3.11'
35+
36+
- name: Install system dependencies
37+
run: |
38+
sudo apt-get update
39+
sudo apt-get install -y \
40+
enchant-2 \
41+
libffi-dev \
42+
libssl-dev \
43+
libxml2-dev \
44+
libxslt1-dev \
45+
gettext \
46+
libfreetype-dev \
47+
libjpeg-dev \
48+
libpq-dev \
49+
build-essential
50+
51+
- name: Install dependencies
52+
run: |
53+
python -m pip install --upgrade pip
54+
cd doc
55+
# Install all dependencies (Sphinx, Django, and all packages)
56+
bash install-all-deps.sh
57+
58+
- name: Build unified documentation
59+
run: |
60+
cd doc
61+
# Set environment variables (conf.py handles Django setup automatically)
62+
export DJANGO_SETTINGS_MODULE=eventyay.config.settings
63+
export EVENTYAY_CONFIG_FILE=$(pwd)/eventyay-docs.cfg
64+
export DATABASE_URL="sqlite:///:memory:"
65+
export REDIS_URL="redis://localhost:6379/0"
66+
export MPLCONFIGDIR=/tmp/matplotlib
67+
mkdir -p $MPLCONFIGDIR
68+
# Build documentation
69+
make html
70+
71+
- name: Prepare deployment
72+
run: |
73+
mkdir -p _site
74+
# Copy unified documentation (includes all components: tickets, talk, video)
75+
echo "Copying unified documentation..."
76+
cp -r doc/_build/html/* _site/
77+
# Copy CNAME for custom domain (docs.eventyay.com)
78+
cp doc/CNAME _site/
79+
# Create .nojekyll to prevent GitHub Pages from ignoring files starting with _
80+
touch _site/.nojekyll
81+
# List contents for verification
82+
echo "Documentation site structure:"
83+
ls -la _site/
84+
85+
- name: Setup Pages
86+
uses: actions/configure-pages@v4
87+
88+
- name: Upload artifact
89+
uses: actions/upload-pages-artifact@v3
90+
with:
91+
path: '_site'
92+
93+
deploy:
94+
environment:
95+
name: github-pages
96+
url: ${{ steps.deployment.outputs.page_url }}
97+
runs-on: ubuntu-latest
98+
needs: build
99+
steps:
100+
- name: Deploy to GitHub Pages
101+
id: deployment
102+
uses: actions/deploy-pages@v4
103+

.github/workflows/gh-pages-deploy.yml

Lines changed: 0 additions & 42 deletions
This file was deleted.

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ __pycache__/
1919
.mypy_cache/
2020
.ipython/
2121
_static/
22+
# Exception: Track documentation static files
23+
!doc/_static/
24+
!doc/talk/_static/
25+
!doc/video/_static/
2226
.idea
2327
.secret
2428
atlassian-ide-plugin.xml

app/eventyay/base/models/access_code.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ class Meta:
7474
}
7575

7676
class urls(EventUrls):
77+
"""URL patterns for SubmitterAccessCode model views."""
7778
base = edit = '{self.event.cfp.urls.access_codes}{self.code}/'
7879
send = '{base}send'
7980
delete = '{base}delete/'

app/eventyay/base/models/auth.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -738,6 +738,7 @@ def reset_password(self, event, user=None, mail_text=None, orga=False):
738738
reset_password.alters_data = True
739739

740740
class orga_urls(EventUrls):
741+
"""URL patterns for organizer panel views related to this user."""
741742
admin = '/orga/admin/users/{self.code}/'
742743

743744
@transaction.atomic

app/eventyay/base/models/cfp.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,21 @@ def is_field_required(self, field):
6565
return self.fields.get(field, default_fields()[field])['visibility'] == 'required'
6666

6767
for field in default_fields().keys():
68-
setattr(cls, f'request_{field}', property(partial(is_field_requested, field=field)))
69-
setattr(cls, f'require_{field}', property(partial(is_field_required, field=field)))
68+
# Create wrapper functions with clean docstrings to avoid RST formatting issues
69+
def make_request_getter(field_name):
70+
def getter(self):
71+
return is_field_requested(self, field_name)
72+
getter.__doc__ = f"Check if {field_name} field is requested."
73+
return getter
74+
75+
def make_require_getter(field_name):
76+
def getter(self):
77+
return is_field_required(self, field_name)
78+
getter.__doc__ = f"Check if {field_name} field is required."
79+
return getter
80+
81+
setattr(cls, f'request_{field}', property(make_request_getter(field)))
82+
setattr(cls, f'require_{field}', property(make_require_getter(field)))
7083
return cls
7184

7285

@@ -103,6 +116,7 @@ class CfP(PretalxModel):
103116
fields = models.JSONField(default=default_fields)
104117

105118
class urls(EventUrls):
119+
"""URL patterns for public CfP (Call for Proposals) views."""
106120
base = '{self.event.orga_urls.cfp}'
107121
editor = '{base}flow/'
108122
questions = '{base}questions/'

app/eventyay/base/models/event.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,7 @@ class Event(
564564
tickets for.
565565
566566
:param organizer: The organizer this event belongs to
567-
:type organizer: Organizer
567+
:type organizer: eventyay.base.models.organizer.Organizer
568568
:param testmode: This event is in test mode
569569
:type testmode: bool
570570
:param name: This event's full title
@@ -807,6 +807,7 @@ class Event(
807807
)
808808

809809
class urls(EventUrls):
810+
"""URL patterns for public/frontend views of this event."""
810811
base_path = settings.BASE_PATH
811812
base = '{base_path}/{self.slug}/'
812813
login = '{base}login/'
@@ -837,6 +838,7 @@ class urls(EventUrls):
837838
settings_css = '{base}static/event.css'
838839

839840
class orga_urls(EventUrls):
841+
"""URL patterns for organizer/admin panel views of this event."""
840842
base_path = settings.BASE_PATH
841843
base = '{base_path}/orga/event/{self.slug}/'
842844
login = '{base}login/'
@@ -890,6 +892,7 @@ class orga_urls(EventUrls):
890892
new_information = '{base}info/new/'
891893

892894
class api_urls(EventUrls):
895+
"""URL patterns for API endpoints related to this event."""
893896
base_path = settings.TALK_BASE_PATH
894897
base = '{base_path}/api/events/{self.slug}/'
895898
submissions = '{base}submissions/'
@@ -910,6 +913,7 @@ class api_urls(EventUrls):
910913
speaker_information = '{base}speaker-information/'
911914

912915
class tickets_urls(EventUrls):
916+
"""URL patterns for ticket/control panel views of this event."""
913917
_full_base_path = settings.BASE_PATH
914918
base_path = urlparse(_full_base_path).path.rstrip('/')
915919
base = '{base_path}/control/'

app/eventyay/base/models/information.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ def log_parent(self):
5959
return self.event
6060

6161
class orga_urls(EventUrls):
62+
"""URL patterns for organizer panel views of speaker information."""
6263
base = edit = '{self.event.orga_urls.information}{self.pk}/'
6364
delete = '{base}delete/'
6465

app/eventyay/base/models/mail.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ class Meta:
115115
}
116116

117117
class urls(EventUrls):
118+
"""URL patterns for mail template views."""
118119
base = edit = '{self.event.orga_urls.mail_templates}{self.pk}/'
119120
delete = '{base}delete/'
120121

@@ -344,6 +345,7 @@ class Meta:
344345
}
345346

346347
class urls(EventUrls):
348+
"""URL patterns for queued mail views."""
347349
base = edit = '{self.event.orga_urls.mail}{self.pk}/'
348350
delete = '{base}delete'
349351
send = '{base}send'

app/eventyay/base/models/mixins.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,8 @@ class PretalxModel(
211211
metaclass=RulesModelBase,
212212
):
213213
"""
214-
Base model for most pretalx models. Suitable for plugins.
214+
Base model for most Eventyay models. Suitable for plugins.
215+
Provides scoped object management, logging, timestamps, and file cleanup.
215216
"""
216217

217218
objects = ScopedManager(event='event')

0 commit comments

Comments
 (0)