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__))
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')
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))
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')
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())
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"]
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']))
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"]
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
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()
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)
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))