def revise(request, doc_id): """ Makes a new revision of the :class:`.Document` identified by *doc_id*. :implements: :func:`http_api.revise` :param request: the request :param doc_id: id of a :class:`.Document` :returned fields: * doc, the new document (see :ref:`http-api-object`) * files, a list of files (see :ref:`http-api-file`) """ doc = get_obj_by_id(doc_id, request.user) form = forms.AddRevisionForm(request.POST) if form.is_valid(): rev = doc.revise(form.cleaned_data["revision"]) ret = {"doc" : object_to_dict(rev)} files = [] for df in rev.files: files.append(dict(id=df.id, filename=df.filename, size=df.size)) ret["files"] = files return ret else: return {"result" : 'error'}
def search(request, editable_only="true", with_file_only="true"): """ Returns all objects matching a query. :param editable_only: if ``"true"`` (the default), returns only editable objects :param with_file_only: if ``"true"`` (the default), returns only documents with at least one file :implements: :func:`http_api.search` """ if request.GET and "type" in request.GET: attributes_form = forms.TypeForm(request.GET) if attributes_form.is_valid(): query_dict = {} cls = models.get_all_plmobjects()[attributes_form.cleaned_data["type"]] extra_attributes_form = forms.get_search_form(cls, request.GET) results = cls.objects.all() if extra_attributes_form.is_valid(): results = extra_attributes_form.search(results) objects = [] for res in results: if editable_only == "false" or res.is_editable: if with_file_only == "true" and hasattr(res, "files") \ and not bool(res.files): continue if editable_only == "true": obj = DocumentController(res, request.user) if not obj.check_permission("owner", False): continue objects.append(object_to_dict(res)) return {"objects" : objects} return {"result": "error"}
def create(request): """ Creates a :class:`.PLMObject` and returns it :implements: :func:`http_api.create` """ try: type_name = request.POST["type"] cls = models.get_all_plmobjects()[type_name] except KeyError: return {"result" : "error", 'error' : 'bad type'} form = forms.get_creation_form(request.user, cls, request.POST) if form.is_valid(): controller_cls = get_controller(type_name) controller = controller_cls.create_from_form(form, request.user) ret = {"object" : object_to_dict(controller)} return ret else: return {"result" : "error", "error" : form.errors.as_text()}