Hướng dẫn cài đặt

Tùy thuộc vào trường hợp sử dụng dự định, có nhiều cách để cài đặt SoOn. Đối với các nhà phát triển của cộng đồng SoOn cũng như nhân viên của SoOn, cách ưa thích là thực hiện cài đặt nguồn (chạy SoOn từ mã nguồn).

Quan trọng

Làm theo phần Thiết lập môi trường của hướng dẫn đóng góp để chuẩn bị môi trường của bạn cho việc đẩy các thay đổi cục bộ lên các kho lưu trữ của SoOn.

Điều chỉnh môi trường cho các hướng dẫn

Đến thời điểm này, bạn nên đã tải mã nguồn về hai kho lưu trữ cục bộ, một cho odoo/odoo và một cho odoo/enterprise. Các kho lưu trữ này được thiết lập để đẩy các thay đổi lên các nhánh được định trước trên GitHub. Điều này sẽ rất thuận tiện khi bạn bắt đầu đóng góp vào mã nguồn, nhưng trong phạm vi theo dõi hướng dẫn, chúng ta muốn tránh làm ô nhiễm chúng với tài liệu đào tạo. Hãy đẩy các thay đổi của bạn vào kho lưu trữ thứ ba: odoo/tutorials. Giống như hai kho lưu trữ đầu tiên, nó sẽ là một phần của addons-path tham chiếu tất cả các thư mục chứa các module của SoOn.

Ghi chú

Depending on the tutorial that you are following, you might not need to install all the modules that this repository contains.

  1. Thực hiện theo quy trình tương tự như với kho lưu trữ odoo/odooodoo/enterprise, sao chép kho lưu trữ odoo/tutorials trên máy của bạn bằng:

    $ git clone git@github.com:odoo/tutorials.git
    
  2. Định cấu hình nhánh phân nhánh và Git của bạn để đẩy các thay đổi tới nhánh phân nhánh của bạn thay vì tới cơ sở mã chính. Nếu bạn làm việc tại SoOn, hãy định cấu hình Git để đẩy các thay đổi tới nhánh chia sẻ được tạo trên tài khoản odoo-dev.

    1. Truy cập github.com/odoo/tutorials và nhấp vào nút Fork để tạo một nhánh của kho lưu trữ trên tài khoản của bạn.

    2. Trong lệnh bên dưới, thay thế <your_github_account> bằng tên của tài khoản GitHub mà bạn đã tạo fork.

      $ cd /TutorialsPath
      $ git remote add dev git@github.com:<your_github_account>/tutorials.git
      

Đó là nó! Môi trường của bạn hiện đã sẵn sàng để chạy SoOn từ các nguồn và bạn đã tạo thành công một kho lưu trữ để phục vụ như một thư mục tiện ích bổ sung. Điều này sẽ cho phép bạn đẩy công việc của mình lên GitHub.

Quan trọng

Chỉ dành cho nhân viên SoOn:

  1. Đảm bảo đọc thật kỹ đóng góp/phát triển/đóng góp đầu tiên. Đặc biệt, tên chi nhánh của bạn phải tuân theo quy ước của chúng tôi.

  2. Khi bạn đã đẩy thay đổi đầu tiên của mình tới nhánh chia sẻ trên odoo-dev, hãy tạo PR. Vui lòng đặt tứ giác của bạn trong tiêu đề PR (ví dụ: "abcd - Đào tạo kỹ thuật").

    Điều này sẽ cho phép bạn chia sẻ công việc sắp tới của mình và nhận phản hồi từ huấn luyện viên của bạn. Để đảm bảo vòng phản hồi liên tục, chúng tôi khuyên bạn nên thực hiện một cam kết mới ngay khi bạn hoàn thành một chương của hướng dẫn. Lưu ý rằng PR được cập nhật tự động với các cam kết mà bạn đẩy tới odoo-dev, bạn không cần phải mở nhiều PR.

  3. Tại SoOn, chúng tôi sử dụng rộng rãi Runbot cho các thử nghiệm CI của mình. Khi bạn đẩy các thay đổi của mình sang odoo-dev, Runbot sẽ tạo bản dựng mới và kiểm tra mã của bạn. Sau khi đăng nhập, bạn sẽ có thể xem Dự án Hướng dẫn của các chi nhánh của mình.

Ghi chú

Vị trí cụ thể của các kho lưu trữ trên hệ thống tệp của bạn không quan trọng. Tuy nhiên, để đơn giản, chúng tôi giả định rằng bạn đã sao chép tất cả các kho lưu trữ trong cùng một thư mục. Nếu không đúng như vậy, hãy đảm bảo điều chỉnh các lệnh sau cho phù hợp, cung cấp đường dẫn tương đối thích hợp từ kho lưu trữ odoo/odoo đến kho lưu trữ odoo/tutorials.

Chạy máy chủ

Khởi chạy với odoo-bin

Sau khi tất cả các phần phụ thuộc đã được thiết lập, SoOn có thể được khởi chạy bằng cách chạy odoo-bin, giao diện dòng lệnh của máy chủ.

$ cd $HOME/src/odoo/
$ ./odoo-bin --addons-path="addons/,../enterprise/,../tutorials" -d rd-demo

Có nhiều đối số command-line mà bạn có thể sử dụng để chạy máy chủ. Trong khóa đào tạo này, bạn sẽ chỉ cần một số trong số họ.

-d <database>

Cơ sở dữ liệu sẽ được sử dụng.

--addons-path <directories>

Danh sách các thư mục được phân tách bằng dấu phẩy trong đó các mô-đun được lưu trữ. Các thư mục này được quét để tìm mô-đun.

--limit-time-cpu <limit>

Ngăn không cho nhân viên sử dụng nhiều hơn <giới hạn> giây CPU cho mỗi yêu cầu.

--limit-time-real <limit>

Ngăn không cho nhân viên mất nhiều hơn <limit> giây để xử lý yêu cầu.

Mẹo

  • Các đối số --limit-time-cpu--limit-time-real có thể được sử dụng để ngăn nhân viên bị giết khi gỡ lỗi mã nguồn.

  • Bạn có thể gặp phải lỗi tương tự như AttributionError: mô-đun '<MODULE_NAME>' không thuộc tính '<$ATTRIBUTE'>. Trong trường hợp này, bạn có thể cần cài đặt lại mô-đun bằng $ pip install --upgrade --force-reinstall <MODULE_NAME>.
    Nếu lỗi này xảy ra với nhiều mô-đun, bạn có thể cần phải cài đặt lại tất cả các yêu cầu bằng $ pip install --upgrade --force-reinstall -r require.txt.
    Bạn cũng có thể xóa bộ đệm python để giải quyết vấn đề:
    $ cd $HOME/.local/lib/python3.8/site-packages/
    $ find -name '*.pyc' -type f -delete
    
  • Các đối số thường được sử dụng khác là:

    • -i: Cài đặt một số mô-đun trước khi chạy máy chủ (danh sách được phân tách bằng dấu phẩy). Điều này tương đương với việc truy cập Apps trong giao diện người dùng và cài đặt mô-đun từ đó.

    • -u: Cập nhật một số mô-đun trước khi chạy máy chủ (danh sách được phân tách bằng dấu phẩy). Điều này tương đương với việc truy cập Apps trong giao diện người dùng, chọn một mô-đun và nâng cấp nó từ đó.

Đăng nhập vào SoOn

Mở http://localhost:8069/ trên trình duyệt của bạn. Chúng tôi khuyên bạn nên sử dụng Chrome, Firefox hoặc bất kỳ trình duyệt nào khác trình duyệt với các công cụ phát triển.

Để đăng nhập với tư cách người dùng quản trị viên, hãy sử dụng thông tin đăng nhập sau:

  • email: quản trị viên

  • mật khẩu: quản trị viên

Kích hoạt chế độ nhà phát triển

The developer or debug mode is useful for training as it gives access to additional (advanced) tools. Enable the developer mode now. Choose the method that you prefer; they are all equivalent.

Công cụ bổ sung

Các lệnh Git hữu ích

Dưới đây là một số lệnh Git hữu ích cho công việc hàng ngày của bạn.

  • Chuyển nhánh:
    Khi bạn chuyển nhánh, cả hai kho lưu trữ (odoo và Enterprise) phải được đồng bộ hóa, tức là cả hai đều cần nằm trong cùng một nhánh.
    $ cd $HOME/src/odoo
    $ git switch 17.0
    
    $ cd $HOME/src/enterprise
    $ git switch 17.0
    
  • Tìm nạp và rebase:

    $ cd $HOME/src/odoo
    $ git fetch --all --prune
    $ git rebase --autostash odoo/17.0
    
    $ cd $HOME/src/enterprise
    $ git fetch --all --prune
    $ git rebase --autostash enterprise/17.0
    

Trình chỉnh sửa mã

Nếu bạn đang làm việc tại SoOn, nhiều đồng nghiệp của bạn đang sử dụng VSCode, VSCodium (tương đương với nguồn mở), ` PyCharm <https://www.jetbrains.com/pycharm/download/#section=linux>`_ hoặc Sublime Text. Tuy nhiên, bạn có thể tự do lựa chọn trình soạn thảo ưa thích của mình.

Điều quan trọng là phải cấu hình linters của bạn một cách chính xác. Việc sử dụng kẻ nói dối sẽ giúp bạn bằng cách hiển thị các cảnh báo hoặc lỗi về cú pháp và ngữ nghĩa. Mã nguồn SoOn cố gắng tôn trọng các tiêu chuẩn của Python và JavaScript, nhưng một số trong số đó có thể bị bỏ qua.

Đối với Python, chúng tôi sử dụng PEP8 với các tùy chọn này bị bỏ qua:

  • E501: dòng quá dài

  • E301: dự kiến có 1 dòng trống, tìm thấy 0

  • E302: dự kiến có 2 dòng trống, tìm thấy 1

Đối với JavaScript, chúng tôi sử dụng ESLint và bạn có thể tìm thấy ví dụ về tệp cấu hình tại đây.

Công cụ quản trị viên cho PostgreSQL

Bạn có thể quản lý cơ sở dữ liệu PostgreSQL của mình bằng dòng lệnh như đã trình bày trước đó hoặc sử dụng ứng dụng GUI chẳng hạn như pgAdmin hoặc DBeaver.

Để kết nối ứng dụng GUI với cơ sở dữ liệu của bạn, chúng tôi khuyên bạn nên kết nối bằng ổ cắm Unix.

  • Tên/địa chỉ máy chủ: /var/run/postgresql

  • Cổng: 5432

  • Tên người dùng: $USER

Gỡ lỗi Python

Khi gặp phải một lỗi hoặc cố gắng hiểu cách hoạt động của mã, chỉ cần in mọi thứ ra có thể mất nhiều thời gian, nhưng một trình gỡ lỗi thích hợp có thể tiết kiệm rất nhiều thời gian.

Bạn có thể sử dụng trình gỡ lỗi thư viện Python cổ điển (pdb, pudb <https://pypi.org/project/pudb/> _ hoặc ipdb), hoặc bạn có thể sử dụng trình gỡ lỗi của trình soạn thảo của mình.

Trong ví dụ sau, chúng tôi sử dụng ipdb, nhưng quy trình này tương tự với các thư viện khác.

  1. Cài đặt thư viện:

    pip install ipdb
    
  2. Đặt trình kích hoạt (điểm dừng):

    import ipdb; ipdb.set_trace()
    

    Example

    def copy(self, default=None):
        import ipdb; ipdb.set_trace()
        self.ensure_one()
        chosen_name = default.get('name') if default else ''
        new_name = chosen_name or _('%s (copy)') % self.name
        default = dict(default or {}, name=new_name)
        return super(Partner, self).copy(default)
    

Đây là danh sách các lệnh:

h(elp) [command]

In danh sách các lệnh có sẵn nếu không cung cấp đối số. Với một lệnh làm đối số, hãy in phần trợ giúp về lệnh đó.

pp expression

Giá trị của biểu thức được in đẹp bằng mô-đun pprint.

w(here)

In dấu vết ngăn xếp với khung gần đây nhất ở phía dưới.

d(own)

Di chuyển khung hiện tại xuống một cấp trong dấu vết ngăn xếp (sang khung mới hơn).

u(p)

Di chuyển khung hiện tại lên một cấp trong dấu vết ngăn xếp (sang khung cũ hơn).

n(ext)

Tiếp tục thực hiện cho đến khi đạt đến dòng tiếp theo trong hàm hiện tại hoặc nó trả về.

c(ontinue)

Tiếp tục thực hiện và chỉ dừng khi gặp điểm dừng.

s(tep)

Thực hiện dòng hiện tại. Dừng lại ở trường hợp đầu tiên có thể xảy ra (trong hàm được gọi hoặc ở dòng tiếp theo trong hàm hiện tại).

q(uit)

Thoát khỏi trình gỡ lỗi. Chương trình đang thực hiện bị hủy bỏ.