Skip to content

Make Studio → Courses the canonical course-operations surface #115

Description

@alexeygrigorev

Parent: #59

This is the naming and route-integration slice of the broader course-management parity epic.

Scope

Make the copied course-operations interface a section of the unified custom Studio, named Courses. Django /admin remains a separate framework administration surface. Preserve the copied course logic while changing the product navigation, canonical routes, route names, page titles, and links.

Canonical human surface: /studio/courses and its child routes.
Legacy /cadmin paths are staff-only compatibility redirects to the exact canonical destination while downstream references migrate.

Acceptance criteria

  • Authorized users reach course operations through Studio → Courses; there is no separate Course admin navigation item.
  • Every copied course-operation GET and POST route has one canonical /studio/courses destination and logical studio_courses route name.
  • Legacy /cadmin paths do not render a second product surface: authorized requests redirect directly to the matching canonical destination, preserve query strings and method/body semantics where required, and never form chains.
  • Anonymous and unauthorized requests cannot use compatibility redirects to discover or invoke staff operations.
  • User-facing titles, headings, buttons, links, login/account pages, and messages use DataTalks.Club, Studio, Courses, or course operations; they do not expose cadmin, Course admin, or Course Management as the product name.
  • Copied business logic is reused, not reimplemented; a temporary internal Python package name is allowed only as an explicitly documented compatibility seam owned by parent Move all course operations into Studio and the admin API #59.
  • Django /admin remains reachable only under its own existing authorization and is not labeled Studio.
  • Focused route, authorization, redirect, mutation, navigation, readable-template, and desktop/mobile Playwright tests pass.

Non-goals

This slice does not claim the full Studio/admin-API capability parity, shared-service extraction, or cadmin package retirement required by #59.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P0Must-have or release-blockingadminArea: adminauthArea: authcoursesArea: coursesenhancementNew feature or requestfrontendArea: frontendtestingArea: testing

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions