def parseFile(json_url, begin, end, args):
    resp = requests.get(url=json_url)
    data = resp.json()

    cols = max([int(i['gs$cell']['col']) for i in data['feed']['entry']])
    rows = max([int(i['gs$cell']['row']) for i in data['feed']['entry']])
    df = [['' for i in range(cols)] for j in range(rows)]
    for i in data['feed']['entry']:
        col = int(i['gs$cell']['col'])
        row = int(i['gs$cell']['row'])
        #print(i['gs$cell'])
        df[row - 1][col - 1] = i['gs$cell']['inputValue']

    lb = [df[1][i] if df[0][i] == '' else df[0][i] for i in range(cols)]
    lb = [i[:15] for i in lb]

    rr = [{lb[i]: v for i, v in enumerate(j)} for j in df[2:]]
    ids = []
    begin = int(begin)
    end = int(end)
    for row in rr[begin:end]:  #add
        item = parseRow(row)
        #if args.get('legitimatie') is not None and item['received_contract']:
        item['is_active'] = True
        ob = Volunteer.objects(phone=item['phone']).first()
        if not ob:
            comment = Volunteer(**item)
            comment.save()
            ids.append(comment.clean_data()['_id'])
            #return jsonify(comment.clean_data()['_id'])
        elif 'latitude' in item:
            data = ob.clean_data()
            if 'latitude' not in data or data['latitude'] == '':
                ob.update(latitude=item['latitude'],
                          longitude=item['longitude'],
                          address=item['address'])

    return jsonify(ids)
def register_volunteer(request_json, created_by):
    """Creates and persists a new volunteer into database.

    Parameters
    ----------
    request_json : dict
        A dictionary representing the volunteer profile details.
    created_by : str
         A string representing either name of user who is going to create a new volunteer, or the token

    Returns
    -------
    200:
        If the volunteer was successful created and saved.
    400:
        If the volunteer wasn't created or saved, and there was raised some exception.
    """
    log.debug("Relay offer for req:%s from ", request_json) 
    try:
        if not vu.is_email(created_by):
            user = Operator.verify_auth_token(created_by)
            created_by = user.get().clean_data()['email']

        if created_by == os.getenv("COVID_BACKEND_USER"):
            vu.exists_by_telegram_chat_id(request_json["chat_id"])
            new_volunteer_data = process_volunteer_data_from_telegram(request_json)
        else:
            vu.exists_by_email(request_json["email"])
            new_volunteer_data = request_json

        new_volunteer_data["password"] = PassHash.hash(new_volunteer_data["password"])
        new_volunteer_data['created_by'] = created_by
        new_volunteer = Volunteer(**new_volunteer_data)
        new_volunteer.save()
        return jsonify({"response": "success", 'user': new_volunteer.clean_data()})
    except Exception as error:
        return jsonify({"error": str(error)}), 400