2014-04-16 17 views
6

Tôi có một hành vi thực sự lạ, nếu tôi muốn dịch một kiểu nội dung Archetype (ví dụ: Folder) với plone.app.multilingual.Không đủ đặc quyền: plone.app.multilingual [1.x] - Dịch nội dung nguyên mẫu

Lỗi msg:

Insufficient Privileges 

You do not have sufficient privileges to view this page. If you believe you are 
receiving this message in error, contact the site administration. 

môi trường của tôi:

  • Plone = 4.3.2
  • plone.app.multilingual = 1.2.1
  • plone.multilingual = 1.2.1
  • plone.multilingualbehavior = 1.2
  • nguyên mẫu s.multilingual = 1,2
  • Và khoảng 40 Plone Addon của (mà làm thực sự phức tạp này)

trường hợp sử dụng của tôi:

  • Hai ngôn ngữ được cấu hình EN và DE
  • simple_publication_workflow Plone của được cấu hình.
  • Tất cả các mục đều ở trạng thái riêng tư. (Các thư mục LanguageRoot cũng ở trạng thái riêng tư)

Tôi có thể tạo lại vấn đề này trước tiên bằng cách tạo nội dung (Thư mục) trong phần tiếng Anh của trang web. Nội dung là riêng tư vì đây là trạng thái mặc định cho nội dung mới.

Sau đó, tôi cố gắng dịch nội dung sang tiếng Đức bằng cách nhấp vào menu Dịch ->create German. Xong ... lỗi Insufficient Privileges xuất hiện.

Nếu tôi cài đặt một vanilla Plone 4.3.2 và plone.app.multilingial mà không có rất nhiều gói addons của tôi hoạt động tốt. Tôi khá chắc chắn có một vấn đề với một trong những addons nhưng tôi cần phải hiểu những gì dẫn đến vấn đề này. Nó không quan trọng, mà addon phá vỡ trang web.

Thêm ...

Vì đây là vấn đề về quyền, trước tiên tôi đã thử xuất bản mọi thứ rồi dịch nội dung sang tiếng Đức. Điều này làm việc tốt!

Vâng, bước tiếp theo là gỡ lỗi vào plone.app.multilingual. Tôi đã kết thúc trong số add.py AddTraverser

Sự cố xuất hiện trên redirect on line 37 Nếu một phần của url không được truy cập công khai (Ẩn danh ??), lỗi xảy ra.

Imho thật lạ khi việc triển khai phần DX và phần AT là khác nhau.

Tôi đã thay đổi một phần thực hiện AT để:

self.context.REQUEST.set('type', name) 
view = queryMultiAdapter((self.context, self.context.REQUEST), 
          name="add_at_translation") 
return view.__of__(self.context) 

thay vì:

baseUrl = self.context.absolute_url() 
url = '%s/@@add_at_translation?type=%s' % (baseUrl, name) 
return self.request.response.redirect(url) 

này hoàn toàn cố định trường hợp của tôi. Và tất cả các bài kiểm tra plone.app.multilingual vẫn đang hoạt động.

Nhưng tôi không thể giải thích tại sao? Và tại sao nó không hoạt động mà không có sự tùy chỉnh?

Bất kỳ gợi ý nào thực sự được đánh giá cao!

Trả lời

1

Tại sao sửa chữa của bạn hoạt động, có thể liên quan đến việc người dùng có thể không được xác thực trong khi di chuyển. Điều này tương tự, tại sao người dùng có thể không được xác thực trong chế độ xem trình duyệt '__init__.

Đó có thể là lỗi và yêu cầu kéo với bản sửa lỗi của bạn và thử nghiệm chứng minh quan điểm của bạn bằng cách không có nó, sẽ được ưu tiên hơn.

Bạn sẽ có thể nhận được thông báo lỗi tốt hơn bằng cách xóa trái phép khỏi lỗi được lọc trong /Plone/error_log (qua ZMI). Tôi không chắc chắn, cách absolute_url có thể tăng Không được phép trong bất kỳ điều kiện nào.

+0

Cảm ơn câu trả lời của bạn, tôi đã xóa 'Không được phép' khỏi' error_log' và thông báo lỗi ('Tên người dùng hoặc mật khẩu không chính xác' và gần như không có tracback) đã gây nhầm lẫn, cho đến khi tôi thấy đoạn mã tôi đã đăng trong câu hỏi. Tôi cần phải có được môi trường của tôi lên một lần nữa và cố gắng để tái sản xuất "lỗi". Tôi sẽ kiểm tra câu trả lời một cách nhanh chóng Tôi chắc chắn điều này giải quyết vấn đề. – Mathias

+0

Ok. Tôi đã hy vọng rằng Traceback cho Unauthorized sẽ tiết lộ vấn đề thực sự. Bạn có nhớ, việc chuyển hướng sang '' @@ add_at_translation'' có thực sự xảy ra trước khi lỗi không? Một vấn đề có thể xảy ra là response.redirect() không thực hiện chuyển hướng ngay lập tức và trả về chỉ một chuỗi, điều này có thể phá vỡ sự truyền tải bằng cách nào đó với bộ tiện ích bổ sung của bạn. –

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