Beispiel #1
0
def main():
    """
    """
    creds = auth.get_creds()

    service = build('sheets', 'v4', credentials=creds)

    # Call the Sheets API
    sheet = service.spreadsheets()
    result = sheet.values().get(spreadsheetId=config.SPREADSHEET_ID,
                                range=config.MOVEMENTS_RANGE).execute()
    values = [x for x in result.get('values', []) if x[0] != '']

    if not values:
        print('No data found.')
        return

    matches = dict()
    movements = Movements()

    values.sort()
    for row in values:
        if row[8] != '':
            id1 = matches.get(row[7])
            if id1 is None:
                matches.setdefault(row[8], row[7])
            else:
                # add this movement as an item for that one
                continue

        movements.add(row[0], row[1], row[2], float(row[3]), row[4], row[5])

    print(json.dumps(movements.__dict__))
Beispiel #2
0
def uploadFile(file_name):
    drive_service = get_creds()
    file_metadata = {'name': file_name}
    media = MediaFileUpload(file_name, mimetype='image/jpeg')
    file = drive_service.files().create(body=file_metadata,
                                        media_body=media,
                                        fields='id').execute()
    print
    'File ID: %s' % file.get('id')
Beispiel #3
0
def main():
    """Parse args and run desired commands"""
    common_parser = argparse.ArgumentParser(add_help=False)
    common_parser.add_argument('--aws-region', default='us-east-1',
                               help='AWS region -- defaults to us-east-1')
    common_parser.add_argument('--aws-access-key-id', required=True,
                               help='AWS Access Key ID')
    common_parser.add_argument('--aws-secret-access-key', required=True,
                               help='AWS Secret Access Key')
    common_parser.add_argument('--aws-role-arn', required=True,
                               help='AWS ARN for assumed role')
    common_parser.add_argument('--cac-config-path', default=os.path.join(file_dir, 'default.yaml'),
                               help='Path to CAC stack config')
    common_parser.add_argument('--cac-profile', default='default',
                               help='CAC stack profile to use for launching stacks')

    if os.path.isfile(os.path.expanduser('~/.aws/credentials')):
        # There is a bug in Packer that makes it so the only way to successfully build
        # an AMI using MFA tokens is to not have the ~/.aws/credentials file, and instead
        # specify the parameters via environment variables.
        print "Please delete your ~/.aws/credentials and try again"
        sys.exit(1)

    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers(title='CAC TripPlanner Stack Commands')

    # Launch CAC TripPlanner Stack
    cac_stacks = subparsers.add_parser('launch-stacks', help='Launch CAC TripPlanner Stack',
                                       parents=[common_parser])
    cac_stacks.add_argument('--stack-type', type=str, required=True,
                            choices=['dev', 'staging', 'prod'],
                            default=None,
                            help='One of "dev", "staging", "prod"')
    cac_stacks.add_argument('--stack-color', type=str, required=True,
                            choices=['green', 'blue', 'orange'],
                            default=None,
                            help='One of "green", "blue", "orange"')
    cac_stacks.set_defaults(func=launch_stacks)

    # AMI Management
    cac_ami = subparsers.add_parser('create-ami', help='Create AMI for CAC TripPlanner Stack',
                                    parents=[common_parser])
    cac_ami.add_argument('--machine-type', type=str, required=False,
                         choices=['app', 'bastion', 'otp'],
                         default=None,
                         help='Optional machine type. One of "app", "bastion", "otp"')
    cac_ami.set_defaults(func=create_ami)

    # Parse, obtain temporary MFA credentials, and run
    args = parser.parse_args()
    creds = get_creds(args.aws_access_key_id, args.aws_secret_access_key,
                      args.aws_role_arn)
    aws_config = {'aws_access_key_id': args.aws_access_key_id,
                  "aws_secret_access_key": args.aws_secret_access_key}
    cac_config = get_config(args.cac_config_path, args.cac_profile)
    args.func(cac_config=cac_config, creds=creds, aws_config=aws_config, **vars(args))
Beispiel #4
0
def createFolder(name):
    drive_service = get_creds()
    file_metadata = {
        'name': name,
        'mimeType': 'application/vnd.google-apps.folder'
    }
    file = drive_service.files().create(body=file_metadata,
                                        fields='id').execute()
    print
    'Folder ID: %s' % file.get('id')
Beispiel #5
0
def downloadFile(file_id, filepath):
    drive_service = get_creds()
    request = drive_service.files().get_media(fileId=file_id)
    fh = io.BytesIO()
    downloader = MediaIoBaseDownload(fh, request)
    done = False
    while done is False:
        status, done = downloader.next_chunk()
        print
        "Download %d%%." % int(status.progress() * 100)
    with io.open(filepath, 'wb') as f:
        fh.seek(0)
        f.write(fh.read())
Beispiel #6
0
def date_search_file(month_year):
    service = get_creds()
    results = service.files().list(
        pageSize=100,
        fields="nextPageToken, files(id, name, createdTime)",
        q=("name contains " + "'" + month_year + "'")).execute()
    items = results.get('files', [])
    if not items:
        print('No files found.')
    else:
        for item in items:
            (u'{0} ({1})'.format(item['name'], item['id']))
        return item["id"]
Beispiel #7
0
def listFile():
    service = get_creds()
    results = service.files().list(
        pageSize=10,
        fields="nextPageToken, files(id, name, mimeType)").execute()
    items = results.get('files', [])
    if not items:
        print('No files found.')
    else:
        print('Files:')
        for item in items:
            print(u'{0} ({1}) {2}'.format(item['name'], item['id'],
                                          item['mimeType']))
Beispiel #8
0
def transferFile(file_id, new_folder_id):
    print("Transfering file: " + file_id + " to folder: " + new_folder_id)
    drive_service = get_creds()
    file = drive_service.files().get(fileId=file_id,
                                     fields='parents').execute()
    try:
        previous_parents = ",".join(file.get('parents'))
    except TypeError:
        print('no parents')
        previous_parents = None
    drive_service.files().update(fileId=file_id,
                                 removeParents=previous_parents,
                                 addParents=new_folder_id,
                                 fields='id, parents').execute()
def keywordSearchFile(keyword):
    service = get_creds()
    results = service.files().list(
        pageSize=10,
        fields="nextPageToken, files(id, name, createdTime)",
        q=("name contains " + "'" + keyword + "'")).execute()
    items = results.get('files', [])
    if not items:
        print('No files found.')
    else:
        print('Files:')
        for item in items:
            print(u'{0} ({1})'.format(item['name'], item['id']))
        return item["id"]
Beispiel #10
0
def oldestFile():
    oldest_date = datetime.now(timezone.utc)
    oldest_date = oldest_date.isoformat()
    oldest_date = dateutil.parser.parse(oldest_date)
    service = get_creds()
    results = service.files().list(
        pageSize=1000, fields="nextPageToken, files(createdTime)").execute()
    items = results.get('files', [])
    if not items:
        print('No files found.')
    else:
        for item in items:
            string_date_test = item["createdTime"]
            formatted_date_test = dateutil.parser.parse(string_date_test)
            formatted_date_test = formatted_date_test
            if formatted_date_test < oldest_date:
                oldest_date = formatted_date_test
        return oldest_date
Beispiel #11
0
def cleanEmptyFolders():
    print("Deleting all empty folders")
    service = get_creds()
    results = service.files().list(
        pageSize=500,
        fields="nextPageToken, files(id, name)",
        q="mimeType = 'application/vnd.google-apps.folder' ").execute()
    items = results.get('files', [])
    if not items:
        print('No files found.')
    else:
        for item in items:
            response = service.files().list(
                q=("'%s' in parents" % (item['id'])),
                spaces='drive',
                fields='files(id, name, parents)').execute()
            if len(response["files"]) == 0:
                print("Deleted %s" % (item['id']))
                service.files().delete(fileId=item['id']).execute()
Beispiel #12
0
def transfer_by_date():
    print("Transfering all files to respective month/year folders")
    drive_service = get_creds()
    results = drive_service.files().list(
        pageSize=1000,
        fields="nextPageToken, files(createdTime, id, name)",
        q="mimeType = 'application/vnd.google-apps.document'").execute()
    items = results.get('files', [])
    for i in range(0, (len(items) - 1)):
        file_date = items[i]["createdTime"]
        fileId = items[i]["id"]
        file_date = dateutil.parser.parse(file_date)
        file_month = file_date.month
        file_year = file_date.year
        file_month = monthToString(file_month)

        file_year = str(file_year)
        month_year = file_year + " " + file_month
        folderId = date_search_file(month_year)
        transferFile(fileId, folderId)
Beispiel #13
0
def main():
    """Parse args and run desired commands"""
    common_parser = argparse.ArgumentParser(add_help=False)
    common_parser.add_argument('--aws-region',
                               default='us-east-1',
                               help='AWS region -- defaults to us-east-1')
    common_parser.add_argument('--aws-access-key-id',
                               required=True,
                               help='AWS Access Key ID')
    common_parser.add_argument('--aws-secret-access-key',
                               required=True,
                               help='AWS Secret Access Key')
    common_parser.add_argument('--aws-role-arn',
                               required=True,
                               help='AWS ARN for assumed role')
    common_parser.add_argument('--cac-config-path',
                               default=os.path.join(file_dir, 'default.yaml'),
                               help='Path to CAC stack config')
    common_parser.add_argument(
        '--cac-profile',
        default='default',
        help='CAC stack profile to use for launching stacks')

    if os.path.isfile(os.path.expanduser('~/.aws/credentials')):
        # There is a bug in Packer that makes it so the only way to successfully build
        # an AMI using MFA tokens is to not have the ~/.aws/credentials file, and instead
        # specify the parameters via environment variables.
        print "Please delete your ~/.aws/credentials and try again"
        sys.exit(1)

    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers(title='CAC TripPlanner Stack Commands')

    # Launch CAC TripPlanner Stack
    cac_stacks = subparsers.add_parser('launch-stacks',
                                       help='Launch CAC TripPlanner Stack',
                                       parents=[common_parser])
    cac_stacks.add_argument('--stack-type',
                            type=str,
                            required=True,
                            choices=['dev', 'staging', 'prod'],
                            default=None,
                            help='One of "dev", "staging", "prod"')
    cac_stacks.add_argument('--stack-color',
                            type=str,
                            required=True,
                            choices=['green', 'blue', 'orange'],
                            default=None,
                            help='One of "green", "blue", "orange"')
    cac_stacks.set_defaults(func=launch_stacks)

    # AMI Management
    cac_ami = subparsers.add_parser(
        'create-ami',
        help='Create AMI for CAC TripPlanner Stack',
        parents=[common_parser])
    cac_ami.add_argument(
        '--machine-type',
        type=str,
        required=False,
        choices=['app', 'bastion', 'otp'],
        default=None,
        help='Optional machine type. One of "app", "bastion", "otp"')
    cac_ami.set_defaults(func=create_ami)

    # Parse, obtain temporary MFA credentials, and run
    args = parser.parse_args()
    creds = get_creds(args.aws_access_key_id, args.aws_secret_access_key,
                      args.aws_role_arn)
    cac_config = get_config(args.cac_config_path, args.cac_profile)
    args.func(cac_config=cac_config, creds=creds, **vars(args))