def _make_apartment(user, addr, rent, roomates, rooms, s_date): apartmant = Apartment(owner=user, city=city_model, address=addr, rent=rent, num_of_roomates=roomates, num_of_rooms=rooms, start_date=s_date) apartmant.save() return apartmant
def test_get_all_relevant_apartments(self): apartments_qurey = Apartment.get_all_relevant_apartments() assert all( isinstance(current_apartment, Apartment) for current_apartment in apartments_qurey) assert all(current_apartment.is_relevant for current_apartment in apartments_qurey)
def apartment_model(db, city_model): new_owner = get_user_model().objects.create_user( '*****@*****.**', 'owner', 'own', '1900-01-01', 'password') new_owner.save() new_apartment = Apartment( owner=new_owner, city=city_model, address='street', rent=4500, num_of_roomates=2, num_of_rooms=3, start_date='2021-1-1', about='Hey!', image_url='www.some-url.com', ) new_apartment.save() return new_apartment
def apart_success_search(db, city_model_Tel_Aviv): new_owner = get_user_model().objects.create_user( '*****@*****.**', 'owner', 'own', '1900-01-01', 'password') new_owner.save() new_apartment = Apartment( owner=new_owner, city=city_model_Tel_Aviv, address='street', rent=2500, num_of_roomates=2, num_of_rooms=3, start_date='2021-03-02', about='Hey!', image_url='www.some-url.com', ) new_apartment.save() return new_apartment
def generate_apartment_data(apps, schema_editor): apt_test_data = [ (User.objects.get(email='*****@*****.**'), City.objects.get(cityName='Tel Aviv'), 'Israelof 5', 2650, 2, 3, '2020-01-01', "Join our cool aprt!"), (User.objects.get(email='*****@*****.**'), City.objects.get(cityName='Jerusalem'), 'Yoseftal 6', 3200, 3, 4, '2020-02-02', "Good vibes only"), ] with transaction.atomic(): for baseuser, city, address, rent, roomates, rooms, startdate, about in apt_test_data: Apartment( owner=baseuser, city=city, address=address, rent=rent, num_of_roomates=roomates, num_of_rooms=rooms, start_date=startdate, about=about, image_url=random.choice(APARTMENT_IMAGE_URL_LIST)).save()
def generate_more_apartment_data(apps, schema_editor): users = User.objects.all()[100:] cities = City.objects.all() with transaction.atomic(): for user in users: start_date = "2021-" + str(random.randint(1, 12)) + \ "-" + str(random.randint(1, 28)) address = random.choice(STREETS_LIST) + ", " + \ str(random.randint(1, 150)) num_of_roomates = random.randint(2, 4) num_of_rooms = num_of_roomates + random.randint(0, 3) Apartment( owner=user, city=cities[random.randint(0, 5)], address=address, rent=random.randint(1500, 5000), num_of_roomates=num_of_roomates, num_of_rooms=num_of_rooms, start_date=start_date, about=random.choice(APARTMENT_ABOUT), image_url=random.choice(APARTMENT_IMAGE_URL_LIST)).save()
def test_get_apartment_by_id(self, apartment_model): check_apartment_success = Apartment.get_apartment_by_id( apartment_model.owner.id) check_apartment_fail = Apartment.get_apartment_by_id(-1) assert check_apartment_success == apartment_model assert check_apartment_fail is None
def parse_apt(url_str): f = urllib2.urlopen(url_str) post_title = '' while post_title == '': line = f.readline() if line == '': print 'title not found' return title_search = '<h2 class="postingtitle">'; post_title_split = None if line.find(title_search) != -1: post_title_split = unicode(line[len(title_search):].split('(berkeley')) elif line.find('<h2>') != -1: post_title_split = unicode(line[4:].split('(berkeley')) if post_title_split != None: i = 0 while i < len(post_title_split) - 1: post_title += unicode(post_title_split[i]) i += 1 break post_title = post_title.strip() if len(post_title) < 2: return f.readline() post_time = f.readline().split('<br>')[0] xstreet0 = '' xstreet1 = '' city = '' region = '' for line in f: if line.find('<!-- CLTAG') != -1: if line.find('xstreet0=') != -1: xstreet0 = line.split('xstreet0=')[1].split('-->')[0].strip() elif line.find('xstreet1=') != -1: xstreet1 = line.split('xstreet1=')[1].split('-->')[0].strip() elif line.find('city=') != -1: city = line.split('city=')[1].split('-->')[0].strip() elif line.find('region=') != -1: region = line.split('region=')[1].split('-->')[0].strip() print xstreet0, xstreet1, city, region post_id = url_str.split('/apa/')[1].replace('.html','').strip() print post_title, post_time, post_id try: price = int(post_title.split(" ")[0].split("$")[-1]) except: price = -1 print "price not found" try: num_beds = int(post_title.split("br")[0].split("bedroom")[0].split("Bedroom")[0].strip().split(" ")[-1]) except: num_beds = -1 print "number of beds not found" try: square_ft = int(post_title.split("ft²")[0].strip().split(" ")[-1]) except: square_ft = -1 print "square feet not found" address_test = Address.objects.filter(xstreet0=xstreet0).filter(xstreet1=xstreet1).filter(city=city).filter(region=region) if len(address_test) == 0: address_obj = Address(xstreet0=xstreet0, xstreet1=xstreet1, city=city, region=region) address_obj.save() else: address_obj = address_test[0] print "duplicate address" # TODO: make full_address and num_baths mean something full_address = False num_baths = -1 apartment_test = Apartment.objects.filter(num_beds=num_beds).filter(num_baths=num_baths).filter(square_ft=square_ft).filter(address_obj=address_obj).filter(full_address=full_address) if len(apartment_test) == 0: apartment_obj = Apartment(num_beds=num_beds, num_baths=num_baths, square_ft=square_ft, address_obj=address_obj, full_address=full_address) apartment_obj.save() else: apartment_obj = apartment_test[0] print "duplicate apartment" posting_test = Posting.objects.filter(post_id=post_id) if len(posting_test) == 0: newpost_obj = Posting(post_title=post_title, post_time=post_time, price=price, post_id=post_id, apartment_obj=apartment_obj, access_time=datetime.now()) newpost_obj.save() else: newpost_obj = posting_test[0] newpost_obj.access_time = datetime.now() newpost_obj.save() print "previously seen post"