change implementation for the opening page / group list
authorMantavya Gajjar <mga@tinyerp.com>
Fri, 5 Dec 2008 11:06:48 +0000 (16:36 +0530)
committerMantavya Gajjar <mga@tinyerp.com>
Fri, 5 Dec 2008 11:06:48 +0000 (16:36 +0530)
* change in create menu
* add new wizard that open the page in form view

bzr revid: mga@tinyerp.com-20081205110648-rxgy2sfxl3tp5lkm

addons/wiki/wiki.py
addons/wiki/wiki_view.xml
addons/wiki/wizard/__init__.py
addons/wiki/wizard/create_menu.py
addons/wiki/wizard/open_page.py [new file with mode: 0644]
addons/wiki/wizard/sort_algo.py [deleted file]
addons/wiki/wizard/wizard_view.xml

index ba2e432..77092a9 100644 (file)
@@ -44,6 +44,8 @@ class WikiGroup(osv.osv):
        'create_date':fields.datetime("Created Date", select=True),
        'template': fields.text('Wiki Template'),
        'section': fields.boolean("Make Section ?"),
+       'home':fields.many2one('wiki.wiki', 'Pages'),
+       'action_id': fields.many2one('ir.ui.menu', 'Menu')
     }
 WikiGroup()
 
index 0d6e69c..0483007 100644 (file)
@@ -8,6 +8,7 @@
         <wizard
             id="wizard_group_menu_create"
             string="Create Menu"
+            menu="True"
             name="wiki.create.menu"/>
             
         <record model="ir.ui.view" id="wiki_group_tree">
index e6d1c52..3f27f8d 100644 (file)
@@ -1,3 +1,4 @@
+import open_page
 import create_menu
 import show_diff
 import make_index
\ No newline at end of file
index f974303..611a05a 100644 (file)
@@ -20,7 +20,6 @@
 #
 ##############################################################################
 
-
 import time
 import wizard
 import osv
@@ -31,31 +30,34 @@ section_form = '''<?xml version="1.0"?>
     <separator string="Menu Information" colspan="4"/>
     <field name="menu_name"/>
     <field name="menu_parent_id"/>
+    <field name="page" colspan="4" domain="[('group_id','=', active_id)]"/>
 </form>'''
 
 section_fields = {
     'menu_name': {'string':'Menu Name', 'type':'char', 'required':True, 'size':64},
     'menu_parent_id': {'string':'Parent Menu', 'type':'many2one', 'relation':'ir.ui.menu', 'required':True},
+    'page': {'string':'Group Home Page', 'type':'many2one', 'relation':'wiki.wiki'},
 }
 
 def wiki_menu_create(self, cr, uid, data, context):
     pool = pooler.get_pool(cr.dbname)
     group = pool.get('wiki.groups').browse(cr, uid, data['id'])
+    action_id = pool.get('ir.actions.wizard').search(cr, uid, [('wiz_name','=','wiki.wiki.page.open')])
 
-    action_id = pool.get('ir.actions.act_window').create(cr, uid, {
-        'name': group.name,
-        'view_type':'form',
-        'view_mode':"tree,form",
-        'context': "{'group_id':%d, 'section':%d}" % (group.id, group.section),
-        'domain': "[('group_id','child_of',[%d])]" % (group.id,),
-        'res_model': 'wiki.wiki'
-    })
-    pool.get('ir.ui.menu').create(cr, uid, {
+    menu_id = pool.get('ir.ui.menu').create(cr, uid, {
         'name': data['form']['menu_name'],
         'parent_id': data['form']['menu_parent_id'],
-        'icon': 'STOCK_JUSTIFY_FILL',
-        'action': 'ir.actions.act_window,'+str(action_id)
+        'icon': 'STOCK_DIALOG_QUESTION',
+        'action': 'ir.actions.wizard,'+str(action_id[0])
     }, context)
+    
+    home = data['form']['page']
+    res = {
+        'home':home,
+        'action_id':menu_id
+    }
+    pool.get('wiki.groups').write(cr, uid, [data['id']], res)
+    
     return {}
 
 class wizard_create_menu(wizard.interface):
diff --git a/addons/wiki/wizard/open_page.py b/addons/wiki/wizard/open_page.py
new file mode 100644 (file)
index 0000000..e4135df
--- /dev/null
@@ -0,0 +1,68 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution    
+#    Copyright (C) 2004-2008 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    $Id$
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+
+import wizard
+import netsvc
+import time
+import pooler
+from osv import osv
+from tools.translate import _
+
+class wiz_timesheet_open(wizard.interface):
+    
+    def _open_wiki_page(self, cr, uid, data, context):
+        pool = pooler.get_pool(cr.dbname)
+        menu_id = data['id']
+        group_ids = pool.get('wiki.groups').search(cr, uid, [('action_id','=',menu_id)])
+
+        group = pool.get('wiki.groups').browse(cr, uid, group_ids[0])
+        
+        value = {
+            'context': "{'group_id':%d}" % (group.id),
+            'domain': "[('group_id','child_of',[%s])]" % (group.id),
+            'name': 'Wiki Page',
+            'view_type': 'form',
+            'view_mode': 'form,tree',
+            'res_model': 'wiki.wiki',
+            'view_id': False,
+            'type': 'ir.actions.act_window',
+        }
+        if group.home :
+            value['res_id'] = group.home.id
+        else:
+            value['view_type'] = 'form'
+            value['view_mode'] = 'tree,form'
+            
+        return value
+
+    states = {
+        'init' : {
+            'actions' : [],
+            'result' : {'type':'action', 'action':_open_wiki_page, 'state':'end'}
+        }
+    }
+wiz_timesheet_open('wiki.wiki.page.open')
+
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
diff --git a/addons/wiki/wizard/sort_algo.py b/addons/wiki/wizard/sort_algo.py
deleted file mode 100644 (file)
index 9579b8f..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-def sort(data, index):
-    for i in range(len(data)):
-        j = i + 1
-        for j in range(len(data)-1):
-            d1 = data[i].split('.')
-            d2 = data[j].split('.')
-            
-            l1 = len(d1)
-            l2 = len(d2)
-            max = 0
-            if l1 < l2:
-                max = l1
-            elif l2 < l1:
-                max = l2
-            else:
-                max = l1
-            
-            if max == 1:
-                if int(d1[0]) == int(d2[0]):
-                    if len(d1) < len(d2):
-                        tmp = data[i]
-                        data[i] = data[j]
-                        data[j] = tmp
-                        continue
-
-            for p in range(0, max):
-                val1 = val2 = 0
-                try:
-                    val1 = int(d1[p])
-                except:
-                    val1 = 0
-                    
-                try:
-                    val2 = int(d2[p])
-                except:
-                    val2 = 0
-                    
-                if val1 < val2:
-                    tmp = data[i]
-                    data[i] = data[j]
-                    data[j] = tmp
-            if data[i].startswith(data[j]):
-                tmp = data[i]
-                tmp = tmp.replace(data[j],'')
-
-def group(data):
-    gp = {}
-    for i in range(len(data)):
-        d1 = data[i].split('.')[0]
-        if gp.has_key(d1):
-            gp[d1].append(data[i])
-        else:
-            gp[d1] = [data[i]]
-    return gp
-
-def max(data):
-    max = 0
-    for i in range(len(data)):
-        d = str(data[i]).split('.')
-        if len(d) > max:
-            max = len(d)
-            
-    return max
-
-def toint(data):
-    for i in range(len(data)):
-        data[i] = int(data[i])
-        
-def rearrange(key, groups):
-    i = 1
-    new = {}
-    for ky in key:
-        new[i] = groups[str(ky)]
-        i += 1
-    return new
-
-def reindex(key, groups):
-    if groups[0] != key:
-        groups[0] = key
-    
-    lvl_group = {}
-    level = max(groups)
-    for i in range(len(groups)):
-        dg = str(groups[i]).split('.')
-        index = len(dg)
-        if lvl_group.has_key(str(index)):
-            lvl_group[str(index)].append(groups[i])
-        else:
-            lvl_group[str(index)] = [groups[i]]
-    
-    for i in range(2, level+1):
-        ixd = 1
-        gps = lvl_group[str(i)]
-        for j in range(len(gps)):
-            dt = gps[j].split('.')
-            new =""
-            for k in range(i-1):
-                new += str(dt[k])
-                new += '.'
-                
-            new += str(ixd)
-            ixd += 1
-            gps[j] = new
-            
-    print lvl_group
-    
-if __name__ == '__main__':
-    
-    data = ['1', '10.1', '10.3', '1.1', '1.2.3', '1.7', '3.1.8', '1.2.2', '1.2.10', '1.3', '1.4', '2', '20.2', '2.1', '2.2', '3', '3.1', '1.2.1', '2.1.2']
-    
-    sort(data, 0)
-    
-    grp = group(data)
-    
-    for gp in grp:
-        loop = max(grp[gp])
-        for lp in range(1, loop):
-            sort(grp[gp],lp)
-    
-    key = grp.keys()
-    toint(key)
-    key.sort()
-    
-    groups = rearrange(key, grp)
-    
-    new_data = []
-    for key in groups:
-        new_data.extend(groups[key])
-        #print groups[key]
-    
-    print 'XXXXXXXXXXXXXXXXX : ', new_data
-#    print groups
-#    
index b1e73e6..bc10f5a 100644 (file)
             string="Create Index"
             name="wiki.make.index"
             model="wiki.wiki"/>
+
+               <wizard
+                   id="wizard_open_page"
+                   string="Open Page"
+                   name="wiki.wiki.page.open"
+                   model="wiki.wiki"/>
     </data>
 </openerp>