Tải bản đầy đủ (.docx) (9 trang)

(yenbao1340@gmail.com) Lập trình Odoo (OpenERP): Thực hành Xây dựng module Phân quyền

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (326.65 KB, 9 trang )

Đề tài: Xây dựng module quản lý sinh
viên (TT)
Lab 03 – Phân quyền
Input:
- Tạo module quản lý sinh viên
- Tạo được 3 đối tượng x_khoa, x_nganh, x_sinhvien
- Tạo được các menu và view cho x_khoa, x_nganh, x_sinhvien
Output:
- Tạo group user
- Phân quyền trên các view
Tạo group user
Bước 1: Tạo thư mục sercurity trong module quanly_sinhvien
Bước 2: Tạo 1 file sercurity_data.xml trong thư mục quanly_sinhvien/ sercurity
Bước 3: Tạo 1 category sẽ chứa các group trong module của chúng ta
 Mỗi một module nên tạo 1 category để dễ quản lý
Giải thích:
- Dòng 1, 2, 3, 8, 9: khai báo các thẻ mặc định của Odoo. Nội dung của file XML sẽ
nằm trong thẻ <data>
- Dòng 4: Thẻ record với model là ir.module.category  tạo 1 category chứa các
group
Với id phải duy nhất, không trùng với các module khác
- Dòng 5, 6: Khai báo tên của category và thứ tự xuất hiện của nó
Lưu ý: Vì chúng ta chưa tạo group user nên category này vẫn chưa xuất hiện
Bước 4: Tiếp tục khai báo để tạo 1 group user Sinh viên trong file sercurity_data.xml
Giải thích:
- Tạo 1 thẻ record với model là ir.groups có thuộc tính id là Id của group user (phải
duy nhất)
- Bên trong thẻ record chúng ta thẻ field để khai báo tên và category của group user
đó
Bước 5: Khai báo file sercurity_data.xml trong thuộc tính update_xml của file
__openerp__.py để Odoo khởi tạo group user


Bước 6: restart service và upgrade module
Bước 7: kiểm tra kết quả
Group user sẽ được thể hiện trong thẻ Access Rights của mỗi User
Để truy cập vào user ta vào menu Settings  Users  Chọn user cần phân quyền trên
tree view
Phân quyền group user cho các model
Yêu cầu bài toán với từng nhóm đối tượng
- Đối tượng sinh viên chỉ được xem và chỉnh sửa các thông tin về sinh viên (không
được xóa và tạo mới)
- Đối tượng giáo viên chỉ được xem và chỉnh sửa các thông tin về sinh viên và
thông tin ngành (không được phép xóa và tạo mới)
- Đối tượng giáo vụ có thể xem, xóa, chỉnh sửa và tạo mới toàn bộ thông tin về sinh
viên, khoa, ngành
Bước 1: Tạo 1 file ir.model.access.csv trong thư mục quanly_sinhvien/sercurity với nội
dung sau
 Phân quyền cho nhóm người dùng sinh viên trên 3 đối tượng x_sinhvien, x_khoa,
x_nganh
Giải thích:
- Với nội dung trên, chúng ta đang phân quyền cho nhóm người dùng sinh viên
(group_sinhvien) trên 3 đối tượng nghiệp vụ (x_sinhvien, x_khoa, x_nganh)
 Hệ thống có 3 nhóm người dùng (sinhvien, giaovien, giaovu) và 3 đối
tượng nghiệp vụ, vậy chúng ta phải có tổng cộng 9 dòng dữ liệu để phân
quyền cho tất cả nhóm người dùng (3x3=9)
- Lưu ý ở dòng 4: nhóm sinh viên có thể xem được đối tượng x_nganh
(perm_read=1) vì trong đối tượng sinh viên chúng ta có 1 field many2one đến
x_nganh, nếu không cho phép nhóm sinh viên read x_nganh thì sẽ báo lỗi.
Bước 2: Khai báo file ir.model.access.csv trong thuộc tính update_xml của file
__openerp__.py để Odoo khởi tạo phân quyền
Bước 3: restart service và upgrade module
Bước 4: kiểm tra kết quả

Bước 4.1: Tạo 1 user mới và phân quyền là thuộc nhóm sinh viên
Vào settingsusersbấm create để tạo mới
Bước 4.2: Thay đổi password cho user vừa tạo

Bước 4.3: Đăng nhập vào tài khoản vừa tạo chúng ta sẽ thấy user thuộc nhóm người
dùng là sinh viên chỉ hiện ra menu Quản lý sinh viên/Sinh viên và Phân ban/Ngành (vì
được phép xem đối tượng x_nganh)
Phân quyền group user trên view
Giả sử chúng ta thêm yêu cầu: Các sinh viên chỉ được nhìn thấy menu Quản lý sinh
viên/Sinh viên và không được nhìn thấy thuộc tính Trang thái trong đối tượng x_sinhvien
Chúng ta sẽ tiến hành phân quyền cho nhóm người dùng sinh viên trên các view và
menu
Bước 1: Phân quyền trên menu
Tạo 1 file sercurity_menu.xml trong thư mục sercurity với nội dung như sau
Giải thích:
- Nhiệm vụ của đoạn code trên là cập nhật lại thông tin của menu ngành (có id là
“menu_qlsv_phanban_nganh”)
 Chúng ta phải tạo menu ngành trước rồi mới phân quyền
- Giá trị thuộc tính eval (đi kèm với nam=”groups_id”) có nghĩa là chúng ta chỉ cho
phép 2 nhóm người dùng giáo viên và giáo vụ xem được menu Ngành. Ngoài ra
tất cả các nhóm người dùng khác thì không được phép nhìn thấy
Bước 2: Khai báo file sercurity_menu.xml trong thuộc tính update_xml của file
__openerp__.py để Odoo khởi tạo phân quyền cho menu
Bước 3: restart service và upgrade module
Bước 4: Kiểm tra kết quả: Load lại trang đăng nhập với tài khoản sinh viên chúng ta sẽ
thấy menu Ngành đã được ẩn đi
Giả sử chúng ta thêm yêu cầu: Các sinh viên không được nhìn thấy field trạng thái
Bước 1: Mở file view/sinhvien.xml và đoạn code để giới hạn quyền truy cập vào 1 file
trên form view sinh viên
 Ta thêm thuộc tính groups mang ý nghĩa: field state (trạng thái) chỉ được thấy bởi

2 nhóm người dùng là giáo viên và giáo vụ (Lưu ý: Lab2_Demo là tên của thư
mục gốc, nơi đã tạo ra 2 nhóm người dùng group_giaovien và group_giaovu)
Bước 2: Upgrade module
Bước 3: Kiểm tra kết quả: Load lại trang đăng nhập với tài khoản sinh viên  truy cập
vào 1 recode bất kì của sinh viên chúng ta sẽ thấy field trạng thái đã bị ẩn đi

×