From 53c479b29504ab46cbc61662b81ba428aca2adc0 Mon Sep 17 00:00:00 2001
From: Jan Floyd Benedict <135410007+BennyCodes26@users.noreply.github.com>
Date: Wed, 11 Feb 2026 06:18:45 +0000
Subject: [PATCH 1/3] Here are the changes I made to do the Pre Assessment
Excercise.
---
addons_library/library_extensions/__init__.py | 3 ++
.../library_extensions/__manifest__.py | 27 ++++++++++++
.../library_extensions/models/__init__.py | 4 ++
.../library_extensions/models/library_book.py | 44 +++++++++++++++++++
.../models/library_book_category.py | 14 ++++++
.../security/ir.model.access.csv | 3 ++
.../views/library_book_category_views.xml | 18 ++++++++
.../views/library_book_views.xml | 26 +++++++++++
.../views/library_menus.xml | 9 ++++
config/odoo.conf | 1 +
10 files changed, 149 insertions(+)
create mode 100644 addons_library/library_extensions/__init__.py
create mode 100644 addons_library/library_extensions/__manifest__.py
create mode 100644 addons_library/library_extensions/models/__init__.py
create mode 100644 addons_library/library_extensions/models/library_book.py
create mode 100644 addons_library/library_extensions/models/library_book_category.py
create mode 100644 addons_library/library_extensions/security/ir.model.access.csv
create mode 100644 addons_library/library_extensions/views/library_book_category_views.xml
create mode 100644 addons_library/library_extensions/views/library_book_views.xml
create mode 100644 addons_library/library_extensions/views/library_menus.xml
diff --git a/addons_library/library_extensions/__init__.py b/addons_library/library_extensions/__init__.py
new file mode 100644
index 0000000..cde864b
--- /dev/null
+++ b/addons_library/library_extensions/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+from . import models
diff --git a/addons_library/library_extensions/__manifest__.py b/addons_library/library_extensions/__manifest__.py
new file mode 100644
index 0000000..711392b
--- /dev/null
+++ b/addons_library/library_extensions/__manifest__.py
@@ -0,0 +1,27 @@
+# -*- coding: utf-8 -*-
+{
+ "name": "Library Extensions", #Changed from Library
+ "version": "17.0.1.0",
+ "depends": [
+ "base",
+ "library"
+
+ ],
+ "external_dependencies": {},
+ "author": "Odev Solutions",
+ "website": "https://www.odevsolutions.com",
+ "summary": """Library""",
+ "description": """
+ Library
+ """,
+ "category": "Extra Tools",
+ "data": [
+ "security/ir.model.access.csv",
+ "views/library_book_category_views.xml", # Added
+ "views/library_book_views.xml",
+ "views/library_menus.xml",
+
+ ],
+ "installable": True,
+ "application": False,
+}
diff --git a/addons_library/library_extensions/models/__init__.py b/addons_library/library_extensions/models/__init__.py
new file mode 100644
index 0000000..07a8257
--- /dev/null
+++ b/addons_library/library_extensions/models/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+
+from . import library_book
+from . import library_book_category
\ No newline at end of file
diff --git a/addons_library/library_extensions/models/library_book.py b/addons_library/library_extensions/models/library_book.py
new file mode 100644
index 0000000..78d0ae2
--- /dev/null
+++ b/addons_library/library_extensions/models/library_book.py
@@ -0,0 +1,44 @@
+# -*- coding: utf-8 -*-
+
+from odoo import models, fields, api
+
+
+class LibraryBook(models.Model):
+ _inherit = "library.book"
+
+ # Task 2: Added Author field
+ author_id = fields.Many2one(
+ 'res.partner',
+ string="Author",
+ required=True
+ )
+
+ # Task 3: Added Category field
+ category_ids = fields.Many2many(
+ 'library.book.category',
+ string="Categories"
+ )
+
+ ######################
+ # Fields declaration #
+ ######################
+
+ ##############################
+ # Compute and search methods #
+ ##############################
+
+ ############################
+ # Constrains and onchanges #
+ ############################
+
+ #########################
+ # CRUD method overrides #
+ #########################
+
+ ##################
+ # Action methods #
+ ##################
+
+ ####################
+ # Business methods #
+ ####################
diff --git a/addons_library/library_extensions/models/library_book_category.py b/addons_library/library_extensions/models/library_book_category.py
new file mode 100644
index 0000000..356271c
--- /dev/null
+++ b/addons_library/library_extensions/models/library_book_category.py
@@ -0,0 +1,14 @@
+# -*- coding: utf-8 -*-
+from odoo import models, fields
+
+class LibraryBookCategory(models.Model):
+ _name = "library.book.category"
+ _description = "Book Category"
+
+ name = fields.Char(string="Name", required=True)
+ # Added to fix error when adding category for adding a book entry.
+ color = fields.Integer(string="Color Index")
+
+ _sql_constraints = [
+ ('name_unique', 'unique(name)', 'The category name must be unique!')
+ ]
\ No newline at end of file
diff --git a/addons_library/library_extensions/security/ir.model.access.csv b/addons_library/library_extensions/security/ir.model.access.csv
new file mode 100644
index 0000000..ddf2c71
--- /dev/null
+++ b/addons_library/library_extensions/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_admin,access.library.book.admin,model_library_book,base.group_system,1,1,1,1
+access_library_book_category_admin,access.library.book.category.admin,model_library_book_category,base.group_system,1,1,1,1
\ No newline at end of file
diff --git a/addons_library/library_extensions/views/library_book_category_views.xml b/addons_library/library_extensions/views/library_book_category_views.xml
new file mode 100644
index 0000000..b28f3b3
--- /dev/null
+++ b/addons_library/library_extensions/views/library_book_category_views.xml
@@ -0,0 +1,18 @@
+
+
+
+ library.book.category.view.tree
+ library.book.category
+
+
+
+
+
+
+
+
+ Book Categories
+ library.book.category
+ tree,form
+
+
\ No newline at end of file
diff --git a/addons_library/library_extensions/views/library_book_views.xml b/addons_library/library_extensions/views/library_book_views.xml
new file mode 100644
index 0000000..503992d
--- /dev/null
+++ b/addons_library/library_extensions/views/library_book_views.xml
@@ -0,0 +1,26 @@
+
+
+
+ library.book.view.tree.inherit
+ library.book
+
+
+
+
+
+
+
+
+
+
+ library.book.view.form.inherit
+ library.book
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/addons_library/library_extensions/views/library_menus.xml b/addons_library/library_extensions/views/library_menus.xml
new file mode 100644
index 0000000..789f453
--- /dev/null
+++ b/addons_library/library_extensions/views/library_menus.xml
@@ -0,0 +1,9 @@
+
+
+
+
\ No newline at end of file
diff --git a/config/odoo.conf b/config/odoo.conf
index f521d20..584d9f1 100644
--- a/config/odoo.conf
+++ b/config/odoo.conf
@@ -2,4 +2,5 @@
addons_path = /mnt/addons_library
data_dir = /var/lib/odoo
proxy_mode = True
+admin_passwd = $pbkdf2-sha512$600000$qzVGiBFCKGXs/d8bw7hXSg$UGyJ64Y/mFFkfgR3anPkDmOeX5CSoOHSogy5dEEnUz96zpW5q34gTPr21/SAka/5XFPpTlfpdo0E9VWqXjjA4w
From e117d4bb1661dad977297f58df54da448292e44c Mon Sep 17 00:00:00 2001
From: Jan Floyd Benedict <135410007+BennyCodes26@users.noreply.github.com>
Date: Thu, 12 Feb 2026 06:58:22 +0000
Subject: [PATCH 2/3] Fix: implemented random default color for categories
---
.../library_extensions/models/library_book_category.py | 5 ++++-
.../library_extensions/views/library_book_views.xml | 2 +-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/addons_library/library_extensions/models/library_book_category.py b/addons_library/library_extensions/models/library_book_category.py
index 356271c..9d6330a 100644
--- a/addons_library/library_extensions/models/library_book_category.py
+++ b/addons_library/library_extensions/models/library_book_category.py
@@ -7,7 +7,10 @@ class LibraryBookCategory(models.Model):
name = fields.Char(string="Name", required=True)
# Added to fix error when adding category for adding a book entry.
- color = fields.Integer(string="Color Index")
+ color = fields.Integer(
+ string="Color Index",
+ default=lambda self: random.randint(1, 11)
+ )
_sql_constraints = [
('name_unique', 'unique(name)', 'The category name must be unique!')
diff --git a/addons_library/library_extensions/views/library_book_views.xml b/addons_library/library_extensions/views/library_book_views.xml
index 503992d..ebef440 100644
--- a/addons_library/library_extensions/views/library_book_views.xml
+++ b/addons_library/library_extensions/views/library_book_views.xml
@@ -7,7 +7,7 @@
-
+
From a9b4608d016f3c5ccbbfe65cbd48bcae79a78163 Mon Sep 17 00:00:00 2001
From: Jan Floyd Benedict <135410007+BennyCodes26@users.noreply.github.com>
Date: Fri, 13 Feb 2026 04:36:48 +0000
Subject: [PATCH 3/3] added import random in the library_book_category.py to
fix the error when creating a new book category.
---
.../library_extensions/models/library_book_category.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/addons_library/library_extensions/models/library_book_category.py b/addons_library/library_extensions/models/library_book_category.py
index 9d6330a..8c6e0ff 100644
--- a/addons_library/library_extensions/models/library_book_category.py
+++ b/addons_library/library_extensions/models/library_book_category.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+import random # <--- #Newly Added Import
from odoo import models, fields
class LibraryBookCategory(models.Model):