Changeset 1141 in main


Ignore:
Timestamp:
05/30/12 14:31:25 (7 years ago)
Author:
zali
Message:

Lifecycle tab : merge lifecycle and management page. Redirection from the management tab to the lifecycle tab.

Location:
trunk/openPLM
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/openPLM/plmapp/views/main.py

    r1137 r1141  
    328328                'password_form' : password_form, 
    329329                }) 
     330    #get_management_data(obj,ctx) 
    330331    return r2r('lifecycle.html', ctx, request) 
     332 
     333def display_lifecycle_bis(request, obj_type, obj_ref, obj_revi): 
     334    """ 
     335    Manage html page which display lifecycle of an object and users who manages its 
     336    """ 
     337    obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi) 
     338    if request.method == 'POST': 
     339        password_form = forms.ConfirmPasswordForm(request.user, request.POST) 
     340        if password_form.is_valid(): 
     341            if "demote" in request.POST: 
     342                obj.demote() 
     343            elif "promote" in request.POST: 
     344                obj.promote() 
     345            return HttpResponseRedirect("..") 
     346        if "demote" in request.POST: 
     347            ctx["action"] = "demote" 
     348        elif "promote" in request.POST: 
     349            ctx["action"] = "promote" 
     350    else:  
     351        password_form = forms.ConfirmPasswordForm(request.user) 
     352    ctx.update({'password_form' : password_form,}) 
     353    signer_list = get_management_data(request,obj,ctx) 
     354    get_lifecycle_data(signer_list,obj,ctx) 
     355    return r2r('lifecycle_bis.html',ctx,request) 
     356     
     357     
     358def get_lifecycle_data(signers,obj,ctx): 
     359    state = obj.state.name 
     360    object_lifecycle = [] 
     361    signers_data=[] 
     362    roles = dict(obj.plmobjectuserlink_plmobject.values_list("role", "user__username")) 
     363    lcs = obj.lifecycle.to_states_list() 
     364    for i, st in enumerate(lcs): 
     365        signer = roles.get(level_to_sign_str(i)) 
     366        signer_data = signers.filter(role=level_to_sign_str(i)) 
     367        if len(signer_data)==0: 
     368            signer_data=roles.get(level_to_sign_str(i)) 
     369            nb_signer = 0 
     370        else: 
     371            nb_signer = len(signer) 
     372            signer_data = signer_data[0] 
     373        signers_data.append({"signer":signer_data,"nb_signer":nb_signer}) 
     374        object_lifecycle.append((st, st == state, signer)) 
     375    is_signer = obj.check_permission(obj.get_current_sign_level(), False) 
     376    is_signer_dm = obj.check_permission(obj.get_previous_sign_level(), False) 
     377 
     378    # warning if a previous revision will be cancelled/deprecated 
     379    cancelled = [] 
     380    deprecated = [] 
     381    if is_signer: 
     382        if lcs.next_state(state) == obj.lifecycle.official_state.name: 
     383            for rev in obj.get_previous_revisions(): 
     384                if rev.is_official: 
     385                    deprecated.append(rev) 
     386                elif rev.is_draft or rev.is_proposed: 
     387                    cancelled.append(rev) 
     388    ctx["cancelled_revisions"] = cancelled 
     389    ctx["deprecated_revisions"] = deprecated 
     390 
     391    ctx.update({'current_page':'lifecycle',  
     392                'object_lifecycle': object_lifecycle, 
     393                'is_signer' : is_signer,  
     394                'is_signer_dm' : is_signer_dm, 
     395                'signers_data':signers_data 
     396                }) 
     397     
     398def get_management_data(request,obj,ctx): 
     399    """ 
     400    Update ctx with mangemement data related to obj 
     401    """ 
     402    object_management_list = models.PLMObjectUserLink.objects.filter(plmobject=obj) 
     403    object_management_list = object_management_list.order_by("role") 
     404    levels =[] 
     405    lcs = obj.lifecycle.to_states_list() 
     406    for i, st in enumerate(lcs): 
     407        levels.append(level_to_sign_str(i)) 
     408    signer_list = object_management_list.filter(role__in=levels) 
     409    notified_list = object_management_list.filter(role="notified") 
     410    owner_list = object_management_list.filter(role="owner") 
     411    if not ctx["is_owner"]: 
     412        link = object_management_list.filter(role="notified", user=request.user) 
     413        ctx["is_notified"] = bool(link) 
     414        if link: 
     415            ctx["remove_notify_link"] = link[0] 
     416        else: 
     417            if obj.check_in_group(request.user, False): 
     418                initial = { "type" : "User", 
     419                            "username" : request.user.username 
     420                          } 
     421                form = forms.SelectUserForm(initial=initial) 
     422                for field in ("type", "username"): 
     423                    form.fields[field].widget = HiddenInput()  
     424                ctx["notify_self_form"] = form 
     425                ctx["can_notify"] = True 
     426            else: 
     427                ctx["can_notify"] = False 
     428    ctx.update({'notified_list': notified_list, 
     429                'owner_list':owner_list}) 
     430    return signer_list 
    331431     
    332432 
     
    11181218 
    11191219########################################################################################## 
    1120 @handle_errors(undo="../..") 
     1220@handle_errors(undo="../../../lifecycle") 
    11211221def replace_management(request, obj_type, obj_ref, obj_revi, link_id): 
    11221222    """ 
     
    14971597    if request.POST: 
    14981598        checkin_file_form = forms.AddFileForm(request.POST, request.FILES) 
     1599        print checkin_file_form.errors 
    14991600        if checkin_file_form.is_valid(): 
    15001601            obj.checkin(models.DocumentFile.objects.get(id=file_id_value), 
    15011602                        request.FILES["filename"]) 
     1603 
    15021604            return HttpResponseRedirect(obj.plmobject_url + "files/") 
    15031605    else: 
  • trunk/openPLM/templates/management.html

    r1109 r1141  
    88{% endblock %} 
    99 
    10  
     10{% block scripts %} 
     11<script type="text/javascript"> 
     12$(window).load(function(){ 
     13    var current = location.href; 
     14    var go_to = current.split("/management")[0]; 
     15    location.href=go_to+"/lifecycle/"; 
     16}); 
     17</script> 
     18{% endblock %} 
    1119 
    1220{% block content %} 
     21 
    1322    {% if is_owner %} 
    1423        <a class="{{"Button"|button}}" href="./add/" ><span class="ui-button-text">{% trans "Notify" %}</span></a> 
  • trunk/openPLM/urls.py

    r1124 r1141  
    106106    (r'$', display_object), 
    107107    (r'attributes/$', display_object_attributes), 
    108     (r'lifecycle/(?:apply/)?$', display_object_lifecycle), 
     108    #(r'lifecycle/(?:apply/)?$', display_object_lifecycle), 
     109    (r'lifecycle/(?:apply/)?$', display_lifecycle_bis), 
    109110    (r'revisions/$', display_object_revisions), 
    110111    (r'history/$', display_object_history), 
Note: See TracChangeset for help on using the changeset viewer.