Changeset 1096 in main


Ignore:
Timestamp:
05/10/12 14:29:48 (7 years ago)
Author:
zali
Message:

Handle and get progress for file upload using a custom upload handler

Location:
trunk/openPLM
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/openPLM/plmapp/filehandlers/__init__.py

    r864 r1096  
    6464from pdfhandler import PDFHandler 
    6565 
     66from progressbarhandler import * 
  • trunk/openPLM/plmapp/views/main.py

    r1090 r1096  
    8585from openPLM.plmapp.exceptions import ControllerError, PermissionError 
    8686from openPLM.plmapp.utils import level_to_sign_str, get_next_revision 
     87from openPLM.plmapp.filehandlers.progressbarhandler import ProgressBarUploadHandler 
    8788 
    8889import glob 
     
    984985 
    985986########################################################################################## 
     987 
     988@csrf_exempt 
     989def up_file(request, obj_type, obj_ref, obj_revi): 
     990    request.upload_handlers.insert(0, ProgressBarUploadHandler(request)) 
     991    return _up_file(request, obj_type, obj_ref, obj_revi) 
     992 
     993@handle_errors 
     994@csrf_protect 
     995def _up_file(request, obj_type, obj_ref, obj_revi): 
     996    obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi) 
     997    if request.method == "POST": 
     998        add_file_form = forms.AddFileForm(request.POST, request.FILES) 
     999        if add_file_form.is_valid(): 
     1000            obj.add_file(request.FILES["filename"]) 
     1001            ctx.update({'add_file_form': add_file_form, }) 
     1002            return HttpResponse(".") 
     1003 
    9861004@handle_errors 
    9871005@csrf_protect 
     
    9921010    obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi) 
    9931011    ret = "" 
    994     #if 'f_path' in request.GET: 
    995     #f_path=request.GET['f_path'] 
    996     f = glob.glob("/tmp/*upload") 
    997     ret = str(os.path.getsize(f[0])) 
     1012    p_id = request.GET['X-Progress-ID'] 
     1013    f = glob.glob("/tmp/*%s_upload" % p_id) 
     1014    if len(f) > 0: 
     1015        ret = str(os.path.getsize(f[0])) 
    9981016    if ret==request.GET['f_size']: 
    9991017        ret += ":linking" 
  • trunk/openPLM/templates/documents/files_add.html

    r1088 r1096  
    9494} 
    9595 
    96  
     96function upload_end(){ 
     97    var div_text = $("#progress_div").text(); 
     98    return ((div_text=="")||(div_text.substr(0,3)=="100")||(totalsize==0)||(uploaded==totalsize)); 
     99} 
    97100var t; 
    98101//id generated for the uploaded file not use any more 
     
    112115    $("input[type='file']").change(function (){ 
    113116        //add_file(this); 
    114         //id=gen_uuid(); 
     117        id=gen_uuid(); 
    115118    }); 
    116119    $("input[name='_undo']").click(function(){ 
     
    123126        var file_form = $('form#fileupload')[0]; 
    124127        var new_action = file_form.action; 
    125         /*new_action = new_action.replace("/files/add","/files/up"); 
    126         new_action +="?X-Progress-ID="+id;*/ 
     128        new_action = new_action.replace("/files/add","/files/up"); 
     129        new_action +="?X-Progress-ID="+id; 
    127130        function update_progress_info() { 
    128             if(($("#progress_div").text()!=="")&&(totalsize!=0)){ 
     131            if(upload_end()==false){ 
    129132                var xhr2=getXHR(); 
    130133                var action = location.href; 
     
    132135                action=action.replace("/files/add","/files/_up"); 
    133136                //action+="?f_path="+path; 
    134                 //action+="?X-Progress-ID="+id; 
    135                 action+="?f_size="+totalsize; 
     137                action+="?X-Progress-ID="+id; 
     138                action+="&f_size="+totalsize; 
    136139                xhr2.open("GET",action,true); 
    137140                xhr2.onreadystatechange = function() { 
    138                     /*if(xhr2.readyState == 2){ 
    139                         $("#test_req").append(" demande pour up du progrès reçue<br/"+">"); 
    140                     }*/ 
    141141                    if((xhr2.readyState == 4)&&(xhr2.status!=500)) { 
    142142                        var response=xhr2.responseText; 
     
    149149                                aux_per=aux_per.split(".")[0]+"."+aux_per.split(".")[1].substr(0,2); 
    150150                            $("#up_progress").text(aux_per+"%"); 
    151                             //$("#up_progress").text(percent+"%"); 
    152151                        } 
    153152                        if(f_status=="linking"){ 
     
    163162                xhr2.send(null); 
    164163                //if(uploaded!=totalsize) 
    165                 window.setTimeout(update_progress_info, 1000); 
    166                 if(go_to!="") 
    167                     location.href=go_to; 
    168164            } 
     165            t=window.setTimeout(update_progress_info, 1000); 
     166            if(go_to!="") 
     167                location.href=go_to; 
    169168        }; 
    170         window.setTimeout(update_progress_info, 1000); 
     169        t=window.setTimeout(update_progress_info, 1000); 
    171170        xhr.onreadystatechange = function() { 
    172171            if(xhr.readyState == 4) { 
     
    177176        xhr.open("POST", new_action,true); 
    178177        data = new FormData(file_form); 
    179         data.append("path",path); 
     178        data.append("X-Progress-ID",id); 
    180179        xhr.send(data); 
    181180        var file_liste=file_form.elements["filename"].files; 
     
    208207</form> 
    209208 
    210 <div id="progress_div"> 
    211 </div> 
     209<div id="progress_div"></div> 
    212210<div id="test_req"></div> 
    213211{% endblock %} 
  • trunk/openPLM/urls.py

    r1088 r1096  
    117117    (r'files/$', display_files), 
    118118    (r'files/add/$', add_file), 
    119     #(r'files/up/$', up_file), 
     119    (r'files/up/$', up_file), 
    120120    (r'files/_up/$', up_progress), 
    121121    (r'files/checkin/(?P<file_id_value>[^/]+)/$', checkin_file), 
Note: See TracChangeset for help on using the changeset viewer.