def gather_data_from_dynamo(): global g_dpa_dynamo_data # Index (dpa), combination priorities dy_obj = DynamoDB("us-west-2") for idx in range(1, NUM_DPA_S): query_item = {"Index": idx} # Index is of each dpa val = dy_obj.get_item("dpa_configuration_with_index", query_item) g_dpa_dynamo_data[idx] = copy(val)
def fetch_sensor_id_mapping(): global g_sensor_site_mapping # sensorID (key), deployStatus, siteID, techName dy_obj = DynamoDB("us-west-2") for idx in range(84800101, 84800392): query_item = {"sensorID": idx} val = dy_obj.get_item("sensor_site_id_mapping", query_item) if val is not None: g_sensor_site_mapping[idx] = copy(val)
def atomic_add_value(self, key, value): cmp_key = LPCMKey(self.name, key) try: item = DynamoDB.get_item(cmp_key) except DynamoDBKeyNotFoundError: item = DynamoDB.create_item(cmp_key) item.add_attribute('value', value) item.save()
def delete(self, key): "Deletes a key-value map from dynamodb. Ignores it if item does not exist" cmp_key = LPCMKey(self.name, key) try: item = DynamoDB.get_item(cmp_key) except DynamoDBKeyNotFoundError: return # delete fails silently item.delete()
def atomic_delete_values(self, key, values): """Deletes a set of values from an item. Fails silently if item does not exist""" cmp_key = LPCMKey(self.name, key) try: item = DynamoDB.get_item(cmp_key) except DynamoDBKeyNotFoundError: return # Nothing to do item.delete_attribute('value', values) item.save()
def __getitem__(self, key): cmp_key = LPCMKey(self.name, key) try: item = DynamoDB.get_item(cmp_key) except DynamoDBKeyNotFoundError: raise KeyError(u"{name}:{key}".format(name = self.name, key = cmp_key.original_key_obj)) value = item['value'] value = self._postprocess_value_after_ddb_load(value) return value
def __getitem__(self, key): cmp_key = LPCMKey(self.name, key) try: item = DynamoDB.get_item(cmp_key) except DynamoDBKeyNotFoundError: raise KeyError(u"{name}:{key}".format( name=self.name, key=cmp_key.original_key_obj)) value = item['value'] value = self._postprocess_value_after_ddb_load(value) return value
def login(): if request.method == 'POST': session['username'] = request.form['username'] session['password'] = request.form['password'] db = DynamoDB(region=cfg['region']) user_table = cfg['db_tbl']['user'] if not db._isTable_exists(user_table): db.create_table(table_name=user_table, attr_dict={'hash_name': "username"}) try: user = db.get_item(user_table, {'username': session['username']}) if user and user['password'] == session['password']: return redirect(url_for('home', user=session['username'])) except: flash('Username or Password does not exist') return redirect(request.url) return render_template('login.html')
def monthlywork(event, context): try: logging.info('lambda_handler start') logging.info('Event: {}'.format(json.dumps(event))) # BackLogクラス生成 backlog = BackLog(space_name, project_key, api_key) # DynamoDBクラス作成 dynamodb = DynamoDB(dynamo_tbl) #----- Step1 logging.info('[Step1]DynamoDBにカラムを追加する') index_record = dynamodb.get_item('No', 1) logging.info('index_record: {}'.format(index_record)) if index_record is None: logging.info('index_recordが存在しないためカラムを登録します') index_record = dynamodb.put_item(column_fmt) logging.info('index_record: {}'.format(index_record)) logging.info('カラム登録が完了したため処理を終了します') return else: logging.info('index_recordが存在したため処理をスキップします') #----- Step2 logging.info('[Step2]DynamoDBの全データを抽出します') records = dynamodb.scan_all() #----- Step3 logging.info('[Step3]各レコード情報を元にバックログに起票します') for record in records: logging.info('record: {}'.format(record)) # 日付情報の取得 start_date = schedule.get_day_of_nth_dow( int(record.get('start_day')), int(record.get('start_dow_nth')), str(record.get('start_dow_dow')), ) logging.info('start_date: {}'.format(start_date)) due_date = schedule.get_day_of_nth_dow( int(record.get('due_day')), int(record.get('due_dow_nth')), str(record.get('due_dow_dow')), ) logging.info('due_date: {}'.format(due_date)) # ----- Issuetype issuetype_name = record.get('issuetype_name') issuetype_id = backlog.get_issuetype_id(issuetype_name) logging.info('The {0} IssuetypeID: {1}.'.format( issuetype_name, issuetype_id)) # ----- Assignee mailaddress = record.get('mailaddress') assignee_id = backlog.get_user_id(mailaddress) logging.info('The {0} AssigneeId: {1}'.format( mailaddress, assignee_id)) # ----- Category(複数指定が可能なのでちょっと面倒) # 引っ張ってきたデータをカンマ区切りで配列に詰め、それぞれの要素に対して先頭末尾の空白を削除 category_names = list( map(str.strip, record.get('category_names').split(','))) # カテゴリIDリストの作成 category_ids = [] for category_name in category_names: category_id = backlog.get_category_id(category_name) logging.info('The {0} CategoryID: {1}.'.format( category_name, category_id)) #指定されたカテゴリが無ければ作成する if category_id is None: logging.info( 'a new category create because The specified category do not define.' ) res = backlog.create_category(category_name) logging.info('create category result: {}'.format(res)) category_id = res.get('id') logging.info('The {0} CategoryID: {1}.'.format( category_name, category_id)) category_ids.append(category_id) logging.info('category_ids: {}.'.format(category_ids)) # ----- MileStone(複数指定が可能なのでちょっと面倒) # 引っ張ってきたデータをカンマ区切りで配列に詰め、それぞれの要素に対して先頭末尾の空白を削除 milestone_names = list( map(str.strip, record.get('milestone_names').split(','))) # マイルストンIDリストの作成 milestone_ids = [] for milestone_name in milestone_names: milestone_id = backlog.get_milestone_id(milestone_name) logging.info('The {0} milestoneID: {1}.'.format( milestone_name, milestone_id)) #指定されたマイルストンが無ければ作成する if milestone_id is None: logging.info( 'a new milestone create because The specified milestone do not define.' ) res = backlog.create_milestone(milestone_name) logging.info('create milestone result: {}'.format(res)) milestone_id = res.get('id') logging.info('The {0} milestoneID: {1}.'.format( milestone_name, milestone_id)) milestone_ids.append(milestone_id) logging.info('milestone_ids: {}.'.format(milestone_ids)) # 課題登録API実行 logging.info('Execute the issue registration API.') res = backlog.add_issue(record.get('summary'), issuetype_id, record.get('description'), start_date, due_date, assignee_id, category_ids, milestone_ids, []) logging.info( 'Execute the issue registration API Result: {}'.format(res)) logging.info('lambda_handler Normal end') return 'lambda_handler Normal end' except Exception as error: logging.info('lambda_handler Abnormal end') logging.error(error) raise error
data = kill_char(val, 2) data1 = kill_char(data, len(data) - 1) data2 = data1.split(' ') temp.append(data2[1]) if len(val) == 10: data = kill_char(val, 3) data1 = kill_char(data, len(data) - 1) data2 = data1.split(' ') temp.append(data2[1]) final_list.append(copy.copy(temp)) del temp[:] # got the data into this list counter = 0 new_data_dict = defaultdict(list) new_data_dict["Index"] = 3 for val in final_list: index = 0 if len(val) > 0: for item in val: if item is not None: new_data_dict[str(index)].append(item) index = index + 1 else: index = index + 1 # print(new_data_dict) query_item = {"Index": 3} print(dy_obj.get_item("Test", query_item))