Example #1
0
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
Example #2
0
    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])
Example #3
0
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()
Example #4
0
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
Example #5
0
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.")
Example #6
0
    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更新数据库数据完成!")
Example #7
0
 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)
Example #8
0
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
Example #9
0
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
Example #10
0
 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'])
Example #11
0
 def setUp(self):
     """Setup for each testcase"""
     self.testcase = models.City()