class MergerUpdater: def merge_duplicates(self, duplicates): duplicates = duplicates.order_by('created_at') merges_count = 0 while len(duplicates) > 1: merges_count += 1 case1, case2 = duplicates[0], duplicates[1] new_data = case2.serialize() e_id = case2.id case2.delete() self.update_if_needed(case1, new_data) duplicates = duplicates.exclude(id=e_id) def update_case(self, case): from oi_sud.cases.parsers.rf import FirstParser, SecondParser from oi_sud.cases.parsers.moscow import MoscowParser try: parser = None codex = 'koap' if case.type == 1 else 'uk' if case.court.site_type == 1: parser = FirstParser(court=case.court, stage=case.stage, codex=codex) elif case.court.site_type == 2: parser = SecondParser(court=case.court, stage=case.stage, codex=codex) elif case.court.site_type == 3: parser = MoscowParser(stage=case.stage, codex=codex)
def test_correct_result_text_2inst(moscow_courts, koap_articles): url = 'https://mos-gorsud.ru/mgs/services/cases/review-not-yet/details/a0d44509-e1ce-41ad-af55-542d164c3766' case_info = MoscowParser(stage=2).get_raw_case_information(url) print(case_info) assert case_info assert case_info['events'] != [] assert case_info['result_text'] != '' assert 'без удовлетворения' in case_info['result_text']
def test_correct_result_text_1inst(moscow_courts, koap_articles): url = 'https://mos-gorsud.ru/rs/meshchanskij/services/cases/admin/details/ff082d8f-d712-4661-b6f0-165e7c11b7df' case_info = MoscowParser(stage=1).get_raw_case_information(url) print(case_info) assert case_info assert case_info['events'] != [] assert case_info['result_text'] != '' assert 'без удовлетворения' not in case_info['result_text']
def test_get_raw_case_info(moscow_courts, koap_articles): url = 'https://www.mos-gorsud.ru/rs/nikulinskij/services/cases/admin/details/2163d66f-6364-4290-986f-98ee6b16b658' # url = 'https://mos-gorsud.ru/rs/timiryazevskij/services/cases/admin/details/4ff27edb-bf19-4526-ac73-ff89095cf666'#'https://mos-gorsud.ru/rs/timiryazevskij/services/cases/admin/details/0e45130b-8365-4c45-9279-ed69af0c6552'#'https://mos-gorsud.ru/rs/tverskoj/services/cases/admin/details/' \ # 'c694e8b1-d345-4933-af40-25a3ad4ba819?documentMainArticle=%D1%81%D1%82.+19.34%2C+%D0%A7.2&formType=fullForm' case_info = MoscowParser(stage=1).get_raw_case_information(url) print(case_info['defenses']) assert case_info assert case_info['events'] != [] assert case_info['result_text'] != ''
def test_save_case(moscow_courts, koap_articles): cases_urls = [ 'https://mos-gorsud.ru/rs/timiryazevskij/services/cases/admin/details/4ff27edb-bf19-4526-ac73-ff89095cf666', 'https://www.mos-gorsud.ru/rs/nikulinskij/services/cases/admin/details/2163d66f-6364-4290-986f-98ee6b16b658' ] url = 'https://mos-gorsud.ru/mgs/search?courtAlias=&uid=&instance=1&processType=3&codex=ст.+19.34%2C+Ч.2' # cases_urls = [ # 'https://mos-gorsud.ru/rs/meshchanskij/services/cases/admin/' # 'details/e759cbf7-cacd-4642-91c1-7a8479cfe270?documentMainArticle=' # '%D1%81%D1%82.+19.34%2C+%D0%A7.2&formType=fullForm', # 'https://mos-gorsud.ru/rs/tverskoj/services/cases/admin/' # 'details/c694e8b1-d345-4933-af40-25a3ad4ba819?' # 'documentMainArticle=%D1%81%D1%82.+19.34%2C+%D0%A7.2&formType=fullForm'] article = CodexArticle.objects.filter(article_number=19.34, part=2).first() MoscowParser(url=url, stage=1, codex='koap', article=article).save_cases(urls=cases_urls) assert (len(Case.objects.all()) == 2)
def handle(self, *args, **options): urls_list = options['urls'].split(', ') if not urls_list: print('Got no urls') return parser_type = options['type'] if parser_type not in ['rf', 'moscow']: print('Please specify rf or moscow') return if parser_type == 'moscow': MoscowParser(stage=1, codex='koap').save_cases(urls=urls_list) elif parser_type == 'rf': # TODO: get court from url, then use first or second parser print('Not implemented yet') return
def handle(self, *args, **options): s = 'Гаврилов С.В. (Ст. 282.1, Ч. 2; Ст. 282.1, Ч. 1), Дубовик М.С. (Ст. 282.1, Ч. 1; Ст. 282.1, Ч. 2), ' \ 'Карамзин П.А. (Ст. 282.1, Ч. 2; Ст. 282.1, Ч. 1), Костыленков Р.Д. (Ст. 282.1, Ч. 2; Ст. 282.1, Ч. 1), ' \ 'Крюков В.В. (Ст. 282.1, Ч. 1; Ст. 282.1, Ч. 2), Павликова А.Д. (Ст. 282.1, Ч. 1; Ст. 282.1, Ч. 2), ' \ 'Полетаев Д.В. (Ст. 282.1, Ч. 1; Ст. 282.1, Ч. 2), Рощин М.В. (Ст. 282.1, Ч. 2; Ст. 282.1, Ч. 1)' MoscowParser().get_uk_defenses(s)
def test_urls_getter(koap_articles): url = 'https://mos-gorsud.ru/mgs/search?courtAlias=&uid=&instance=1&processType=3&codex=ст.+19.34%2C+Ч.2' article = CodexArticle.objects.filter(article_number=19.34, part=2).first() urls = MoscowParser(url=url, stage=1, codex='koap', article=article).get_all_cases_urls(limit_pages=True) assert len(urls)