浏览代码

[FIX] 更新.gitignore 并移除已提交的自动生成文件

longyuan 1 月之前
父节点
当前提交
540d36a132

+ 35 - 1
.gitignore

@@ -9,7 +9,6 @@ __pycache__/
 
 # Distribution / packaging
 .Python
-env/
 build/
 develop-eggs/
 dist/
@@ -58,3 +57,38 @@ docs/_build/
 # PyBuilder
 target/
 
+# ---> Odoo
+# Odoo specific files and directories
+*.log
+.DS_Store
+.filepart
+*.pyc
+*.pyo
+*.pyd
+.pytest_cache/
+
+# Database and session files
+*.db
+*.dump
+*.sql
+
+# IDE and editor files
+.vscode/
+.idea/
+*.swp
+*.swo
+*~
+
+# Environment files
+.env
+.venv/
+venv/
+
+# Temporary files
+tmp/
+temp/
+
+# Windows system files
+*Zone.Identifier
+thumbs.db
+*.tmp

+ 0 - 3
.idea/.gitignore

@@ -1,3 +0,0 @@
-# 默认忽略的文件
-/shelf/
-/workspace.xml

+ 0 - 6
.idea/MarsCodeWorkspaceAppSettings.xml

@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="com.codeverse.userSettings.MarscodeWorkspaceAppSettingsState">
-    <option name="ckgOperationStatus" value="SUCCESS" />
-  </component>
-</project>

+ 0 - 6
.idea/inspectionProfiles/profiles_settings.xml

@@ -1,6 +0,0 @@
-<component name="InspectionProjectProfileManager">
-  <settings>
-    <option name="USE_PROJECT_PROFILE" value="false" />
-    <version value="1.0" />
-  </settings>
-</component>

+ 0 - 7
.idea/misc.xml

@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="Black">
-    <option name="sdkName" value="Python 3.13" />
-  </component>
-  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.13" project-jdk-type="Python SDK" />
-</project>

+ 0 - 8
.idea/modules.xml

@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectModuleManager">
-    <modules>
-      <module fileurl="file://$PROJECT_DIR$/.idea/my_hostel.iml" filepath="$PROJECT_DIR$/.idea/my_hostel.iml" />
-    </modules>
-  </component>
-</project>

+ 0 - 8
.idea/my_hostel.iml

@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="PYTHON_MODULE" version="4">
-  <component name="NewModuleRootManager">
-    <content url="file://$MODULE_DIR$" />
-    <orderEntry type="jdk" jdkName="Python 3.13" jdkType="Python SDK" />
-    <orderEntry type="sourceFolder" forTests="false" />
-  </component>
-</module>

+ 0 - 7
.idea/vcs.xml

@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="VcsDirectoryMappings">
-    <mapping directory="$PROJECT_DIR$" vcs="Git" />
-    <mapping directory="$PROJECT_DIR$/../../odoo/.github" vcs="Git" />
-  </component>
-</project>

+ 2 - 1
LICENSE

@@ -1,5 +1,6 @@
 MIT License
-Copyright (c) <year> <copyright holders>
+
+Copyright (c) 2025 admin1
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 

+ 16 - 6
README.md

@@ -1,22 +1,28 @@
-# Hostel Management Module
+# 宿舍管理模块
 
 这是一个Odoo模块,用于管理学校宿舍。
 
 ## 功能特点
 
 - 宿舍信息管理
-- 宿舍房间分配
-- 住宿学生管理
+- 宿舍地址信息管理
+- 宿舍联系信息管理
 
 ## 安装
 
 1. 将此模块复制到Odoo的addons目录
 2. 在Odoo中更新应用列表
-3. 安装"Hostel Management"模块
+3. 安装"宿舍管理"模块
 
 ## 使用说明
 
-安装后,可以在Odoo中找到"Hostel Management"菜单,进行宿舍相关操作。
+安装后,可以在Odoo中找到"宿舍管理"菜单,点击"宿舍列表"进行宿舍相关操作。
+
+## 配置
+
+该模块包含以下用户组:
+- 宿舍管理员: 完全访问权限
+- 宿舍用户: 只读权限
 
 ## 版本
 
@@ -24,4 +30,8 @@ Odoo 17.0
 
 ## 作者
 
-admin1
+admin1
+
+## 许可证
+
+MIT License

+ 5 - 6
__manifest__.py

@@ -1,7 +1,7 @@
 {
-    "name": "Hostel_Management",
-    "summary": "manage hostel easily",
-    "description": "高效管理学校内的整个酒店",
+    "name": "宿舍管理",
+    "summary": "轻松管理宿舍",
+    "description": "高效管理学校内的宿舍",
     "author": "admin1",
     "website": "http://localhost:127.0.0.1:8069?debug=1",
     "category": "Uncategorized",
@@ -9,11 +9,10 @@
     "depends": ["base"],
     "images": ["static/description/output.png"],
     "data": [
-        #"security/ir.model.access.csv",
-        "security/hostel_security.xml",
+        "security/res.groups.xml",
         "security/ir.model.access.csv",
+        "views/parent.menus.xml",
         "views/hostel.xml",
-        #"demo/demo.xml"
     ],
     "assets": {
         "web.assets_backend": [

二进制
__pycache__/__init__.cpython-312.pyc


二进制
controllers/__pycache__/__init__.cpython-312.pyc


+ 4 - 0
data/data.xml

@@ -0,0 +1,4 @@
+<record forcerewrite="True" id="hostel.hostel_view_form" model="ir.ui.view">
+<field name="name">Rating Value</field>
+<field name="digits">3</field>
+</record>

二进制
models/__pycache__/__init__.cpython-312.pyc


二进制
models/__pycache__/hostel.cpython-312.pyc


+ 28 - 11
models/hostel.py

@@ -7,19 +7,36 @@ class Hostel(models.Model):
     _order = "id desc, name"
     _rec_name = 'hostel_code'
     _rec_names_search = ["name", "hostel_code"]
+    currency_id = fields.Many2one('res.currency', string='Currency')
+
     # _table = 'hostel_hostel'
     
-    name = fields.Char(string='Hostel name', required=True)
+    name = fields.Char(string='宿舍名称', required=True)
     hostel_code = fields.Char(string='代码', required=True)
-    street = fields.Char('Street')
-    street2 = fields.Char('Street2')
-    city = fields.Char('City')
-    zip = fields.Char('ZIP')
-    state_id = fields.Many2one('res.country.state', string='State')
-    country_id = fields.Many2one('res.country', string='Country')
-    phone = fields.Char('Phone')
-    mobile = fields.Char('Mobile')
-    email = fields.Char('Email')
+    street = fields.Char('街道')
+    street2 = fields.Char('街道2')
+    city = fields.Char('城市')
+    zip = fields.Char('邮编')
+    state_id = fields.Many2one('res.country.state', string='省份')
+    country_id = fields.Many2one('res.country', string='国家')
+    phone = fields.Char('电话')
+    mobile = fields.Char('手机')
+    email = fields.Char('邮箱')
+    hostel_floors = fields.Integer(string="楼层")
+    image = fields.Binary("宿舍图片")
+    activate = fields.Boolean(string="激活", default=True, help="激活 / 停用宿舍记录")
+    type = fields.Selection(
+        string="类型",
+        selection=[("男性", "男生宿舍"), ("女性", "女生宿舍"), ("混合", "混合宿舍")],
+        help="宿舍类型",
+        required=True,
+        default="混合"
+    )
+    other_info = fields.Text(string="其他信息", help="输入更多信息")
+    description = fields.Html(string="描述")
+    hostel_rating = fields.Float('宿舍平均评分',
+                                 # digits=(14, 4))
+    digits = "rating value")
 
     @api.depends('hostel_code')
     def _compute_display_name(self):
@@ -27,4 +44,4 @@ class Hostel(models.Model):
             name = record.name
             if record.hostel_code:
                 name = f"{name} ({record.hostel_code})"
-            record.display_name = name
+            record.display_name = name

+ 6 - 0
models/hostel_room.py

@@ -0,0 +1,6 @@
+from odoo import models, fields, api
+
+class HostelRoom(models.Model):
+    _name = 'hostel.room'
+    currency_id = fields.Many2one('res.currency', string='Currency')
+    rent_amount = fields.Monetary("Rnet Amount", help="Enter rent amount per month")

+ 13 - 24
security/hostel_security.xml

@@ -1,28 +1,17 @@
 <?xml version="1.0" encoding="utf-8"?>
 <odoo>
-<record id="module_category_hostel" model="ir.module.category">
-    <field name="name">Hostel Management</field>
-    <field name="sequence">31</field>
-</record>
-<record id="group_hostel_manager" model="res.groups">
-    <field name="name">Hostel Manager</field>
-    <field name="category_id" ref="module_category_hostel"/>
-    <field name="users" eval="[(4, ref('base.user_root')),(4, ref('base.user_admin'))]"/>
-</record>
-<record id="group_hostel_user" model="res.groups">
-    <field name="name">Hostel User</field>
-    <field name="category_id" ref="module_category_hostel"/>
-    <field name="users" eval="[(4, ref('base.user_root')),(4, ref('base.user_admin'))]"/>
-</record>
-<record id="action_hostel" model="ir.actions.act_window">
-        <field name="name">Hostel</field>
-        <field name="type">ir.actions.act_window</field>
-        <field name="res_model">hostel.hostel</field>
-        <field name="view_mode">tree,form</field>
-        <field name="help" type="html">
-            <p class="oe_view_nocontent_create">
-                Create Hostel.
-            </p>
-        </field>
+    <record id="module_category_hostel" model="ir.module.category">
+        <field name="name">宿舍管理</field>
+        <field name="sequence">31</field>
+    </record>
+    <record id="group_hostel_manager" model="res.groups">
+        <field name="name">宿舍管理员</field>
+        <field name="category_id" ref="module_category_hostel"/>
+        <field name="users" eval="[(4, ref('base.user_root')),(4, ref('base.user_admin'))]"/>
+    </record>
+    <record id="group_hostel_user" model="res.groups">
+        <field name="name">宿舍用户</field>
+        <field name="category_id" ref="module_category_hostel"/>
+        <field name="users" eval="[(4, ref('base.user_root')),(4, ref('base.user_admin'))]"/>
     </record>
 </odoo>

+ 17 - 0
security/res.groups.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+    <record id="module_category_hostel" model="ir.module.category">
+        <field name="name">宿舍管理</field>
+        <field name="sequence">31</field>
+    </record>
+    <record id="group_hostel_manager" model="res.groups">
+        <field name="name">宿舍管理员</field>
+        <field name="category_id" ref="module_category_hostel"/>
+        <field name="users" eval="[(4, ref('base.user_root')),(4, ref('base.user_admin'))]"/>
+    </record>
+    <record id="group_hostel_user" model="res.groups">
+        <field name="name">宿舍用户</field>
+        <field name="category_id" ref="module_category_hostel"/>
+        <field name="users" eval="[(4, ref('base.user_root')),(4, ref('base.user_admin'))]"/>
+    </record>
+</odoo>

+ 0 - 4
static/description/hostel.jpg:Zone.Identifier

@@ -1,4 +0,0 @@
-[ZoneTransfer]
-ZoneId=3
-ReferrerUrl=https://cn.bing.com/
-HostUrl=https://pic.616pic.com/ys_bnew_img/00/23/93/laFZHzMT05.jpg

+ 33 - 15
views/hostel.xml

@@ -6,17 +6,17 @@
             <field name="name">hostel.hostel.form</field>
             <field name="model">hostel.hostel</field>
             <field name="arch" type="xml">
-                <form string="Hostel">
+                <form string="宿舍">
                     <sheet>
                         <div class="oe_title">
                             <h3>
                                 <table>
                                     <tr>
                                         <td style="padding-right:10px;">
-                                            <field name="name" required="1" placeholder="Name"/>
+                                            <field name="name" required="1" placeholder="名称"/>
                                         </td>
                                         <td style="padding-right:10px;">
-                                            <field name="hostel_code" placeholder="Code"/>
+                                            <field name="hostel_code" placeholder="代码"/>
                                         </td>
                                     </tr>
                                 </table>
@@ -24,22 +24,28 @@
                         </div>
                         <group>
                             <group>
-                                <label for="street" string="Address"/>
+                                <label for="street" string="地址"/>
                                 <div class="o_address_format">
-                                    <field name="street" placeholder="Street..." class="o_address_street"/>
-                                    <field name="street2" placeholder="Street 2..." class="o_address_street"/>
-                                    <field name="city" placeholder="City" class="o_address_city"/>
-                                    <field name="state_id" class="o_address_state" placeholder="State" options='{"no_open": True}'/>
-                                    <field name="zip" placeholder="ZIP" class="o_address_zip"/>
-                                    <field name="country_id" placeholder="Country" class="o_address_country" options='{"no_open": True, "no_create": True}'/>
+                                    <field name="street" placeholder="街道..." class="o_address_street"/>
+                                    <field name="street2" placeholder="街道2..." class="o_address_street"/>
+                                    <field name="city" placeholder="城市" class="o_address_city"/>
+                                    <field name="state_id" class="o_address_state" placeholder="省份" options='{"no_open": True}'/>
+                                    <field name="zip" placeholder="邮编" class="o_address_zip"/>
+                                    <field name="country_id" placeholder="国家" class="o_address_country" options='{"no_open": True, "no_create": True}'/>
                                 </div>
                             </group>
                             <group>
-                                <field name="phone" widget="phone"/>
-                                <field name="mobile" widget="phone"/>
-                                <field name="email" widget="email" context="{'gravatar_image': True}"/>
+                                <field name="hostel_floors" string="楼层"/>
+                                <field name="activate" string="激活"/>
+                                <field name="type" string="类型"/>
+                                <field name="other_info" string="其他信息"/>
                             </group>
                         </group>
+                        <group>
+                            <field name="phone" widget="phone" string="电话"/>
+                            <field name="mobile" widget="phone" string="手机"/>
+                            <field name="email" widget="email" context="{'gravatar_image': True}" string="邮箱"/>
+                        </group>
                     </sheet>
                 </form>
             </field>
@@ -57,8 +63,20 @@
             </field>
         </record>
 
+        <!-- Hostel Action -->
+        <record id="action_hostel" model="ir.actions.act_window">
+            <field name="name">宿舍</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">hostel.hostel</field>
+            <field name="view_mode">tree,form</field>
+            <field name="help" type="html">
+                <p class="oe_view_nocontent_create">
+                    创建宿舍.
+                </p>
+            </field>
+        </record>
+
         <!-- Hostel Menu -->
-        <menuitem id="menu_hostel_root" name="Hostel"/>
-        <menuitem id="menu_hostel" name="Hostels" parent="menu_hostel_root" action="action_hostel"/>
+        <menuitem id="menu_hostel" name="宿舍列表" action="action_hostel"/>
     </data>
 </odoo>

+ 7 - 0
views/parent.menus.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<odoo>
+    <data>
+        <!-- Parent Menus -->
+        <menuitem id="menu_hostel_root" name="宿舍管理"/>
+    </data>
+</odoo>

二进制
wizards/__pycache__/__init__.cpython-312.pyc