- Add rules_engine.py with quantitative rules for all 8 workout types - Add quality gate retry loop in generate_single_workout() - Expand calibrate_structure_rules to all 120 combinations (8 types × 5 goals × 3 sections) - Wire WeeklySplitPattern DB records into _pick_weekly_split() - Enforce movement patterns from WorkoutStructureRule in exercise selection - Add straight-set strength support (single main lift, 4-6 rounds) - Add modality consistency check for duration-dominant workout types - Add InjuryStep component to onboarding and preferences - Add sibling exercise exclusion in regenerate and preview_day endpoints - Display generator warnings on dashboard - Expand fix_rep_durations, fix_exercise_flags, fix_movement_pattern_typo - Add audit_exercise_data and check_rules_drift management commands - Add Next.js frontend with dashboard, onboarding, preferences, history pages - Add generator app with ML-powered workout generation pipeline - 96 new tests across 7 test modules Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
from django.contrib import admin
|
|
from django.urls import path, include
|
|
from django.conf import settings
|
|
from django.conf.urls.static import static
|
|
from django.views.generic.base import TemplateView
|
|
from django.shortcuts import HttpResponse
|
|
|
|
def ipa_plist(request):
|
|
f = open('static/ipa/manifest.plist', 'r')
|
|
file_content = f.read()
|
|
f.close()
|
|
return HttpResponse(file_content, content_type="application/x-plist")
|
|
|
|
|
|
urlpatterns = [
|
|
path('admin/', admin.site.urls),
|
|
|
|
path('workout/', include('workout.urls')),
|
|
path('exercise/', include('exercise.urls')),
|
|
path('muscle/', include('muscle.urls')),
|
|
path('equipment/', include('equipment.urls')),
|
|
path('registered_user/', include('registered_user.urls')),
|
|
path('.well-known/apple-app-site-association', TemplateView.as_view(template_name='frontend/apple-app-site-association', content_type='application/json',)),
|
|
path('scripts/', include('scripts.urls')),
|
|
path('videos/', include('video.urls')),
|
|
path('generator/', include('generator.urls')),
|
|
|
|
path('app/', TemplateView.as_view(template_name='frontend/download.html')),
|
|
path('ipa_plist/', ipa_plist),
|
|
] + static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
|
|
|
|
if settings.DEBUG:
|
|
import debug_toolbar
|
|
|
|
urlpatterns += [
|
|
path('__debug__/', include(debug_toolbar.urls)),
|
|
]
|
|
|
|
# if settings.DEBUG:
|
|
# urlpatterns.append(url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT})) |