Hồ sơ dữ liệu

SoOn chủ yếu dựa vào dữ liệu và phần lớn định nghĩa mô-đun là định nghĩa của các bản ghi khác nhau mà nó quản lý: Giao diện người dùng (menu và dạng xem), bảo mật (quyền truy cập và quy tắc bản ghi), báo cáo và dữ liệu đơn giản đều được xác định thông qua bản ghi .

Kết cấu

Cách chính để xác định dữ liệu trong SoOn là thông qua các tệp dữ liệu XML: Cấu trúc rộng của tệp dữ liệu XML như sau:

  • Bất kỳ số phần tử thao tác nào trong phần tử gốc odoo

<?xml version="1.0" encoding="UTF-8"?>
<!-- the root elements of the data file -->
<odoo>
    <operation/>
    ...
</odoo>

Các file dữ liệu được thực thi tuần tự, các thao tác chỉ có thể tham khảo kết quả của các thao tác được xác định trước đó

Ghi chú

Nếu nội dung của tệp dữ liệu dự kiến chỉ được áp dụng một lần, bạn có thể chỉ định cờ odoo noupdate được đặt thành 1. Nếu một phần dữ liệu trong tệp dự kiến sẽ được áp dụng một lần, bạn có thể đặt phần này của tệp trong miền <data noupdate="1">.

<odoo>
    <data noupdate="1">
        <!-- Only loaded when installing the module (odoo-bin -i module) -->
        <operation/>
    </data>

    <!-- (Re)Loaded at install and update (odoo-bin -i/-u) -->
    <operation/>
</odoo>

Hoạt động cốt lõi

kỷ lục

record xác định hoặc cập nhật một bản ghi cơ sở dữ liệu một cách thích hợp, nó có các thuộc tính sau:

``mẫu``(bắt buộc)

tên của mô hình cần tạo (hoặc cập nhật)

id

mã định danh bên ngoài cho bản ghi này. Chúng tôi thực sự khuyên bạn nên cung cấp một

  • để tạo bản ghi, cho phép các định nghĩa tiếp theo sửa đổi hoặc tham chiếu đến bản ghi này

  • để sửa đổi bản ghi, bản ghi cần sửa đổi

`` bối cảnh``

ngữ cảnh sử dụng khi tạo bản ghi

buộc tạo

trong chế độ cập nhật liệu bản ghi có được tạo hay không nếu nó không tồn tại

Yêu cầu external id, mặc định là True.

`` lĩnh vực``

Mỗi bản ghi có thể bao gồm các thẻ field, xác định các giá trị cần đặt khi tạo bản ghi. Một `` bản ghi`` không có `` trường`` sẽ sử dụng tất cả các giá trị mặc định (tạo) hoặc không làm gì (cập nhật).

Một field có thuộc tính name bắt buộc, tên của trường cần đặt và các phương thức khác nhau để xác định chính giá trị đó:

Không có gì

nếu không có giá trị nào được cung cấp cho trường, thì False ẩn sẽ được đặt trên trường. Có thể được sử dụng để xóa một trường hoặc tránh sử dụng giá trị mặc định cho trường đó.

tìm kiếm

đối với các trường quan hệ, phải là domain trên mô hình của trường.

Sẽ đánh giá miền, tìm kiếm mô hình của trường bằng cách sử dụng nó và đặt kết quả tìm kiếm làm giá trị của trường. Sẽ chỉ sử dụng kết quả đầu tiên nếu trường là Many2one

`` giới thiệu``

nếu thuộc tính ref được cung cấp, giá trị của nó phải là external id hợp lệ, giá trị này sẽ được tra cứu và đặt làm giá trị của trường.

Chủ yếu dành cho các trường Many2oneReference

`` gõ``

nếu thuộc tính type được cung cấp, nó sẽ được sử dụng để diễn giải và chuyển đổi nội dung của trường. Nội dung của trường có thể được cung cấp thông qua một tệp bên ngoài bằng cách sử dụng thuộc tính file hoặc thông qua phần thân của nút.

Các loại có sẵn là:

xml, html

trích xuất các phần tử con của field dưới dạng một tài liệu duy nhất, đánh giá bất kỳ external id nào được chỉ định bằng biểu mẫu %(external_id)s. %% có thể được sử dụng để xuất ra các dấu hiệu % thực tế.

tập tin

đảm bảo rằng nội dung trường là đường dẫn tệp hợp lệ trong mô hình hiện tại, lưu cặp module,path làm giá trị trường

char

đặt nội dung trường trực tiếp làm giá trị của trường mà không thay đổi

sở64

base64-mã hóa nội dung của trường, hữu ích khi kết hợp với file thuộc tính để tải, ví dụ: dữ liệu hình ảnh vào tệp đính kèm

int

chuyển đổi nội dung của trường thành số nguyên và đặt nó làm giá trị của trường

thả nổi

chuyển đổi nội dung của trường thành float và đặt nó làm giá trị của trường

danh sách, bộ

phải chứa bất kỳ số phần tử value nào có cùng thuộc tính với field, mỗi phần tử phân giải thành một mục của bộ dữ liệu hoặc danh sách được tạo và bộ sưu tập được tạo được đặt làm giá trị của trường

`` đánh giá``

đối với trường hợp các phương thức trước đó không phù hợp, thuộc tính eval chỉ đánh giá bất kỳ biểu thức Python nào được cung cấp và đặt kết quả làm giá trị của trường.

Bối cảnh đánh giá chứa nhiều mô-đun khác nhau (time, datetime, timedelta, relativedelta), một hàm để giải quyết định danh bên ngoài (ref) và đối tượng mô hình cho trường hiện tại nếu có (obj)

xóa

Thẻ delete có thể xóa bất kỳ số lượng bản ghi nào được xác định trước đó. Nó có các thuộc tính sau:

``mẫu``(bắt buộc)

mô hình trong đó một bản ghi được chỉ định sẽ bị xóa

id

external id của bản ghi cần xóa

tìm kiếm

a domain để tìm bản ghi của mô hình cần xóa

idsearch là độc quyền

chức năng

Thẻ function gọi một phương thức trên mô hình, với các tham số được cung cấp. Nó có hai tham số bắt buộc modelname chỉ định tương ứng model và tên của phương thức cần gọi.

Các tham số có thể được cung cấp bằng cách sử dụng các phần tử eval (nên đánh giá một chuỗi các tham số để gọi phương thức) hoặc các phần tử value (xem các giá trị list).

<odoo>
    <data noupdate="1">
        <record name="partner_1" model="res.partner">
            <field name="name">Odude</field>
        </record>

        <function model="res.partner" name="send_inscription_notice"
            eval="[[ref('partner_1'), ref('partner_2')]]"/>

        <function model="res.users" name="send_vip_inscription_notice">
            <function eval="[[('vip','=',True)]]" model="res.partner" name="search"/>
        </function>
    </data>

    <record id="model_form_view" model="ir.ui.view">
        ...
    </record>
</odoo>

Phím tắt

Do một số mô hình cấu trúc quan trọng của SoOn rất phức tạp và liên quan nên các tệp dữ liệu cung cấp các lựa chọn thay thế ngắn hơn để xác định chúng bằng cách sử dụng record tags:

`` mẫu``

Tạo một QWeb view chỉ yêu cầu phần arch của view và cho phép một vài thuộc tính tùy chọn:

id

định danh bên ngoài của khung nhìn

tên, inherit_id, ưu tiên

giống như trường tương ứng trên ir.ui.view (nb: inherit_id phải là externalidentifier)

chính

nếu được đặt thành True và được kết hợp với inherit_id, sẽ xác định chế độ xem là chế độ xem chính

nhóm

danh sách nhóm được phân tách bằng dấu phẩy số nhận dạng bên ngoài

trang

nếu được đặt thành "Đúng", mẫu là một trang web (có thể liên kết tới, có thể xóa)

tùy chọn

`` được bật`` hoặc `` bị vô hiệu hóa``, liệu chế độ xem có thể bị tắt (trong giao diện trang web) hay không và trạng thái mặc định của nó. Nếu không được đặt, chế độ xem luôn được bật.

Tệp dữ liệu CSV

Các tệp dữ liệu XML rất linh hoạt và tự mô tả, nhưng rất dài dòng khi tạo hàng loạt một số bản ghi đơn giản của cùng một mô hình.

Trong trường hợp này, các tệp dữ liệu cũng có thể sử dụng csv, điều này thường xảy ra với quyền truy cập:

  • tên tệp là model_name.csv

  • hàng đầu tiên liệt kê các trường cần viết, với trường đặc biệt id dành cho các mã định danh bên ngoài (được sử dụng để tạo hoặc cập nhật)

  • mỗi hàng sau đó tạo một bản ghi mới

Đây là những dòng đầu tiên của tệp dữ liệu xác định trạng thái quốc gia res.country.state.csv

"id","country_id:id","name","code"
state_au_1,au,"Australian Capital Territory","ACT"
state_au_2,au,"New South Wales","NSW"
state_au_3,au,"Northern Territory","NT"
state_au_4,au,"Queensland","QLD"
state_au_5,au,"South Australia","SA"
state_au_6,au,"Tasmania","TAS"
state_au_7,au,"Victoria","VIC"
state_au_8,au,"Western Australia","WA"
state_us_1,us,"Alabama","AL"
state_us_2,us,"Alaska","AK"
state_us_3,us,"Arizona","AZ"
state_us_4,us,"Arkansas","AR"
state_us_5,us,"California","CA"
state_us_6,us,"Colorado","CO"

được hiển thị ở định dạng dễ đọc hơn:

id

country_id:id

tên

mã số

bang_au_1

au

Lãnh thổ thủ đô Australia

HÀNH ĐỘNG

bang_au_2

au

New South Wales

NSW

bang_au_3

au

Lãnh thổ phía Bắc

NT

bang_au_4

au

Queensland

QLD

bang_au_5

au

Nam Úc

SA

bang_au_6

au

Tasmania

TAS

bang_au_7

au

Victoria

VIC

bang_au_8

au

miền tây nước Úc

WA

tiểu bang_us_1

chúng ta

Alabama

AL

bang_us_2

chúng ta

Alaska

AK

bang_us_3

chúng ta

Arizona

AZ

bang_us_4

chúng ta

Arkansas

AR

tiểu bang_us_5

chúng ta

California

CA

bang_us_6

chúng ta

Colorado

CO

Đối với mỗi hàng (bản ghi):

  • cột đầu tiên là external id của bản ghi cần tạo hoặc cập nhật

  • cột thứ hai là external id của đối tượng quốc gia cần liên kết tới (đối tượng quốc gia phải được xác định trước)

  • cột thứ ba là trường name cho res.country.state

  • cột thứ tư là trường code cho res.country.state