def MakeRWLabel(document, session): lm = LabelManager() rw = RWFM() print "MakeRWLabel" # databaseName = "dbpatterns" # connection = Connection() # db = connection[databaseName] # rwlabel = db["rwlabel"] sublabel = session["rwlabel"] r2 = session["rwlabel"]["readers"] w = session["rwlabel"]["writers"] # just after creation label temp2 = rw.createObjLabel(sublabel, document["_id"]) # temp2 = { "doc_id" : document["_id"],"owner" : session["rwlabel"]["owner"],"readers": r2,"writers": w } print temp2 if document["is_public"]: # readers = * readers = User.objects.all() r3 = [] for x in readers: r3.append(x.id) # label is made to public temp3 = { "doc_id": document["_id"], "owner": session["rwlabel"]["owner"], "readers": r3, "writers": w } if rw.checkDowngrade(sublabel, temp2, temp3): # rwlabel.save(temp3) lm.updatelabel(document["_id"], temp3) # connection.disconnect() return {"bool": True, "type": "public"} else: # rwlabel.save(temp2) # connection.disconnect() return {"bool": False, "type": "public"} else: # if private make readers same as readers of subject.. then check for assignee. #readers = owner #temp3 = {"doc_id" : document["_id"],"owner" : session["rwlabel"]["owner"],"readers": session["rwlabel"]["owner"],"writers": w} # rwlabel.save(temp2) # connection.disconnect() return {"bool": True, "type": "private"}
def updatedoc(request): lm = LabelManager() rw = RWFM() print "updatedoc" is_public = request.POST.get("is_public") doc_res = request.POST.get("doc_res") doc_id = (doc_res.split("/api/documents/")[1]).split("/")[0] doc_id = str(doc_id) temp2 = lm.getLabel(doc_id) print "temp2" print temp2 assignees = json.loads(request.POST.get("assignees")) print assignees sublabel = request.session["rwlabel"] temp3 = {} r3 = [] w3 = temp2["writers"] print is_public if is_public == "true": print "public" readers = User.objects.all() for x in readers: r3.append(x.id) for x in assignees: if x["permission"] == "can_edit": w3.append(x["id"]) temp3 = { "owner": temp2["owner"], "readers": r3, "writers": w3, "doc_id": doc_id } else: print "private" for x in assignees: if x["permission"] == "can_view": r3.append(x["id"]) if x["permission"] == "can_edit": r3.append(x["id"]) w3.append(x["id"]) r = [] readers = User.objects.all() for x in readers: r.append(x.id) if temp2["readers"] == r: temp3 = { "owner": temp2["owner"], "readers": list((set(r3).union(set(temp2["owner"])))), "writers": w3, "doc_id": doc_id } else: temp3 = { "owner": temp2["owner"], "readers": list((set(r3).union(set(temp2["readers"])))), "writers": w3, "doc_id": doc_id } print "temp3" print temp3 print temp2["readers"] if len(temp2["readers"]) > len(temp3["readers"]): print "upgrade" if rw.checkUpgrade(sublabel, temp2, temp3): print temp3 if lm.updatelabel(doc_id, temp3): request.session["rwlabel"] = sublabel return HttpResponseRedirect("/documents/" + doc_id + "/") else: print "error" else: # cant upgrade return HttpResponseRedirect("/rwlabel/naprivate/") elif len(temp2["readers"]) < len(temp3["readers"]): print "downgrade" if rw.checkDowngrade(sublabel, temp2, temp3): if lm.updatelabel(doc_id, temp3): request.session["rwlabel"] = sublabel return HttpResponseRedirect("/documents/" + doc_id + "/") else: print "error" else: # cant downgrade raise PermissionDenied #return HttpResponseRedirect("/rwlabel/napublic/") else: if lm.updatelabel(doc_id, temp3): request.session["rwlabel"] = sublabel return HttpResponseRedirect("/documents/" + doc_id + "/") else: print "error"