예제 #1
0
def view(request):
    if request.unauthenticated_userid is None:
        msg = "Operation non authorized for anonymous users"
        request.session.flash(msg, 'warning')
        return HTTPFound(location=request.route_url("home"))

    if "new_ro" in request.params:
        session = DBSession()
        uid = request.params["ro_id"]
        created = parse(request.params["created"])
        name = request.params["name"]
        ro_type = request.params["ro_type"]

        # do some checking
        assert len(uid) == 32

        print uid, created, name, ro_type, "\n" * 10

        # gather data
        data = dict(id=uid,
                    owner=request.unauthenticated_userid,
                    created=created,
                    name=name,
                    version=0)

        # create RO
        ro = register(session, ro_type, data)
        return HTTPFound(location=request.route_url("ro_view_home", uid=ro.id))
    elif "submit_upload" in request.params:
        field_storage = request.params["upload_file"]
        if field_storage == "":
            msg = "Need to select file first"
            request.session.flash(msg, 'warning')
        else:
            pth = upload_file(field_storage)
            session = DBSession()
            ro = create_from_file(session, pth, request.unauthenticated_userid)
            rmtree(dirname(pth))

            if ro is None:
                msg = "Unable to find a valid RO in this file"
                request.session.flash(msg, 'warning')
            else:
                return HTTPFound(location=request.route_url("ro_view_home", uid=ro.id))

    uid = uuid1().hex
    created = datetime.now()

    ro_types = ["container", "data", "ro", "article"]

    return dict(uid=uid, created=created, ro_types=ro_types)
예제 #2
0
def view(request):
    session = DBSession()

    ro_def = json.loads(request.params["ro_def"])

    ro_def["owner"] = request.unauthenticated_userid

    if "created" in ro_def:
        ro_def["created"] = parse(ro_def["created"])

    if 'ro_type' in request.params:
        # create RO
        try:
            ro = register(session, request.params["ro_type"], ro_def)
            status = "success"
            msg = ""
            res = ro.id
        except KeyError as e:
            status = "KeyError"
            msg = e.message
            res = None
        except UserWarning as e:
            status = "UserWarning"
            msg = e.message
            res = None
    elif 'interface' in request.params:
        # create ROData
        try:
            ro_def['interface'] = request.params["interface"]
            ro = register_data(session, ro_def)
            status = "success"
            msg = ""
            res = ro.id
        except KeyError as e:
            status = "KeyError"
            msg = e.message
            res = None
        except UserWarning as e:
            status = "UserWarning"
            msg = e.message
            res = None
    else:
        status = "UnsufficientInformation"
        msg = "Unable to create RO with so few info"
        res = None

    ans = dict(status=status, msg=msg, res=res)
    return ans