Skip to content

Feature Proposal: Management and Versioning Enhancements #490

@fsbraun

Description

@fsbraun

Summary

This proposal suggests several enhancements to improve the maintainability and usability of djangocms-versioning—particularly for managing old or unused versions and improving workflow efficiency on the page tree level.

Proposed Features

1. Management Command to Delete Unpublished / Archived Versions

  • Goal: Provide a management command to automatically remove old versions that are no longer relevant (e.g., unpublished, archived, or expired).

  • Use Case:

    • Reduce database clutter in long-running CMS projects.
    • Automate cleanup tasks in CI/CD or scheduled cron jobs.
  • Example:

    python manage.py delete_old_versions --states unpublished archived --older-than 90

2. Additional State: “Mark for Deletion”

  • Goal: Introduce a new transitional version state for content that is pending deletion but requires review or confirmation before removal.

  • Details:

    • Acts as a soft-delete marker.
    • Useful for workflows where deletion must be approved (e.g., via moderation or audit trail).
  • Suggested Workflow:

    draft → published → unpublished → mark_for_deletion → deleted
    

3. Versioning Commands on Page Tree Level

  • Goal: Enable versioning operations (e.g., publish, unpublish, archive, revert, mark for deletion) to be executed at the page tree level rather than individual pages.

  • Benefits:

    • Bulk operations for hierarchical content structures.
    • Ensures consistency when managing multi-level page hierarchies.

Additional Considerations

  • Permissions integration for bulk operations.
  • Logging and reporting for cleanup and deletion actions.
  • Optional dry-run mode for management commands.

Expected Outcomes

  • Simplified maintenance of large CMS installations.
  • More robust and transparent version lifecycle management.
  • Enhanced usability for content managers and administrators.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions