Author: dammina
Date: Sun Aug  3 11:40:12 2014
New Revision: 1615401

URL: http://svn.apache.org/r1615401
Log:
Modified several components of the feature.

Modified:
    
bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/htdocs/js/batchcreate.js
    
bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/theme.py

Modified: 
bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/htdocs/js/batchcreate.js
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/htdocs/js/batchcreate.js?rev=1615401&r1=1615400&r2=1615401&view=diff
==============================================================================
--- 
bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/htdocs/js/batchcreate.js
 (original)
+++ 
bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/htdocs/js/batchcreate.js
 Sun Aug  3 11:40:12 2014
@@ -1,11 +1,16 @@
-function emptyTable(products,href,token) {
+function emptyTable(product,milestones,components,href,token) {
+
        var numOfRows = document.getElementById("numOfRows").value;
-       form_token = token.split(";")[0].split("=")[1];//I'm not really sure 
about this method
-       if(numOfRows != "" && document.getElementById("empty-table") == null){
+       var created_rows = document.getElementById("numOfRows").value;
+       form_token = token.split(";")[0].split("=")[1];
+       if(numOfRows == ""){
+               alert("Enter the ticket batch size.")
+       }
+       else if(numOfRows != "" && document.getElementById("empty-table") == 
null){
        var contentDiv = document.getElementById("content");
        //var headers = 
{"summary":"Summary","description":"Description","product":"Product","status":"Status","priority":"Priority","type":"Types","owner":"Owner","cc":"Cc","milestone":"Milestone","keywords":"Keywords"}
-    var headers = 
{"summary":"Summary","description":"Description","product":"Product","status":"Status","priority":"Priority"}
-       statuses = ["accepted", "assigned", "closed", "new", "reopened"];
+    var headers = 
{"ticket":"","summary":"Summary","description":"Description","product":"Product","priority":"Priority","milestone":"Milestone","component":"Component"}
+       //statuses = ["new", "accepted", "assigned", "closed", "reopened"];
        priorities = ["blocker", "critical", "major", "minor", "trivial"];
        types = ["defect", "enhancement", "task"];
        
@@ -49,7 +54,17 @@ function emptyTable(products,href,token)
        for (i=0;i<numOfRows;i++){
                tr_rows = document.createElement("tr");
                for (header in headers){
-                       if (header == "summary"){
+                       if(header == "ticket"){
+                               td_row = document.createElement("td");
+                               input_ticket = document.createElement("input");
+                               input_ticket.setAttribute("type","checkbox");
+                               
input_ticket.setAttribute("id","field-ticket"+i);
+                               
input_ticket.setAttribute("class","input-block-level");
+                               
input_ticket.setAttribute("name","field_ticket"+i);
+                               td_row.appendChild(input_ticket);
+                               tr_rows.appendChild(td_row);
+                       }
+                       else if (header == "summary"){
                                td_row = document.createElement("td");
                                input_summary = document.createElement("input");
                                input_summary.setAttribute("type","text");
@@ -70,7 +85,7 @@ function emptyTable(products,href,token)
                                td_row.appendChild(input_description);
                                tr_rows.appendChild(td_row);
                        }
-                       else if (header == "status") {
+                       /*else if (header == "status") {
                                td_row = document.createElement("td");
                                input_status = document.createElement("select");
                                
input_status.setAttribute("id","field-status"+i);
@@ -84,7 +99,7 @@ function emptyTable(products,href,token)
                                }
                                td_row.appendChild(input_status);
                                tr_rows.appendChild(td_row);
-                       }
+                       }*/
                        else if (header == "priority") {
                                td_row = document.createElement("td");
                                input_priority = 
document.createElement("select");
@@ -121,10 +136,10 @@ function emptyTable(products,href,token)
                                
field_product.setAttribute("id","field-product"+i);
                                
field_product.setAttribute("class","input-block-level");
                                
field_product.setAttribute("name","field_product"+i);
-                               for (product in products){
+                               for (p in product){
                                        option = 
document.createElement("option");
-                                       
option.setAttribute("value",(products[product])[0]);
-                                       
option.appendChild(document.createTextNode((products[product])[1]));
+                                       
option.setAttribute("value",(product[p])[0]);
+                                       
option.appendChild(document.createTextNode((product[p])[1]));
                                        field_product.appendChild(option);
                                }
                                td_row.appendChild(field_product);
@@ -150,16 +165,36 @@ function emptyTable(products,href,token)
                                td_row.appendChild(input_cc);
                                tr_rows.appendChild(td_row);
                        }*/
-                       /*else if (header == "milestone"){
+                       else if (header == "milestone"){
+                               td_row = document.createElement("td");
+                               field_milestone = 
document.createElement("select");
+                               
field_milestone.setAttribute("id","field-milestone"+i);
+                               
field_milestone.setAttribute("class","input-block-level");
+                               
field_milestone.setAttribute("name","field_milestone"+i);
+                               for (milestone in milestones){
+                                       option = 
document.createElement("option");
+                                       
option.setAttribute("value",(milestones[milestone])[0]);
+                                       
option.appendChild(document.createTextNode((milestones[milestone])[0]));
+                                       field_milestone.appendChild(option);
+                               }
+                               td_row.appendChild(field_milestone);
+                               tr_rows.appendChild(td_row);
+                       }
+                       else if (header == "component"){
                                td_row = document.createElement("td");
-                               input_milestone = 
document.createElement("input");
-                               input_milestone.setAttribute("type","text");
-                               
input_milestone.setAttribute("id","field-milestone"+i);
-                               
input_milestone.setAttribute("class","input-block-level");
-                               
input_milestone.setAttribute("name","field_milestone"+i);
-                               td_row.appendChild(input_milestone);
+                               field_component = 
document.createElement("select");
+                               
field_component.setAttribute("id","field-component"+i);
+                               
field_component.setAttribute("class","input-block-level");
+                               
field_component.setAttribute("name","field_component"+i);
+                               for (component in components){
+                                       option = 
document.createElement("option");
+                                       
option.setAttribute("value",(components[component])[0]);
+                                       
option.appendChild(document.createTextNode((components[component])[0]));
+                                       field_component.appendChild(option);
+                               }
+                               td_row.appendChild(field_component);
                                tr_rows.appendChild(td_row);
-                       }*/
+                       }
                        /*else if (header == "keywords"){
                                td_row = document.createElement("td");
                                input_keywords = 
document.createElement("input");
@@ -179,7 +214,10 @@ function emptyTable(products,href,token)
        remove_row_button = document.createElement("button");
        remove_row_button.setAttribute("class","btn pull-right");
        remove_row_button.setAttribute("type","button");
-       remove_row_button.setAttribute("onclick","remove_row_btn_action()");
+       remove_row_button.addEventListener("click", function(event) {
+               
numOfRows=parseInt(numOfRows)-parseInt(remove_row_btn_action(numOfRows));
+               event.preventDefault();
+       });
        remove_row_button.setAttribute("id","bct-rmv-empty-row");
        remove_row_button.appendChild(document.createTextNode("-"));
        form.appendChild(remove_row_button);
@@ -188,7 +226,9 @@ function emptyTable(products,href,token)
        add_row_button.setAttribute("class","btn pull-right");
        add_row_button.setAttribute("type","button");
        add_row_button.addEventListener("click", function(event) {
-               add_row_btn_action(products);
+               add_row_btn_action(product,milestones,components,created_rows);
+               numOfRows=parseInt(numOfRows)+1;
+               created_rows=parseInt(created_rows)+1;
                event.preventDefault();
        });
        add_row_button.setAttribute("id","bct-add-empty-row");
@@ -198,7 +238,29 @@ function emptyTable(products,href,token)
     submit_button = document.createElement("button");
        submit_button.setAttribute("class","btn pull-right");
        submit_button.setAttribute("type","button");
-       submit_button.setAttribute("onclick","submit_btn_action()");
+       submit_button.addEventListener("click", function(event) {
+               var empty_row=false;
+               var cnt=0;
+               for (var k = 0; k <parseInt(numOfRows)+parseInt(cnt); k++) {
+                       var element = 
document.getElementById("field-summary"+k);
+                       if(element==null){
+                               cnt=parseInt(cnt)+1;
+                               continue;
+                       }
+                       
+                       var 
summary_val=document.getElementById("field-summary"+k).value;
+                       if(summary_val==""){
+                               var line_number = parseInt(k)+1;
+                               var confirmation = confirm("Summery field of 
one or more tickets are empty. They will not get created!");
+                               empty_row=true;
+                               break;
+                       }
+               };
+               if(confirmation == true || !empty_row){
+                       submit_btn_action();
+                       event.preventDefault();
+               }
+       });
        submit_button.setAttribute("id","bct-create");
        submit_button.setAttribute("data-target",href);
        submit_button.appendChild(document.createTextNode("save"));
@@ -239,8 +301,8 @@ function submit_btn_action() {
         function(ticket) {
                        deleteForm();
                        removeBatchCreate();
-                       
-                       var headers = 
{"id":"Ticket","summary":"Summary","product":"Product","status":"Status"}
+
+                       var headers = 
{"ticket":"Ticket","summary":"Summary","product":"Product","status":"Status","milestone":"Milestone","component":"Component"}
                        var contentDiv = document.getElementById("content");
                        var div = document.createElement("div");
                        div.setAttribute("class","span12");
@@ -266,7 +328,7 @@ function submit_btn_action() {
                        
                        for ( i=0 ; i<Object.keys(ticket.tickets).length ; i++ 
){
                                tr = document.createElement("tr");
-                               for (j=0;j<4;j++){
+                               for (j=0;j<6;j++){
                                        if(j==0){
                                                td = 
document.createElement("td");
                                                a = document.createElement("a");
@@ -293,6 +355,16 @@ function submit_btn_action() {
                                                tkt = 
JSON.parse(ticket.tickets[i]);
                                                
td.appendChild(document.createTextNode(tkt.status));
                                        }
+                                       else if(j==4){
+                                               td = 
document.createElement("td");
+                                               tkt = 
JSON.parse(ticket.tickets[i]);
+                                               
td.appendChild(document.createTextNode(tkt.milestone));
+                                       }
+                                       else if(j==5){
+                                               td = 
document.createElement("td");
+                                               tkt = 
JSON.parse(ticket.tickets[i]);
+                                               
td.appendChild(document.createTextNode(tkt.component));
+                                       }
                                        tr.appendChild(td);
                                }
                                table.appendChild(tr);
@@ -302,18 +374,27 @@ function submit_btn_action() {
         });
 }
 
-function add_row_btn_action(products){
-       // alert("1");
+function add_row_btn_action(product,milestones,components,i){
 
-       var headers = 
{"summary":"Summary","description":"Description","product":"Product","status":"Status","priority":"Priority"}
-       var statuses = ["accepted", "assigned", "closed", "new", "reopened"];
+       var headers = 
{"ticket":"","summary":"Summary","description":"Description","product":"Product","priority":"Priority","milestone":"Milestone","component":"Component"}
+       //var statuses = ["new", "accepted", "assigned", "closed", "reopened"];
        var priorities = ["blocker", "critical", "major", "minor", "trivial"];
        var types = ["defect", "enhancement", "task"];
 
     tr_rows = document.createElement("tr");
 
     for (header in headers){
-               if (header == "summary"){
+       if(header == "ticket"){
+                       td_row = document.createElement("td");
+                       input_ticket = document.createElement("input");
+                       input_ticket.setAttribute("type","checkbox");
+                       input_ticket.setAttribute("id","field-ticket"+i);
+                       input_ticket.setAttribute("class","input-block-level");
+                       input_ticket.setAttribute("name","field_ticket"+i);
+                       td_row.appendChild(input_ticket);
+                       tr_rows.appendChild(td_row);
+               }
+               else if (header == "summary"){
                                td_row = document.createElement("td");
                                input_summary = document.createElement("input");
                                input_summary.setAttribute("type","text");
@@ -322,123 +403,105 @@ function add_row_btn_action(products){
                                
input_summary.setAttribute("name","field_summary"+i);
                                td_row.appendChild(input_summary);
                                tr_rows.appendChild(td_row);
+               }
+               else if (header == "description") {
+                       td_row = document.createElement("td");
+                       input_description = document.createElement("textarea");
+                       
input_description.setAttribute("id","field-description"+i);
+                       
input_description.setAttribute("class","input-block-level");
+                       
input_description.setAttribute("name","field_description"+i);
+                       input_description.setAttribute("rows","2");
+                       input_description.setAttribute("cols","28");
+                       td_row.appendChild(input_description);
+                       tr_rows.appendChild(td_row);
+               }
+               /*else if (header == "status") {
+                       td_row = document.createElement("td");
+                       input_status = document.createElement("select");
+                       input_status.setAttribute("id","field-status"+i);
+                       input_status.setAttribute("class","input-block-level");
+                       input_status.setAttribute("name","field_status"+i);
+                       for (status in statuses){
+                               option = document.createElement("option");
+                               option.setAttribute("value",statuses[status]);
+                               
option.appendChild(document.createTextNode(statuses[status]));
+                               input_status.appendChild(option);
+                       }
+                       td_row.appendChild(input_status);
+                       tr_rows.appendChild(td_row);
+               }*/
+               else if (header == "priority") {
+                       td_row = document.createElement("td");
+                       input_priority = document.createElement("select");
+                       input_priority.setAttribute("id","field-priority"+i);
+                       
input_priority.setAttribute("class","input-block-level");
+                       input_priority.setAttribute("name","field_priority"+i);
+                       for (priority in priorities){
+                               option = document.createElement("option");
+                               
option.setAttribute("value",priorities[priority]);
+                               
option.appendChild(document.createTextNode(priorities[priority]));
+                               input_priority.appendChild(option);
                        }
-                       else if (header == "description") {
-                               td_row = document.createElement("td");
-                               input_description = 
document.createElement("textarea");
-                               
input_description.setAttribute("id","field-description"+i);
-                               
input_description.setAttribute("class","input-block-level");
-                               
input_description.setAttribute("name","field_description"+i);
-                               input_description.setAttribute("rows","2");
-                               input_description.setAttribute("cols","28");
-                               td_row.appendChild(input_description);
-                               tr_rows.appendChild(td_row);
-                       }
-                       else if (header == "status") {
-                               td_row = document.createElement("td");
-                               input_status = document.createElement("select");
-                               
input_status.setAttribute("id","field-status"+i);
-                               
input_status.setAttribute("class","input-block-level");
-                               
input_status.setAttribute("name","field_status"+i);
-                               for (status in statuses){
-                                       option = 
document.createElement("option");
-                                       
option.setAttribute("value",statuses[status]);
-                                       
option.appendChild(document.createTextNode(statuses[status]));
-                                       input_status.appendChild(option);
-                               }
-                               td_row.appendChild(input_status);
-                               tr_rows.appendChild(td_row);
+                       td_row.appendChild(input_priority);
+                       tr_rows.appendChild(td_row);
+               }
+               else if (header == "product") {
+                       td_row = document.createElement("td");
+                       field_product = document.createElement("select");
+                       field_product.setAttribute("id","field-product"+i);
+                       field_product.setAttribute("class","input-block-level");
+                       field_product.setAttribute("name","field_product"+i);
+                       for (p in product){
+                               option = document.createElement("option");
+                               option.setAttribute("value",(product[p])[0]);
+                               
option.appendChild(document.createTextNode((product[p])[1]));
+                               field_product.appendChild(option);
                        }
-                       else if (header == "priority") {
-                               td_row = document.createElement("td");
-                               input_priority = 
document.createElement("select");
-                               
input_priority.setAttribute("id","field-priority"+i);
-                               
input_priority.setAttribute("class","input-block-level");
-                               
input_priority.setAttribute("name","field_priority"+i);
-                               for (priority in priorities){
-                                       option = 
document.createElement("option");
-                                       
option.setAttribute("value",priorities[priority]);
-                                       
option.appendChild(document.createTextNode(priorities[priority]));
-                                       input_priority.appendChild(option);
-                               }
-                               td_row.appendChild(input_priority);
-                               tr_rows.appendChild(td_row);
+                       td_row.appendChild(field_product);
+                       tr_rows.appendChild(td_row);
+               }
+               else if (header == "milestone"){
+                       td_row = document.createElement("td");
+                       field_milestone = document.createElement("select");
+                       field_milestone.setAttribute("id","field-milestone"+i);
+                       
field_milestone.setAttribute("class","input-block-level");
+                       
field_milestone.setAttribute("name","field_milestone"+i);
+                       for (milestone in milestones){
+                               option = document.createElement("option");
+                               
option.setAttribute("value",(milestones[milestone])[0]);
+                               
option.appendChild(document.createTextNode((milestones[milestone])[0]));
+                               field_milestone.appendChild(option);
                        }
-                       /*else if (header == "type") {
-                               td_row = document.createElement("td");
-                               input_type = document.createElement("select");
-                               input_type.setAttribute("id","field-type"+i);
-                               
input_type.setAttribute("class","input-block-level");
-                               input_type.setAttribute("name","field_type"+i);
-                               for (type in types){
-                                       option = 
document.createElement("option");
-                                       
option.setAttribute("value",types[type]);
-                                       
option.appendChild(document.createTextNode(types[type]));
-                                       input_type.appendChild(option);
-                               }
-                               td_row.appendChild(input_type);
-                               tr_rows.appendChild(td_row);
-                       }*/
-                       else if (header == "product") {
-                               td_row = document.createElement("td");
-                               field_product = 
document.createElement("select");
-                               
field_product.setAttribute("id","field-product"+i);
-                               
field_product.setAttribute("class","input-block-level");
-                               
field_product.setAttribute("name","field_product"+i);
-                               for (product in products){
-                                       option = 
document.createElement("option");
-                                       
option.setAttribute("value",(products[product])[0]);
-                                       
option.appendChild(document.createTextNode((products[product])[1]));
-                                       field_product.appendChild(option);
-                               }
-                               td_row.appendChild(field_product);
-                               tr_rows.appendChild(td_row);
+                       td_row.appendChild(field_milestone);
+                       tr_rows.appendChild(td_row);
+               }
+               else if (header == "component"){
+                       td_row = document.createElement("td");
+                       field_component = document.createElement("select");
+                       field_component.setAttribute("id","field-component"+i);
+                       
field_component.setAttribute("class","input-block-level");
+                       
field_component.setAttribute("name","field_component"+i);
+                       for (component in components){
+                               option = document.createElement("option");
+                               
option.setAttribute("value",(components[component])[0]);
+                               
option.appendChild(document.createTextNode((components[component])[0]));
+                               field_component.appendChild(option);
                        }
-                       /*else if (header == "owner"){
-                               td_row = document.createElement("td");
-                               input_owner = document.createElement("input");
-                               input_owner.setAttribute("type","text");
-                               input_owner.setAttribute("id","field-owner"+i);
-                               
input_owner.setAttribute("class","input-block-level");
-                               
input_owner.setAttribute("name","field_owner"+i);
-                               td_row.appendChild(input_owner);
-                               tr_rows.appendChild(td_row);
-                       }*/
-                       /*else if (header == "cc"){
-                               td_row = document.createElement("td");
-                               input_cc = document.createElement("input");
-                               input_cc.setAttribute("type","text");
-                               input_cc.setAttribute("id","field-cc"+i);
-                               
input_cc.setAttribute("class","input-block-level");
-                               input_cc.setAttribute("name","field_cc"+i);
-                               td_row.appendChild(input_cc);
-                               tr_rows.appendChild(td_row);
-                       }*/
-                       /*else if (header == "milestone"){
-                               td_row = document.createElement("td");
-                               input_milestone = 
document.createElement("input");
-                               input_milestone.setAttribute("type","text");
-                               
input_milestone.setAttribute("id","field-milestone"+i);
-                               
input_milestone.setAttribute("class","input-block-level");
-                               
input_milestone.setAttribute("name","field_milestone"+i);
-                               td_row.appendChild(input_milestone);
-                               tr_rows.appendChild(td_row);
-                       }*/
-                       /*else if (header == "keywords"){
-                               td_row = document.createElement("td");
-                               input_keywords = 
document.createElement("input");
-                               input_keywords.setAttribute("type","text");
-                               
input_keywords.setAttribute("id","field-keywords"+i);
-                               
input_keywords.setAttribute("class","input-block-level");
-                               
input_keywords.setAttribute("name","field_keywords"+i);
-                               td_row.appendChild(input_keywords);
-                               tr_rows.appendChild(td_row);
-                       }*/
-
+                       td_row.appendChild(field_component);
+                       tr_rows.appendChild(td_row);
+               }
        }
        
document.getElementById("empty-table").childNodes[1].childNodes[1].childNodes[1].appendChild(tr_rows);
 }
 
-function remove_row_btn_action(){
-       
document.getElementById("empty-table").childNodes[1].childNodes[1].childNodes[1].lastChild.remove();
+function remove_row_btn_action(numOfRows){
+       var cnt=0;
+       for(var i=0;i<parseInt(numOfRows)-parseInt(cnt);i++){
+               
if(document.getElementById("empty-table").childNodes[1].childNodes[1].childNodes[1].childNodes[i].childNodes[0].childNodes[0].checked){
+                       
document.getElementById("empty-table").childNodes[1].childNodes[1].childNodes[1].childNodes[i].remove();
+                       cnt=cnt+1;
+                       i--;
+               }
+       }
+       return cnt;
 }

Modified: 
bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/theme.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/theme.py?rev=1615401&r1=1615400&r2=1615401&view=diff
==============================================================================
--- 
bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/theme.py
 (original)
+++ 
bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/theme.py
 Sun Aug  3 11:40:12 2014
@@ -691,6 +691,7 @@ class QuickCreateTicketDialog(Component)
 from pkg_resources import get_distribution
 application_version = get_distribution('BloodhoundTheme').version
 
+
 class BatchCreateTicketDialog(Component):
     implements(
         IRequestFilter,
@@ -802,7 +803,7 @@ class BatchCreateTicketDialog(Component)
                          if k.startswith('field_'))
             # new_tkts variable will contain the tickets that have been 
created as a batch
             # that information will be used to load the resultant query table
-            product, tid, new_tkts, num_of_tkts = self.batch_create(
+            product, tid, new_tkts = self.batch_create(
                 req, attrs, True)
             # product, tid = self.batch_create(req, attrs, True)
         except Exception as exc:
@@ -811,6 +812,7 @@ class BatchCreateTicketDialog(Component)
         else:
             tkt_list = []
             tkt_dict = {}
+            num_of_tkts = len(new_tkts)
             for i in range(0, num_of_tkts):
                 tres = Neighborhood(
                     'product',
@@ -832,6 +834,8 @@ class BatchCreateTicketDialog(Component)
                                 href),
                             'summary': new_tkts[i].values['summary'],
                             'status': new_tkts[i].values['status'],
+                            'milestone': new_tkts[i].values['milestone'],
+                            'component': new_tkts[i].values['component'],
                             'priority': new_tkts[i].values['priority'],
                             'description': new_tkts[i].values['description']}))
             tkt_dict["tickets"] = tkt_list
@@ -850,11 +854,19 @@ class BatchCreateTicketDialog(Component)
 
     # Template Stream Filter methods
     def filter_stream(self, req, method, filename, stream, data):
-        if (filename == 'bh_wiki_view.html') and (req.perm.has_permission(
-                'TRAC_ADMIN') or 
req.perm.has_permission('TICKET_BATCH_CREATE')):
+        if (self.env.product is not None) and (filename == 
'bh_wiki_view.html') and (
+                req.perm.has_permission('TRAC_ADMIN') or 
req.perm.has_permission('TICKET_BATCH_CREATE')):
             add_script(req, 'theme/js/batchcreate.js')
             xpath = '//form[@id=modifypage]'
-            products = self.env.db_query("SELECT * FROM bloodhound_product")
+
+            product_id = str(self.env.product.resource.id)
+
+            product_name = self.env.db_query(
+                "SELECT * FROM bloodhound_product WHERE prefix=%s", 
(product_id,))
+            milestones = self.env.db_query(
+                "SELECT * FROM milestone WHERE product=%s", (product_id,))
+            components = self.env.db_query(
+                "SELECT * FROM component WHERE product=%s", (product_id,))
             form = tag.form(
                 method="get",
                 style="display:inline",
@@ -872,7 +884,11 @@ class BatchCreateTicketDialog(Component)
                 
style="background-color:transparent;border:0;position:absolute;right:0;top:0;margin-top:
 0px;height:29px;background-color:#5C85FF;color:white",
                 type="button",
                 onclick="Javascript:emptyTable(" +
-                to_json(products) +
+                to_json(product_name) +
+                "," +
+                to_json(milestones) +
+                "," +
+                to_json(components) +
                 "," +
                 to_json(
                     req.href() +
@@ -895,9 +911,15 @@ class BatchCreateTicketDialog(Component)
     def batch_create(self, req, attributes={}, notify=False):
         """ Create batch of tickets, returning created tickets.
         """
-        num_of_tkts = attributes.__len__() / 5
+        num_of_tkts = attributes.__len__() / 6
         created_tickets = []
-        for i in range(0, num_of_tkts):
+        loop_condition = True
+        i = -1
+
+        while loop_condition:
+            i += 1
+            if 'summary' + str(i) not in attributes:
+                continue
 
             if 'product' + str(i) in attributes:
                 env = self.env.parent or self.env
@@ -909,11 +931,18 @@ class BatchCreateTicketDialog(Component)
                             str(i)])
             else:
                 env = self.env
+
+            if attributes.get('summary' + str(i)) == "":
+                num_of_tkts -= 1
+                continue
+
             description = attributes.pop('description' + str(i))
-            status = attributes.pop('status' + str(i))
+            status = 'new'
             summary = attributes.pop('summary' + str(i))
             product = attributes.pop('product' + str(i))
             priority = attributes.pop('priority' + str(i))
+            milestone = attributes.pop('milestone' + str(i))
+            component = attributes.pop('component' + str(i))
 
             t = Ticket(env)
             t['summary'] = summary
@@ -923,6 +952,8 @@ class BatchCreateTicketDialog(Component)
             t['resolution'] = ''
             t['product'] = product
             t['priority'] = priority
+            t['milestone'] = milestone
+            t['component'] = component
             t.insert()
             created_tickets.append(t)
 
@@ -935,7 +966,8 @@ class BatchCreateTicketDialog(Component)
                         "Failure sending notification on creation "
                         "of ticket #%s: %s" %
                         (t.id, e))
-        # start_id = self.env.db_query("SELECT MAX(uid) FROM ticket")[0][0] - 
num_of_tkts
-        # created_tickets = self.env.db_query("SELECT * FROM ticket WHERE 
uid>%s"%start_id)
-        # return t['product'], t.id, created_tickets
-        return t['product'], t.id, created_tickets, num_of_tkts
+            num_of_tkts -= 1
+            if num_of_tkts <= 0:
+                loop_condition = False
+
+        return t['product'], t.id, created_tickets


Reply via email to