Changeset 876 in main


Ignore:
Timestamp:
03/09/12 17:21:47 (9 years ago)
Author:
pcosquer
Message:

merge the 3D branch into the trunk
/!\ document3D is not enabled by default

Location:
trunk
Files:
2 added
11 edited
60 copied

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/openPLM

    • Property svn:ignore
      •  

        old new  
        11coverage_report 
        22.coverage 
         3settings.py 
  • trunk/openPLM/docs

    • Property sfn:ignore set to
      *
    • Property svn:ignore set to
      *
  • trunk/openPLM/document3D/views.py

    r874 r876  
     1from operator import attrgetter 
    12from openPLM.plmapp.base_views import handle_errors , get_generic_data 
    23from openPLM.document3D.forms import * 
  • trunk/openPLM/etc/default/celeryd

    r416 r876  
    1010 
    1111# Extra arguments to celeryd 
    12 CELERYD_OPTS="-Q index,mails,celery --time-limit=300 --concurrency=8" 
     12CELERYD_OPTS="-Q index,mails,celery,step --time-limit=300 --concurrency=8" 
    1313 
    1414# Name of the celery config module. 
  • trunk/openPLM/plmapp/controllers/part.py

    r864 r876  
    133133        self._save_histo(link.ACTION_NAME, 
    134134                         "parent : %s\nchild : %s" % (self.object, child)) 
     135        return link 
    135136 
    136137    def delete_child(self, child): 
     
    215216                ext = PCLE(link=link2, **extension_data[name]) 
    216217                ext.save() 
     218        return link2 
    217219 
    218220    def get_children(self, max_level=1, date=None, 
  • trunk/openPLM/plmapp/forms.py

    r866 r876  
    127127    return data 
    128128 
    129 def get_creation_form(user, cls=m.PLMObject, data=None, start=0): 
     129def get_creation_form(user, cls=m.PLMObject, data=None, start=0, **kwargs): 
    130130    u""" 
    131131    Returns a creation form suitable to creates an object 
     
    163163        get_creation_form.cache[cls] = Form 
    164164    if data is None: 
    165         form = Form(initial=get_initial_creation_data(cls, start)) 
    166     else: 
    167         form = Form(data=data) 
     165        form = Form(initial=get_initial_creation_data(cls, start), **kwargs) 
     166    else: 
     167        form = Form(data=data, **kwargs) 
    168168    if issubclass(cls, m.PLMObject): 
    169169        # display only valid groups 
  • trunk/openPLM/plmapp/models.py

    r864 r876  
    14571457        _get_all_subclasses_with_level(part, lst, level) 
    14581458 
     1459get_all_subclasses_with_level = _get_all_subclasses_with_level 
     1460 
    14591461@memoize_noarg 
    14601462def get_all_plmobjects_with_level(): 
     
    14701472    lst.append(("Group", "Group")) 
    14711473    return lst 
     1474 
     1475@memoize_noarg 
     1476def get_all_plmparts_with_level(): 
     1477    lst = [] 
     1478    level=">>" 
     1479    _get_all_subclasses_with_level(Part, lst , level) 
     1480    return lst    
    14721481 
    14731482@memoize_noarg 
  • trunk/openPLM/plmapp/tests/base.py

    r795 r876  
    5656            try: 
    5757                os.remove(df.file.path) 
    58             except IOError: 
     58            except (IOError, OSError): 
    5959                pass 
    6060 
  • trunk/openPLM/runserver.sh

    r417 r876  
    11#! /usr/bin/env sh 
    2 ./manage.py celeryd -Q mails,index,celery -c 3 -l info & 
     2./manage.py celeryd -Q mails,index,celery,step -c 3 -l info & 
    33python -m smtpd -n -c DebuggingServer localhost:1025 & 
    44./manage.py runserver 
  • trunk/openPLM/settings_tests.py

    r806 r876  
    112112) 
    113113 
     114if os.environ.get("openPLM3D", "") == "enabled": 
     115    INSTALLED_APPS += ("openPLM.document3D", ) 
     116 
    114117AUTH_PROFILE_MODULE = 'plmapp.UserProfile' 
    115118 
  • trunk/plugins/freecad/OpenPLM/openplm.py

    r690 r876  
    66import tempfile 
    77 
     8 
    89# poster makes it possible to send http request with files 
    910# sudo easy_install poster 
     
    1819 
    1920import FreeCAD, FreeCADGui 
     21import Part 
    2022 
    2123connect = QtCore.QObject.connect 
     
    114116            gdoc = FreeCAD.ActiveDocument 
    115117            path = os.path.join(rep, filename) 
     118            fileName, fileExtension = os.path.splitext(filename) 
     119            path_stp=os.path.join(rep, (fileName+".stp")) 
     120            #create temporal file stp   
     121            Part.export(gdoc.Objects,path_stp) 
    116122            gdoc.FileName = path 
    117123            save(gdoc) 
    118             doc_file = self.upload_file(doc, path) 
     124             
     125            #upload stp and freecad object 
     126            doc_step_file=self.upload_file(doc, path_stp) # XXX 
     127            doc_file = self.upload_file(doc, path) # XXX 
     128             
     129            #remove temporal file stp   
     130            os.remove(path_stp) 
     131             
     132             
    119133            self.add_managed_file(doc, doc_file, path) 
    120134            self.load_file(doc, doc_file["id"], path, gdoc) 
    121135            if not unlock: 
    122                 self.get_data("api/object/%s/lock/%s/" % (doc["id"], doc_file["id"])) 
     136                self.get_data("api/object/%s/lock/%s/" % (doc["id"], doc_file["id"])) # XXX 
     137                self.get_data("api/object/%s/lock/%s/" % (doc["id"], doc_step_file["id"])) # XXX 
    123138            else: 
    124139                self.send_thumbnail(gdoc) 
     
    149164        res = json.load(self.opener.open(request)) 
    150165        return res["doc_file"] 
     166         
     167         
     168 
     169         
    151170 
    152171    def download(self, doc, doc_file): 
     172     
     173     
     174     
    153175        f = self.opener.open(self.SERVER + "file/%s/" % doc_file["id"]) 
    154176        rep = os.path.join(self.PLUGIN_DIR, doc["type"], doc["reference"], 
     
    179201        self.get_data("api/object/%s/checkout/%s/" % (doc["id"], doc_file["id"])) 
    180202        self.download(doc, doc_file) 
     203         
     204 
     205        #on va locker fichier step associe 
     206        url= "api/object/%s/files/all/" % doc["id"]  
     207        res = PLUGIN.get_data(url) 
     208        fileName, fileExtension = os.path.splitext(doc_file["filename"]) 
     209        doc_step = [obj for obj in res["files"] if obj["filename"] == fileName+".stp"] 
     210        if not len(doc_step)==0:     
     211            self.get_data("api/object/%s/lock/%s/" % (doc["id"], doc_step[0]["id"])) 
     212        #end locker     
    181213 
    182214    def add_managed_file(self, document, doc_file, path): 
     
    240272                del data["documents"][str(doc["id"])] 
    241273            self.save_conf(data) 
     274            #on va unlocker 
     275            self.get_data("api/object/%s/unlock/%s/" % (doc["id"], doc_file_id))  
     276            url= "api/object/%s/files/all/" % doc["id"]  
     277            res = PLUGIN.get_data(url) 
     278            root, f_name = os.path.split(path) 
     279            fileName, fileExtension = os.path.splitext(f_name) 
     280            doc_step = [obj for obj in res["files"] if obj["filename"] == fileName+".stp"] 
     281            if not len(doc_step)==0:     
     282                self.get_data("api/object/%s/unlock/%s/" % (doc["id"], doc_step[0]["id"])) 
     283   
     284            #end unlocker     
     285                           
    242286            if delete and os.path.exists(path): 
    243287                os.remove(path) 
     
    265309            doc = self.documents[gdoc]["openplm_doc"] 
    266310            doc_file_id = self.documents[gdoc]["openplm_file_id"] 
     311            #doc_file_name = self.documents[gdoc]["openplm_file_name"] 
    267312            path = self.documents[gdoc]["openplm_path"] 
    268313            def func(): 
     
    271316                datagen, headers = multipart_encode({"filename": open(path, "rb")}) 
    272317                # Create the Request object 
    273                 url = self.SERVER + "api/object/%s/checkin/%s/" % (doc["id"], doc_file_id) 
    274                 request = urllib2.Request(url, datagen, headers) 
     318                 
     319                 
     320                #check-in fichier step asscocies if exists 
     321                #api/doc_id/files/[all/] 
     322                url= "api/object/%s/files/all/" % doc["id"]  
     323                res = PLUGIN.get_data(url) 
     324                root, f_name = os.path.split(path) 
     325                fileName, fileExtension = os.path.splitext(f_name) 
     326                doc_step = [obj for obj in res["files"] if obj["filename"] == fileName+".stp"] 
     327                 
     328                if len(doc_step)==0:    #il faut generer un nouvelle fichier step 
     329 
     330                    fileName, fileExtension = os.path.splitext(path) 
     331                    path_stp=fileName+".stp" 
     332                    Part.export(gdoc.Objects,path_stp) 
     333                    doc_step_file=self.upload_file(doc,path_stp) # XXX 
     334                    doc_step.append(doc_step_file) 
     335 
     336                else:                   #il faut un check-in 
     337  
     338                    fileName, fileExtension = os.path.splitext(path) 
     339                    Part.export(gdoc.Objects,fileName+".stp") 
     340                    datagen, headers = multipart_encode({"filename": open(fileName+".stp", "rb")}) 
     341                    url = self.SERVER + "api/object/%s/checkin/%s/" % (doc["id"], doc_step[0]["id"]) # XXX 
     342                    request = urllib2.Request(url, datagen, headers) 
     343                    res = self.opener.open(request) 
     344                    os.remove(fileName+".stp")                  
     345                 
     346                 
     347                 
     348                url = self.SERVER + "api/object/%s/checkin/%s/" % (doc["id"], doc_file_id) # XXX 
     349                request = urllib2.Request(url, datagen, headers)                 
    275350                res = self.opener.open(request) 
     351                 
     352 
     353                 
    276354                if not unlock: 
    277                     self.get_data("api/object/%s/lock/%s/" % (doc["id"], doc_file_id)) 
     355                    self.get_data("api/object/%s/lock/%s/" % (doc["id"], doc_file_id)) # XXX 
     356                    self.get_data("api/object/%s/lock/%s/" % (doc["id"], doc_step[0]["id"])) # XXX 
    278357                else: 
    279358                    self.send_thumbnail(gdoc) 
Note: See TracChangeset for help on using the changeset viewer.