def exec_main_proc(self): self.__delete_article_content_edit() self.__create_article_history_and_update_sort_key() article_info_table = self.dynamodb.Table( os.environ['ARTICLE_INFO_TABLE_NAME']) article_info_before = article_info_table.get_item( Key={ 'article_id': self.params['article_id'] }).get('Item') article_info_table.update_item( Key={ 'article_id': self.params['article_id'], }, UpdateExpression= 'set #attr = :article_status, sync_elasticsearch = :one, topic = :topic, tags = :tags', ExpressionAttributeNames={'#attr': 'status'}, ExpressionAttributeValues={ ':article_status': 'public', ':one': 1, ':topic': self.params['topic'], ':tags': self.params.get('tags') }) try: TagUtil.create_and_count(self.dynamodb, article_info_before.get('tags'), self.params.get('tags')) except Exception as e: logging.fatal(e) traceback.print_exc() return {'statusCode': 200}
def test_main_with_null_before_tag_names(self): before_tag_names = None after_tag_names = ['A', 'D', 'E'] TagUtil.create_and_count(self.dynamodb, before_tag_names, after_tag_names) tag_table = self.dynamodb.Table(os.environ['TAG_TABLE_NAME']) tags = tag_table.scan()['Items'] expected = [ { 'name': 'A', 'count': Decimal('3'), }, { 'name': 'B', 'count': Decimal('3'), }, { 'name': 'D', 'count': Decimal('1'), }, { 'name': 'E', 'count': Decimal('5'), }, ] for tag in tags: del tag['created_at'] tags = sorted(tags, key=lambda t: t['name']) self.assertEqual(tags, expected)
def exec_main_proc(self): article_content_edit_table = self.dynamodb.Table( os.environ['ARTICLE_CONTENT_EDIT_TABLE_NAME']) article_content_edit = article_content_edit_table.get_item( Key={ 'article_id': self.params['article_id'] }).get('Item') article_info_table = self.dynamodb.Table( os.environ['ARTICLE_INFO_TABLE_NAME']) article_info_before = article_info_table.get_item( Key={ 'article_id': self.params['article_id'] }).get('Item') self.__validate_article_content_edit(article_content_edit) self.__create_article_history(article_content_edit) self.__update_article_info(article_content_edit) self.__update_article_content(article_content_edit) article_content_edit_table.delete_item( Key={'article_id': self.params['article_id']}) try: TagUtil.create_and_count(self.elasticsearch, article_info_before.get('tags'), self.params.get('tags')) except Exception as e: logging.fatal(e) traceback.print_exc() return {'statusCode': 200}
def exec_main_proc(self): # 公開する記事が有料設定か無料設定かの判定 if self.params.get('price') is not None and self.params.get( 'paid_body') is not None: is_priced = True elif self.params.get('price') is None and self.params.get( 'paid_body') is None: is_priced = False else: raise ValidationError('Both paid body and price are required.') # 共通処理 article_info_table = self.dynamodb.Table( os.environ['ARTICLE_INFO_TABLE_NAME']) article_info_before = article_info_table.get_item( Key={ 'article_id': self.params['article_id'] }).get('Item') article_content_edit_table = self.dynamodb.Table( os.environ['ARTICLE_CONTENT_EDIT_TABLE_NAME']) article_content_edit = article_content_edit_table.get_item( Key={ 'article_id': self.params['article_id'] }).get('Item') article_content_table = self.dynamodb.Table( os.environ['ARTICLE_CONTENT_TABLE_NAME']) self.__validate_article_content_edit(article_content_edit) # 有料記事の場合 if is_priced: self.__create_paid_article_history(article_content_edit) self.__update_paid_article_content(article_content_edit) self.__update_paid_article_info(article_content_edit, article_info_table) # 無料記事の場合 else: # 有料記事から無料記事にする場合を考慮している self.__remove_price_and_paid_body(article_info_table, article_content_table) self.__create_article_history(article_content_edit) self.__update_article_content(article_content_edit) self.__update_article_info(article_content_edit, article_info_table) article_content_edit_table.delete_item( Key={'article_id': self.params['article_id']}) try: TagUtil.create_and_count(self.elasticsearch, article_info_before.get('tags'), self.params.get('tags')) except Exception as e: logging.fatal(e) traceback.print_exc() return {'statusCode': 200}