Ejemplo n.º 1
0
def getHTML5Info(payload, req):
    if "url" not in payload:
        return UR.prepare_response({}, 1, "missing url !")
    url = payload["url"].partition("#")[0].rstrip(
        "/"
    )  # remove hash part of the URL by default, as well as trailing slash.
    #TODO: use optional argument id_ensemble to disambiguate if provided.
    sources_info = M.HTML5Info.objects.filter(url=url)
    ownerships = M.Ownership.objects.select_related(
        "source", "ensemble",
        "folder").filter(source__html5info__in=sources_info, deleted=False)
    #TODO: with django 1.9, you can use Q objects to OR two conditions
    #so instead of iterating to test below, just add .filter(Q(ensemble__memberships__user=UR.getUserId(req)) | Q(ensemble.allow_guest))
    #then use UR.qs2dict as was done previously

    if not ownerships.exists():
        return UR.prepare_response({}, 1, "this URL is not recognized: ")

    output = {"files": {}, "ensembles": {}, "folders": {}}
    for r in ownerships:
        if (r.ensemble.allow_guest
                or auth.isMember(UR.getUserId(req), r.ensemble_id)):
            output["ensembles"][r.ensemble_id] = UR.model2dict(
                r, annotations.__NAMES["ensembles2"])
            output["files"][r.source_id] = UR.model2dict(
                r, annotations.__NAMES["files2"])
            output["folders"][r.folder_id] = UR.model2dict(
                r, annotations.__NAMES["folders2"])
    if (output["ensembles"]):
        return UR.prepare_response(output)
    else:
        return UR.prepare_response(
            {}, 1, "not allowed: guest access isn't allowed for this file.")
Ejemplo n.º 2
0
def getHTML5Info(payload, req):
    if "url" not in payload:
        return UR.prepare_response({}, 1, "missing url !")
    url = payload["url"].partition("#")[0].rstrip(
        "/"
    )  # remove hash part of the URL by default, as well as trailing slash.
    #TODO: use optional argument id_ensemble to disambiguate if provided.
    sources_info = M.HTML5Info.objects.filter(url=url)
    ownerships = M.Ownership.objects.select_related(
        "source", "ensemble",
        "folder").filter(source__html5info__in=sources_info, deleted=False)
    if not ownerships.exists():
        return UR.prepare_response({}, 1, "this URL is not recognized: ")

    output = {
        "files":
        UR.qs2dict(ownerships, annotations.__NAMES["files2"], "ID"),
        "ensembles":
        UR.qs2dict(ownerships, annotations.__NAMES["ensembles2"], "ID"),
        "folders":
        UR.qs2dict(ownerships, annotations.__NAMES["folders2"], "ID"),
    }
    for i in output["ensembles"]:
        if not (output["ensembles"][i]["allow_guest"]
                or auth.isMember(UR.getUserId(req), i)):
            return UR.prepare_response(
                {}, 1,
                "not allowed: guest access isn't allowed for this file.")
    return UR.prepare_response(output)
Ejemplo n.º 3
0
def getHTML5Info(payload, req):
    if "url" not in payload:
        return UR.prepare_response({}, 1, "missing url !")
    url = payload["url"].partition("#")[0].rstrip("/") # remove hash part of the URL by default, as well as trailing slash.
    #TODO: use optional argument id_ensemble to disambiguate if provided.
    sources_info = M.HTML5Info.objects.filter(url=url)
    ownerships =  M.Ownership.objects.select_related("source", "ensemble", "folder").filter(source__html5info__in=sources_info, deleted=False)
    #TODO: with django 1.9, you can use Q objects to OR two conditions
    #so instead of iterating to test below, just add .filter(Q(ensemble__memberships__user=UR.getUserId(req)) | Q(ensemble.allow_guest))
    #then use UR.qs2dict as was done previously

    if not ownerships.exists():
        return UR.prepare_response({}, 1, "this URL is not recognized: ")

    output = {
        "files": {},
        "ensembles": {},
        "folders": {}
        }
    for r in ownerships:
        if (r.ensemble.allow_guest or 
            auth.isMember(UR.getUserId(req),r.ensemble_id)):
            output["ensembles"][r.ensemble_id]=UR.model2dict(r,annotations.__NAMES["ensembles2"])
            output["files"][r.source_id]=UR.model2dict(r,annotations.__NAMES["files2"])
            output["folders"][r.folder_id]=UR.model2dict(r,annotations.__NAMES["folders2"])
    if (output["ensembles"]):
        return UR.prepare_response(output)
    else:
        return  UR.prepare_response({}, 1, "not allowed: guest access isn't allowed for this file.")
Ejemplo n.º 4
0
def getGuestFileInfo(payload, req):
    if "id_source" not in payload: 
        return UR.prepare_response({}, 1, "missing id_source  !")
    id_source = payload["id_source"]
    output =  annotations.get_guestfileinfo(id_source)
    for i in output["ensembles"]: 
        if  not (output["ensembles"][i]["allow_guest"] or  auth.isMember(UR.getUserId(req), i)): 
            return  UR.prepare_response({}, 1, "not allowed: guest access isn't allowed for this file.")
    return UR.prepare_response(output)
Ejemplo n.º 5
0
def getGuestFileInfo(payload, req):
    if "id_source" not in payload: 
        return UR.prepare_response({}, 1, "missing id_source  !")
    id_source = payload["id_source"]
    output =  annotations.get_guestfileinfo(id_source)
    for i in output["ensembles"]: 
        if  not (output["ensembles"][i]["allow_guest"] or  auth.isMember(UR.getUserId(req), i)): 
            return  UR.prepare_response({}, 1, "not allowed: guest access isn't allowed for this file.")
    return UR.prepare_response(output)
Ejemplo n.º 6
0
def getHTML5Info(payload, req):
    if "url" not in payload: 
        return UR.prepare_response({}, 1, "missing url !")
    url = payload["url"].partition("#")[0] #remove hash part of the URL by default. 
    #TODO: use optional argument id_ensemble to disambiguate if provided. 
    sources_info = M.HTML5Info.objects.filter(url=url)
    ownerships =  M.Ownership.objects.select_related("source", "ensemble", "folder").filter(source__html5info__in=sources_info, deleted=False)
    output = {
         "files": UR.qs2dict(ownerships, annotations.__NAMES["files2"] , "ID"),
         "ensembles": UR.qs2dict(ownerships, annotations.__NAMES["ensembles2"] , "ID") ,
         "folders": UR.qs2dict(ownerships, annotations.__NAMES["folders2"] , "ID") ,
         }    
    for i in output["ensembles"]: 
        if  not (output["ensembles"][i]["allow_guest"] or  auth.isMember(UR.getUserId(req), i)): 
            return  UR.prepare_response({}, 1, "not allowed: guest access isn't allowed for this file.")
    return UR.prepare_response(output)