2012-01-25 28 views
5

Chúng tôi đang làm việc trên trang web django mà chúng tôi muốn cung cấp cho người dùng quyền kiểm soát nội dung, nhưng chúng tôi muốn người dùng quản trị viên kiểm duyệt nội dung và hàng đợi nội dung được chấp nhận trong trường hợp một số siêu người dùng muốn rollback dữ liệu đến một phiên bản cụ thể trong quá khứ.Có thể django-kiểm duyệt và django-reversion làm việc cùng nhau cho một content_type?

Tôi không thể tìm thấy ứng dụng django để tạo cả hai thứ. Tôi đã đọc về django-kiểm duyệt và django-reversion, và tôi đã tự hỏi nếu có một cách để làm cho họ làm việc cùng nhau.

Tôi thấy rằng đây là câu hỏi thường xuyên, nhưng không ai trả lời đúng. Câu trả lời điển hình là sử dụng một hoặc một, nhưng không ai có một giải pháp cho vấn đề.

Tôi đọc rằng vấn đề chính là trong trường hợp có kiểm duyệt và phiên bản cho một nội dung, nó có thể (chắc chắn) tạo ra một cây phiên bản. Sau đó, tôi nghĩ rằng tôi chỉ muốn các phiên bản được chấp nhận được lưu trữ, sau đó các phiên bản trước đây sẽ tạo ra một lịch sử dòng ngược thời gian, tức là nếu tôi hoàn nguyên một cái gì đó và chấp nhận một điều mới, thì tôi nghĩ ok để xóa chi nhánh bị từ chối từ thời điểm tôi hoàn nguyên khi tôi chấp nhận (sau đó lưu trữ) phiên bản mới, dẫn đến chi nhánh mới.

Điều đó có thể thực hiện được với cả django-moderation và django-reversion không?

Thông tin về các ứng dụng:

[1] https://github.com/etianen/django-reversion/wiki

[2] https://github.com/dominno/django-moderation

Trả lời

5

'Có'.

Vì vậy, tôi đã có cùng một vấn đề này, nhưng tôi cũng đã có vấn đề mà django kiểm duyệt có vẻ nhiều hơn một chút không rõ ràng.

Tôi chia nhỏ kiểm duyệt django ở số https://github.com/CBWhiz/django-moderation và thực hiện một loạt thay đổi để thực sự làm cho nó hoạt động trong Django 1.4. Tôi khá chắc chắn tôi đã phá vỡ một chút khả năng tương thích ngược, vì vậy tôi không chắc chắn nếu chi nhánh của tôi sẽ được tái hợp nhất.

Đối với django-reversion, nó hoạt động tốt với nhau cho nhu cầu của tôi. Tôi đã phải thêm một hack để django-kiểm duyệt cụ thể để hỗ trợ nó mặc dù: https://github.com/CBWhiz/django-moderation/commit/3b367d68954cea3d7910d8efc5850a136229db0e#L0R49

Vì vậy, cài đặt django-reversion và chi nhánh của tôi của django kiểm duyệt hoạt động hợp lý tốt với nhau.

Snag duy nhất có thể là lịch sử đảo ngược sẽ thêm mục nhập mỗi lần bạn nhấn lưu, chứ không phải khi bạn phê duyệt, do đó, nó cũng lưu trữ các chỉnh sửa không được chấp thuận. Điều đó có thể tưởng tượng được tấn công xung quanh cũng nếu bạn cảm thấy cho nó.

+0

2 câu hỏi: Bạn có nghĩ rằng nó sẽ hoạt động trong django 1.3 không? và với geodjango? – jperelli

+0

Nên dễ sửa chữa cho 1.3. Đối với Geo, tuy nhiên, bạn có thể cần phải quay lại các thay đổi để sử dụng _base_manager vì điều đó có thể phá vỡ Geo. –

+0

Kiểm duyệt hoạt động ok, nhưng tôi không thể định cấu hình đảo ngược, bạn có thể cho tôi manh mối về cách đăng ký các mô hình không? – jperelli

Các vấn đề liên quan