def ajax_attach(request, plmobject_id): plmobject = get_obj_by_id(plmobject_id, request.user) data = {} if request.GET: form = forms.AddRelPartForm(initial=request.GET) else: form = forms.AddRelPartForm(request.POST) if form.is_valid(): attached = get_obj_from_form(form, request.user) if hasattr(plmobject, "attach_to_document"): plmobject.attach_to_document(attached) elif hasattr(plmobject, "attach_to_part"): plmobject.attach_to_part(attached) return {"result" : "ok"} else: data["result"] = "error" data["error"] = "invalid form" for field in ("type", "reference", "revision"): form.fields[field].widget.attrs['readonly'] = 'on' data.update({ "plmobject" : { "id" : plmobject.id, "type" : plmobject.type, "reference" : plmobject.reference, "revision" : plmobject.revision, }, "form" : form.as_table() }) return data
def ajax_add_child(request, part_id): part = get_obj_by_id(part_id, request.user) data = {} if request.GET: form = forms.AddChildForm(part.object, initial=request.GET) else: form = forms.AddChildForm(part.object, request.POST) if form.is_valid(): child = get_obj_from_form(form, request.user) part.add_child(child, form.cleaned_data["quantity"], form.cleaned_data["order"], form.cleaned_data["unit"], **form.extensions) return {"result" : "ok"} else: data["result"] = "error" data["error"] = "invalid form" for field in ("type", "reference", "revision"): form.fields[field].widget.attrs['readonly'] = 'on' data.update({ "parent" : { "id" : part.id, "type" : part.type, "reference" : part.reference, "revision" : part.revision, }, "form" : form.as_table() }) return data
def add_management(request, obj_type, obj_ref, obj_revi): """ Manage html page for the addition of a "notification" link (:class:`PLMObjectUserLink`) between some Users and the selected object. It computes a context dictionnary based on .. include:: views_params.txt """ obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi) if request.method == "POST": add_management_form = SelectUserForm(request.POST) if add_management_form.is_valid(): if add_management_form.cleaned_data["type"] == "User": user_obj = get_obj_from_form(add_management_form, request.user) obj.set_role(user_obj.object, "notified") return HttpResponseRedirect("..") else: add_management_form = SelectUserForm() ctx.update({'current_page':'management', 'replace_management_form': add_management_form, 'link_creation': True, "attach" : (obj, "delegate")}) return r2r('DisplayObjectManagementReplace.htm', ctx, request)
def replace_management(request, obj_type, obj_ref, obj_revi, link_id): """ Manage html page for the modification of the Users who manage the selected object (:class:`PLMObjectUserLink`). It computes a context dictionnary based on .. include:: views_params.txt :param link_id: :attr:`.PLMObjectUserLink.id` :type link_id: str """ obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi) link = models.PLMObjectUserLink.objects.get(id=int(link_id)) if obj.object.id != link.plmobject.id: raise ValueError("Bad link id") if request.method == "POST": replace_management_form = SelectUserForm(request.POST) if replace_management_form.is_valid(): if replace_management_form.cleaned_data["type"] == "User": user_obj = get_obj_from_form(replace_management_form, request.user) obj.set_role(user_obj.object, link.role) if link.role == 'notified': obj.remove_notified(link.user) return HttpResponseRedirect("../..") else: replace_management_form = SelectUserForm() ctx.update({'current_page':'management', 'replace_management_form': replace_management_form, 'link_creation': True, 'attach' : (obj, "delegate")}) return r2r('DisplayObjectManagementReplace.htm', ctx, request)
def add_children(request, obj_type, obj_ref, obj_revi): """ Manage html page for chidren creation of the selected object. It computes a context dictionnary based on .. include:: views_params.txt """ obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi) if request.POST: add_child_form = AddChildForm(obj.object, request.POST) if add_child_form.is_valid(): child_obj = get_obj_from_form(add_child_form, request.user) obj.add_child(child_obj, add_child_form.cleaned_data["quantity"], add_child_form.cleaned_data["order"], add_child_form.cleaned_data["unit"], **add_child_form.extensions) return HttpResponseRedirect(obj.plmobject_url + "BOM-child/") else: add_child_form = AddChildForm(obj.object) ctx['current_page'] = 'BOM-child' ctx.update({'link_creation': True, 'add_child_form': add_child_form, 'attach' : (obj, "add_child")}) return r2r('DisplayObjectChildAdd.htm', ctx, request)
def ajax_can_add_child(request, part_id): part = get_obj_by_id(part_id, request.user) data = {"can_add" : False} if part.is_part and request.GET: form = forms.AddRelPartForm(request.GET) if form.is_valid(): child = get_obj_from_form(form, request.user) data["can_add"] = part.can_add_child(child) return data
def ajax_can_attach(request, plmobject_id): plmobject = get_obj_by_id(plmobject_id, request.user) data = {"can_attach" : False} if isinstance(plmobject, PLMObjectController) and request.GET: form = forms.AddRelPartForm(request.GET) if form.is_valid(): attached = get_obj_from_form(form, request.user) if attached.check_readable(False): if hasattr(plmobject, "can_attach_document"): data["can_attach"] = plmobject.can_attach_document(attached) elif hasattr(plmobject, "can_attach_part"): data["can_attach"] = plmobject.can_attach_part(attached) return data
def delegate(request, obj_ref, role, sign_level): """ Manage html page for delegations modification of the selected :class:`~django.contrib.auth.models.User`. It computes a context dictionnary based on :param request: :class:`django.http.QueryDict` :param obj_type: :class:`~django.contrib.auth.models.User` :type obj_ref: str :param role: :attr:`.DelegationLink.role` if role is not "sign" :type role: str :param sign_level: used for :attr:`.DelegationLink.role` if role is "sign" :type sign_level: str :return: a :class:`django.http.HttpResponse` """ obj, ctx = get_generic_data(request, "User", obj_ref) if request.method == "POST": delegation_form = SelectUserForm(request.POST) if delegation_form.is_valid(): if delegation_form.cleaned_data["type"] == "User": user_obj = get_obj_from_form(delegation_form, request.user) if role == "notified" or role == "owner": obj.delegate(user_obj.object, role) return HttpResponseRedirect("../..") elif role == "sign": if sign_level == "all": obj.delegate(user_obj.object, "sign*") return HttpResponseRedirect("../../..") elif sign_level.isdigit(): obj.delegate(user_obj.object, level_to_sign_str(int(sign_level)-1)) return HttpResponseRedirect("../../..") else: delegation_form = SelectUserForm() if role == 'sign': if sign_level.isdigit(): role = _("signer level") + " " + str(sign_level) else: role = _("signer all levels") elif role == "notified": role = _("notified") ctx.update({'current_page':'delegation', 'replace_management_form': delegation_form, 'link_creation': True, 'attach' : (obj, "delegate"), 'role': role}) return r2r('DisplayObjectManagementReplace.htm', ctx, request)
def add_doc_cad(request, obj_type, obj_ref, obj_revi): """ Manage html page for link creation (:class:`DocumentPartLink` link) between the selected object and some documents or CAD. It computes a context dictionnary based on .. include:: views_params.txt """ obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi) if request.POST: add_doc_cad_form = AddDocCadForm(request.POST) if add_doc_cad_form.is_valid(): doc_cad_obj = get_obj_from_form(add_doc_cad_form, request.user) obj.attach_to_document(doc_cad_obj) return HttpResponseRedirect(obj.plmobject_url + "doc-cad/") else: add_doc_cad_form = AddDocCadForm() ctx.update({'link_creation': True, 'add_doc_cad_form': add_doc_cad_form, 'attach' : (obj, "attach_doc")}) return r2r('DisplayDocCadAdd.htm', ctx, request)