Exemplo n.º 1
0
def ajax_logs(request, obj_type, obj_ref, obj_revi):
    """
    Ajax Logs page of a SubversionRepository. 
    """
    obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi)
    
    ctx["error"] = False
    try:
        revision = parse_revision(obj.svn_revision)
        uri = obj.repository_uri
        if uri.startswith("file://") or uri.startswith("/"):
            raise ValueError()
        client = pysvn.Client()
        if not client.is_url(uri):
            raise ValueError()
        logs = client.log(uri, limit=20, revision_start=revision)
        for log in logs:
            log["date"] = datetime.datetime.fromtimestamp(log["date"])
            log["day"] = get_day(log)
        ctx["logs"] = logs
    except (ValueError, pysvn.ClientError):
        ctx["error"] = True
    
    ctx['current_page'] = 'logs'
    return pviews.r2r('ajax_logs.htm', ctx, request)
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
def display_files(request, obj_type, obj_ref, obj_revi):
    """
    Files page of a SubversionRepository. 
    """
    obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi)
    ctx['current_page'] = 'files'
    return pviews.r2r('subversion_files.htm', ctx, request)
Exemplo n.º 4
0
def edit_children(request, obj_type, obj_ref, obj_revi):
    """
    Manage html page which edits the chidren of the selected object.
    Possibility to modify the `.ParentChildLink.order`, the `.ParentChildLink.quantity` and to
    desactivate the `.ParentChildLink`
    It computes a context dictionnary based on
    
    .. include:: views_params.txt 
    """
    obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi)
    
    if not hasattr(obj, "get_children"):
        # TODO
        raise TypeError()
    if request.method == "POST":
        formset = get_children_formset(obj, request.POST)
        if formset.is_valid():
            obj.update_children(formset)
            return HttpResponseRedirect("..")
    else:
        formset = get_children_formset(obj)
    extra_columns = []
    extra_fields = []
    for PCLE in models.get_PCLEs(obj.object):
        fields = PCLE.get_visible_fields()
        if fields:
            extra_columns.extend((f, PCLE._meta.get_field(f).verbose_name) 
                    for f in fields)
            prefix = PCLE._meta.module_name
            extra_fields.extend('%s_%s' % (prefix, f) for f in fields)
    ctx.update({'current_page':'BOM-child',
                'extra_columns' : extra_columns,
                'extra_fields' : extra_fields,
                'children_formset': formset, })
    return r2r('DisplayObjectChildEdit.htm', ctx, request)
Exemplo n.º 5
0
def display_management(request, obj_type, obj_ref, obj_revi):
    """
    Manage html page which displays the Users who manage the selected object (:class:`PLMObjectUserLink`).
    It computes a context dictionnary based on
    
    .. include:: views_params.txt 
    """
    obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi)
    
    object_management_list = models.PLMObjectUserLink.objects.filter(plmobject=obj)
    object_management_list = object_management_list.order_by("role")
    if not ctx["is_owner"]:
        link = object_management_list.filter(role="notified", user=request.user)
        ctx["is_notified"] = bool(link)
        if link:
            ctx["remove_notify_link"] = link[0]
        else:
            initial = { "type" : "User",
                        "username" : request.user.username
                      }
            form = SelectUserForm(initial=initial)
            for field in ("type", "username"):
                form.fields[field].widget = HiddenInput() 
            ctx["notify_self_form"] = form
    ctx.update({'current_page':'management',
                'object_management': object_management_list})
    
    return r2r('DisplayObjectManagement.htm', ctx, request)
Exemplo n.º 6
0
def display_object_parents(request, obj_type, obj_ref, obj_revi):
    """
    Manage html page which displays the parent 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 not hasattr(obj, "get_parents"):
        # TODO
        raise TypeError()
    date = None
    level = "first"
    if request.GET:
        display_form = DisplayChildrenForm(request.GET)
        if display_form.is_valid():
            date = display_form.cleaned_data["date"]
            level = display_form.cleaned_data["level"]
    else:
        display_form = DisplayChildrenForm(initial={"date" : datetime.datetime.now(),
                                                    "level" : "first"})
    max_level = 1 if level == "first" else -1
    parents = obj.get_parents(max_level, date=date)
    if level == "last" and parents:
        maximum = max(parents, key=attrgetter("level")).level
        parents = (c for c in parents if c.level == maximum)
    ctx.update({'current_page':'parents',
                'parents' :  parents,
                'display_form' : display_form, })
    return r2r('DisplayObjectParents.htm', ctx, request)
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
def display_object_lifecycle(request, obj_type, obj_ref, obj_revi):
    """
    Manage html page which displays lifecycle 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.method == 'POST':
        if request.POST["action"] == "DEMOTE":
            obj.demote()
        elif request.POST["action"] == "PROMOTE":
            obj.promote()
    
    state = obj.state.name
    object_lifecycle = []
    roles = dict(obj.plmobjectuserlink_plmobject.values_list("role", "user__username"))
    for i, st in enumerate(obj.lifecycle):
        signer = roles.get(level_to_sign_str(i))
        object_lifecycle.append((st, st == state, signer))
    is_signer = obj.check_permission(obj.get_current_sign_level(), False)
    is_signer_dm = obj.check_permission(obj.get_previous_sign_level(), False)
    ctx.update({'current_page':'lifecycle', 
                'object_lifecycle': object_lifecycle,
                'is_signer' : is_signer, 
                'is_signer_dm' : is_signer_dm})
    return r2r('DisplayObjectLifecycle.htm', ctx, request)
Exemplo n.º 9
0
def change_user_password(request, obj_ref):
    """
    Manage html page for the modification of the selected
    :class:`~django.contrib.auth.models.User` password.
    It computes a context dictionnary based on
    
    :param request: :class:`django.http.QueryDict`
    :param obj_ref: :attr:`~django.contrib.auth.models.User.username`
    :return: a :class:`django.http.HttpResponse`
    """
    if request.user.username=='test':
        return HttpResponseRedirect("/user/%s/attributes/" % request.user)
    obj, ctx = get_generic_data(request, "User", obj_ref)
    if obj.object != request.user:
        raise PermissionError("You are not the user")

    if request.method == 'POST' and request.POST:
        modification_form = PasswordChangeForm(obj, request.POST)
        if modification_form.is_valid():
            obj.set_password(modification_form.cleaned_data['new_password2'])
            obj.save()
            return HttpResponseRedirect("/user/%s/" % obj.username)
    else:
        modification_form = PasswordChangeForm(obj)
    
    ctx.update({'class4div': "ActiveBox4User",
                'modification_form': modification_form})
    return r2r('DisplayObject4PasswordModification.htm', ctx, request)
Exemplo n.º 10
0
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)
Exemplo n.º 11
0
def display_files(request, client, obj_type, obj_ref, obj_revi):
    """
    Files page of a GoogleDocument. 
    """
    obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi)
    
    if not hasattr(obj, "files"):
        raise TypeError()
    try:
        entry = client.get_resource_by_id(obj.resource_id)
        edit_uri = ""
        for link in entry.link:
            if link.rel == 'alternate':
                edit_uri = link.href
                break
        uri = client._get_download_uri(entry.content.src)
        ctx.update({
            'resource' : obj.resource_id.split(":", 1)[-1],
            'download_uri' : uri,
            'edit_uri' : edit_uri,
            'error' : False,
            })
    except gdata.client.RequestError:
        ctx['error'] = True
    
    ctx['current_page'] = 'files'
    return pviews.r2r('gdoc_files.htm', ctx, request)
Exemplo n.º 12
0
def logs(request, obj_type, obj_ref, obj_revi):
    """
    Logs page of a SubversionRepository. 
    """
    obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi)
    ctx['current_page'] = 'logs'
    return pviews.r2r('logs.htm', ctx, request)
Exemplo n.º 13
0
def display_object_doc_cad(request, obj_type, obj_ref, obj_revi):
    """
    Manage html page which displays the related documents and CAD 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 not hasattr(obj, "get_attached_documents"):
        # TODO
        raise TypeError()
    if request.method == "POST":
        formset = get_doc_cad_formset(obj, request.POST)
        if formset.is_valid():
            obj.update_doc_cad(formset)
            return HttpResponseRedirect(".")
    else:
        formset = get_doc_cad_formset(obj)
    archive_form = forms.ArchiveForm()
    ctx.update({'current_page':'doc-cad',
                'object_doc_cad': obj.get_attached_documents(),
                'archive_form' : archive_form,
                'doc_cad_formset': formset})
    return r2r('DisplayObjectDocCad.htm', ctx, request)
Exemplo n.º 14
0
def display_plmobjects(request, obj_ref):
    """
    View of the *objects* page of a group.
    """
    
    obj, ctx = get_generic_data(request, "Group", obj_ref)
    ctx["objects"] = obj.plmobject_group.all().order_by("type", "reference", "revision")
    ctx['current_page'] = 'groups'
    return r2r("groups/objects.htm", ctx, request)
Exemplo n.º 15
0
def display_groups(request, obj_ref):
    """
    View of the *groups* page of an user.

    """

    obj, ctx = get_generic_data(request, "User", obj_ref)
    ctx['current_page'] = 'groups' 
    return r2r("users/groups.htm", ctx, request)
Exemplo n.º 16
0
def attributes(request, obj_ref, obj_revi):
    """Custom attributes page """
    obj_type = "Bicycle"
    obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi)
    object_attributes = []
    for attr in obj.attributes:
        item = obj.get_verbose_name(attr) + ":"  # <- this is our small modification
        object_attributes.append((item, getattr(obj, attr)))
    ctx.update({"current_page": "attributes", "object_attributes": object_attributes})
    return r2r("attributes.html", ctx, request)
Exemplo n.º 17
0
def attributes(request, obj_ref, obj_revi):
    """Custom attributes page """
    obj_type = "Bicycle"
    obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi)
    object_attributes = []
    for attr in obj.attributes:
        item = obj.get_verbose_name(attr) + ":" # <- this is our small modification
        object_attributes.append((item, getattr(obj, attr)))
    ctx.update({'current_page':'attributes',
                'object_attributes': object_attributes})
    return r2r('attributes.html', ctx, request)
Exemplo n.º 18
0
def group_ask_to_join(request, obj_ref):
    obj, ctx = get_generic_data(request, "Group", obj_ref)
    if request.method == "POST":
        obj.ask_to_join()
        return HttpResponseRedirect("..")
    else:
        form = forms.SelectUserForm()
    ctx["ask_form"] = ""
    ctx['current_page'] = 'users' 
    ctx['in_group'] = bool(request.user.groups.filter(id=obj.id))
    return r2r("groups/ask_to_join.htm", ctx, request)
Exemplo n.º 19
0
def display_object_history(request, obj_type, obj_ref, obj_revi):
    """
    Manage html page which displays the history 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)
    history = obj.HISTORY.objects.filter(plmobject=obj.object).order_by('-date')
    ctx.update({'current_page' : 'history', 
                'object_history' : list(history)})
    return r2r('DisplayObjectHistory.htm', ctx, request)
Exemplo n.º 20
0
def sponsor(request, obj_ref):
    obj, ctx = get_generic_data(request, "User", obj_ref)
    if request.method == "POST":
        form = forms.SponsorForm(request.POST)
        if form.is_valid():
            new_user = form.save()
            obj.sponsor(new_user)
            return HttpResponseRedirect("..")
    else:
        form = SponsorForm(initial={"sponsor":obj.id}, sponsor=obj.id)
    ctx["sponsor_form"] = form
    ctx['current_page'] = 'delegation' 
    return r2r("users/sponsor.htm", ctx, request)
Exemplo n.º 21
0
def display_object_child(request, obj_type, obj_ref, obj_revi):
    """
    Manage html page which displays the chidren 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 not hasattr(obj, "get_children"):
        # TODO
        raise TypeError()
    date = None
    level = "first"
    if request.GET:
        display_form = DisplayChildrenForm(request.GET)
        if display_form.is_valid():
            date = display_form.cleaned_data["date"]
            level = display_form.cleaned_data["level"]
    else:
        display_form = DisplayChildrenForm(initial={"date" : datetime.datetime.now(),
                                                    "level" : "first"})
    max_level = 1 if level == "first" else -1
    children = obj.get_children(max_level, date=date)
    if level == "last" and children:
        maximum = max(children, key=attrgetter("level")).level
        children = (c for c in children if c.level == maximum)
    children = list(children)
    extra_columns = []
    extension_data = defaultdict(dict)
    for PCLE in models.get_PCLEs(obj.object):
        fields = PCLE.get_visible_fields()
        if fields:
            extra_columns.extend((f, PCLE._meta.get_field(f).verbose_name) 
                    for f in fields)
            for child in children:
                link = child.link
                for field in fields:
                    try:
                        e = PCLE.objects.get(link=link)
                        extension_data[link][field] = getattr(e, field)
                    except PCLE.DoesNotExist:
                        extension_data[link][field] = ""
    ctx.update({'current_page':'BOM-child',
                'children': children,
                'extra_columns' : extra_columns,
                'extension_data': extension_data,
                "display_form" : display_form})
    return r2r('DisplayObjectChild.htm', ctx, request)
Exemplo n.º 22
0
def display_users(request, obj_ref):
    obj, ctx = get_generic_data(request, "Group", obj_ref)
    if request.method == "POST":
        formset = forms.get_user_formset(obj, request.POST)
        if formset.is_valid():
            obj.update_users(formset)
            return HttpResponseRedirect(".")
    else:
        formset = forms.get_user_formset(obj)
    ctx["user_formset"] = formset
    ctx["pending_invitations"] = obj.invitation_set.filter(
            state=models.Invitation.PENDING)
    ctx['current_page'] = 'users' 
    ctx['in_group'] = bool(request.user.groups.filter(id=obj.id))
    return r2r("groups/users.htm", ctx, request)
Exemplo n.º 23
0
def refuse_invitation(request, obj_ref, token):
    token = long(token)
    obj, ctx = get_generic_data(request, "Group", obj_ref)
    inv = models.Invitation.objects.get(token=token)
    if request.method == "POST":
        form = forms.InvitationForm(request.POST)
        if form.is_valid() and inv == form.cleaned_data["invitation"]:
            obj.refuse_invitation(inv)
            return HttpResponseRedirect("../../../users/")
    else:
        form = forms.InvitationForm(initial={"invitation" : inv})
    ctx["invitation_form"] = form
    ctx["invitation"] = inv
    ctx['current_page'] = 'users'
    return r2r("groups/refuse_invitation.htm", ctx, request)
Exemplo n.º 24
0
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)
Exemplo n.º 25
0
def display_object_attributes(request, obj_type, obj_ref, obj_revi):
    """
    Manage html page which displays attributes 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)
    
    object_attributes_list = []
    for attr in obj.attributes:
        item = obj.get_verbose_name(attr)
        object_attributes_list.append((item, getattr(obj, attr)))
    ctx.update({'current_page' : 'attributes',
                'object_attributes': object_attributes_list})
    return r2r('DisplayObject.htm', ctx, request)
Exemplo n.º 26
0
def display_related_plmobject(request, obj_type, obj_ref, obj_revi):
    """
    Manage html page which displays the related parts and related documents of (:class:`PLMObjectUserLink` with) the selected :class:`~django.contrib.auth.models.User`.
    It computes a context dictionnary based on
    
    .. include:: views_params.txt 
    """
    obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi)
    
    if not hasattr(obj, "get_object_user_links"):
        # TODO
        raise TypeError()
    ctx.update({'current_page':'parts-doc-cad',
                'object_user_link': obj.get_object_user_links()})
    
    return r2r('DisplayObjectRelPLMObject.htm', ctx, request)
Exemplo n.º 27
0
def group_add_user(request, obj_ref):
    """
    View of the *Add user* page of a group.

    """

    obj, ctx = get_generic_data(request, "Group", obj_ref)
    if request.method == "POST":
        form = SelectUserForm(request.POST)
        if form.is_valid():
            obj.add_user(User.objects.get(username=form.cleaned_data["username"]))
            return HttpResponseRedirect("..")
    else:
        form = forms.SelectUserForm()
    ctx["add_user_form"] = form
    ctx['current_page'] = 'users' 
    return r2r("groups/add_user.htm", ctx, request)
Exemplo n.º 28
0
def import_csv_apply(request, target, filename, encoding):
    obj, ctx = get_generic_data(request)
    ctx["encoding_error"] = False
    ctx["io_error"] = False
    Importer = csvimport.IMPORTERS[target]
    Formset = forms.get_headers_formset(Importer)
    try:
        path = os.path.join(tempfile.gettempdir(),
                            "openplmcsv" + request.user.username + filename)
        with open(path, "rb") as csv_file:
            importer = Importer(csv_file, request.user, encoding)
            preview = importer.get_preview()
        if request.method == "POST":
            headers_formset = Formset(request.POST)
            if headers_formset.is_valid():
                headers = headers_formset.headers
                try:
                    with open(path, "rb") as csv_file:
                        importer = Importer(csv_file, request.user, encoding)
                        importer.import_csv(headers)
                except csvimport.CSVImportError as exc:
                    ctx["errors"] = exc.errors.iteritems()
                else:
                    os.remove(path)
                    return HttpResponseRedirect("/import/done/")
        else:
            initial = [{"header": header} for header in preview.guessed_headers]
            headers_formset = Formset(initial=initial)
        ctx.update({
            "preview" :  preview,
            "preview_data" : itertools.izip((f["header"] for f in headers_formset.forms),
                preview.headers, *preview.rows),
            "headers_formset" : headers_formset,
        })
    except UnicodeError:
        ctx["encoding_error"] = True
    except (IOError, csv.Error):
        ctx["io_error"] = True
    ctx["has_critical_error"] = ctx["io_error"] or ctx["encoding_error"] \
            or "errors" in ctx
    ctx["csv_form"] = CSVForm(initial={"encoding" : encoding})
    ctx["step"] = 2
    ctx["target"] = target
    return r2r("import/csv.htm", ctx, request)
Exemplo n.º 29
0
def modify_object(request, obj_type, obj_ref, obj_revi):
    """
    Manage html page for the modification 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)
    cls = models.get_all_plmobjects()[obj_type]
    if request.method == 'POST' and request.POST:
        modification_form = get_modification_form(cls, request.POST)
        if modification_form.is_valid():
            obj.update_from_form(modification_form)
            return HttpResponseRedirect(obj.plmobject_url + "attributes/")
    else:
        modification_form = get_modification_form(cls, instance=obj.object)
    
    ctx['modification_form'] = modification_form
    return r2r('DisplayObject4modification.htm', ctx, request)
Exemplo n.º 30
0
def add_file(request, obj_type, obj_ref, obj_revi):
    """
    Manage html page for the files (:class:`DocumentFile`) addition in 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_file_form = AddFileForm(request.POST, request.FILES)
        if add_file_form.is_valid():
            obj.add_file(request.FILES["filename"])
            ctx.update({'add_file_form': add_file_form, })
            return HttpResponseRedirect(obj.plmobject_url + "files/")
    else:
        add_file_form = AddFileForm()
    ctx.update({ 'add_file_form': add_file_form, })
    return r2r('DisplayFileAdd.htm', ctx, request)
Exemplo n.º 31
0
def create_gdoc(request, client):
    """
    Creation view of a :class:`.GoogleDocument`.
    """

    obj, ctx = get_generic_data(request)
    
    if request.method == 'GET':
        creation_form = get_gdoc_creation_form(request.user, client)
    elif request.method == 'POST':
        creation_form = get_gdoc_creation_form(request.user, client,
                request.POST)
        if creation_form.is_valid():
            user = request.user
            ctrl = GoogleDocumentController.create_from_form(creation_form, user)
            return HttpResponseRedirect(ctrl.plmobject_url)
    ctx.update({
        'creation_form': creation_form,
        'object_type': "GoogleDocument",
    })
    return pviews.r2r('DisplayObject4creation.htm', ctx, request)