jack 1 年之前
父節點
當前提交
2e1820c4b1

+ 2 - 1
__manifest__.py

@@ -8,7 +8,8 @@
     "data": [
         "security/ir.model.access.csv",
         "views/views_news_info.xml",
-        "wizard/views_sync_news_data.xml"
+        "wizard/views_sync_news_data.xml",
+        "wizard/views_delete_data.xml"
     ],
     "installable": True,
     "auto_install": False,

+ 2 - 1
security/ir.model.access.csv

@@ -1,3 +1,4 @@
 id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
 access_news_news,news.news,model_news_info,base.group_user,1,1,1,1
-sync_news_data_access,Sync News Data Access,model_auto_news_sync,base.group_user,1,1,1,0
+sync_news_data_access,Sync News Data Access,model_auto_news_sync,base.group_user,1,1,1,0
+delete_news_data_access,Delete News Data Access,model_auto_news_delete,base.group_user,1,1,1,1

+ 11 - 0
security/security.xml

@@ -20,4 +20,15 @@
         <field name="perm_create" eval="1"/>
         <field name="perm_unlink" eval="0"/>
     </record>
+
+    <!-- Access Right for Delete News Data -->
+    <record id="delete_news_data_access" model="ir.model.access">
+        <field name="name">Delete News Data Access</field>
+        <field name="model_id" ref="model_auto_news_delete"/>
+        <field name="group_id" ref="base.group_user"/>
+        <field name="perm_read" eval="1"/>
+        <field name="perm_write" eval="1"/>
+        <field name="perm_create" eval="1"/>
+        <field name="perm_unlink" eval="1"/>
+    </record>
 </odoo>

+ 1 - 0
wizard/__init__.py

@@ -1,2 +1,3 @@
 # -*- coding: utf-8 -*-
 from . import wizard_sync_news_data
+from . import wizard_delete_data

二進制
wizard/__pycache__/__init__.cpython-310.pyc


二進制
wizard/__pycache__/wizard_sync_news_data.cpython-310.pyc


+ 41 - 0
wizard/views_delete_data.xml

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<odoo>
+    <record id="view_delete_news_data_wizard" model="ir.ui.view">
+        <field name="name">auto.news.delete.wizard</field>
+        <field name="model">auto.news.delete</field>
+        <field name="arch" type="xml">
+            <form string="Delete News Data" version="7.0">
+                <sheet>
+                    <group>
+                        <group>
+                            <field name="delete_all_data" widget="boolean_toggle"/>
+                        </group>
+                    </group>
+                    <group>
+                        <group>
+                            <field name="from_date" invisible="delete_all_data == True"/>
+                        </group>
+                        <group>
+                            <field name="to_date" invisible="delete_all_data == True"/>
+                        </group>
+                    </group>
+                    <footer>
+                        <button string='Confirm' name="btn_confirm" type="object" class="btn-primary" confirm="Whether to confirm the deletion of data"/>
+                        <button string="Cancel" class="btn-secondary" special="cancel"/>
+                    </footer>
+                </sheet>
+            </form>
+        </field>
+    </record>
+
+    <record id="action_delete_news_data_wizard" model="ir.actions.act_window">
+        <field name="name">Delete News Data Wizard</field>
+        <field name="res_model">auto.news.delete</field>
+        <field name="view_mode">form</field>
+        <field name="view_id" ref="view_delete_news_data_wizard"/>
+        <field name="target">new</field>
+    </record>
+
+    <menuitem id="menu_delete_news_data" name="Delete News Data"
+              parent="menu_operation" action="action_delete_news_data_wizard"/>
+</odoo>

+ 4 - 3
wizard/views_sync_news_data.xml

@@ -17,7 +17,6 @@
         </field>
     </record>
 
-    <!-- Action for Wizard -->
     <record id="action_sync_news_data_wizard" model="ir.actions.act_window">
         <field name="name">Synchronize News Data Wizard</field>
         <field name="res_model">auto.news.sync</field>
@@ -26,6 +25,8 @@
         <field name="target">new</field>
     </record>
 
-    <!-- Optionally, add a menu item if you want this action to appear in the menu -->
-    <menuitem id="menu_sync_news_data" name="Synchronize News Data" parent="news.menu_news" action="action_sync_news_data_wizard"/>
+    <menuitem id="menu_operation" name="Operation" parent="news.menu_news"/>
+
+    <menuitem id="menu_sync_news_data" name="Synchronize News Data"
+              parent="menu_operation" action="action_sync_news_data_wizard"/>
 </odoo>

+ 30 - 0
wizard/wizard_delete_data.py

@@ -0,0 +1,30 @@
+# -*- coding: UTF-8 -*-
+import time
+from datetime import date, datetime, timedelta
+from odoo import models, fields, _
+from odoo.exceptions import UserError
+from odoo.tools import date_utils
+
+
+class DeleteNewsData(models.TransientModel):
+    _name = 'auto.news.delete'
+    _description = 'Auto News Delete'
+
+    delete_all_data = fields.Boolean('Delete All Data')
+
+    from_date = fields.Date('Date From', default=date_utils.start_of(date.today(), 'month'))
+
+    to_date = fields.Date('To', default=date_utils.end_of(date.today(), 'month'))
+
+    def btn_confirm(self):
+        if self.delete_all_data:
+            self.env['news.info'].search([]).unlink()
+        else:
+            from_ts = time.mktime(self.from_date.timetuple())
+
+            to_ts = time.mktime(self.to_date.timetuple())
+
+            news_id = self.env['news.info'].search([('create_time_ts', ">=", str(from_ts)), ('create_time_ts', '<=', str(to_ts))])
+
+            if news_id:
+                news_id.unlink()