move accepted result to accepted collection
This commit is contained in:
@@ -18,7 +18,7 @@ logger = logging.getLogger()
|
|||||||
logger.addHandler(logging.StreamHandler(stream=sys.stdout))
|
logger.addHandler(logging.StreamHandler(stream=sys.stdout))
|
||||||
|
|
||||||
|
|
||||||
def start_book(start_number, end_number, store_choose_state=0, max_workers=1, proxy_type=ProxyType.BRIGHT_DATA,
|
def start_book(start_number, end_number, store_choose_state=0, max_workers=20, proxy_type=ProxyType.BRIGHT_DATA,
|
||||||
mode: ModeEnum = ModeEnum.MANUAL, headless=False):
|
mode: ModeEnum = ModeEnum.MANUAL, headless=False):
|
||||||
# read the contact, and contact the 2 objects together
|
# read the contact, and contact the 2 objects together
|
||||||
excel_reader = ExcelHelper()
|
excel_reader = ExcelHelper()
|
||||||
@@ -61,5 +61,5 @@ def get_proxy(proxy_type=ProxyType.BRIGHT_DATA):
|
|||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
# 修改联系人行,结束联系人行 第三个参数store等于0的时候是随机,传入1的时候是总店
|
# 修改联系人行,结束联系人行 第三个参数store等于0的时候是随机,传入1的时候是总店
|
||||||
start_book(1000, 1171, store_choose_state=1, mode=ModeEnum.AUTOMATIC, headless=False)
|
start_book(1, 20, store_choose_state=1, mode=ModeEnum.AUTOMATIC, headless=False)
|
||||||
# recheck_the_captcha_error_contacts(store_type=1, mode=ModeEnum.AUTOMATIC, on_no_contact_found=lambda: None)
|
# recheck_the_captcha_error_contacts(store_type=1, mode=ModeEnum.AUTOMATIC, on_no_contact_found=lambda: None)
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import datetime
|
||||||
import logging
|
import logging
|
||||||
import random
|
import random
|
||||||
import threading
|
import threading
|
||||||
@@ -6,6 +7,7 @@ from typing import Union
|
|||||||
|
|
||||||
from playwright.sync_api import sync_playwright
|
from playwright.sync_api import sync_playwright
|
||||||
|
|
||||||
|
from src.db.mirgration.migration_tools import migre_accepted_appointment
|
||||||
from src.db.mongo_manager import MONGO_STORE_MANAGER
|
from src.db.mongo_manager import MONGO_STORE_MANAGER
|
||||||
from src.definitions import LOG_SUBJECT_EVENT, TYPE_EVENT_CHECK_RESULTS
|
from src.definitions import LOG_SUBJECT_EVENT, TYPE_EVENT_CHECK_RESULTS
|
||||||
from src.logs.LogSender import LogSender
|
from src.logs.LogSender import LogSender
|
||||||
@@ -114,6 +116,8 @@ def check_results(headless=False):
|
|||||||
start_check(reserve_list, firestore_collection, headless, need_send_email=False)
|
start_check(reserve_list, firestore_collection, headless, need_send_email=False)
|
||||||
reserve_list = MONGO_STORE_MANAGER.get_all_successful_items_for_day()
|
reserve_list = MONGO_STORE_MANAGER.get_all_successful_items_for_day()
|
||||||
start_check(reserve_list, firestore_collection, headless, need_send_email=True)
|
start_check(reserve_list, firestore_collection, headless, need_send_email=True)
|
||||||
|
# copy the accepted info to the accepted collection
|
||||||
|
migre_accepted_appointment(str(datetime.date.today()))
|
||||||
|
|
||||||
|
|
||||||
def start_check(reserve_list, firestore_collection, headless: bool, need_send_email: bool):
|
def start_check(reserve_list, firestore_collection, headless: bool, need_send_email: bool):
|
||||||
|
|||||||
@@ -42,6 +42,12 @@ class DataManager:
|
|||||||
doc_ref.where(u'source_from', u'==', source_from)
|
doc_ref.where(u'source_from', u'==', source_from)
|
||||||
return doc_ref
|
return doc_ref
|
||||||
|
|
||||||
|
def get_all_accepted_items_for_day(self, day):
|
||||||
|
params.oracle_log_sender.send_read_db_event("get_all_successful_items_for_day for {}".format(day))
|
||||||
|
doc_ref = self._db.collection(day)
|
||||||
|
accepted_ref = doc_ref.where(u'accepted', u'==', "ACCEPTED")
|
||||||
|
return accepted_ref
|
||||||
|
|
||||||
def get_successful_item_for_day_by_status(self, day, status: ResultEnum):
|
def get_successful_item_for_day_by_status(self, day, status: ResultEnum):
|
||||||
params.oracle_log_sender.send_read_db_event("get_successful_item_for_day_by_status for {}".format(day))
|
params.oracle_log_sender.send_read_db_event("get_successful_item_for_day_by_status for {}".format(day))
|
||||||
doc_ref = self._db.collection(day)
|
doc_ref = self._db.collection(day)
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
import datetime
|
||||||
|
|
||||||
|
from src import definitions
|
||||||
|
from src.db.mongo_manager import MONGO_STORE_MANAGER
|
||||||
|
from src.pojo.ReserveResultPojo import ReserveResultPojo
|
||||||
|
from src.pojo.ResultEnum import ResultEnum
|
||||||
|
from src.pojo.accepted_appointment_pojo import AcceptedAppointmentPojo
|
||||||
|
|
||||||
|
|
||||||
|
def migre_accepted_item_from_firebase_to_mongo(day: str):
|
||||||
|
# get successful item from firestore
|
||||||
|
collection = definitions.firebase_store_manager.get_all_accepted_items_for_day(day).stream()
|
||||||
|
for valid_appointment in collection:
|
||||||
|
reserve_pojo = ReserveResultPojo.from_firestore_dict(valid_appointment.to_dict())
|
||||||
|
if reserve_pojo.accepted == "ACCEPTED":
|
||||||
|
MONGO_STORE_MANAGER.update_reserve_result_for_collection(reserve_pojo.id, ResultEnum.ACCEPTED, day)
|
||||||
|
|
||||||
|
|
||||||
|
def migre_accepted_appointment(day: str):
|
||||||
|
# get successful item from firestore
|
||||||
|
collection = MONGO_STORE_MANAGER.get_accepted_items_for_one_day(day)
|
||||||
|
for valid_appointment in collection:
|
||||||
|
accepted_pojo = AcceptedAppointmentPojo.from_reserve(valid_appointment)
|
||||||
|
accepted_pojo.day = day
|
||||||
|
accepted_pojo.accepted_at = datetime.datetime.strptime(day, '%Y-%m-%d').timestamp()
|
||||||
|
MONGO_STORE_MANAGER.insert_accepted_reserve(accepted_pojo)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
# migre_accepted_item_from_firebase_to_mongo("2022-07-06")
|
||||||
|
days = ['2022-07-04', '2022-07-05', '2022-07-06', '2022-07-07', '2022-07-08', '2022-07-09', '2022-07-11',
|
||||||
|
'2022-07-12', '2022-07-13', '2022-07-15', '2022-07-16', '2022-07-18''2022-07-19', '2022-07-20',
|
||||||
|
'2022-07-21']
|
||||||
|
for day in days:
|
||||||
|
migre_accepted_appointment(day)
|
||||||
@@ -6,12 +6,14 @@ from pymongo import MongoClient
|
|||||||
from src import params
|
from src import params
|
||||||
from src.pojo.ReserveResultPojo import ReserveResultPojo
|
from src.pojo.ReserveResultPojo import ReserveResultPojo
|
||||||
from src.pojo.ResultEnum import ResultEnum
|
from src.pojo.ResultEnum import ResultEnum
|
||||||
|
from src.pojo.accepted_appointment_pojo import AcceptedAppointmentPojo
|
||||||
from src.pojo.black_contact import BlackContactPojo
|
from src.pojo.black_contact import BlackContactPojo
|
||||||
from src.pojo.contact_pojo import ContactPojo
|
from src.pojo.contact_pojo import ContactPojo
|
||||||
|
|
||||||
MONGO_DB_URL = "mongo.lpaconsulting.fr"
|
MONGO_DB_URL = "mongo.lpaconsulting.fr"
|
||||||
CAPTCHA_ERROR_COLLECTION_PREFIX = "CAPTCHA_ERROR_"
|
CAPTCHA_ERROR_COLLECTION_PREFIX = "CAPTCHA_ERROR_"
|
||||||
BLACK_LIST = "BLACK_LIST"
|
BLACK_LIST = "BLACK_LIST"
|
||||||
|
ACCEPTED_APPOINTMENT_LIST = "ACCEPTED_APPOINTMENT_LIST"
|
||||||
|
|
||||||
|
|
||||||
class MongoDbManager:
|
class MongoDbManager:
|
||||||
@@ -32,6 +34,13 @@ class MongoDbManager:
|
|||||||
except Exception as Error:
|
except Exception as Error:
|
||||||
self.logger.info(Error)
|
self.logger.info(Error)
|
||||||
|
|
||||||
|
def insert_accepted_reserve(self, accepted_pojo: AcceptedAppointmentPojo):
|
||||||
|
try:
|
||||||
|
collection_to_use = self.db[ACCEPTED_APPOINTMENT_LIST]
|
||||||
|
collection_to_use.insert_one(accepted_pojo.to_firestore_dict())
|
||||||
|
except Exception as Error:
|
||||||
|
self.logger.info(Error)
|
||||||
|
|
||||||
def insert_captcha_error_contact(self, contact: ContactPojo):
|
def insert_captcha_error_contact(self, contact: ContactPojo):
|
||||||
day = str(datetime.date.today())
|
day = str(datetime.date.today())
|
||||||
collection_name = CAPTCHA_ERROR_COLLECTION_PREFIX + day
|
collection_name = CAPTCHA_ERROR_COLLECTION_PREFIX + day
|
||||||
@@ -83,11 +92,26 @@ class MongoDbManager:
|
|||||||
result_list.append(ReserveResultPojo.from_firestore_dict(document))
|
result_list.append(ReserveResultPojo.from_firestore_dict(document))
|
||||||
return result_list
|
return result_list
|
||||||
|
|
||||||
|
def get_accepted_items_for_one_day(self, day_in_str: str) -> list:
|
||||||
|
params.oracle_log_sender.send_read_db_event("get_accepted_items_for_one_day")
|
||||||
|
collection_name = day_in_str
|
||||||
|
result_list = []
|
||||||
|
cursor = self.db[collection_name]
|
||||||
|
for document in cursor.find():
|
||||||
|
reserve = ReserveResultPojo.from_firestore_dict(document)
|
||||||
|
if reserve.accepted == ResultEnum.ACCEPTED.name:
|
||||||
|
result_list.append(reserve)
|
||||||
|
return result_list
|
||||||
|
|
||||||
def update_reserve_result(self, reserve_id: str, result: ResultEnum):
|
def update_reserve_result(self, reserve_id: str, result: ResultEnum):
|
||||||
collection_name = str(datetime.date.today())
|
collection_name = str(datetime.date.today())
|
||||||
collection = self.db[collection_name]
|
collection = self.db[collection_name]
|
||||||
collection.find_one_and_update({'_id': reserve_id}, {"$set": {"accepted": result.name}}, upsert=False)
|
collection.find_one_and_update({'_id': reserve_id}, {"$set": {"accepted": result.name}}, upsert=False)
|
||||||
|
|
||||||
|
def update_reserve_result_for_collection(self, reserve_id: str, result: ResultEnum, collection_name: str):
|
||||||
|
collection = self.db[collection_name]
|
||||||
|
collection.find_one_and_update({'_id': reserve_id}, {"$set": {"accepted": result.name}}, upsert=False)
|
||||||
|
|
||||||
def get_captcha_error_contacts_for_current_day(self) -> list:
|
def get_captcha_error_contacts_for_current_day(self) -> list:
|
||||||
day = str(datetime.date.today())
|
day = str(datetime.date.today())
|
||||||
collection_name = CAPTCHA_ERROR_COLLECTION_PREFIX + day
|
collection_name = CAPTCHA_ERROR_COLLECTION_PREFIX + day
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ class ReserveResultPojo:
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def from_firestore_dict(source):
|
def from_firestore_dict(source):
|
||||||
publish_type = source['type']
|
publish_type = source['type']
|
||||||
|
if publish_type:
|
||||||
|
publish_type = PublishType[publish_type]
|
||||||
phone = source['phone']
|
phone = source['phone']
|
||||||
message = source['message']
|
message = source['message']
|
||||||
url = source['url']
|
url = source['url']
|
||||||
@@ -85,6 +87,7 @@ class ReserveResultPojo:
|
|||||||
u'ccid': self.ccid,
|
u'ccid': self.ccid,
|
||||||
u'source_from': self.source_from,
|
u'source_from': self.source_from,
|
||||||
u'store_type': self.store_type,
|
u'store_type': self.store_type,
|
||||||
|
u'accepted': self.accepted,
|
||||||
}
|
}
|
||||||
|
|
||||||
return dest
|
return dest
|
||||||
|
|||||||
@@ -0,0 +1,54 @@
|
|||||||
|
import time
|
||||||
|
|
||||||
|
from src.pojo.ReserveResultPojo import ReserveResultPojo
|
||||||
|
|
||||||
|
|
||||||
|
class AcceptedAppointmentPojo(ReserveResultPojo):
|
||||||
|
accepted_at: float
|
||||||
|
day: str
|
||||||
|
|
||||||
|
def __init__(self, reserve: ReserveResultPojo):
|
||||||
|
self.id = reserve.id
|
||||||
|
self.accepted = reserve.accepted
|
||||||
|
self.passport = reserve.passport
|
||||||
|
self.url = reserve.url
|
||||||
|
self.store_type = reserve.store_type
|
||||||
|
self.lastName = reserve.lastName
|
||||||
|
self.firstName = reserve.firstName
|
||||||
|
self.ccid = reserve.ccid
|
||||||
|
self.email = reserve.email
|
||||||
|
self.phone = reserve.phone
|
||||||
|
self.source_from = reserve.source_from
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def from_reserve(reserve: ReserveResultPojo):
|
||||||
|
to_return = AcceptedAppointmentPojo(reserve)
|
||||||
|
to_return.accepted_at = time.time()
|
||||||
|
return to_return
|
||||||
|
|
||||||
|
def to_firestore_dict(self):
|
||||||
|
dest = {
|
||||||
|
u'id': self.id,
|
||||||
|
u'phone': self.phone,
|
||||||
|
u'firstName': self.firstName,
|
||||||
|
u'lastName': self.lastName,
|
||||||
|
u'email': self.email,
|
||||||
|
u'passport': self.passport,
|
||||||
|
u'url': self.url,
|
||||||
|
u'ccid': self.ccid,
|
||||||
|
u'source_from': self.source_from,
|
||||||
|
u'store_type': self.store_type,
|
||||||
|
u'accepted': self.accepted,
|
||||||
|
u'day': self.day,
|
||||||
|
u'accepted_at': self.accepted_at,
|
||||||
|
}
|
||||||
|
return dest
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def from_firestore_dict(source):
|
||||||
|
result = ReserveResultPojo.from_firestore_dict(source)
|
||||||
|
accepted_pojo = AcceptedAppointmentPojo.from_reserve(result)
|
||||||
|
if 'accepted_at' in source:
|
||||||
|
accepted_at = source['accepted_at']
|
||||||
|
accepted_pojo.accepted_at = accepted_at
|
||||||
|
return accepted_pojo
|
||||||
Reference in New Issue
Block a user