--- /dev/null
+CREATE OR REPLACE FUNCTION copierContainer (id_container todolist_container.id%TYPE) RETURNS INTEGER AS $copierContainer$
+DECLARE copy_id todolist_container.id%TYPE;
+
+BEGIN
+ INSERT INTO todolist_container (name, description, state) (
+ SELECT 'Copy of ' || name, description, 'draft'
+ FROM todolist_container
+ WHERE id = id_container
+ );
+
+ SELECT currval(pg_get_serial_sequence('todolist_container', 'id')) INTO copy_id;
+
+ INSERT INTO todolist_task (name, description, container_id, milestone, planned, manday, priority) (
+ SELECT name, description, copy_id, milestone, planned, manday, priority
+ FROM todolist_task
+ WHERE container_id = id_container
+ );
+
+ INSERT INTO todolist_container_topic_rel (container_id, topic_id) (
+ SELECT copy_id, topic_id
+ FROM todolist_container_topic_rel
+ WHERE container_id = id_container
+ );
+ RETURN copy_id;
+END;
+$copierContainer$ LANGUAGE plpgsql;
+
+-- Appel :
+-- SELECT copierContainer(3);
+
return result
+ #================================================================================
+ # def copy(self, cr, uid, id, default, context=None):
+ # container = self.browse(cr, uid, id, context=context)
+ # new_name = "Copy of %s" % container.name
+ # # =like is the original LIKE operator from SQL
+ # others_count = self.search(cr, uid, [('name', '=like', new_name+'%')],
+ # count=True, context=context)
+ # if others_count > 0:
+ # new_name = "%s (%s)" % (new_name, others_count+1)
+ # default['name'] = new_name
+ # return osv.Model.copy(self, cr, uid, id, default, context=context)
+ #================================================================================
+
+
def copy(self, cr, uid, id, default, context=None):
- container = self.browse(cr, uid, id, context=context)
- new_name = "Copy of %s" % container.name
- # =like is the original LIKE operator from SQL
- others_count = self.search(cr, uid, [('name', '=like', new_name+'%')],
- count=True, context=context)
- if others_count > 0:
- new_name = "%s (%s)" % (new_name, others_count+1)
- default['name'] = new_name
- return osv.Model.copy(self, cr, uid, id, default, context=context)
+ cr.execute("SELECT copierContainer (%s);", (id,))
+ return cr.fetchone()[0]
+
def _get_manday(self, cr, uid, ids, field, arg, context=None):
result={}