コード例 #1
0
    def post(self, resource_path):

        # note: should check parent permissions, not org permissions, but no need to fix since we'll delete this code
        org_name = resource_path.split('/')[0]
        org_resource = find_resource('/' + org_name)
        if not org_resource:
            abort(403)
        if access_level(org_resource.query_permissions()) < ACCESS_LEVEL_WRITE:
            abort(403)

        # get attributes of new file
        args = request.values
        if 'contents' in args:
            data = base64.b64decode(args['contents'])  # fix(clean): remove this case
        else:
            data = base64.b64decode(args.get('data', ''))
        if 'creation_timestamp' in args:
            creation_timestamp = parse_json_datetime(args['creation_timestamp'])
        else:
            creation_timestamp = datetime.datetime.utcnow()
        if 'modification_timestamp' in args:
            modification_timestamp = parse_json_datetime(args['modification_timestamp'])
        else:
            modification_timestamp = creation_timestamp

        # create the file or folder
        r = _create_file(resource_path, creation_timestamp, modification_timestamp, data)
        return {'status': 'ok', 'id': r.id}
コード例 #2
0
def create_flow_user(email, username, password, fullname, is_sso, is_admin):

    #
    # Check if user exists
    #
    user = User.query.filter(User.user_name == username).first()
    if user is not None:
        print("User %s exists." % (username))
        return

    user_type = User.STANDARD_USER
    if is_admin:
        user_type = User.SYSTEM_ADMIN

    #
    # Create user
    #
    print("Creating user %s" % (username))
    user_id = create_user(email, username, password, fullname, user_type)

    #
    # Add user to flow organization
    #
    print("Creating organization user.")
    org_user = OrganizationUser()
    org_user.organization_id = find_resource('/testing').id
    org_user.user_id = user_id
    org_user.is_admin = is_admin
    db.session.add(org_user)
    db.session.commit()

    #
    # Create a folder for this user to store their programs
    # and a folder for recorded datasets (sequences)
    #
    folders = [
        'testing/student-folders/%s/programs' % (username),
        'testing/student-folders/%s/datasets' % (username)
    ]

    for folder in folders:
        print("Creating student folder %s." % (folder))
        _create_folders(folder)

    #
    # Add some user metadata
    #
    path = '%s/%s/%s/userinfo' % ('testing', 'student-folders', username)
    content = json.dumps({'is_sso': is_sso})
    now = datetime.datetime.now()
    resource = _create_file(path, now, now, content)

    # print('Created flow user: %s' % (email))

    user = User.query.filter(User.id == user_id).first()
    return user
コード例 #3
0
ファイル: ext.py プロジェクト: concord-consortium/flow-server
    def _save():
        if type == 'programmeta' or type == 'datasetmeta':
            contentmetadata = request.values.get('metadata').encode('utf-8')
            now         = datetime.datetime.now()
            pathm = '%s/%s' % (path, 'metadata')
            resourcem    = _create_file(pathm, now, now, contentmetadata)
            return json.dumps({
                        'success': True,
                        'message': 'Saved file metadata %s.' % (pathm)
                    })

        else:
            content     = request.values.get('content').encode('utf-8')
            contentmetadata = request.values.get('metadata').encode('utf-8')
            now         = datetime.datetime.now()
            _create_folders(path)
            pathp = '%s/%s' % (path, 'program')
            pathm = '%s/%s' % (path, 'metadata')
            resourcep    = _create_file(pathp, now, now, content)
            resourcem    = _create_file(pathm, now, now, contentmetadata)
            return json.dumps({
                        'success': True,
                        'message': 'Saved file %s.' % (filename)
                    })