From f340de4a96edecad99dd45a433a7b6ab3335314b Mon Sep 17 00:00:00 2001 From: XuanHuyen Date: Sat, 8 Mar 2025 01:26:56 +0700 Subject: [PATCH] module library --- library/__init__.py | 4 ++ library/__manifest__.py | 38 +++++++++++++++++++ library/controllers/__init__.py | 3 ++ library/controllers/controllers.py | 22 +++++++++++ library/demo/demo.xml | 30 +++++++++++++++ library/models/__init__.py | 4 ++ library/models/library_book.py | 25 +++++++++++++ library/models/library_member.py | 10 +++++ library/security/ir.model.access.csv | 3 ++ library/views/library_book_views.xml | 52 ++++++++++++++++++++++++++ library/views/library_member_views.xml | 41 ++++++++++++++++++++ library/views/library_menus.xml | 22 +++++++++++ 12 files changed, 254 insertions(+) create mode 100644 library/__init__.py create mode 100644 library/__manifest__.py create mode 100644 library/controllers/__init__.py create mode 100644 library/controllers/controllers.py create mode 100644 library/demo/demo.xml create mode 100644 library/models/__init__.py create mode 100644 library/models/library_book.py create mode 100644 library/models/library_member.py create mode 100644 library/security/ir.model.access.csv create mode 100644 library/views/library_book_views.xml create mode 100644 library/views/library_member_views.xml create mode 100644 library/views/library_menus.xml diff --git a/library/__init__.py b/library/__init__.py new file mode 100644 index 0000000..aa4d0fd --- /dev/null +++ b/library/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import controllers +from . import models diff --git a/library/__manifest__.py b/library/__manifest__.py new file mode 100644 index 0000000..8498819 --- /dev/null +++ b/library/__manifest__.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +{ + 'name': "Library Manage", + + 'summary': "Library module allows users to manage libraries", + + 'description': """ + Library module allows users to manage libraries + """, + + 'author': "NXHuyen", + 'website': "https://www.yourcompany.com", + + # Categories can be used to filter modules in modules listing + # Check https://github.com/odoo/odoo/blob/15.0/odoo/addons/base/data/ir_module_category_data.xml + # for the full list + 'category': 'Manage', + 'version': '0.1', + + # any module necessary for this one to work correctly + 'depends': ['base'], + + # always loaded + 'data': [ + 'security/ir.model.access.csv', + 'views/library_book_views.xml', + 'views/library_member_views.xml', + 'views/library_menus.xml' + ], + # only loaded in demonstration mode + 'demo': [ + 'demo/demo.xml', + ], + 'installable': True, + 'application': True, + 'auto_install': False, +} + diff --git a/library/controllers/__init__.py b/library/controllers/__init__.py new file mode 100644 index 0000000..b0f26a9 --- /dev/null +++ b/library/controllers/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import controllers diff --git a/library/controllers/controllers.py b/library/controllers/controllers.py new file mode 100644 index 0000000..86e40ad --- /dev/null +++ b/library/controllers/controllers.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# from odoo import http + + +# class Library(http.Controller): +# @http.route('/library/library', auth='public') +# def index(self, **kw): +# return "Hello, world" + +# @http.route('/library/library/objects', auth='public') +# def list(self, **kw): +# return http.request.render('library.listing', { +# 'root': '/library/library', +# 'objects': http.request.env['library.library'].search([]), +# }) + +# @http.route('/library/library/objects/', auth='public') +# def object(self, obj, **kw): +# return http.request.render('library.object', { +# 'object': obj +# }) + diff --git a/library/demo/demo.xml b/library/demo/demo.xml new file mode 100644 index 0000000..ea3057f --- /dev/null +++ b/library/demo/demo.xml @@ -0,0 +1,30 @@ + + + + + diff --git a/library/models/__init__.py b/library/models/__init__.py new file mode 100644 index 0000000..db40a33 --- /dev/null +++ b/library/models/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import library_book +from . import library_member diff --git a/library/models/library_book.py b/library/models/library_book.py new file mode 100644 index 0000000..4f084f7 --- /dev/null +++ b/library/models/library_book.py @@ -0,0 +1,25 @@ +from odoo import fields, models +from odoo.exceptions import UserError + +class LibraryBook(models.Model): + _name = "library.book" + _description = "Library Book" + + name = fields.Char(string="Tên sách", required=True) + author = fields.Char(string="Tác giả") + published_date = fields.Date(string="Ngày xuất bản") + isbn = fields.Char(string="Số ISBN") + price = fields.Float(string="Giá sách") + + borrowed_by = fields.Many2one("library.member", string="Được mượn bởi") + + def action_mark_as_borrowed(self): + if self.borrowed_by: + raise UserError("Sách này đã được mượn rồi!") + return { + 'name': 'Select Member', + 'type': 'ir.actions.act_window', + 'res_model': 'library.member', + 'view_mode': 'form', + 'target': 'new' + } \ No newline at end of file diff --git a/library/models/library_member.py b/library/models/library_member.py new file mode 100644 index 0000000..14ac5a3 --- /dev/null +++ b/library/models/library_member.py @@ -0,0 +1,10 @@ +from odoo import fields, models + +class LibraryMember(models.Model): + _name = "library.member" + _description = "Library Member" + + name = fields.Char(string="Tên thành viên") + email = fields.Char(string="Email", required=True, unique=True) + phone = fields.Char(string="Số điện thoại") + borrowed_books_ids = fields.One2many("library.book", "borrowed_by", string="Danh sách sách đã mượn") diff --git a/library/security/ir.model.access.csv b/library/security/ir.model.access.csv new file mode 100644 index 0000000..f77952b --- /dev/null +++ b/library/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_library_book,library.book,model_library_book,base.group_user,1,1,1,1 +access_library_member,library.member,model_library_member,base.group_user,1,1,1,1 diff --git a/library/views/library_book_views.xml b/library/views/library_book_views.xml new file mode 100644 index 0000000..bcecab0 --- /dev/null +++ b/library/views/library_book_views.xml @@ -0,0 +1,52 @@ + + + + + + library.book.list + library.book + + + + + + + + + + + + + library.book.form + library.book + +
+ + + + + + + + + + + + + +
+
+
+
+
+
+ + + Action Library Book + library.book + list,form + + +
\ No newline at end of file diff --git a/library/views/library_member_views.xml b/library/views/library_member_views.xml new file mode 100644 index 0000000..b026bbf --- /dev/null +++ b/library/views/library_member_views.xml @@ -0,0 +1,41 @@ + + + + + library.member.form + library.member + +
+ + + + + + + + + + +
+
+
+ + + library.member.list + library.member + + + + + + + + + + + Action Library Members + library.member + list,form + + +
\ No newline at end of file diff --git a/library/views/library_menus.xml b/library/views/library_menus.xml new file mode 100644 index 0000000..f4c643e --- /dev/null +++ b/library/views/library_menus.xml @@ -0,0 +1,22 @@ + + + + + + + + + \ No newline at end of file