Dạng xem Nâng cao

Một phần của tài liệu Tìm hiểu ODOO FRAMEWORK và xây dựng ứng dụng thương mại điện tử WEBSITE EPIC furniture (báo cáo cuối kì đồ án 1) (Trang 170 - 178)

III. Xây dựng mô-đun – Building modules

9. Dạng xem Nâng cao

Dạng xem cây

Chế độ xem cây có thể lấy các thuộc tính bổ sung để tùy chỉnh thêm hành vi của chúng:

decoration-{$name}

cho phép thay đổi kiểu văn bản của hàng dựa trên các thuộc tính của bản ghi tương ứng.

Giá trị là biểu thức Python. Đối với mỗi bản ghi, biểu thức được đánh giá với các thuộc tính của bản ghi dưới dạng giá trị ngữ cảnh và nếu đúng, kiểu tương ứng được áp dụng cho hàng. Dưới đây là một số giá trị khác có sẵn trong ngữ cảnh:

● uid: id của người dùng hiện tại,

● hôm nay: ngày địa phương hiện tại dưới dạng một chuỗi của biểu mẫu YYYY-MM- DD,

● bây giờ : giống như ngày hôm nay với việc bổ sung thời gian hiện tại. Giá trị này được định dạng là YYYY-MM-DD hh:mm:ss.

{$name} có thể là bf (phông chữ-trọng lượng: đậm), nó (kiểu phông chữ: in ), hoặc bất kỳ bootstrap contextual (danger, info, muted, primary, success or warning).

<treestring="Idea Categories"decoration-info="state=='draft'"

decoration-danger="state=='trashed'">

<fieldname="name"/>

<fieldname="state"/> </tree>

editable

"Trên "top" hoặc "bottom".Làm cho dạng xem dạng cây có thể chỉnh sửa tại chỗ (thay vì phải đi qua dạng xem biểu mẫu), giá trị là vị trí xuất hiện các hàng mới.

Bài tập

Tô màu danh sách

Sửa đổi chế độ xem cây phiên theo cách mà các phiên kéo dài dưới 5 ngày có màu xanh lam và những phiên kéo dài hơn 15 ngày có màu đỏ.

Lịch

Hiển thị bản ghi dưới dạng sự kiện lịch. Yếu tố gốc của chúng <calendar> các thuộc tính phổ biến nhất của chúng là:

color

Tên của trường được sử dụng để phân đoạn màu. Màu sắc được tự động phân phối cho các sự kiện, nhưng các sự kiện trong cùng phân đoạn màu (bản ghi có cùng giá trị cho trường @color của chúng) sẽ được cung cấp cùng một màu.

date_start

trường của bản ghi giữ ngày/giờ bắt đầu cho sự kiện

date_stop (tùy chọn)

trường của bản ghi giữ ngày/giờ kết thúc cho sự kiện

string

<calendarstring="Ideas"date_start="invent_date"color="inventor_id">

<fieldname="name"/> </calendar>

Bài tập

Dạng xem Lịch

Thêm dạng xem Lịch vào mô hình Phiêncho phép người dùng xem các sự kiện được liên

kết với Open Academy

Dạng xem tìm kiếm

Chế độ xem <field> có thể có @filter_domain ghi đè miền được tạo để tìm kiếm trên trường đã cho. Trong miền đã cho, tự đại diện cho giá trị do người dùng nhập. Trong ví dụ dưới đây, nó được sử dụng để tìm kiếm trên cả tên trường name và description.

Dạng xem tìm kiếm cũng có <filter>, hoạt động như nút bật/tắt cho các tìm kiếm được xác định trước. Bộ lọc phải có một trong các thuộc tính sau:

domain

thêm tên miền đã cho vào tìm kiếm hiện tại

ngữ cảnh

thêm một số ngữ cảnh vào tìm kiếm hiện tại; sử dụng khóa group_by để nhóm kết quả trên tên trường đã cho

<search string="Ý tưởng"> <field name="name"/>

< trường= chuỗi"mô tả" ="Tên và mô tả"

filter_domain ="['|', ('tên', 'ilike', self), ('mô tả', 'ilike', self)]"/> <field name="inventor_id"/>

<field name=widget "country_id" ="selection"/> <filter name=chuỗi "my_ideas" = "Ýtưởng của tôi"

domain="[('inventor_id', '=', uid)]"/> <group string="Group By">

<filter name=chuỗi "group_by_inventor" = "Nhàphát minh"

context="{'group_by': 'inventor_id'}"/> </nhóm>

</tìm kiếm>

Để sử dụng chế độ xem tìm kiếm không mặc định trong một hành động, chế độ xem đó nên được liên kết bằng search_view_id của bản ghi hành động.

Hành động cũng có thể đặt giá trị mặc định cho các trường tìm kiếm thông qua trường ngữ cảnh của nó: các khóa ngữ cảnh của biểu mẫu search_default_field_name sẽ khởi tạo field_name

với giá trị được cung cấp. Bộ lọc tìm kiếm phải có tùy chọn @name có mặc định và hoạt động như booleans (chúng chỉ có thể được bật theo mặc định).

Bài tập

Dạng xem tìm kiếm

1. Thêm nút để lọc các khóa học mà người dùng hiện tại chịu trách nhiệm trong chế độ xem

tìm kiếm khóa học. Làm cho nó được chọn theo mặc định.

2. Thêm nút vào các khóa học nhóm của người dùng có trách nhiệm.

Gantt

Cảnh báo

Dạng xem gantt yêu cầu web_gantt mô-đun có trong phiên bản doanh nghiệp.

Biểu đồ thanh ngang thường được sử dụng để hiển thị lập kế hoạch và tiến bộ dự án, yếu tố gốc của chúng <gantt>.

<ganttstring="Ideas"

date_start="invent_date" date_stop="date_finished" progress="progress" default_group_by="inventor_id"/> Bài tập Biểu đồ Gantt

Thêm biểu đồ Gantt cho phép người dùng xem lịch biểu phiên được liên kết với mô-đun Học viện Mở. Các buổi học nên được nhóm theo người hướng dẫn.

Dạng xem biểu đồ

Chế độ xem biểu đồ cho phép tổng quan tổng hợp và phân tích các mô hình, phần tử gốc của chúng <>.

ghi

Dạng xem Pivot phần tử <mpivot> một bảng đachiều, cho phép lựa chọn file và kích thước

để có được tập dữ liệu tổng hợp phù hợp trước khi chuyển sang tổng quan đồ họa hơn. Dạng xem pivot có cùng định nghĩa nội dung với dạng xem biểu đồ.

Chế độ xem biểu đồ có 4 chế độ hiển thị, chế độ mặc định được chọn bằng @type tính.

Thanh (mặc định)

biểu đồ thanh, thứ nguyên đầu tiên được sử dụng để xác định các nhóm trên trục ngang, các thứ nguyên khác xác định các thanh tổng hợp trong mỗi nhóm.

Theo mặc định, các thanh nằm cạnh nhau, chúng có thể được xếp chồng lên nhau bằng cách sử dụng @stacked = "True" trên <graph>

Dòng

Biểu đồ đường 2 chiều

Pie

Bánh 2 chiều

Dạng xem biểu đồ chứa < trường> với thuộc tính@type bắt buộc lấy các giá trị:

Hàng (mặc định)

trường phải được tổng hợp theo mặc định

Đo

trường nên được tổng hợp thay vì nhóm lại trên

<graphstring="Total idea score by Inventor">

<fieldname="inventor_id"/>

<fieldname="score"type="measure"/> </graph>

cảnh báo

Dạng xem biểu đồ thực hiện tổng hợp trên các giá trị cơ sở dữ liệu, chúng không hoạt động với các trường được tính toán không được lưu trữ.

Bài tập

Dạng xem biểu đồ

Thêm dạng xem Biểu đồ trong đối tượng Phiên hiển thị, đối với mỗi khóa học, số lượng người dự dưới dạng biểu đồ thanh.

Tiếng Kanban

Được sử dụng để tổ chức các nhiệm vụ, quy trình sản xuất, v.v. yếu tố gốc của chúng <kanban>.

Dạng xem kanban hiển thị một tập hợp các thẻ có thể được nhóm trong các cột. Mỗi thẻ đại diện cho một bản ghi và mỗi cột các giá trị của trường tổng hợp.

Ví dụ: các nhiệm vụ dự án có thể được sắp xếp theo giai đoạn (mỗi cột là một giai đoạn) hoặc theo trách nhiệm (mỗi cột là người dùng), v.v.

Chế độ xem Kanban xác định cấu trúc của mỗi thẻ là sự kết hợp của các yếu tố biểu mẫu (bao gồm HTML cơ bản) và QWeb.

Dạng xem Kanban

Thêm chế độ xem Kanban hiển thị các phiên được nhóm theo khóa học (các cột là các khóa học).

10. An ninh

Cơ chế kiểm soát truy cập phải được cấu hình để đạt được chính sách bảo mật mạch lạc.

Cơ chế kiểm soát truy cập dựa trên nhóm

Các nhóm được tạo dưới dạng bản ghi bình thường trên mô-đun ir.model.access và cấp quyền truy cập menu thông qua định nghĩa menu. Tuy nhiên, ngay cả khi không có menu, các đối tượng vẫn có thể truy cập gián tiếp, vì vậy các quyền cấp đối tượng thực tế (đọc, ghi, tạo, hủy liên kết) phải được xác định cho các nhóm. Chúng thường được chèn qua các tệp CSV bên trong các mô- đun. Cũng có thể hạn chế quyền truy cập vào các trường cụ thể trên dạng xem hoặc đối tượng bằng thuộc tính nhóm của trường.

Quyền truy cập

Quyền truy cập được định nghĩa là mô-đun ir.model.access. Mỗi quyền truy cập được liên kết với một mô hình, một nhóm (hoặc không có nhóm nào để truy cập toàn cầu) và một tập hợp các quyền: đọc, ghi, tạo, hủy liên kết. Quyền truy cập như vậy thường được tạo bởi một tệp CSV được đặt theo mô hình của nó: ir.model.access.csv.

id, tên, model_id / id, group_id / id, perm_read,perm_write,perm_create,perm_unlink access_idea_idea,idea.idea,model_idea_idea,base.group_user,1,1,1,0

access_idea_vote,idea.vote,model_idea_vote,base.group_user,1,1,1,0

Bài tập

Thêm kiểm soát truy cập thông qua giao diện Odoo

Tạo một người dùng mới "John Smith". Sau đó tạo một nhóm "OpenAcademy / Session

Read" với quyền truy cập đọc vào mô-đun Phiên.

Bài tập

Thêm kiểm soát truy cập thông qua các tệp dữ liệu trong mô-đun của bạn Sử dụng tệp dữ liệu,

● Tạo một nhóm OpenAcademy / Manager với quyền truycập đầy đủ vào tất cả các mô

hình OpenAcademy

● Làm cho phiên và khóa học thể đọc được bởi tất cả người dùng

Quy tắc bản ghi hạn chế quyền truy cập vào một tập hợp con các bản ghi của mô hình đã cho. Quy tắc là bản ghi của mô hình ir.rule và được liên kết với một mô hình, một số nhóm (trường many2many), quyền áp dụng hạn chế và tên miền. Tên miền chỉ định bản ghi nào quyền truy cập bị hạn chế.

Dưới đây là một ví dụ về quy tắc ngăn chặn việc xóa khách hàng tiềm năng không ở trạng thái cancel. Lưu ý rằng giá trị của các nhóm trường phải tuân theo quy ước tương tự như phương thức write() của ORM.

<recordid="delete_cancelled_only"model="ir.rule">

<fieldname="name">Only cancelled leads may be deleted</field>

<fieldname="model_id"ref="crm.model_crm_lead"/>

<fieldname="groups"eval="[(4, ref('sales_team.group_sale_manager'))]"/>

<fieldname="perm_read"eval="0"/>

<fieldname="perm_write"eval="0"/>

<fieldname="perm_create"eval="0"/>

<fieldname="perm_unlink"eval="1"/>

<fieldname="domain_force">[('state','=','cancel')]</field> </record>

Bài tập

Quy tắc ghi

Thêm quy tắc ghi cho khóa học mô hình và nhóm "OpenAcademy / Manager", hạn chế

quyền truy câp write và hủy liênkết với người chịu trách nhiệm của một khóa học. Nếu một khóa

học không có trách nhiệm, tất cả người dùng của nhóm phải có khả năng sửa đổi nó.

11. Wizards

Trình hướng dẫn mô tả các phiên tương tác với người dùng (hoặc hộp thoại) thông qua các biểu mẫu động. Trình hướng dẫn chỉ đơn giản là một mô hình mở rộng lớp TransientModel thay vì Model. Lớp TransientModel mở rộng Model và sử dụng lại tất cả các cơ chế hiện có của nó, với các đặc điểm sau:

● Bản ghi thuật sĩ không có nghĩa là liên tục; chúng sẽ tự động bị xóa khỏi cơ sở dữ liệu sau một thời gian nhất định. Đây là lý do tại sao chúng được gọi là thoáng qua. ● Bản ghi thuật sĩ có thể tham chiếu đến các bản ghi thông thường hoặc bản ghi trình

hướng dẫn thông qua các trường quan hệ (many2one hoặc many2many), nhưng các bản ghi thông thường không thể tham chiếu đến các bản ghi thuật sĩ thông qua trường many2one.

Chúng tôi muốn tạo trình hướng dẫn cho phép người dùng tạo người dự cho một phiên cụ thể hoặc cho danh sách các phiên cùng một lúc.

Bài tập

Tạo một mô hình trình hướng dẫn với mối quan hệ nhiều2one với mô hình Sessionvà mối

quan hệ nhiều - nhiều với mô hình Đối tác.

Khởi chạy trình hướng dẫn

Trình hướng dẫn chỉ đơn giản window actions động cửa sổ với một target được đặt thành giá trị new, mở dạng xem (thường là biểu mẫu)trong một hộp thoại riêng biệt. Hành động có thể được kích hoạt thông qua một mục menu, nhưng thường được kích hoạt bởi một nút.

Một cách khác để khởi chạy trình hướng dẫn là thông qua menu Hành động của dạng xem cây hoặc biểu mẫu. Điều này được thực hiện thông qua trường binding_model_id của hành động. Thiết lập trường này sẽ làm cho hành động xuất hiện trên chế độ xem của mô hình mà hành động được "ràng buộc" đến.

<recordid="launch_the_wizard"model="ir.actions.act_window">

<fieldname="name">Launch the Wizard</field>

<fieldname="res_model">wizard.model.name</field>

<fieldname="view_mode">form</field>

<fieldname="target">new</field>

<fieldname="binding_model_id"ref="model_context_model_ref"/> </record>

Mẹo

Trong khi trình hướng dẫn sử dụng chế độ xem và nút thông thường, thông thường bấm vào bất kỳ nút nào trong biểu mẫu trước tiên sẽ lưu biểu mẫu sau đó đóng hộp thoại. Bởi vì điều này thường không mong muốn trong trình hướng dẫn, một thuộc tính special="cancel" có sẵn mà ngay lập tức đóng trình hướng dẫn mà không lưu biểu mẫu.

Bài tập

Khởi chạy wizard

1. Xác định dạng xem biểu mẫu cho trình hướng dẫn.

2. Thêm hành động để khởi chạy nó trong ngữ cảnh của mô hình Phiên.

3. Xác định giá trị mặc định cho trường phiên trong trình hướng dẫn; sử dụng tham số ngữ

self._context để truy xuất phiên hiện tại.

Bài tập

Đăng ký người tham dự

Thêm các nút vào trình hướng dẫn và thực hiện phương pháp tương ứng để thêm người dựa vào phiên đã cho.

Bài tập

Đăng ký người tham dự vào nhiều phiên

Một phần của tài liệu Tìm hiểu ODOO FRAMEWORK và xây dựng ứng dụng thương mại điện tử WEBSITE EPIC furniture (báo cáo cuối kì đồ án 1) (Trang 170 - 178)

Tải bản đầy đủ (PDF)

(183 trang)