コード例 #1
0
class OperatingRevenueFeedBuilder:
    def __init__(self):
        self.account_synonym = AccountSynonym()
        self.date_utils = DateUtils()

    def build(self, dao):
        tuple_feed = self.__build_tuple(dao)
        return OperatingRevenueFeed(tuple_feed)

    def __build_tuple(self, dao):
        feed = []
        release_date = self.date_utils.get_last_date_of_month(dao.get_date())
        stock_symbol = dao.get_stock_symbol()
        for account, value in dao.get_row_list():
            if self.account_synonym.get(account) == u"當月營收":
                entry = {
                    "release_date": release_date,
                    "stock_symbol": stock_symbol,
                    "stmt_date": self.date_utils.get_last_date_of_month(release_date),
                    "account": u"當月營收",
                    "account_order": 1,
                    "value": value,
                }
                feed.append(entry)
        return tuple(feed)
コード例 #2
0
class OperatingRevenueSummaryFeedBuilder:
    def __init__(self):
        self.date_utils = DateUtils()

    def build(self, dao):
        tuple_feed = self.__build_tuple(dao)
        return OperatingRevenueFeed(tuple_feed)

    def __build_tuple(self, dao):
        feed = []
        stmt_date = self.date_utils.get_last_date_of_month(dao.get_stmt_date())
        release_date = dao.get_release_date()
        for row in dao.get_row_list():
            stock_symbol = row[0]
            this_month_value = row[2]
            last_month_value = row[3]
            entry = {
                "release_date": release_date,
                "stock_symbol": stock_symbol,
                "stmt_date": stmt_date,
                "account": u"當月營收",
                "account_order": 1,
                "value": this_month_value,
            }
            feed.append(entry)
            entry = {
                "release_date": release_date,
                "stock_symbol": stock_symbol,
                "stmt_date": self.date_utils.get_last_date_of_prev_month(stmt_date),
                "account": u"上月營收",
                "account_order": 2,
                "value": last_month_value,
            }
            feed.append(entry)
        return tuple(feed)
コード例 #3
0
class OperatingRevenueSummaryAssembler:
    def __init__(self):
        self.content_screener = ContentScreener()
        self.date_utils = DateUtils()
        self.string_utils = StringUtils()

    def assemble(self, param):
        content, date = param["content"], param["date"]
        self.content_screener.screen(param)
        stmt_date = self.date_utils.get_last_date_of_month(date)
        column_name_list, row_list, release_date = self.__assemble_summary(content)
        return OperatingRevenueSummaryDao(column_name_list, row_list, stmt_date, release_date)

    def __assemble_summary(self, html_object):
        try:
            return AriesParser().parse(html_object)
        except AssertionError:
            return self.__assemble_summary_step_1(html_object)

    def __assemble_summary_step_1(self, html_object):
        try:
            return TaurusParser().parse(html_object)
        except AssertionError:
            return self.__assemble_summary_step_2(html_object)

    def __assemble_summary_step_2(self, html_object):
        try:
            return GeminiParser().parse(html_object)
        except AssertionError:
            return self.__assemble_summary_step_3(html_object)

    def __assemble_summary_step_3(self, html_object):
        try:
            return CancerParser().parse(html_object)
        except AssertionError:
            return LeoParser().parse(html_object)
コード例 #4
0
ファイル: test_date_utils.py プロジェクト: Meng-Gen/StockCat
class DateUtilsTest(unittest.TestCase):
    def setUp(self):
        self.date_utils = DateUtils()

    def tearDown(self):
        self.date_utils = None

    def test_get_last_date_of_month(self):
        actual = self.date_utils.get_last_date_of_month(datetime.date(2010, 1, 1))
        expected = datetime.date(2010, 1, 31)
        self.assertEqual(actual, expected)

    def test_get_last_date_of_prev_month(self):
        actual = self.date_utils.get_last_date_of_prev_month(datetime.date(2010, 1, 1))
        expected = datetime.date(2009, 12, 31)
        self.assertEqual(actual, expected)

    def test_get_last_date_of_quarter(self):
        actual = self.date_utils.get_last_date_of_quarter(datetime.date(2010, 1, 1))
        expected = datetime.date(2010, 3, 31)
        self.assertEqual(actual, expected)

        actual = self.date_utils.get_last_date_of_quarter(datetime.date(2010, 3, 31))
        expected = datetime.date(2010, 3, 31)
        self.assertEqual(actual, expected)

        actual = self.date_utils.get_last_date_of_quarter(datetime.date(2010, 4, 1))
        expected = datetime.date(2010, 6, 30)
        self.assertEqual(actual, expected)

        actual = self.date_utils.get_last_date_of_quarter(datetime.date(2010, 6, 30))
        expected = datetime.date(2010, 6, 30)
        self.assertEqual(actual, expected)

        actual = self.date_utils.get_last_date_of_quarter(datetime.date(2010, 7, 1))
        expected = datetime.date(2010, 9, 30)
        self.assertEqual(actual, expected)

        actual = self.date_utils.get_last_date_of_quarter(datetime.date(2010, 9, 30))
        expected = datetime.date(2010, 9, 30)
        self.assertEqual(actual, expected)

        actual = self.date_utils.get_last_date_of_quarter(datetime.date(2010, 10, 1))
        expected = datetime.date(2010, 12, 31)
        self.assertEqual(actual, expected)

        actual = self.date_utils.get_last_date_of_quarter(datetime.date(2010, 12, 31))
        expected = datetime.date(2010, 12, 31)
        self.assertEqual(actual, expected)

    def test_get_last_date_of_next_quarter(self):
        actual = self.date_utils.get_last_date_of_next_quarter(datetime.date(2010, 1, 1))
        expected = datetime.date(2010, 6, 30)
        self.assertEqual(actual, expected)

        actual = self.date_utils.get_last_date_of_next_quarter(datetime.date(2010, 3, 31))
        expected = datetime.date(2010, 6, 30)
        self.assertEqual(actual, expected)

        actual = self.date_utils.get_last_date_of_next_quarter(datetime.date(2010, 4, 1))
        expected = datetime.date(2010, 9, 30)
        self.assertEqual(actual, expected)

        actual = self.date_utils.get_last_date_of_next_quarter(datetime.date(2010, 6, 30))
        expected = datetime.date(2010, 9, 30)
        self.assertEqual(actual, expected)

        actual = self.date_utils.get_last_date_of_next_quarter(datetime.date(2010, 7, 1))
        expected = datetime.date(2010, 12, 31)
        self.assertEqual(actual, expected)

        actual = self.date_utils.get_last_date_of_next_quarter(datetime.date(2010, 9, 30))
        expected = datetime.date(2010, 12, 31)
        self.assertEqual(actual, expected)

        actual = self.date_utils.get_last_date_of_next_quarter(datetime.date(2010, 10, 1))
        expected = datetime.date(2011, 3, 31)
        self.assertEqual(actual, expected)

        actual = self.date_utils.get_last_date_of_next_quarter(datetime.date(2010, 12, 31))
        expected = datetime.date(2011, 3, 31)
        self.assertEqual(actual, expected)

    def test_range_date_by_month(self):
        actual = self.date_utils.range_date_by_month(datetime.date(2010, 9, 1), datetime.date(2011, 3, 15))
        expected = [
                datetime.date(2010, 9, 30), 
                datetime.date(2010, 10, 31), 
                datetime.date(2010, 11, 30), 
                datetime.date(2010, 12, 31), 
                datetime.date(2011, 1, 31), 
                datetime.date(2011, 2, 28), 
                datetime.date(2011, 3, 31), 
        ]
        self.assertEqual(actual, expected)

    def test_range_date_by_quarter(self):
        actual = self.date_utils.range_date_by_quarter(datetime.date(2010, 9, 1), datetime.date(2011, 3, 15))
        expected = [
                datetime.date(2010, 9, 30), 
                datetime.date(2010, 12, 31), 
                datetime.date(2011, 3, 31), 
        ]
        self.assertEqual(actual, expected)