mirror of
https://github.com/zsh-users/zsh-autosuggestions.git
synced 2025-04-17 11:35:31 +08:00
[ADD] 0_openacademy: add new m
This commit is contained in:
parent
ae315ded4d
commit
cb98f817c5
11
.project
Normal file
11
.project
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>zsh-autosuggestions</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
4
0_openacademy/__init__.py
Normal file
4
0_openacademy/__init__.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# from . import controllers
|
||||||
|
from . import models
|
104
0_openacademy/__manifest__.py
Normal file
104
0_openacademy/__manifest__.py
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
{
|
||||||
|
'name': "0_openacademy",
|
||||||
|
'name_vi_VN': "",
|
||||||
|
|
||||||
|
'summary': """
|
||||||
|
Short (1 phrase/line) summary of the module's purpose, used as
|
||||||
|
subtitle on modules listing or apps.openerp.com""",
|
||||||
|
|
||||||
|
'summary_vi_VN': """
|
||||||
|
Mô tả ngắn gọn bằng tiếng Việt (1 câu, 1 dòng) về mục đích của module
|
||||||
|
""",
|
||||||
|
|
||||||
|
'description': """
|
||||||
|
What it does
|
||||||
|
============
|
||||||
|
Long description of module's purpose
|
||||||
|
|
||||||
|
Key Features
|
||||||
|
============
|
||||||
|
1. Feature 1
|
||||||
|
|
||||||
|
* Sub-Feature 1
|
||||||
|
* Sub-Feature 2
|
||||||
|
|
||||||
|
* Sub-sub-feature 1
|
||||||
|
* Sub-sub-feature 2
|
||||||
|
|
||||||
|
2. Feature 2
|
||||||
|
|
||||||
|
* Sub-Feature 1
|
||||||
|
* Sub-Feature 2
|
||||||
|
|
||||||
|
Editions Supported
|
||||||
|
==================
|
||||||
|
1. Community Edition
|
||||||
|
2. Enterprise Edition
|
||||||
|
|
||||||
|
""",
|
||||||
|
|
||||||
|
'description_vi_VN': """
|
||||||
|
Ứng dụng này làm gì
|
||||||
|
===================
|
||||||
|
Mô tả chi tiết về module
|
||||||
|
|
||||||
|
Tính năng chính
|
||||||
|
===============
|
||||||
|
1. Tính năng 1
|
||||||
|
|
||||||
|
* Tính năng Phụ 1
|
||||||
|
* Tính năng Phụ 2
|
||||||
|
|
||||||
|
* Tính năng Phụ Chi tiết 1
|
||||||
|
* Tính năng Phụ Chi tiết 2
|
||||||
|
|
||||||
|
2. Tính năng 2
|
||||||
|
|
||||||
|
* Tính năng Phụ 1
|
||||||
|
* Tính năng Phụ 2
|
||||||
|
|
||||||
|
Ấn bản được Hỗ trợ
|
||||||
|
==================
|
||||||
|
1. Ấn bản Community
|
||||||
|
2. Ấn bản Enterprise
|
||||||
|
|
||||||
|
""",
|
||||||
|
|
||||||
|
'author': "Viindoo",
|
||||||
|
'website': "https://viindoo.com",
|
||||||
|
'live_test_url': "https://v13demo-int.erponline.vn",
|
||||||
|
'support': "apps.support@viindoo.com",
|
||||||
|
|
||||||
|
# Categories can be used to filter modules in modules listing
|
||||||
|
# Check https://github.com/tvtma/odoo/blob/13.0/odoo/addons/base/data/ir_module_category_data.xml
|
||||||
|
# for the full list
|
||||||
|
'category': 'Uncategorized',
|
||||||
|
'version': '0.1',
|
||||||
|
|
||||||
|
# any module necessary for this one to work correctly
|
||||||
|
'depends': ['base'],
|
||||||
|
|
||||||
|
# always loaded
|
||||||
|
'data': [
|
||||||
|
'security/ir.model.access.csv',
|
||||||
|
'data/openacademy_course_data.xml',
|
||||||
|
'views/openacademy_course_view.xml',
|
||||||
|
'views/openacademy_class_view.xml',
|
||||||
|
'views/openacademy_class_add_view.xml',
|
||||||
|
# 'views/templates.xml',
|
||||||
|
],
|
||||||
|
# only loaded in demonstration mode
|
||||||
|
'demo': [
|
||||||
|
# 'demo/demo.xml',
|
||||||
|
],
|
||||||
|
'images' : [
|
||||||
|
# 'static/description/main_screenshot.png'
|
||||||
|
],
|
||||||
|
'installable': True,
|
||||||
|
'application': False,
|
||||||
|
'auto_install': False,
|
||||||
|
'price': 99.9,
|
||||||
|
'currency': 'EUR',
|
||||||
|
'license': 'OPL-1',
|
||||||
|
}
|
3
0_openacademy/controllers/__init__.py
Normal file
3
0_openacademy/controllers/__init__.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from . import controllers
|
21
0_openacademy/controllers/controllers.py
Normal file
21
0_openacademy/controllers/controllers.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# from odoo import http
|
||||||
|
|
||||||
|
|
||||||
|
# class 0Openacademy(http.Controller):
|
||||||
|
# @http.route('/0_openacademy/0_openacademy/', auth='public')
|
||||||
|
# def index(self, **kw):
|
||||||
|
# return "Hello, world"
|
||||||
|
|
||||||
|
# @http.route('/0_openacademy/0_openacademy/objects/', auth='public')
|
||||||
|
# def list(self, **kw):
|
||||||
|
# return http.request.render('0_openacademy.listing', {
|
||||||
|
# 'root': '/0_openacademy/0_openacademy',
|
||||||
|
# 'objects': http.request.env['0_openacademy.0_openacademy'].search([]),
|
||||||
|
# })
|
||||||
|
|
||||||
|
# @http.route('/0_openacademy/0_openacademy/objects/<model("0_openacademy.0_openacademy"):obj>/', auth='public')
|
||||||
|
# def object(self, obj, **kw):
|
||||||
|
# return http.request.render('0_openacademy.object', {
|
||||||
|
# 'object': obj
|
||||||
|
# })
|
14
0_openacademy/data/openacademy_course_data.xml
Normal file
14
0_openacademy/data/openacademy_course_data.xml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<odoo noupdate="0">
|
||||||
|
<record id="course0" model="openacademy.course">
|
||||||
|
<field name="name">course 0</field>
|
||||||
|
<field name="description">course 0 descripton</field>
|
||||||
|
</record>
|
||||||
|
<record id="course1" model="openacademy.course">
|
||||||
|
<field name="name">course 1</field>
|
||||||
|
<field name="description">course 1 descripton</field>
|
||||||
|
</record>
|
||||||
|
<record id="course2" model="openacademy.course">
|
||||||
|
<field name="name">course 2</field>
|
||||||
|
<field name="description">course 2 descripton</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
30
0_openacademy/demo/demo.xml
Normal file
30
0_openacademy/demo/demo.xml
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<odoo>
|
||||||
|
<data>
|
||||||
|
<!--
|
||||||
|
<record id="object0" model="0_openacademy.0_openacademy">
|
||||||
|
<field name="name">Object 0</field>
|
||||||
|
<field name="value">0</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="object1" model="0_openacademy.0_openacademy">
|
||||||
|
<field name="name">Object 1</field>
|
||||||
|
<field name="value">10</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="object2" model="0_openacademy.0_openacademy">
|
||||||
|
<field name="name">Object 2</field>
|
||||||
|
<field name="value">20</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="object3" model="0_openacademy.0_openacademy">
|
||||||
|
<field name="name">Object 3</field>
|
||||||
|
<field name="value">30</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="object4" model="0_openacademy.0_openacademy">
|
||||||
|
<field name="name">Object 4</field>
|
||||||
|
<field name="value">40</field>
|
||||||
|
</record>
|
||||||
|
-->
|
||||||
|
</data>
|
||||||
|
</odoo>
|
4
0_openacademy/models/__init__.py
Normal file
4
0_openacademy/models/__init__.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from . import openacademy_course
|
||||||
|
from . import openacademy_class
|
19
0_openacademy/models/openacademy_class.py
Normal file
19
0_openacademy/models/openacademy_class.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
from odoo import models, fields
|
||||||
|
|
||||||
|
class OpenacademyClass(models.Model):
|
||||||
|
_name="openacademy.class"
|
||||||
|
_description = "openacademy class"
|
||||||
|
|
||||||
|
name = fields.Char(string="Class Name",required=True)
|
||||||
|
description = fields.Text()
|
||||||
|
course_id = fields.Many2one('openacademy.course',string="course id") #string course id hiển thị trên giao diện
|
||||||
|
|
||||||
|
class class_add(models.Model):
|
||||||
|
_name="openacademy.class"
|
||||||
|
_inherit = "openacademy.class"
|
||||||
|
room = fields.Char(string="phòng học")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
10
0_openacademy/models/openacademy_course.py
Normal file
10
0_openacademy/models/openacademy_course.py
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
from odoo import models, fields
|
||||||
|
|
||||||
|
class Course(models.Model):
|
||||||
|
_name = 'openacademy.course' #tên trên local là openacademy_course
|
||||||
|
_description = "OpenAcademy Courses"
|
||||||
|
|
||||||
|
name = fields.Char(string="Title", required=True)
|
||||||
|
description = fields.Text()
|
||||||
|
class_ids = fields.One2many("openacademy.class","course_id",string="Class")
|
||||||
|
demo = fields.One2many
|
4
0_openacademy/security/ir.model.access.csv
Normal file
4
0_openacademy/security/ir.model.access.csv
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
|
id1,test,model_openacademy_course,base.group_user,1,1,1,1
|
||||||
|
id2,test2,model_openacademy_class,base.group_user,1,1,1,1
|
||||||
|
|
|
27
0_openacademy/views/openacademy_class_add_view.xml
Normal file
27
0_openacademy/views/openacademy_class_add_view.xml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<odoo>
|
||||||
|
<data>
|
||||||
|
<record id="class_add_tree_view" model="ir.ui.view">
|
||||||
|
<field name="name">class_course_tree</field>
|
||||||
|
<field name="model">openacademy.class</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree>
|
||||||
|
<field name="room" />
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
<!-- action window -->
|
||||||
|
<record id="class_add_action" model="ir.actions.act_window">
|
||||||
|
<field name="name">Class add</field>
|
||||||
|
<field name="res_model">openacademy.class</field>
|
||||||
|
<field name="view_mode">tree,form</field>
|
||||||
|
<field name="help" type="html">
|
||||||
|
<p class="o_view_nocontent_smiling_face">Create the add room class in course
|
||||||
|
</p>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<menuitem id="openacademy_class_add_menu" name="add_class" parent = "openacademy_menu"
|
||||||
|
action="class_add_action"/>
|
||||||
|
|
||||||
|
</data>
|
||||||
|
</odoo>
|
34
0_openacademy/views/openacademy_class_view.xml
Normal file
34
0_openacademy/views/openacademy_class_view.xml
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<odoo>
|
||||||
|
<data>
|
||||||
|
<!-- explicit list view definition: định nghĩa chế độ xem danh sách rõ ràng -->
|
||||||
|
<record id="class_course_tree_view" model="ir.ui.view">
|
||||||
|
<field name="name">class_course_tree</field>
|
||||||
|
<field name="model">openacademy.class</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree>
|
||||||
|
<field name="name" />
|
||||||
|
<field name ="description"/>
|
||||||
|
<field name="room"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- actions opening views on models : tập hợp tất cả các chế độ view -->
|
||||||
|
<!--
|
||||||
|
The following tag is an action definition for a "window action",
|
||||||
|
that is an action opening a view or a set of views, hiển thị phần view bảng
|
||||||
|
-->
|
||||||
|
<record id="class_list_action" model="ir.actions.act_window">
|
||||||
|
<field name="name">Class</field>
|
||||||
|
<field name="res_model">openacademy.class</field>
|
||||||
|
<field name="view_mode">tree,form</field>
|
||||||
|
<field name="help" type="html">
|
||||||
|
<p class="o_view_nocontent_smiling_face">Create the first class course
|
||||||
|
</p>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<menuitem id="openacademy_class_menu" name="Class" parent = "openacademy_menu"
|
||||||
|
action="class_list_action"/>
|
||||||
|
</data>
|
||||||
|
</odoo>
|
74
0_openacademy/views/openacademy_course_view.xml
Normal file
74
0_openacademy/views/openacademy_course_view.xml
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
<odoo>
|
||||||
|
<data>
|
||||||
|
<!-- explicit list view definition: định nghĩa chế độ xem danh sách rõ ràng -->
|
||||||
|
<record id="course_tree_view" model="ir.ui.view">
|
||||||
|
<field name="name">course_tree</field>
|
||||||
|
<field name="model">openacademy.course</field> <!-- phải trùng name model -->
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree>
|
||||||
|
<field name="name" />
|
||||||
|
<field name="description" />
|
||||||
|
<field name="class_ids"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
<!-- form view -->
|
||||||
|
<!-- <record model="ir.ui.view" id="course_form_view">
|
||||||
|
<field name="name">course_form</field>
|
||||||
|
<field name="model">openacademy.course</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form string="Course Form">
|
||||||
|
<sheet>
|
||||||
|
<group>
|
||||||
|
<field name="name" />
|
||||||
|
</group>
|
||||||
|
<notebook>
|
||||||
|
<page string="Description">
|
||||||
|
<field name="description" />
|
||||||
|
</page>
|
||||||
|
<page string="About">
|
||||||
|
This is an example of notebooks
|
||||||
|
</page>
|
||||||
|
</notebook>
|
||||||
|
</sheet>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record> -->
|
||||||
|
<!-- search view -->
|
||||||
|
<record id="course_search_view" model="ir.ui.view">
|
||||||
|
<field name="name">course_search</field>
|
||||||
|
<field name="model">openacademy.course</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<search>
|
||||||
|
<field name="name" />
|
||||||
|
<field name="description" />
|
||||||
|
</search>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- actions opening views on models : tập hợp tất cả các chế độ view -->
|
||||||
|
<!--
|
||||||
|
The following tag is an action definition for a "window action",
|
||||||
|
that is an action opening a view or a set of views, hiển thị phần view bảng
|
||||||
|
-->
|
||||||
|
<record id="course_list_action" model="ir.actions.act_window">
|
||||||
|
<field name="name">Courses</field>
|
||||||
|
<field name="res_model">openacademy.course</field>
|
||||||
|
<field name="view_mode">tree,form</field>
|
||||||
|
<field name="help" type="html">
|
||||||
|
<p class="o_view_nocontent_smiling_face">Create the first courses
|
||||||
|
</p>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- top level menu: no parent -->
|
||||||
|
<menuitem id="openacademy_menu" name="Open Academy"/>
|
||||||
|
|
||||||
|
<!-- the following menuitem should appear *after*
|
||||||
|
its parent openacademy_menu and *after* its
|
||||||
|
action course_list_action -->
|
||||||
|
<menuitem id="courses_menu_1" name="Courses" parent="openacademy_menu" />
|
||||||
|
<menuitem id="course_menu_sub_1" name="Môn học" parent="courses_menu_1" action="course_list_action"/>
|
||||||
|
<menuitem id="course_menu_sub_2" name="Năng khiếu" parent="courses_menu_1" action="course_list_action"/>
|
||||||
|
</data>
|
||||||
|
</odoo>
|
24
0_openacademy/views/templates.xml
Normal file
24
0_openacademy/views/templates.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<odoo>
|
||||||
|
<data>
|
||||||
|
<!--
|
||||||
|
<template id="listing">
|
||||||
|
<ul>
|
||||||
|
<li t-foreach="objects" t-as="object">
|
||||||
|
<a t-attf-href="#{ root }/objects/#{ object.id }">
|
||||||
|
<t t-esc="object.display_name"/>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</template>
|
||||||
|
<template id="object">
|
||||||
|
<h1><t t-esc="object.display_name"/></h1>
|
||||||
|
<dl>
|
||||||
|
<t t-foreach="object._fields" t-as="field">
|
||||||
|
<dt><t t-esc="field"/></dt>
|
||||||
|
<dd><t t-esc="object[field]"/></dd>
|
||||||
|
</t>
|
||||||
|
</dl>
|
||||||
|
</template>
|
||||||
|
-->
|
||||||
|
</data>
|
||||||
|
</odoo>
|
Loading…
Reference in New Issue
Block a user