odoo 19 trên MacOS

Nội dung

    Odoo 19 vừa ra mắt. Tôi đã cài đặt nó trên máy Mac của mình. Tôi muốn chia sẻ các bước chính xác tôi đã thực hiện.

    Trước khi bắt đầu, hãy đảm bảo bạn có:

    • Homebrew đã được cài đặt.
    • PostgreSQL đã được cài đặt. Nó không cần chạy dưới dạng dịch vụ. Tôi thích khởi động thủ công mỗi lần.

    Cá nhân tôi thích virtualenvs hơn Docker cho phát triển cục bộ. Chúng nhẹ hơn, dễ gỡ lỗi hơn. Chúng hoàn hảo cho một thiết lập cục bộ nhanh chóng. Chúng cũng cho phép tôi chạy nhiều phiên bản Odoo song song.

    Bước 1: Tạo tài khoản Superuser cho Odoo

    Mở psql và chạy lệnh:

    create role odoo19 with login superuser password '<mật khẩu của bạn>';

    Lưu ý bảo mật: Điều này chỉ dành cho phát triển cục bộ. Cấp quyền superuser tiện lợi, nhưng không an toàn cho môi trường sản xuất. Trong môi trường sản xuất, bạn nên:

    • Tạo một người dùng chuyên biệt. Người dùng này chỉ có các quyền cần thiết.
    • Sử dụng mật khẩu mạnh. Áp dụng kiểm soát truy cập phù hợp.
    • Tránh lưu trữ mật khẩu dưới dạng văn bản thuần túy.

    Xem và gán quyền cho user odoo có thể tạo database.

    sudo -u postgres psql

    SELECT rolname, rolsuper, rolcreatedb, rolcanlogin FROM pg_roles WHERE rolcanlogin = true;

    alter role odoouser createdb;

    alter role odoouser superuser;

    Bước 2: Thiết lập môi trường ảo của bạn

    Tạo và kích hoạt môi trường ảo cho Odoo 19:

    python3 -m venv ~/odoo/19/venv
    source ~/odoo/19/venv/bin/activate

    Điều này giúp cô lập các phụ thuộc. Nó tránh xung đột với các dự án Python khác.

    Bước 3: Tải mã nguồn Odoo và cài đặt các phụ thuộc

    mkdir -p ~/odoo/19
    cd ~/odoo/19
    git clone //github.com/odoo/odoo.git --branch 19.0 --depth 1
    cd odoo
    pip install -r requirements.txt

    Mẹo: Tôi sử dụng --depth=1. Lệnh này chỉ lấy commit mới nhất. Nó tiết kiệm thời gian và băng thông. Tôi không cần toàn bộ lịch sử Git cục bộ.

    Bước 4: Sử dụng tập lệnh khởi động

    Đây là tập lệnh start_odoo19.sh của tôi. Nó kiểm tra xem PostgreSQL có đang chạy không. Nó kích hoạt virtualenv. Sau đó, nó khởi động Odoo.

    #!/bin/bash
    
    SERVICE_NAME="postgresql"
    VERSION=19
    VENV_PATH=~/odoo/$VERSION/venv
    
    if brew services list | grep -q "$SERVICE_NAME.*started"; then
        echo "PostgreSQL is already running."
    else
        echo "PostgreSQL is not running. Starting it..."
        brew services run "$SERVICE_NAME"
    fi
    
    source $VENV_PATH/bin/activate
    
    ODOO_BIN=~/odoo/$VERSION/odoo/odoo-bin
    ODOO_CONFIG=~/odoo/$VERSION/odoo$VERSION.conf
    
    $ODOO_BIN -c $ODOO_CONFIG "$@"

    Ghi chú cá nhân: Tôi không cấu hình PostgreSQL tự động khởi động. Tôi muốn kiểm tra xem nó khởi động sạch sẽ mỗi lần. Nếu bạn làm việc với Odoo hàng ngày, bạn có thể muốn bật nó như một dịch vụ. Điều này sẽ tiện lợi hơn.

    Bước 5: Tạo tệp cấu hình của bạn

    Đầu tiên, tôi yêu cầu Odoo tạo một tệp cấu hình mặc định:

    ./start_odoo19.sh -s --stop-after-init

    Lệnh này sẽ tạo một tệp có tên ~/odoo/19/odoo19.conf. Sau đó, mở nó bằng trình soạn thảo văn bản yêu thích của bạn. (Tôi dùng neovim). Điều chỉnh các tùy chọn:

    [options]
    db_user = odoo19
    db_password = <mật khẩu của bạn>
    addons_path = <đường dẫn đến odoo enterprise>

    Thay đổi thú vị: Trong Odoo 19, bạn không cần chỉ định đường dẫn addon cơ bản theo cách thủ công. Odoo hiện tự động xử lý điều này.

    Bước 6: Chạy Odoo

    chmod +x start_odoo19.sh
    ./start_odoo19.sh -d test_db --dev=all

    Mẹo dành cho nhà phát triển: Tôi sử dụng --dev=all. Điều này giúp tôi có tính năng tự động tải lại và gỡ lỗi trong quá trình phát triển. Hãy tắt nó cho môi trường staging hoặc sản xuất.

    Thiết lập này không chỉ giúp chạy Odoo 19. Nó còn tạo ra một môi trường cục bộ sạch sẽ, có thể tái tạo. Bạn có thể tin cậy môi trường này. Cho dù bạn đang viết module tùy chỉnh đầu tiên, gỡ lỗi quy trình phức tạp, hay chuẩn bị cho buổi demo khách hàng. Cách tiếp cận này sẽ cung cấp một nền tảng vững chắc để xây dựng.

    Nâng cấp modules từ Odoo 18 → 19

    Ví dụ code //github.com/markusbegerow/local-llm-odoo version 18

    Cập nhật metadata module__manifest__.py

    • Thay đổi versiondepends cho phù hợp với Odoo 19.

    • Odoo kiểm tra version ở manifest để quyết định nạp module — nếu vẫn để 18.0 thì Odoo 19 sẽ không nhận.

    “version”: “19.0.x”
    Thay depends nếu Odoo 19 có module mới tên khác hoặc tích hợp LLM khác.

    Trong Odoo 19, view type tree ĐÃ BỊ LOẠI BỎ Ở CẤP IR.UI.VIEW
    list là chuẩn chính thức, không còn là alias nữa. tree không còn là view type hợp lệ.Dù bạn không dùng tree view, chỉ cần action còn ghi tree → hệ thống validate toàn bộ view stack → search view bị fail theo. <field name=”view_mode”>tree,form</field> sửa lại <field name=”view_mode”>list,form</field>

    Thay attrs bằng modifiers (JSON thuần): attrs=”{‘invisible’: [(‘id’, ‘=’, False)]}” thay modifiers='{“invisible”: [[“id”, “=”, false]]}’

    Bạn nên grep toàn module, chạy lệnh Terminal: grep -R “attrs=” addons-custom/local_llm_odoo
    grep -R “states=” addons-custom/local_llm_odoo

    Thấy cái nào → chuyển sang modifiers

    Odoo 19 KHÔNG CHO PHÉP context trong <filter> của search view. Dòng này 100% gây lỗi trong Odoo 19. XÓA HOÀN TOÀN group_byBỎ HẾT đoạn này

    <group expand=”0″ string=”Group By”>
    <filter string=”Model”
    name=”group_model”
    context=”{‘group_by’:’model_name’}”/>
    </group>

    Chặn submit mặc định Enter = gửi, Shift+Enter = xuống dòng, Không gửi 2 lần chỉ cần đối chiếu code JS/QWeb của chat input. mở file llm_chat_widget.js

    input.addEventListener(‘keydown’, (ev) => {
    if (ev.key === ‘Enter’ && !ev.shiftKey) {
    ev.preventDefault();
    ev.stopPropagation();
    sendMessage();
    }
    });

     

    Để lại một bình luận

    Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

    Chat with us
    Hello! How can I help you today?