← Back to team overview

openerp-dev-web team mailing list archive

[Merge] lp:~openerp-dev/openobject-client/duplication_of_ir.filters into lp:openobject-client

 

RGA(OpenERP) has proposed merging lp:~openerp-dev/openobject-client/duplication_of_ir.filters into lp:openobject-client.

Requested reviews:
  OpenERP sa GTK client R&D (openerp-dev-gtk)


hello, 
In order to make ir.filter more user-friendly the filter name should be specified already in the dialog box if the user tries to save a (active)filter and another filter is already active/selected

related server branch is: lp:~openerp-dev/openobject-server/remove_duplication_of_ir.filters

-- 
https://code.launchpad.net/~openerp-dev/openobject-client/duplication_of_ir.filters/+merge/35990
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-client/duplication_of_ir.filters.
=== modified file 'bin/widget/screen/screen.py'
--- bin/widget/screen/screen.py	2010-09-17 10:27:46 +0000
+++ bin/widget/screen/screen.py	2010-09-20 09:26:41 +0000
@@ -290,6 +290,9 @@
 
     def execute_action(self, combo):
         flag = combo.get_active_text()
+        combo_model = combo.get_model()
+        active_id = combo.get_active()
+        action_name = active_id != -1 and combo_model[active_id][3] and combo_model[active_id][2]
         # 'mf' Section manages Filters
         def clear_domain_ctx():
             for key in self.old_ctx.keys():
@@ -315,6 +318,7 @@
             value = obj._exec_action(act, {}, ctx)
 
         if flag in ['blk','mf']:
+            self.screen_container.last_active_filter = False
             clear_domain_ctx()
             self.search_filter()
             combo.set_active(0)
@@ -325,10 +329,16 @@
             widget = glade2.get_widget('action_name')
             win = glade2.get_widget('dia_get_action')
             win.set_icon(common.OPENERP_ICON)
+            lbl = glade2.get_widget('label157')
             if flag == 'sh':
                 win.set_title('Shortcut Entry')
-                lbl = glade2.get_widget('label157')
                 lbl.set_text('Enter Shortcut Name:')
+            else:
+                win.set_size_request(300, 160)
+                text_entry = glade2.get_widget('action_name')
+                lbl.set_text('Enter filter Name:\n(Any existing filter with the \nsame name will be replaced)')
+                if self.screen_container.last_active_filter:
+                    text_entry.set_text(self.screen_container.last_active_filter)
             win.show_all()
             response = win.run()
             # grab a safe copy of the entered text before destroy() to avoid GTK bug https://bugzilla.gnome.org/show_bug.cgi?id=613241
@@ -343,7 +353,7 @@
                        'user_id':rpc.session.uid
                        }
                 if flag == 'sf':
-                    action_id = rpc.session.rpc_exec_auth('/object', 'execute', 'ir.filters', 'create', values, self.context)
+                    action_id = rpc.session.rpc_exec_auth('/object', 'execute', 'ir.filters', 'create_or_replace', values, self.context)
                     self.screen_container.fill_filter_combo(self.name)
                 if flag == 'sh':
                     values.update({'res_model':self.name,
@@ -352,6 +362,7 @@
                     rpc.session.rpc_exec_auth_try('/object', 'execute', 'ir.ui.menu', 'create_shortcut', values, self.context)
         else:
             try:
+                self.screen_container.last_active_filter = action_name
                 filter_domain = flag and tools.expr_eval(flag)
                 clear_domain_ctx()
                 if combo.get_active() >= 0:

=== modified file 'bin/widget/view/screen_container.py'
--- bin/widget/view/screen_container.py	2010-08-18 10:13:20 +0000
+++ bin/widget/view/screen_container.py	2010-09-20 09:26:41 +0000
@@ -36,6 +36,7 @@
         self.vp = gtk.Viewport()
         self.vp.set_shadow_type(gtk.SHADOW_NONE)
         self.vbox = gtk.VBox()
+        self.last_active_filter = False
         self.vbox.pack_end(self.sw)
         self.filter_vbox = None
         self.button = None
@@ -50,11 +51,11 @@
     def fill_filter_combo(self, model):
         self.action_list.clear()
         my_acts = rpc.session.rpc_exec_auth('/object', 'execute', 'ir.filters', 'get_filters', model)
-        filters_list=[['blk','','-- Filters --']]
-        sorted_filters = [[act.get('domain',act['id']),act['context'],act['name']] for act in my_acts]
+        filters_list=[['blk','','-- Filters --',False]]
+        sorted_filters = [[act.get('domain',act['id']),act['context'],act['name'],act['id']] for act in my_acts]
         sorted_filters.sort(lambda x, y: cmp(x[2], y[2]))
         filters_list += sorted_filters
-        filters_list += [['blk','','--Actions--'],['sh','','Save as a Shortcut'],['sf','','Save as a Filter'],['mf','','Manage Filters']]
+        filters_list += [['blk','','--Actions--',False],['sh','','Save as a Shortcut',False],['sf','','Save as a Filter',False],['mf','','Manage Filters',False]]
         for lim in filters_list:
             self.action_list.append(lim)
         self.action_combo.set_active(0)
@@ -98,7 +99,7 @@
 
 #Action Filter and custom Filter Button
 #actions combo
-        self.action_list = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
+        self.action_list = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_INT)
         self.action_combo = gtk.ComboBox(self.action_list)
         cell = gtk.CellRendererText()
         self.action_combo.pack_start(cell, True)


Follow ups