Changeset 850 in main for branches


Ignore:
Timestamp:
03/07/12 08:56:08 (8 years ago)
Author:
agalech
Message:

Adding test for 3D

Location:
branches/3D/openPLM/document3D
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/3D/openPLM/document3D/arborescense.py

    r844 r850  
    150150 
    151151         
    152     return product  
    153  
     152    return product 
     153     
     154      
     155def add_references_file_geometry_js(user,doc_file,files_to_add): 
     156 
     157    controller=DocumentController(doc_file.document,user) 
     158    #puede estar unido a mas de una parte? 
     159    part=controller.get_attached_parts() 
     160    if part: 
     161        part=part[0] 
     162        part_parent=part.part 
     163        #list_link=ParentChildLink.objects.filter(parent=part.part).values_list("id", flat=True) 
     164        list_link=ParentChildLink.objects.filter(parent=part_parent) 
     165        for i in range(len(list_link)): 
     166            link=Location_link.objects.filter(link=list_link[i]) 
     167            if link:  
     168                part_child=list_link[i].child 
     169                part_controller=PartController(part_child,user) 
     170                list_doc=part_controller.get_attached_documents() 
     171                for Doc_Part_Link in list_doc: 
     172                    if Doc_Part_Link.document.type=="Document3D":# y si hay mas de uno ?? tratar el caso 
     173                        #y si esta descompuesto? 
     174                        STP_file=Doc_Part_Link.document.files.filter(Q(filename__iendswith=".stp") | Q(filename__iendswith=".step")) 
     175                        if STP_file.exists(): 
     176                            to_add=stp_to_jss.objects.filter(stp=STP_file[0]) 
     177                            for t in range(len(to_add)): 
     178                                files_to_add.append(to_add[t])  
     179                            add_references_file_geometry_js(user,STP_file[0],files_to_add) 
    154180def add_links(user,doc_file,product): 
    155181 
  • branches/3D/openPLM/document3D/decomposer.py

    r842 r850  
    1515def decomposer_all(doc_file,list_document_controller,user,links): 
    1616 
    17     my_step_importer = NEW_STEP_Import(doc_file)  
    18     product=my_step_importer.generate_product_relationship_arbre() 
    19  
    20      
    21      
    22      
    23     i=0 
    24     for link in product.links: 
    25         diviser(link.product,list_document_controller[i],doc_file) 
    26         i+=1 
    27  
    28          
    29     #WS = XSControl_WorkSession() 
    30     #writer = STEPCAFControl_Writer( WS.GetHandle(), False ) 
    31      
    32      
    33                      
    34     return my_step_importer 
     17    try: 
     18        my_step_importer = NEW_STEP_Import(doc_file)  
     19        product=my_step_importer.generate_product_relationship_arbre() 
     20 
     21         
     22         
     23         
     24        i=0 
     25        for link in product.links: 
     26            diviser(link.product,list_document_controller[i],doc_file) 
     27            i+=1 
     28                                            
     29        return my_step_importer 
     30    except: 
     31        raise  Document3D_decomposer_Error 
     32 
    3533 
    3634 
     
    7169    update_product(product,new_doc_file,doc_file,index_reference,assigned_index) 
    7270    write_arbrefile(product,new_doc_file) 
    73     
    74      
    75      
    76      
    77  
    78  
    79      
    80           
     71             
    8172    return True 
    8273     
     
    124115 
    125116    if not assigned_index.count(product.geometry.reference): 
     117 
    126118        old_stp_js=stp_to_jss.objects.get(stp=old_doc_file,index=product.geometry.reference) 
    127119        new_stp_js= stp_to_jss()          
  • branches/3D/openPLM/document3D/models.py

    r842 r850  
    140140        if os.path.exists(filename) and os.path.isfile(filename): 
    141141            os.remove(filename) 
    142             print "removing : " ,filename 
    143142    to_delete.delete()    
    144143     
     
    151150        return u"Columns reference, type, revision are not unique for index : %s"%self.index_error 
    152151         
    153 class Document3D_generate_file_Error(Exception): 
     152class Document3D_decomposer_Error(Exception): 
    154153    def __unicode__(self): 
    155         return u"I/O Error while the file arborescense was generated" 
    156          
    157          
     154        return u"Error while the file step was decomposed" 
     155         
     156class Document_part_doc_links_Error(Exception): 
     157    def __unicode__(self): 
     158        return u"Columns reference, type, revision are not unique"         
    158159         
    159160class Product(object): 
  • branches/3D/openPLM/document3D/tests.py

    r844 r850  
    1111from openPLM.document3D.forms import * 
    1212from openPLM.plmapp.tests.views import CommonViewTest 
    13 from openPLM.document3D.models import  Document3DController 
     13from openPLM.document3D.models import  Document3DController , Document_part_doc_links_Error 
    1414from django.core.files import File 
    1515 
    1616  
    17       
     17     
    1818class display_3dTest(CommonViewTest): 
    1919 
     
    106106        self.controller.add_child(child1, 10 , 20) 
    107107        child2 = PartController.create("c2", "Part", "a", self.user, self.DATA) 
     108        child3 = child2.create("c3", "Part", "a", self.user, self.DATA) 
    108109        self.controller.add_child(child2, 10, 20) 
    109110        response = self.get(self.base_url + "BOM-child/", page="BOM-child") 
     
    141142        self.controller.attach_to_document(self.document.object) 
    142143        response = self.get(self.base_url+"decompose/"+str(new_doc_file.id)+"/")   
    143         self.assertRedirects(response, self.base_url + "BOM-child/") 
    144                           
     144                         
    145145class display_decomposeTest(CommonViewTest): 
    146146 
     
    154154        data.update({u'last_modif_time': [u'%s-%s-%s %s:%s:%s'%(self.document.mtime.year,self.document.mtime.month,self.document.mtime.day,self.document.mtime.hour,self.document.mtime.minute,self.document.mtime.second)], 
    155155           u'last_modif_microseconds' : [u'%s'%self.document.mtime.microsecond] 
    156            })                    
     156           }) 
     157                   
    157158    #verificar los links creados en las buenas coordenadas       
    158159    def test_display_decompose_form_initial(self): 
     
    183184         
    184185         
    185         response = self.get(self.base_url+"decompose/"+str(new_doc_file.id)+"/") 
    186  
    187         self.assertEqual(response.context["form_Doc_Part_types"].as_table(), form_Doc_Part_types.as_table()) 
    188         self.assertEqual(response.context["form_Order_Quantity"].as_table(), form_Order_Quantity.as_table())  
     186        reponse = self.get(self.base_url+"decompose/"+str(new_doc_file.id)+"/") 
     187 
     188        self.assertEqual(reponse.context["form_Doc_Part_types"].as_table(), form_Doc_Part_types.as_table()) 
     189        self.assertEqual(reponse.context["form_Order_Quantity"].as_table(), form_Order_Quantity.as_table())  
    189190     
    190191                   
     
    198199        data = data1 
    199200        self.update_time(data) 
    200         response_post = self.post(self.base_url+"decompose/"+str(new_doc_file.id)+"/",data) 
    201         self.assertRedirects(response_post, self.base_url + "BOM-child/") 
    202         
     201        reponse_post = self.post(self.base_url+"decompose/"+str(new_doc_file.id)+"/",data) 
     202        self.assertRedirects(reponse_post, self.base_url + "BOM-child/") 
     203         
     204    def test_display_decompose_time_modification_diferent(self): 
     205        f=open("document3D/data_test/test.stp") 
     206        myfile = File(f) 
     207        new_doc_file=self.document.add_file(myfile)      
     208        self.controller.attach_to_document(self.document.object)                                                           
     209        data = data1 
     210        reponse_post = self.post(self.base_url+"decompose/"+str(new_doc_file.id)+"/",data) 
     211        self.assertEqual(reponse_post.context["extra_errors"],"The Document3D associated with the file STEP to decompose has been modified by another user while the forms were refilled:Please restart the process") 
     212         
     213    def test_display_decompose_time_modification_invalid(self): 
     214        f=open("document3D/data_test/test.stp") 
     215        myfile = File(f) 
     216        new_doc_file=self.document.add_file(myfile)      
     217        self.controller.attach_to_document(self.document.object)                                                           
     218        data = data1 
     219        data.update({u'last_modif_time': [u'not_valid'], 
     220           u'last_modif_microseconds' : [u'not_valid'] 
     221           }) 
     222        reponse_post = self.post(self.base_url+"decompose/"+str(new_doc_file.id)+"/",data) 
     223        self.assertEqual(reponse_post.context["extra_errors"],"Mistake reading of the last modification of the document, please restart the task") 
     224         
     225                         
     226    def test_display_decompose_file_locked(self): 
     227        f=open("document3D/data_test/test.stp") 
     228        myfile = File(f) 
     229        new_doc_file=self.document.add_file(myfile) 
     230        self.document.lock(new_doc_file)      
     231        self.controller.attach_to_document(self.document.object)                                                           
     232        data = data1 
     233        self.update_time(data) 
     234        reponse_post = self.post(self.base_url+"decompose/"+str(new_doc_file.id)+"/",data) 
     235        self.assertEqual(reponse_post.context["extra_errors"],"documentfile is locked") 
     236         
     237         
     238    def test_display_decompose_Document_part_doc_links_Error(self): 
     239        f=open("document3D/data_test/test.stp") 
     240        myfile = File(f) 
     241        new_doc_file=self.document.add_file(myfile)      
     242        self.controller.attach_to_document(self.document.object)                                                           
     243        data = data6 
     244        self.update_time(data) 
     245        reponse=self.post(self.base_url+"decompose/"+str(new_doc_file.id)+"/",data) 
     246        self.assertEqual(reponse.context["extra_errors"],"Columns reference, type, revision are not unique") 
     247         
     248    def test_display_decompose_Document3D_decomposer_Error(self): 
     249        f=open("document3D/data_test/test.stp") 
     250        myfile = File(f) 
     251        new_doc_file=self.document.add_file(myfile)      
     252        self.controller.attach_to_document(self.document.object)                                                           
     253        data = data1 
     254        self.update_time(data) 
     255        stp_to_jss.objects.filter(stp=new_doc_file).delete() 
     256        reponse=self.post(self.base_url+"decompose/"+str(new_doc_file.id)+"/",data) 
     257        self.assertEqual(reponse.context["extra_errors"],"Error while the file step was decomposed")         
     258 
    203259             
    204260    def test_display_decompose_form_Order_Quantity_error_post(self): 
     
    209265        data = data2 
    210266        self.update_time(data)              
    211         response_post = self.post(self.base_url+"decompose/"+str(new_doc_file.id)+"/",data) 
    212         self.assertEqual(response_post.context["form_Order_Quantity"].errors,[{'quantity': [u'This field is required.']}, {}]) 
     267        reponse_post = self.post(self.base_url+"decompose/"+str(new_doc_file.id)+"/",data) 
     268        self.assertEqual(reponse_post.context["form_Order_Quantity"].errors,[{'quantity': [u'This field is required.']}, {}]) 
    213269 
    214270     
     
    221277        data = data3 
    222278        self.update_time(data)        
    223         response_post = self.post(self.base_url+"decompose/"+str(new_doc_file.id)+"/",data) 
    224         self.assertEqual(response_post.context["form_Doc_Part_types"].errors,[{}, {'type_document3D': [u'Select a valid choice. not_exits_Document4D362182 is not one of the available choices.']}] 
     279        reponse_post = self.post(self.base_url+"decompose/"+str(new_doc_file.id)+"/",data) 
     280        self.assertEqual(reponse_post.context["form_Doc_Part_types"].errors,[{}, {'type_document3D': [u'Select a valid choice. not_exits_Document4D362182 is not one of the available choices.']}] 
    225281) 
    226282      
     
    232288        data = data4  
    233289        self.update_time(data)     
    234         response_post = self.post(self.base_url+"decompose/"+str(new_doc_file.id)+"/",data) 
    235         zip=response_post.context["zip"]          
     290        reponse_post = self.post(self.base_url+"decompose/"+str(new_doc_file.id)+"/",data) 
     291        zip=reponse_post.context["zip"]          
    236292        index=0 
    237293        for type, atributes , ord_qty in zip: 
     
    245301        new_doc_file=self.document.add_file(myfile)      
    246302        self.controller.attach_to_document(self.document.object)    
    247         response_ajax = self.client.get("/ajax/decompose/"+data5) 
    248         zip=response_ajax.context["zip"] 
     303        reponse_ajax = self.client.get("/ajax/decompose/"+data5) 
     304        zip=reponse_ajax.context["zip"] 
    249305        index=0 
    250306        for type, atributes , ord_qty in zip: 
     
    258314data1={u'2-lifecycle': [u'draft_official_deprecated'], u'3-lifecycle': [u'draft_official_deprecated'], u'reference': [u'PART_00002'], u'form-0-quantity': [u'1'], u'form-1-order': [u'20'], u'3-revision': [u'a'], u'form-1-type_part': [u'Part'], u'initial-3-lifecycle': [u'draft_official_deprecated'], u'2-group': [u'2'], u'form-0-unit': [u'-'], u'1-lifecycle': [u'draft_official_deprecated'], u'3-group': [u'2'], u'group': [u'2'], u'1-revision': [u'a'], u'form-1-quantity': [u'3'], u'2-name': [u'NBA_ASM'], u'form-0-type_part': [u'Part'], u'csrfmiddlewaretoken': [u'6a0951fed02461061f796c63d98bb430', u'6a0951fed02461061f796c63d98bb430'], u'3-name': [u'NBA_ASM'], u'revision': [u'a'], u'initial-2-lifecycle': [u'draft_official_deprecated'], u'initial-1-lifecycle': [u'draft_official_deprecated'], u'form-1-unit': [u'-'], u'1-name': [u'L-BRACKET'], u'form-TOTAL_FORMS': [u'2', u'2'], u'2-reference': [u'PART_00003'], u'2-revision': [u'a'], u'form-INITIAL_FORMS': [u'2', u'2'],  u'lifecycle': [u'draft_official_deprecated'], u'initial-lifecycle': [u'draft_official_deprecated'], u'3-reference': [u'DOC_00003'], u'name': [u'L-BRACKET'], u'form-MAX_NUM_FORMS': [u'2', u'2'], u'1-group': [u'2'], u'form-0-type_document3D': [u'Document3D'], u'form-0-order': [u'10'], u'form-1-type_document3D': [u'Document3D'], u'1-reference': [u'DOC_00002']} 
    259315 
     316data6={u'2-lifecycle': [u'draft_official_deprecated'], u'3-lifecycle': [u'draft_official_deprecated'], u'reference': [u'PART_00001'], u'form-0-quantity': [u'1'], u'form-1-order': [u'20'], u'3-revision': [u'a'], u'form-1-type_part': [u'Part'], u'initial-3-lifecycle': [u'draft_official_deprecated'], u'2-group': [u'2'], u'form-0-unit': [u'-'], u'1-lifecycle': [u'draft_official_deprecated'], u'3-group': [u'2'], u'group': [u'2'], u'1-revision': [u'a'], u'form-1-quantity': [u'3'], u'2-name': [u'NBA_ASM'], u'form-0-type_part': [u'Part'], u'csrfmiddlewaretoken': [u'6a0951fed02461061f796c63d98bb430', u'6a0951fed02461061f796c63d98bb430'], u'3-name': [u'NBA_ASM'], u'revision': [u'a'], u'initial-2-lifecycle': [u'draft_official_deprecated'], u'initial-1-lifecycle': [u'draft_official_deprecated'], u'form-1-unit': [u'-'], u'1-name': [u'L-BRACKET'], u'form-TOTAL_FORMS': [u'2', u'2'], u'2-reference': [u'PART_00001'], u'2-revision': [u'a'], u'form-INITIAL_FORMS': [u'2', u'2'],  u'lifecycle': [u'draft_official_deprecated'], u'initial-lifecycle': [u'draft_official_deprecated'], u'3-reference': [u'DOC_00003'], u'name': [u'L-BRACKET'], u'form-MAX_NUM_FORMS': [u'2', u'2'], u'1-group': [u'2'], u'form-0-type_document3D': [u'Document3D'], u'form-0-order': [u'10'], u'form-1-type_document3D': [u'Document3D'], u'1-reference': [u'DOC_00002']} 
    260317 
    261318data2={u'2-lifecycle': [u'draft_official_deprecated'], u'3-lifecycle': [u'draft_official_deprecated'], u'reference': [u'PART_00002'], u'form-0-quantity': [u''], u'form-1-order': [u'20'], u'3-revision': [u'a'], u'form-1-type_part': [u'Part'], u'initial-3-lifecycle': [u'draft_official_deprecated'], u'2-group': [u'2'], u'form-0-unit': [u'-'], u'1-lifecycle': [u'draft_official_deprecated'], u'3-group': [u'2'], u'group': [u'2'], u'1-revision': [u'a'], u'form-1-quantity': [u'3'], u'2-name': [u'NBA_ASM'], u'form-0-type_part': [u'Part'], u'csrfmiddlewaretoken': [u'6a0951fed02461061f796c63d98bb430', u'6a0951fed02461061f796c63d98bb430'], u'3-name': [u'NBA_ASM'], u'revision': [u'a'], u'initial-2-lifecycle': [u'draft_official_deprecated'], u'initial-1-lifecycle': [u'draft_official_deprecated'], u'form-1-unit': [u'-'], u'1-name': [u'L-BRACKET'], u'form-TOTAL_FORMS': [u'2', u'2'], u'2-reference': [u'PART_00003'], u'2-revision': [u'a'], u'form-INITIAL_FORMS': [u'2', u'2'],  u'lifecycle': [u'draft_official_deprecated'], u'initial-lifecycle': [u'draft_official_deprecated'], u'3-reference': [u'DOC_00003'], u'name': [u'L-BRACKET'], u'form-MAX_NUM_FORMS': [u'2', u'2'], u'1-group': [u'2'], u'form-0-type_document3D': [u'Document3D'], u'form-0-order': [u'10'], u'form-1-type_document3D': [u'Document3D'], u'1-reference': [u'DOC_00002']} 
  • branches/3D/openPLM/document3D/views.py

    r846 r850  
    219219                #django Datetimefields does not suport micro seconds 
    220220                # 
    221                 if  same_time(old_modification_data_time,old_modification_data_microsecond,document_controller.mtime) and links and len(links)==len(options) and stp_file.checkout_valid and not stp_file.locked :  
     221                if  same_time(old_modification_data_time,old_modification_data_microsecond,document_controller.mtime) and links and len(links)==len(options) and stp_file.checkout_valid:  
    222222 
    223223 
     
    226226                         
    227227                        try: 
    228                             product=decomposer_stp(stp_file,options,links,obj,request.user) 
     228                            my_step_importer=decomposer_stp(stp_file,options,links,obj,request.user) 
    229229                             
    230230 
    231                         except Document_decompose_Error as excep: 
    232                             extra_errors="Columns reference, type, revision are not unique for index : %s"%excep.index_error 
    233                         except Document3D_generate_file_Error as excep: 
    234                             extra_errors="I/O Error while the file arborescense was generated :" 
     231                        except Document_part_doc_links_Error as excep: 
     232                            extra_errors="Columns reference, type, revision are not unique" 
     233                        except Document3D_decomposer_Error as excep: 
     234                            extra_errors="Error while the file step was decomposed" 
    235235                             
    236236                        else: 
    237                             decomposer_product(product,stp_file) 
     237                            decomposer_product(my_step_importer,stp_file) 
    238238                            return HttpResponseRedirect(obj.plmobject_url+"BOM-child/")                                                       
    239239                        finally: 
     
    242242                             
    243243                    except LockError as excep: 
    244                                 extra_errors="doc file locked" 
     244                                extra_errors="documentfile is locked" 
    245245                   
    246246 
     
    338338    for ord_quantity , part_doc_create_form  in prepare_list: 
    339339 
    340  
    341         part_controller=obj.create_from_form(part_doc_create_form[0],user,False,True) 
    342         instances.append((part_controller.object._meta.app_label,part_controller.object._meta.module_name, part_controller.object._get_pk_val()))  
    343  
    344         ParentChildLink = obj.add_child(part_controller.object,ord_quantity[1],ord_quantity[0],ord_quantity[2])                 
    345         generate_extra_location_links(links[index],ParentChildLink)  
    346      
    347         doc_controller=obj.create_from_form(part_doc_create_form[1],user,False,True) 
    348         instances.append((doc_controller.object._meta.app_label,doc_controller.object._meta.module_name, doc_controller.object._get_pk_val())) 
    349         part_controller.attach_to_document(doc_controller.object)  
    350  
    351         list_document_controller.append(doc_controller) 
    352  
    353         index+=1 
    354     #except : 
    355         #raise  Document_decompose_Error (index)                 
     340        try:  
     341            part_controller=obj.create_from_form(part_doc_create_form[0],user,False,True) 
     342            instances.append((part_controller.object._meta.app_label,part_controller.object._meta.module_name, part_controller.object._get_pk_val()))  
     343 
     344            ParentChildLink = obj.add_child(part_controller.object,ord_quantity[1],ord_quantity[0],ord_quantity[2])                 
     345            generate_extra_location_links(links[index],ParentChildLink)  
     346         
     347            doc_controller=obj.create_from_form(part_doc_create_form[1],user,False,True) 
     348            instances.append((doc_controller.object._meta.app_label,doc_controller.object._meta.module_name, doc_controller.object._get_pk_val())) 
     349            part_controller.attach_to_document(doc_controller.object)  
     350 
     351            list_document_controller.append(doc_controller) 
     352 
     353            index+=1 
     354        except : 
     355            raise  Document_part_doc_links_Error                 
    356356            
    357357             
     
    473473    return False       
    474474 
    475 def add_references_file_geometry_js(user,doc_file,files_to_add): 
    476  
    477     controller=DocumentController(doc_file.document,user) 
    478     #puede estar unido a mas de una parte? 
    479     part=controller.get_attached_parts() 
    480     if part: 
    481         part=part[0] 
    482         part_parent=part.part 
    483         #list_link=ParentChildLink.objects.filter(parent=part.part).values_list("id", flat=True) 
    484         list_link=ParentChildLink.objects.filter(parent=part_parent) 
    485         for i in range(len(list_link)): 
    486             link=Location_link.objects.filter(link=list_link[i]) 
    487             if link:  
    488                 part_child=list_link[i].child 
    489                 part_controller=PartController(part_child,user) 
    490                 list_doc=part_controller.get_attached_documents() 
    491                 for Doc_Part_Link in list_doc: 
    492                     if Doc_Part_Link.document.type=="Document3D":# y si hay mas de uno ?? tratar el caso 
    493                         #y si esta descompuesto? 
    494                         STP_file=Doc_Part_Link.document.files.filter(Q(filename__iendswith=".stp") | Q(filename__iendswith=".step")) 
    495                         if STP_file.exists(): 
    496                             to_add=stp_to_jss.objects.filter(stp=STP_file[0]) 
    497                             for t in range(len(to_add)): 
    498                                 files_to_add.append(to_add[t])  
    499                             add_references_file_geometry_js(user,STP_file[0],files_to_add) 
     475 
    500476 
    501477 
     
    542518   
    543519    list_doc3D_controller , instances =generate_part_doc_links(options,links,obj,user)                           
    544     product=decomposer_all(stp_file,list_doc3D_controller,user,links) 
     520    my_step_importer=decomposer_all(stp_file,list_doc3D_controller,user,links) 
    545521    update_indexes.delay(instances) 
    546     return product  
    547      
    548  
     522    return my_step_importer  
     523     
     524 
Note: See TracChangeset for help on using the changeset viewer.