def load_test_data(choice="file", overwrite=True): ''' This will load test data. ''' if overwrite: getall = models.storage.all().copy() for ele in getall.values(): models.storage.delete(ele) states = ['Alabama', 'Arizona', 'Washington', 'Texas', 'California'] cities = ['One', 'Two', 'Three'] if choice == "file": fs = models.storage for x in states: new_state = models.State() setattr(new_state, "name", x) fs.new(new_state) fs.save() model_states = fs.all("State") for x in model_states.values(): for v in cities: new_city = models.City() setattr(new_city, "state_id", x.id) setattr(new_city, "name", v) fs.new(new_city) fs.save() else: pass
def reload(self): '''This is the 'reload' instance. Deserializes the JSON file to __objects. If JSON file does not exist, do nothing. Return: __object or nothing ''' if os.path.isfile(FileStorage.__file_path) is True: with open(FileStorage.__file_path, 'r+', encoding='utf-8') as fn: obj = json.load(fn) for key in obj.keys(): is_dict = obj[key] is_class = is_dict['__class__'] if 'BaseModel' in is_class: FileStorage.__objects[key] = models.BaseModel(obj[key]) if 'Amenity' in is_class: FileStorage.__objects[key] = models.Amenity(obj[key]) if 'City' in is_class: FileStorage.__objects[key] = models.City(obj[key]) if 'Place' in is_class: FileStorage.__objects[key] = models.Place(obj[key]) if 'Review' in is_class: FileStorage.__objects[key] = models.Review(obj[key]) if 'State' in is_class: FileStorage.__objects[key] = models.State(obj[key]) if 'User' in is_class: FileStorage.__objects[key] = models.User(obj[key])
def init_db(): import models db.create_all() db.session.add_all([models.City(name=city_name, color=city_color) for city_name,city_color in constants.CITIES.items()]) db.session.add_all([models.Character(name=name, first_name=first_name, middle_name=middle_name, icon=icon) for name,(first_name,middle_name,icon) in constants.CHARACTERS.items()]) db.session.commit()
def add_city(name): check_city_on_api(name) city = models.City(name.lower()) try: models.db.session.add(city) models.db.session.commit() except IntegrityError: models.db.session.rollback() raise ServiceException(f"City {name} already in database") return city
async def insert_city(city: models.CityName): if not database.exists_city(city.name): status_code, forecast = weather.exists_city(city.name) if status_code == HTTP_200_OK and forecast['cod'] != '404': result = database.insert_city(city.name, city_api_id=forecast['city']['id'], forecast=forecast) return models.City(**result) raise HTTPException(status_code=HTTP_404_NOT_FOUND, detail="A cidade de {} não existe.".format( city.name)) raise HTTPException(status_code=HTTP_303_SEE_OTHER, detail="Cidade já registrada.")
def parse_detail_page(self, true_detail_url): """ 解析详情页所需的数据 :param true_detail_url: 详情页真实地址 :return: """ response = get_page_source(true_detail_url, self.cookies) if response: html = etree.HTML(response.text) trs = html.xpath('//table/tr[@height="19"]') province_tag = None province_code_tag = None print({'省份:': '北京市', '划分码': '110000'}) data = {"name": '北京市', "code": '110000'} p = models.Province(**data) models.db.session.add(p) models.db.session.commit() for tr in trs: province_code = "".join(tr.xpath('./td[2]//text()')).strip() province = "".join(tr.xpath('./td[3]//text()')).strip() if province_tag is None: province_tag = province province_code_tag = province_code elif not province_code.startswith(province_code_tag[:2]): province_code_tag = province_code province_tag = province print({"省份:": province_tag, "划分码": province_code_tag}) data = {"name": province_tag, "code": province_code_tag} p = models.Province(**data) models.db.session.add(p) models.db.session.commit() elif all([ province_code.startswith(province_code_tag[:2]), province_code.endswith(province_code_tag[-2:]) ]): print({"省所属市:": province, "划分码": province_code}) data = {"name": province, "code": province_code} c = models.City(**data) models.db.session.add(c) models.db.session.commit() else: print({"市所属县:": province, "划分码": province_code}) data = {"name": province, "code": province_code} dst = models.Destination(**data) models.db.session.add(dst) models.db.session.commit() print("\n更新数据库数据完成!")
def test_FileStorage_all_class_specific(self): ''' Test all method with a class specified ''' new_city = models.City() new_state = models.State() state_key = str(new_state.__class__.__name__) + "." + str(new_state.id) city_key = str(new_city.__class__.__name__) + "." + str(new_city.id) self.storage.new(new_city) self.storage.new(new_state) tmp = self.storage.all(models.City) state = tmp.get(state_key, None) city = tmp.get(city_key, None) self.assertTrue(city is not None, msg="\n{}\n{}".format(tmp, city)) self.assertTrue(state is None)
def get_city(city_url): try: city = DB_MANAGER.open().query( mo.City).filter(mo.City.api_url == city_url).one() if not city.state or city.state == None: city_obj = get_request(city_url) city.state = get_state(city_obj['state']) DB_MANAGER.save(city) return city except: try: city_obj = get_request(city_url) city = mo.City() city.parse_json(city_obj) city.state = get_state(city_obj['state']) city = DB_MANAGER.save(city) return city except: return None
def parse_cities(collect_ids_pass=False): check_preconditions(collect_ids_pass) f = open(JSON_DUMP_DIR + CITIES_FILENAME, "r") cities = json.loads(f.read()) cities_list = [] city_id = 0 for cities_dict in cities: name = cities_dict['name'] if collect_ids_pass: _KNOWN_CITIES.add(name) else: people_list = filter_contains(_KNOWN_PEOPLE, cities_dict['people']) people = json.dumps(people_list) region = cities_dict['region'] financial_org_list = filter_contains(_KNOWN_FINORGS, cities_dict['financial_orgs']) financial_orgs = json.dumps(financial_org_list) companies_list = filter_contains(_KNOWN_COMPANIES, cities_dict['companies']) companies = json.dumps(companies_list) state = cities_dict['state'] if (len(companies_list) + len(financial_org_list) + len(people_list)) > 0: city = models.City(str(city_id), name, state, region, companies, financial_orgs, people) city_id += 1 cities_list += [city] return cities_list
def do_create(self, arg): '''Creates a new instance of BaseModel, save to JSON file.''' args = arg.split() if len(args) < 1: print(self.errors['noclass']) elif args[0] in self.new_class: if args[0] == 'BaseModel': new = models.BaseModel() if args[0] == 'Amenity': new = models.Amenity() if args[0] == 'City': new = models.City() if args[0] == 'Place': new = models.Place() if args[0] == 'Review': new = models.Review() if args[0] == 'State': new = models.State() if args[0] == 'User': new = models.User() new.save() print('{}'.format(new.id)) else: print(self.errors['badclass'])
def setUp(self): """Setup for each testcase""" self.testcase = models.City()