コード例 #1
0
    def test_bidding_home(self):

        category = MarketCategory.objects.all()[0]
        subcategory = MarketSubCategory.objects.all()[0]

        now = datetime.datetime.now()
        now_plus_10 = now + datetime.timedelta(seconds=5)

        auction = AuctionSession(shop=self.shop,
                                 title="Auction Session Nr 4",
                                 description="-- no desc --",
                                 start=now,
                                 end=now_plus_10)
        auction.save()

        lot = Lot(shop=self.shop,
                  title="Coin From USA 1905 (PCGS 50)",
                  description="rare coin",
                  category=category,
                  date_time=now,
                  weight="5",
                  session=auction,
                  starting_bid=decimal.Decimal("100.00"),
                  reserve=decimal.Decimal("300.00"))
        lot.save()

        item = Item(shop=self.shop,
                    title="Item",
                    description="an item",
                    price="10.0",
                    category=category,
                    subcategory=subcategory,
                    qty=2,
                    weight="2.0")
        item.save()

        response = self.client.post(reverse("bidding_home"),
                                    {'email': "*****@*****.**"},
                                    HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 302)

        #            param = {
        #             'about': about,
        #             'home':
        #                {
        #                 'title': home.title,
        #                 'body': home.body,
        #                 'image': home.image
        #                 },
        #             'last_post': last_post,
        #             'mailing_list': block_mailing_list,
        #             'new_items': new_items,
        #             'page_title': 'Home',
        #             'page_description': striptags(home.body),
        #             'sessions': new_sessions,
        #            }

        response = self.client.get(reverse("bidding_home"),
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 200)
コード例 #2
0
def load_from_oasis(bbl, owner_name=None):
    # ensure bbl does not exist
    if Lot.objects.filter(bbl=bbl).count() > 0:
        print 'Lot with bbl %s already exists!' % bbl
        return

    oasis_data = get_oasis_data(bbl)
    (x, y) = get_coordinates_from_response(oasis_data)
    (lon, lat) = convert_coordinates_to_lon_lat(x, y)

    if not owner_name:
        owner_name = oasis_data['OwnerName']
    try:
        owner = Owner.objects.get(name=owner_name)
    except Exception:
        owner = Owner.objects.get(oasis_name=owner_name)

    lot = Lot(
        address=oasis_data['Address'],
        area=oasis_data['Area'],
        area_acres=str(convert_sq_ft_to_acres(oasis_data['Area'])),
        bbl=bbl,
        block=oasis_data['Block'],
        borough=oasis_data['BoroughName'],
        centroid=Point(float(lon), float(lat)),
        city_council_district=oasis_data['CityCouncilDistrict'],
        lot=oasis_data['Lot'],
        owner=owner,
        police_precinct=oasis_data['PolicePrecinct'],
        zipcode=oasis_data['ZipCode']
    )
    lot.save()
    print 'Successfully added lot %s.' % bbl
コード例 #3
0
ファイル: finishlots.py プロジェクト: 596acres/nycdata
    def create_new_lot(self, parcel, lots):
        print "Creating new lot for %s" % str(parcel.bbl)
        borough, owner, known_use_certainty, known_use_locked, known_use = (
            None, None, None, None, None
        )

        boroughs = list(set([l.borough for l in lots]))
        if len(boroughs) == 1:
            borough = boroughs[0]
        else:
            print "\t * Couldn't pick a borough", boroughs, lots
            raise Exception("Not able to pick borough, something's weird!")

        owners = list(set([l.owner for l in lots]))
        if len(owners) == 1:
            owner = owners[0]
        else:
            print "\t * Couldn't pick an owner", owners

        known_use_certainties = list(set([l.known_use_certainty for l in lots]))
        if len(known_use_certainties) == 1:
            known_use_certainty = known_use_certainties[0]
        else:
            print "\t * Couldn't pick a known_use_certainty", known_use_certainties

        known_use_lockeds = list(set([l.known_use_locked for l in lots]))
        if len(known_use_lockeds) == 1:
            known_use_locked = known_use_lockeds[0]
        else:
            print "\t * Couldn't pick a known_use_locked", known_use_lockeds

        known_uses = list(set([l.known_use for l in lots]))
        if len(known_uses) == 1:
            known_use = known_uses[0]
        else:
            print "\t * Couldn't pick a known_use", known_uses
            known_use_certainty = 0
            known_use_locked = False

        newlot = Lot(
            centroid=parcel.geom.centroid,
            polygon=parcel.geom,
            address_line1=parcel.address,
            postal_code=parcel.zipcode,
            state_province='NY',
            country='USA',
            added_reason='Created for duplicate lots during import',
            bbl=None, # Another lot might be using this bbl, handle it later
            block=parcel.block,
            lot_number=parcel.lot_number,

            borough=borough,
            owner=owner,
            known_use=known_use,
            known_use_certainty=known_use_certainty,
            known_use_locked=known_use_locked,
        )
        newlot.save()
        return newlot
コード例 #4
0
ファイル: loadlots.py プロジェクト: 596acres/nycdata
    def load_lots(self, lots_file):
        lots = csv.DictReader(lots_file)

        for lot in lots:
            actual_use = lot['actual_use']
            centroid = self.get_centroid(lot['centroid'])
            parcel = None
            polygon = None
            gutterspace = False

            if not centroid:
                continue

            if not actual_use and not lot['accessible'] == 't':
                gutterspace = True
            if actual_use.lower().startswith('gutterspace'):
                gutterspace = True

            try:
                parcel = self.get_parcel(centroid=centroid, bbl=lot['bbl'])
                polygon = parcel.geom
            except Parcel.DoesNotExist:
                print "No parcel for lot %s. That's okay, adding." % lot['bbl']
            except Parcel.MultipleObjectsReturned:
                print '* TOO MANY Parcels returned for lot %s. Skipping.' % lot['bbl']
                continue
            except ValueError:
                print '* No bbl or centroid for lot %s. Skipping.' % lot['bbl']
                continue

            newlot = Lot(
                address_line1=lot['address'],
                borough=lot['borough'],
                bbl=lot['bbl'],
                block=lot['block'],
                lot_number=lot['lot'],
                state_province='NY',
                country='USA',
                postal_code=lot['zipcode'],
                centroid=self.get_centroid(lot['centroid']),
                polygon=polygon,
                known_use=self.get_use(**lot),
                known_use_certainty=9,
                known_use_locked=True,
                accessible=lot['accessible'] == 't',
                name=self.get_name(**lot),
                parcel=parcel,
                added_reason='Imported from 596 Acres Classic',
                gutterspace=gutterspace,
            )
            newlot.save()

            if actual_use.startswith('Garden'):
                try:
                    self.add_steward_project(newlot, actual_use=lot['actual_use'])
                except ValueError:
                    print "Couldn't add steward project for lot:", newlot, actual_use
                    continue
コード例 #5
0
    def test_bidding_home(self):
        
        category = MarketCategory.objects.all()[0]
        subcategory = MarketSubCategory.objects.all()[0]

        now = datetime.datetime.now()
        now_plus_10 = now + datetime.timedelta(seconds=5)
        
        auction = AuctionSession(shop=self.shop, title="Auction Session Nr 4", 
                                 description="-- no desc --", 
                                 start=now, 
                                 end=now_plus_10)
        auction.save()
        
        lot = Lot(shop=self.shop,
                  title="Coin From USA 1905 (PCGS 50)",
                  description="rare coin",
                  category=category,
                  date_time=now,
                  weight="5",
                  session=auction, 
                  starting_bid=decimal.Decimal("100.00"), 
                  reserve=decimal.Decimal("300.00"))
        lot.save()
        
        item = Item(shop=self.shop, title="Item", description="an item", 
                    price="10.0", 
                    category=category, 
                    subcategory=subcategory, 
                    qty=2, weight="2.0")
        item.save() 
        
        response = self.client.post(reverse("bidding_home"), {'email': "*****@*****.**"}, HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 302)
            
#            param = {
#             'about': about,
#             'home': 
#                {
#                 'title': home.title, 
#                 'body': home.body, 
#                 'image': home.image
#                 },
#             'last_post': last_post,
#             'mailing_list': block_mailing_list,
#             'new_items': new_items,
#             'page_title': 'Home',
#             'page_description': striptags(home.body),
#             'sessions': new_sessions,
#            }
            
        response = self.client.get(reverse("bidding_home"), HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 200)
コード例 #6
0
    def test_lot_sold(self):
        """
        """       
        
        context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN)
        decimal.setcontext(context)
    
        category = MarketCategory.objects.all()[0]
        
        now = datetime.datetime.now()
        now_plus_10 = now + datetime.timedelta(seconds=5)
        
        auction = AuctionSession(shop=self.shop, title="Auction Session Nr 1", description="-- no desc --", start=now, end=now_plus_10)
        auction.save()
        
        lot = Lot(shop = self.shop,
                  title = "Coin From Rusia 1901 (PCGS 60)",
                  description = "rare coin",
                  category = category,
                  date_time = now,
                  weight = "5",
                  session=auction, 
                  starting_bid=decimal.Decimal("10.00"), 
                  reserve=decimal.Decimal("0.00"))
        lot.save()
        
        success = self.client.login(username='******', password='******')
        self.assertEqual(success, True, "login failed")
        
        bidder = User.objects.filter(username="******").get()
        cart = Cart(shop=self.shop, bidder=bidder)
        cart.save()
        
        #Check that lot is still active...
        self.assertEqual(lot.is_active(), True , "Failed: The lot should be active!")
        self.assertEqual(lot.bidhistory_set.all().count(), 0 , "Failed: The lot should not have any bid yet!")
        
        my_bid = decimal.Decimal("19.00")
        response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': my_bid}, HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 302, "Failed when trying to bid a valid amount $19.00. This value should be allowed...")    
        
        lot = Lot.objects.get(id=lot.id)
        
        self.assertNotEqual(lot.bidhistory_set.all().count(), 0 , "Failed: The lot should have at least one bid!")
        logging.info("waiting to auction session finish...")
        
        while not lot.session.finished():
            time.sleep(1)
            
        logging.info("Running cron...")
        cron.minute_update()
        
        lot = Lot.objects.get(id=lot.id)

        self.assertEqual(lot.reserve_has_been_met(), True , "Failed, reserved has not been met!")
        self.assertEqual(lot.bid_actual.bid_amount, my_bid , "Failed: The bid actual is wrong, is %s but should be %s" % (lot.bid_actual.bid_amount, my_bid))
        self.assertEqual(lot.bid_actual.bidder.username, "test" , "Failed, wrong bidder won!")
        self.assertEqual(lot.is_active(), False, "Failed: The lot state is wrong, should be SOLD but it is %s" % lot.state)
        self.assertEqual(lot.is_didnt_sell(), False, "Failed: The lot state is wrong, should be SOLD but it is %s" % lot.state)
        self.assertEqual(lot.is_sold(), True, "Failed: The lot state is wrong, should be SOLD but it is %s" % lot.state)
コード例 #7
0
    def test_lot_didnt_sell(self):
        """
        Check that a lot get state DIDN'T SELL when there no bidding...
        """       
        
        context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN)
        decimal.setcontext(context)
    
        category = MarketCategory.objects.all()[0]
        
        now = datetime.datetime.now()
        now_plus_10 = now + datetime.timedelta(seconds=5)
        
        auction = AuctionSession(shop=self.shop, title="Auction Session Nr 2", description="-- no desc --", start=now, end=now_plus_10)
        auction.save()
        
        lot = Lot(shop = self.shop,
                  title = "Coin From Argentina 1890 (PCGS 60)",
                  description = "rare coin",
                  category = category,
                  date_time = now,
                  weight = "5",
                  session=auction, 
                  starting_bid=decimal.Decimal("100.00"), 
                  reserve=decimal.Decimal("0.00"))
        lot.save()
        
        success = self.client.login(username='******', password='******')
        self.assertEqual(success, True, "login failed")
        
        #Check that lot is still active...
        self.assertEqual(lot.is_active(), True , "Failed: The lot should be active!")
        self.assertEqual(lot.bidhistory_set.all().count(), 0 , "Failed: The lot should not have any bid yet!")
        
        my_bid = decimal.Decimal("90.00")
        response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': my_bid}, HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed: this bid is not valid...")    
        
        self.assertEqual(lot.bidhistory_set.all().count(), 0 , "Failed: The lot should not have any bid yet!")
        
        logging.info("waiting to auction session finish...")
        
        while not lot.session.finished():
            time.sleep(1)
        
        logging.info("Running cron...")
        cron.minute_update()
        
        lot = Lot.objects.get(id=lot.id)

        self.assertEqual(lot.reserve_has_been_met(), False , "Failed, the reserved price should not be reached!")
        self.assertEqual(lot.bid_actual, None , "Failed: There were no bids! ")
        self.assertEqual(lot.is_active(), False, "Failed: The lot could not be active, the lot finished and there were no bids!")
        self.assertEqual(lot.is_sold(), False, "Failed: The lot could not be sold, there were no bids!")
        self.assertEqual(lot.is_didnt_sell(), True, "Failed: The lot wasn't sell!")
コード例 #8
0
    def handle(self, *args, **options):
        with open(options['file'], newline='') as csv_file:
            reader = csv.reader(csv_file)
            casa = LotType.objects.get(name='Casa')
            lote = LotType.objects.get(name='Lote')
            for row in reader:
                if row[0] in ['', 'M', '0']:
                    continue

                lot = Lot(name='M' + row[0].zfill(2) + '-L' + row[1].zfill(2),
                          address=row[4])
                if row[5] == 'Casa':
                    lot.lot_type = casa
                else:
                    lot.lot_type = lote

                if row[15] != '':
                    lot.details = 'Mascotas: ' + row[15]

                if row[2].strip() != '':
                    contact, created = Contact.objects.get_or_create(
                        name__exact=row[2], defaults={'name': row[2]})
                    if row[6] != '':
                        contact.phone_number = row[6]
                    if row[11] != '':
                        contact.details = 'Porfesión: ' + row[11]
                    contact.save()
                    lot.owner = contact

                # we need to save lots so we can save many-to-many associations
                lot.save()

                if row[3].strip() != '':
                    values = row[2].split(' - ')
                    contact, created = Contact.objects.get_or_create(
                        name__exact=values[0],
                        defaults={
                            'name': values[0],
                            'details': 'Arrendatario'
                        })
                    if len(values) > 1:
                        contact.phone_number = values[1]
                    contact.save()
                    lot.contacts.add(contact)

                if row[8].strip() != '':
                    contact, created = Contact.objects.get_or_create(
                        name__exact=row[8], defaults={'name': row[8]})
                    if row[9] != '':
                        contact.phone_number = row[9]
                    if row[12] != '':
                        contact.details = 'Porfesión: ' + row[12]
                    contact.save()
                    lot.contacts.add(contact)
コード例 #9
0
ファイル: load_gardens.py プロジェクト: yrgdplstv/v2v
def create_lot(basereg, address, **defaults):
    parcel = find_parcel(basereg, address)
    if not parcel:
        return None
    polygon = parcel.geometry
    centroid = polygon.centroid
    lot = Lot(centroid=centroid, polygon=polygon, parcel=parcel, **defaults)
    lot.polygon_area = lot.calculate_polygon_area()
    lot.polygon_width = lot.calculate_polygon_width()
    try:
        lot.zoning_district = BaseDistrict.objects.get(
            geometry__contains=lot.centroid, )
    except (BaseDistrict.DoesNotExist, BaseDistrict.MultipleObjectsReturned):
        pass
    lot.save()
    return lot
コード例 #10
0
ファイル: loadgardens.py プロジェクト: 596acres/nycdata
 def get_or_create_lot(self, bbl, parcel, row):
     try:
         return Lot.objects.get(bbl=bbl), False
     except Lot.DoesNotExist:
         print '\t\tNo lot found for %s. Creating.' % bbl
         kwargs = dict(self.lot_kwargs)
         kwargs.update({
             'address_line1': parcel.address,
             'bbl': bbl,
             'borough': borough_number[int(row['Boro'])],
             'block': get_int(row['Block']),
             'centroid': parcel.geom.centroid,
             'known_use': self.get_use(),
             'lot_number': get_int(row['Lot']),
             'owner': Owner.objects.get_or_create(name=parcel.ownername)[0],
             'polygon': parcel.geom,
             'postal_code': row['Zip'],
         })
         lot = Lot(**kwargs)
         lot.save()
         return lot, True
コード例 #11
0
    def test_lot_still_active(self):
        """
        Check that nothing happend to those lots that aren't finished yet when cron is executed
        """ 
        context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN)
        decimal.setcontext(context)
    
        category = MarketCategory.objects.all()[0]
        
        now = datetime.datetime.now()
        now_plus_10 = now + datetime.timedelta(seconds=5)
        
        auction = AuctionSession(shop=self.shop, title="Auction Session Nr 4", description="-- no desc --", start=now, end=now_plus_10)
        auction.save()
        
        lot = Lot(shop=self.shop,
                  title="Coin From USA 1905 (PCGS 50)",
                  description="rare coin",
                  category=category,
                  date_time=now,
                  weight="5",
                  session=auction, 
                  starting_bid=decimal.Decimal("100.00"), 
                  reserve=decimal.Decimal("300.00"))
        lot.save()
        
        success = self.client.login(username='******', password='******')
        self.assertEqual(success, True, "login failed")
        
        my_bid = decimal.Decimal("120.00")
        response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': my_bid}, HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 302, "Failed when trying to bid a valid amount %s. This value should be allowed..." % my_bid)    
        
        lot = Lot.objects.get(id=lot.id)
        self.assertEqual(lot.bidhistory_set.all().count(), 1 , "Failed: The lot should not have any bid yet!")
        
        logging.info("don't wait for auction session to finish...")

        #Check that lot is still active...
        lot = Lot.objects.get(id=lot.id)
        self.assertEqual(lot.is_active(), True , "Failed: The lot should be active!")

        logging.info("Running cron...")
        
        cron.minute_update()
        
        lot = Lot.objects.get(id=lot.id)

        self.assertEqual(lot.is_active(), True , "Failed: The lot should be active!")
        self.assertEqual(lot.bid_actual.bid_amount, my_bid, "Failed: The bid actual is wrong, is %s but should be %s" % (lot.bid_actual.bid_amount, my_bid))
        self.assertEqual(lot.bid_actual.bidder.username, "test" , "Failed, wrong bidder won!")
        self.assertEqual(lot.is_sold(), False, "Failed: The lot state is wrong, should be ACTIVE but it is %s" % lot.state)
コード例 #12
0
def create_lot(basereg, address, **defaults):
    parcel = find_parcel(basereg, address)
    if not parcel:
        return None
    polygon = parcel.geometry
    centroid = polygon.centroid
    lot = Lot(
        centroid=centroid,
        polygon=polygon,
        parcel=parcel,
        **defaults
    )
    lot.polygon_area = lot.calculate_polygon_area()
    lot.polygon_width = lot.calculate_polygon_width()
    try:
        lot.zoning_district = BaseDistrict.objects.get(
            geometry__contains=lot.centroid,
        )
    except (BaseDistrict.DoesNotExist, BaseDistrict.MultipleObjectsReturned):
        pass
    lot.save()
    return lot
コード例 #13
0
ファイル: views.py プロジェクト: mhessele/auction_site
def create(request):
    if request.method == 'GET':
        form = LotsForm()
        return render(request, 'lots/create.html', context={'form': form})
    elif request.method == 'POST':
        lot = Lot()
        lot.author = request.user
        lot.set_price = 0
        form = LotsForm(request.POST, request.FILES, instance=lot)
        if form.is_valid():
            lot = form.save()
            lot.image = request.FILES['image']
            lot.save()
            async_tags = async_to_sync(tags_of_images.images_tags,
                                       force_new_loop=True)
            async_tags(lot)
            return redirect(f"/lots/lot/{lot.id}")
        else:
            return render(request, 'lots/create.html', context={'form': form})
コード例 #14
0
    def test_urls_access(self):

        context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN)
        decimal.setcontext(context)

        shop = Shop.objects.all()[0]
        category = MarketCategory.objects.all()[0]
        HTTP_HOST = shop.default_dns

        now = datetime.datetime.now()
        tomorrow = now + datetime.timedelta(days=1)
        auction = AuctionSession(shop=shop,
                                 title="Auction Session Nr 0",
                                 description="-- no desc --",
                                 start=now,
                                 end=tomorrow)
        auction.save()

        lot = Lot(shop=shop,
                  title="Coin From Egypt 1905 (PCGS 60)",
                  description="rare coin",
                  category=category,
                  date_time=now,
                  weight="5",
                  session=auction,
                  starting_bid=decimal.Decimal("10.00"),
                  reserve=decimal.Decimal("0.00"))
        lot.save()

        item = Item(shop=shop,
                    title="Coin From Rusia 1917 (PCGS 60)",
                    description="rare coin",
                    category=category,
                    date_time=now,
                    weight="5",
                    qty="10",
                    price=decimal.Decimal("150"))
        item.save()

        user = shop.admin
        #        response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), HTTP_HOST=HTTP_HOST)
        #        self.assertEqual(response.status_code, 200, "Failed when trying to view lot")
        #
        success = self.client.login(username=user.username, password="******")
        self.assertEqual(success, True, "Login failed")

        ############# CUSTOMERS ################
        response = self.client.get(reverse("home_admin"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach home_admin")

        response = self.client.get(reverse("customers"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach customers")

        response = self.client.get(reverse("customers_overview"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach customers_overview")

        response = self.client.get(reverse("customers_profiles"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach customers_profiles")

        response = self.client.get(reverse("customers_sold_items"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach customers_sold_items")

        response = self.client.get(reverse("customers_payments"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach customers_payments")

        response = self.client.get(reverse("customers_shipments"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach customers_shipments")

        response = self.client.get(reverse("customers_wish_lists"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach customers_wish_list")

        #        response = self.client.get(reverse("customers_send_notification"), HTTP_HOST=HTTP_HOST)
        #        self.assertEqual(response.status_code, 200, "Failed when trying to bid a valid amount")

        response = self.client.get(reverse("customers_mailing_list"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach customers_mailing_list")

        response = self.client.get(reverse("customers_export_mailinglist"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(
            response.status_code, 200,
            "Failed when trying to reach customers_export_mailinglist")

        ######### WEBSTORE ############
        response = self.client.get(reverse("web_store"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach web_store")

        response = self.client.get(reverse("web_store_overview"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach web_store_overview")

        response = self.client.get(reverse("web_store_marketing"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach web_store_marketing")

        response = self.client.get(reverse("web_store_shows"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach web_store_shows")

        #        response = self.client.get(reverse("web_store_theme"), HTTP_HOST=HTTP_HOST)
        #        self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_theme")

        response = self.client.get(reverse("web_store_pages"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach web_store_pages")

        response = self.client.get(reverse("web_store_blogs"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach web_store_blogs")

        response = self.client.get(reverse("web_store_navigation"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach web_store_navigation")

        #        response = self.client.get(reverse("web_store_show_go"), HTTP_HOST=HTTP_HOST)
        #        self.assertEqual(response.status_code, 200, "Failed when trying to bid a valid amount")
        #
        #        response = self.client.get(reverse("web_store_show_not_go"), HTTP_HOST=HTTP_HOST)
        #        self.assertEqual(response.status_code, 200, "Failed when trying to bid a valid amount")
        #
        #        response = self.client.get(reverse("web_store_theme"), HTTP_HOST=HTTP_HOST)
        #        self.assertEqual(response.status_code, 200, "Failed when trying to bid a valid amount")

        ######### INVENTORY ##########
        response = self.client.get(reverse("inventory"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach inventory")

        response = self.client.get(reverse("inventory_overview"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach inventory_overview")

        response = self.client.get(reverse("inventory_items"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach inventory_items")

        response = self.client.get(reverse("inventory_items_import"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach inventory_items_import")

        response = self.client.get(reverse("inventory_lots"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach inventory_lots")

        response = self.client.get(reverse("inventory_auctions"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach inventory_auctions")

        response = self.client.get(reverse("inventory_categorize"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach inventory_categorize")

        ######## ACCOUNT #########
        response = self.client.get(reverse("account"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach account")

        response = self.client.get(reverse("account_profile"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach account_profile")

        response = self.client.get(reverse("account_password"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach account_password")

        response = self.client.get(reverse("add_profile_photo"),
                                   HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 302,
                         "Failed when trying to reach add_profile_photo")

        response = self.client.get(reverse("preferences"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to reach preferences")
コード例 #15
0
    def test_lot_didnt_sell2(self):
        """
        Check that a lot get state DIDN'T SELL when there are no biddings that reach the reserve price
        """       
        context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN)
        decimal.setcontext(context)
        
        category = MarketCategory.objects.all()[0]
        
        now = datetime.datetime.now()
        now_plus_10 = now + datetime.timedelta(seconds=5)
        
        auction = AuctionSession(shop=self.shop, title="Auction Session Nr 3", description="-- no desc --", start=now, end=now_plus_10)
        auction.save()
        
        lot = Lot(shop=self.shop,
                  title = "Coin From Brasil 1900 (PCGS 60)",
                  description = "rare coin",
                  category = category,
                  date_time = now,
                  weight="5",
                  session=auction, 
                  starting_bid=decimal.Decimal("100.00"), 
                  reserve=decimal.Decimal("300.00"))
        lot.save()
        
        success = self.client.login(username='******', password='******')
        self.assertEqual(success, True, "login failed")
        
        #Check that lot is still active...
        self.assertEqual(lot.is_active(), True , "Failed: The lot should be active!")
        self.assertEqual(lot.bidhistory_set.all().count(), 0 , "Failed: The lot should not have any bid yet!")
        
        #1) Trying To BID wrong
        my_bid = decimal.Decimal("90.00")
        response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': my_bid}, HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed: this bid is not valid...")    
        self.assertEqual(lot.bidhistory_set.all().count(), 0 , "Failed: The lot should not have any bid yet!")
        
        #2) First valid bid, but don't reach the reserve price
        my_bid = decimal.Decimal("120.00")
        response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': my_bid}, HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 302, "Failed when trying to bid a valid amount %s. This value should be allowed..." % my_bid)    
        
        lot = Lot.objects.get(id=lot.id)
        self.assertEqual(lot.bidhistory_set.all().count(), 1 , "Failed: The lot should have 1 bid!")
        
        #3) Second valid bid, but neither reach the reserve price
        my_bid = decimal.Decimal("290.00")
        response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': my_bid}, HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 302, "Failed when trying to bid a valid amount %s. This value should be allowed..." % my_bid)    
        
        lot = Lot.objects.get(id=lot.id)
        self.assertEqual(lot.bidhistory_set.all().count(), 2 , "Failed: The lot should have 2 bids!")
        
        logging.info("waiting to auction session finish...")
        while not lot.session.finished():
            time.sleep(1)
            
        logging.info("Running cron...")
        cron.minute_update()
        
        lot = Lot.objects.get(id=lot.id)

        self.assertEqual(lot.reserve_has_been_met(), False , "Failed, the reserved price should not be reached!")
        self.assertEqual(lot.bid_actual.bid_amount, my_bid, "Failed: The bid actual is wrong, is %s but should be %s" % (lot.bid_actual.bid_amount, my_bid))
        self.assertEqual(lot.bid_actual.bidder.username, "test" , "Failed, wrong bidder won!")
        self.assertEqual(lot.is_sold(), False, "Failed: The lot state is wrong, should be DIDN'T SELL but it is %s" % lot.state)
        self.assertEqual(lot.is_didnt_sell(), True, "Failed: The lot state is wrong, should be DIDN'T SELL but it is %s" % lot.state)
コード例 #16
0
    def test_lot_didnt_sell(self):
        """
        Check that a lot get state DIDN'T SELL when there no bidding...
        """

        context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN)
        decimal.setcontext(context)

        category = MarketCategory.objects.all()[0]

        now = datetime.datetime.now()
        now_plus_10 = now + datetime.timedelta(seconds=5)

        auction = AuctionSession(shop=self.shop,
                                 title="Auction Session Nr 2",
                                 description="-- no desc --",
                                 start=now,
                                 end=now_plus_10)
        auction.save()

        lot = Lot(shop=self.shop,
                  title="Coin From Argentina 1890 (PCGS 60)",
                  description="rare coin",
                  category=category,
                  date_time=now,
                  weight="5",
                  session=auction,
                  starting_bid=decimal.Decimal("100.00"),
                  reserve=decimal.Decimal("0.00"))
        lot.save()

        success = self.client.login(username='******', password='******')
        self.assertEqual(success, True, "login failed")

        #Check that lot is still active...
        self.assertEqual(lot.is_active(), True,
                         "Failed: The lot should be active!")
        self.assertEqual(lot.bidhistory_set.all().count(), 0,
                         "Failed: The lot should not have any bid yet!")

        my_bid = decimal.Decimal("90.00")
        response = self.client.get(reverse("bidding_view_lot", args=[lot.id]),
                                   {'amount': my_bid},
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed: this bid is not valid...")

        self.assertEqual(lot.bidhistory_set.all().count(), 0,
                         "Failed: The lot should not have any bid yet!")

        logging.info("waiting to auction session finish...")

        while not lot.session.finished():
            time.sleep(1)

        logging.info("Running cron...")
        cron.minute_update()

        lot = Lot.objects.get(id=lot.id)

        self.assertEqual(lot.reserve_has_been_met(), False,
                         "Failed, the reserved price should not be reached!")
        self.assertEqual(lot.bid_actual, None, "Failed: There were no bids! ")
        self.assertEqual(
            lot.is_active(), False,
            "Failed: The lot could not be active, the lot finished and there were no bids!"
        )
        self.assertEqual(
            lot.is_sold(), False,
            "Failed: The lot could not be sold, there were no bids!")
        self.assertEqual(lot.is_didnt_sell(), True,
                         "Failed: The lot wasn't sell!")
コード例 #17
0
    def test_urls_access(self):
        
        context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN)
        decimal.setcontext(context)
    
        shop = Shop.objects.all()[0]
        category = MarketCategory.objects.all()[0]
        HTTP_HOST = shop.default_dns
        
        now = datetime.datetime.now()
        tomorrow = now + datetime.timedelta(days=1)
        auction = AuctionSession(shop=shop, title="Auction Session Nr 0", description="-- no desc --", start=now, end=tomorrow)
        auction.save()
        
        lot = Lot(shop = shop,
                  title = "Coin From Egypt 1905 (PCGS 60)",
                  description = "rare coin",
                  category = category,
                  date_time = now,
                  weight = "5",
                  session=auction, 
                  starting_bid=decimal.Decimal("10.00"), 
                  reserve=decimal.Decimal("0.00"))
        lot.save()
        
        item = Item(shop = shop,
                  title = "Coin From Rusia 1917 (PCGS 60)",
                  description = "rare coin",
                  category = category,
                  date_time = now,
                  weight = "5",
                  qty = "10",
                  price = decimal.Decimal("150"))
        item.save()
        
        user = shop.admin
#        response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), HTTP_HOST=HTTP_HOST)
#        self.assertEqual(response.status_code, 200, "Failed when trying to view lot")
#       
        success = self.client.login(username=user.username, password="******")
        self.assertEqual(success, True, "Login failed")
         
        ############# CUSTOMERS ################
        response = self.client.get(reverse("home_admin"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach home_admin")
        
        response = self.client.get(reverse("customers"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach customers")
        
        response = self.client.get(reverse("customers_overview"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_overview")
        
        response = self.client.get(reverse("customers_profiles"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_profiles")
        
        response = self.client.get(reverse("customers_sold_items"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_sold_items")
        
        response = self.client.get(reverse("customers_payments"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_payments")
        
        response = self.client.get(reverse("customers_shipments"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_shipments")
        
        response = self.client.get(reverse("customers_wish_lists"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_wish_list")
        
#        response = self.client.get(reverse("customers_send_notification"), HTTP_HOST=HTTP_HOST)
#        self.assertEqual(response.status_code, 200, "Failed when trying to bid a valid amount")
        
        response = self.client.get(reverse("customers_mailing_list"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_mailing_list")
        
        response = self.client.get(reverse("customers_export_mailinglist"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach customers_export_mailinglist")
        
        ######### WEBSTORE ############
        response = self.client.get(reverse("web_store"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store")
        
        response = self.client.get(reverse("web_store_overview"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_overview")
        
        response = self.client.get(reverse("web_store_marketing"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_marketing")
        
        response = self.client.get(reverse("web_store_shows"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_shows")
        
#        response = self.client.get(reverse("web_store_theme"), HTTP_HOST=HTTP_HOST)
#        self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_theme")
        
        response = self.client.get(reverse("web_store_pages"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_pages")
        
        response = self.client.get(reverse("web_store_blogs"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_blogs")
        
        response = self.client.get(reverse("web_store_navigation"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach web_store_navigation")
        
#        response = self.client.get(reverse("web_store_show_go"), HTTP_HOST=HTTP_HOST)
#        self.assertEqual(response.status_code, 200, "Failed when trying to bid a valid amount")
#        
#        response = self.client.get(reverse("web_store_show_not_go"), HTTP_HOST=HTTP_HOST)
#        self.assertEqual(response.status_code, 200, "Failed when trying to bid a valid amount")
#        
#        response = self.client.get(reverse("web_store_theme"), HTTP_HOST=HTTP_HOST)
#        self.assertEqual(response.status_code, 200, "Failed when trying to bid a valid amount")
        
        ######### INVENTORY ##########
        response = self.client.get(reverse("inventory"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory")
        
        response = self.client.get(reverse("inventory_overview"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory_overview")
        
        response = self.client.get(reverse("inventory_items"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory_items")
        
        response = self.client.get(reverse("inventory_items_import"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory_items_import")
        
        response = self.client.get(reverse("inventory_lots"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory_lots")
                
        response = self.client.get(reverse("inventory_auctions"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory_auctions")
        
        response = self.client.get(reverse("inventory_categorize"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach inventory_categorize")
        
        ######## ACCOUNT #########
        response = self.client.get(reverse("account"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach account")
        
        response = self.client.get(reverse("account_profile"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach account_profile")
        
        response = self.client.get(reverse("account_password"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach account_password")
        
        response = self.client.get(reverse("add_profile_photo"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 302, "Failed when trying to reach add_profile_photo")
        
        response = self.client.get(reverse("preferences"), HTTP_HOST=HTTP_HOST)
        self.assertEqual(response.status_code, 200, "Failed when trying to reach preferences")
コード例 #18
0
    def test_bidding_views(self):

        now = datetime.datetime.now()
        tomarrow = now + datetime.timedelta(days=1)
        category = MarketCategory.objects.all()[0]
        subcategory = MarketSubCategory.objects.all()[0]

        item = Item(shop=self.shop,
                    title="My Unique Item",
                    description="the description of my unique item",
                    price="10.0",
                    category=category,
                    subcategory=subcategory,
                    qty=2,
                    weight="2.0")
        item.save()

        auction = AuctionSession(shop=self.shop,
                                 title="Test Session",
                                 description="-- no desc --",
                                 start=now,
                                 end=tomarrow)
        auction.save()

        lot = Lot(shop=self.shop,
                  title="Coin From USA 1905 (PCGS 50)",
                  description="rare coin",
                  category=category,
                  date_time=now,
                  weight="5",
                  session=auction,
                  starting_bid=decimal.Decimal("100.00"),
                  reserve=decimal.Decimal("300.00"))
        lot.save()

        response = self.client.get(reverse("bidding_about_us"),
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertContains(
            response,
            "Nam est mauris, pretium eu imperdiet ut, iaculis sit amet sapien",
            count=None,
            status_code=200,
            msg_prefix='')

        response = self.client.get(reverse("bidding_auctions_id",
                                           args=[auction.id]),
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.context['sessions']), 1)

        response = self.client.get(reverse("bidding_blog"),
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 200)

        response = self.client.get(reverse("bidding_buy_now", args=[item.id]),
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 302)

        #bidding_search

        page = Page(shop=self.shop,
                    name_link="somewhere",
                    title="Page Title",
                    body="This is the page content")
        page.save()
        response = self.client.get(reverse("bidding_page",
                                           args=[page.name_link]),
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertContains(response,
                            "Page Title",
                            count=None,
                            status_code=200,
                            msg_prefix='')
        self.assertContains(response,
                            "This is the page content",
                            count=None,
                            status_code=200,
                            msg_prefix='')

        response = self.client.get(reverse("bidding_sitemap"),
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 200)

        #self.assertContains(response, "Page Title", count=None, status_code=200, msg_prefix='')

        response = self.client.get(reverse("bidding_for_sale"),
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 200)

        response = self.client.get(reverse("bidding_map",
                                           args=[self.shop.about.id]),
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 200)

        response = self.client.get(reverse("bidding_view_history_lot",
                                           args=[lot.id]),
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 200)

        response = self.client.post(reverse("bidding_view_history_lot",
                                            args=[lot.id]),
                                    {'amount': '10.00'},
                                    HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 200)

        response = self.client.get(reverse("bidding_view_item",
                                           args=[item.id]),
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertContains(response,
                            "My Unique Item",
                            count=None,
                            status_code=200,
                            msg_prefix='')

        post = Post(shop=self.shop,
                    title="This is my first blog post",
                    body="some content here")
        post.save()

        self.assertEqual(post.views, 0)
        response = self.client.get(reverse("bidding_view_post",
                                           args=[post.id]),
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertContains(response,
                            "This is my first blog post",
                            count=None,
                            status_code=200,
                            msg_prefix='')

        post = Post.objects.filter(id=post.id)[0]
        self.assertEqual(post.views, 1)
コード例 #19
0
 def test_bidding_views(self):
     
     now = datetime.datetime.now()
     tomarrow = now + datetime.timedelta(days=1)
     category = MarketCategory.objects.all()[0]
     subcategory = MarketSubCategory.objects.all()[0]
     
     item = Item(shop=self.shop, title="My Unique Item", description="the description of my unique item", 
                 price="10.0", 
                 category=category, 
                 subcategory=subcategory, 
                 qty=2, weight="2.0")
     item.save() 
     
     auction = AuctionSession(shop=self.shop, title="Test Session", 
                              description="-- no desc --", 
                              start=now, 
                              end=tomarrow)
     auction.save()
     
     lot = Lot(shop=self.shop,
               title="Coin From USA 1905 (PCGS 50)",
               description="rare coin",
               category=category,
               date_time=now,
               weight="5",
               session=auction, 
               starting_bid=decimal.Decimal("100.00"), 
               reserve=decimal.Decimal("300.00"))
     lot.save()
     
     
     response = self.client.get(reverse("bidding_about_us"), HTTP_HOST=self.HTTP_HOST)
     self.assertContains(response, "Nam est mauris, pretium eu imperdiet ut, iaculis sit amet sapien", count=None, status_code=200, msg_prefix='')     
     
     response = self.client.get(reverse("bidding_auctions_id", args=[auction.id]), HTTP_HOST=self.HTTP_HOST)
     self.assertEqual(response.status_code, 200)
     self.assertEqual(len(response.context['sessions']), 1)
     
     response = self.client.get(reverse("bidding_blog"), HTTP_HOST=self.HTTP_HOST)
     self.assertEqual(response.status_code, 200)
     
     response = self.client.get(reverse("bidding_buy_now", args=[item.id]), HTTP_HOST=self.HTTP_HOST)
     self.assertEqual(response.status_code, 302)
     
     #bidding_search
 
     page = Page(shop=self.shop, name_link="somewhere", title="Page Title", body="This is the page content")
     page.save()
     response = self.client.get(reverse("bidding_page", args=[page.name_link]), HTTP_HOST=self.HTTP_HOST)
     self.assertContains(response, "Page Title", count=None, status_code=200, msg_prefix='')
     self.assertContains(response, "This is the page content", count=None, status_code=200, msg_prefix='')
     
     response = self.client.get(reverse("bidding_sitemap"), HTTP_HOST=self.HTTP_HOST)
     self.assertEqual(response.status_code, 200)
     
     #self.assertContains(response, "Page Title", count=None, status_code=200, msg_prefix='')
     
     response = self.client.get(reverse("bidding_for_sale"), HTTP_HOST=self.HTTP_HOST)
     self.assertEqual(response.status_code, 200)
     
     response = self.client.get(reverse("bidding_map", args=[self.shop.about.id]), HTTP_HOST=self.HTTP_HOST)
     self.assertEqual(response.status_code, 200)
         
     response = self.client.get(reverse("bidding_view_history_lot", args=[lot.id]), HTTP_HOST=self.HTTP_HOST)
     self.assertEqual(response.status_code, 200)
     
     response = self.client.post(reverse("bidding_view_history_lot", args=[lot.id]), {'amount': '10.00' },HTTP_HOST=self.HTTP_HOST)
     self.assertEqual(response.status_code, 200)
     
     response = self.client.get(reverse("bidding_view_item", args=[item.id]), HTTP_HOST=self.HTTP_HOST)
     self.assertContains(response, "My Unique Item", count=None, status_code=200, msg_prefix='')
     
     post = Post(shop=self.shop, title="This is my first blog post", body="some content here")
     post.save()
     
     self.assertEqual(post.views, 0)
     response = self.client.get(reverse("bidding_view_post", args=[post.id]), HTTP_HOST=self.HTTP_HOST)
     self.assertContains(response, "This is my first blog post" , count=None, status_code=200, msg_prefix='')
 
     post = Post.objects.filter(id=post.id)[0]
     self.assertEqual(post.views, 1)
コード例 #20
0
 def test_bidding_place_bid(self):
     """
     """
     context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN)
     decimal.setcontext(context)
 
     
     category = MarketCategory.objects.all()[0]
     
     now = datetime.datetime.now()
     tomorrow = now + datetime.timedelta(days=1)
     
     # Creates an auction
     auction = AuctionSession(shop=self.shop, title="Auction Session Nr 0", description="-- no desc --", start=now, end=tomorrow)
     auction.save()
     
     # Creates a lot 
     lot = Lot(shop = self.shop,
               title = "Coin From Egypt 1905 (PCGS 60)",
               description = "rare coin",
               category = category,
               date_time = now,
               weight = "5",
               session=auction, 
               starting_bid=decimal.Decimal("10.00"), 
               reserve=decimal.Decimal("0.00"))
     lot.save()
     
     # Ttry to login
     success = self.client.login(username='******', password='******')
     self.assertEqual(success, True, "login failed")
     
     response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), HTTP_HOST=self.HTTP_HOST)
     self.assertEqual(response.status_code, 200, "Failed when trying to view lot")
     
     # Check than when is created there is no any bid
     lot = Lot.objects.get(id=lot.id)
     self.assertEqual(lot.bid_actual, None)
     
     # Testing bid increment table
     increment_calculator = BidderIncrementCalculator()
     #from    0.01    to    0.99   --> 0.05
     #from    1.00    to    4.99   --> 0.25
     #from    5.00    to    24.99   --> 0.50
     #from    25.00   to    99.99   --> 1.00
     #from    100.00  to    249.99  --> 2.50
     #from    250.00  to    499.99  --> 5.00
     #from    500.00  to    999.99  --> 10.00
     #from    1000.00 to    2499.99 --> 25.00
     #from    2500.00 to    4999.99 --> 50.00
     #from    5000.00 to    99999.99--> 100.00
     
     for i in range(30):
         lot = Lot.objects.get(id=lot.id)
         if lot.bid_actual:
             logging.info("Current Bid: %s" % (lot.bid_actual.bid_amount))
             
         else:
             logging.info("Starting Bid: %s" % (lot.starting_bid))
             
         min_bid = lot.next_bid_from()
         (from_price, to_price, inc) = increment_calculator.match_for(min_bid)
         logging.info("From: %s To: %s Bid must be grater than %s (increment to be applied %s)" % (from_price, to_price, min_bid, inc))
         
         logging.info("Minimum Bid allowed: %s" % min_bid)
         
         # Should not be allowed to bid
         wrong_bid = min_bid - (min_bid * decimal.Decimal(("0.1")))
         logging.info("Testing Invalid Bidding Price: %s" % wrong_bid)
         response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': wrong_bid}, HTTP_HOST=self.HTTP_HOST)
         self.assertEqual(response.status_code, 200, "Failed: This bid shouldn't be valid!!")
         
         # Should be allowed to bid
         string_format = '%.2f' % (min_bid + (min_bid * decimal.Decimal(("0.5"))))
         valid_bid = decimal.Decimal((string_format))
         logging.info("Testing Valid Bidding Price: %s" % valid_bid)       
         response = self.client.get(reverse("bidding_view_lot", args=[lot.id]), {'amount': valid_bid}, HTTP_HOST=self.HTTP_HOST)
         self.assertEqual(response.status_code, 302, "Failed when trying to bid a valid amount %s. This value should be allowed..." % valid_bid)
         
         # Check that last bid is the the currently lot.bid_actual
         logging.info("Testing Correct Lot.bid_actual: %s" % valid_bid) 
         lot = Lot.objects.get(id=lot.id)
         self.assertEqual(lot.bid_actual.bid_amount, valid_bid, "Failed: The bid actual is wrong, is %s but should be %s" % (lot.bid_actual.bid_amount, valid_bid))
コード例 #21
0
    def test_lot_still_active(self):
        """
        Check that nothing happend to those lots that aren't finished yet when cron is executed
        """
        context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN)
        decimal.setcontext(context)

        category = MarketCategory.objects.all()[0]

        now = datetime.datetime.now()
        now_plus_10 = now + datetime.timedelta(seconds=5)

        auction = AuctionSession(shop=self.shop,
                                 title="Auction Session Nr 4",
                                 description="-- no desc --",
                                 start=now,
                                 end=now_plus_10)
        auction.save()

        lot = Lot(shop=self.shop,
                  title="Coin From USA 1905 (PCGS 50)",
                  description="rare coin",
                  category=category,
                  date_time=now,
                  weight="5",
                  session=auction,
                  starting_bid=decimal.Decimal("100.00"),
                  reserve=decimal.Decimal("300.00"))
        lot.save()

        success = self.client.login(username='******', password='******')
        self.assertEqual(success, True, "login failed")

        my_bid = decimal.Decimal("120.00")
        response = self.client.get(reverse("bidding_view_lot", args=[lot.id]),
                                   {'amount': my_bid},
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(
            response.status_code, 302,
            "Failed when trying to bid a valid amount %s. This value should be allowed..."
            % my_bid)

        lot = Lot.objects.get(id=lot.id)
        self.assertEqual(lot.bidhistory_set.all().count(), 1,
                         "Failed: The lot should not have any bid yet!")

        logging.info("don't wait for auction session to finish...")

        #Check that lot is still active...
        lot = Lot.objects.get(id=lot.id)
        self.assertEqual(lot.is_active(), True,
                         "Failed: The lot should be active!")

        logging.info("Running cron...")

        cron.minute_update()

        lot = Lot.objects.get(id=lot.id)

        self.assertEqual(lot.is_active(), True,
                         "Failed: The lot should be active!")
        self.assertEqual(
            lot.bid_actual.bid_amount, my_bid,
            "Failed: The bid actual is wrong, is %s but should be %s" %
            (lot.bid_actual.bid_amount, my_bid))
        self.assertEqual(lot.bid_actual.bidder.username, "test",
                         "Failed, wrong bidder won!")
        self.assertEqual(
            lot.is_sold(), False,
            "Failed: The lot state is wrong, should be ACTIVE but it is %s" %
            lot.state)
コード例 #22
0
    def test_lot_didnt_sell2(self):
        """
        Check that a lot get state DIDN'T SELL when there are no biddings that reach the reserve price
        """
        context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN)
        decimal.setcontext(context)

        category = MarketCategory.objects.all()[0]

        now = datetime.datetime.now()
        now_plus_10 = now + datetime.timedelta(seconds=5)

        auction = AuctionSession(shop=self.shop,
                                 title="Auction Session Nr 3",
                                 description="-- no desc --",
                                 start=now,
                                 end=now_plus_10)
        auction.save()

        lot = Lot(shop=self.shop,
                  title="Coin From Brasil 1900 (PCGS 60)",
                  description="rare coin",
                  category=category,
                  date_time=now,
                  weight="5",
                  session=auction,
                  starting_bid=decimal.Decimal("100.00"),
                  reserve=decimal.Decimal("300.00"))
        lot.save()

        success = self.client.login(username='******', password='******')
        self.assertEqual(success, True, "login failed")

        #Check that lot is still active...
        self.assertEqual(lot.is_active(), True,
                         "Failed: The lot should be active!")
        self.assertEqual(lot.bidhistory_set.all().count(), 0,
                         "Failed: The lot should not have any bid yet!")

        #1) Trying To BID wrong
        my_bid = decimal.Decimal("90.00")
        response = self.client.get(reverse("bidding_view_lot", args=[lot.id]),
                                   {'amount': my_bid},
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed: this bid is not valid...")
        self.assertEqual(lot.bidhistory_set.all().count(), 0,
                         "Failed: The lot should not have any bid yet!")

        #2) First valid bid, but don't reach the reserve price
        my_bid = decimal.Decimal("120.00")
        response = self.client.get(reverse("bidding_view_lot", args=[lot.id]),
                                   {'amount': my_bid},
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(
            response.status_code, 302,
            "Failed when trying to bid a valid amount %s. This value should be allowed..."
            % my_bid)

        lot = Lot.objects.get(id=lot.id)
        self.assertEqual(lot.bidhistory_set.all().count(), 1,
                         "Failed: The lot should have 1 bid!")

        #3) Second valid bid, but neither reach the reserve price
        my_bid = decimal.Decimal("290.00")
        response = self.client.get(reverse("bidding_view_lot", args=[lot.id]),
                                   {'amount': my_bid},
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(
            response.status_code, 302,
            "Failed when trying to bid a valid amount %s. This value should be allowed..."
            % my_bid)

        lot = Lot.objects.get(id=lot.id)
        self.assertEqual(lot.bidhistory_set.all().count(), 2,
                         "Failed: The lot should have 2 bids!")

        logging.info("waiting to auction session finish...")
        while not lot.session.finished():
            time.sleep(1)

        logging.info("Running cron...")
        cron.minute_update()

        lot = Lot.objects.get(id=lot.id)

        self.assertEqual(lot.reserve_has_been_met(), False,
                         "Failed, the reserved price should not be reached!")
        self.assertEqual(
            lot.bid_actual.bid_amount, my_bid,
            "Failed: The bid actual is wrong, is %s but should be %s" %
            (lot.bid_actual.bid_amount, my_bid))
        self.assertEqual(lot.bid_actual.bidder.username, "test",
                         "Failed, wrong bidder won!")
        self.assertEqual(
            lot.is_sold(), False,
            "Failed: The lot state is wrong, should be DIDN'T SELL but it is %s"
            % lot.state)
        self.assertEqual(
            lot.is_didnt_sell(), True,
            "Failed: The lot state is wrong, should be DIDN'T SELL but it is %s"
            % lot.state)
コード例 #23
0
    def import_contacts(self, client):
        Contact.objects.all().delete()
        Lot.objects.all().delete()

        sheet = client.open("Vecinos y sugerencias").worksheet(
            "DATOS DE RESIDENTES")

        # Extract and print all of the values
        records = sheet.get_all_records()

        casa = LotType.objects.get(name='Casa')
        lote = LotType.objects.get(name='Lote')

        for row in records:
            if row['M'] in ['', 'M', '0']:
                continue

            lot = Lot(name='M' + str(row['M']).zfill(2) + '-L' +
                      str(row['L']).zfill(2),
                      address=row['Dirección'])
            if row['Tipo'] == 'Casa':
                lot.lot_type = casa
            else:
                lot.lot_type = lote

            if row['MASCOTAS'] != '':
                lot.details = 'Mascotas: ' + row['MASCOTAS']

            if row['PROPIETARIOS'].strip() != '':
                contact, created = Contact.objects.get_or_create(
                    name__exact=row['PROPIETARIOS'],
                    defaults={'name': row['PROPIETARIOS']})
                if row['CELULAR'] != '':
                    contact.phone_number = row['CELULAR']
                if row['PROFESION EL'] != '':
                    contact.details = 'Porfesión: ' + row['PROFESION EL']
                contact.save()
                lot.owner = contact

            # we need to save lots so we can save many-to-many associations
            lot.save()

            if row['ARRENDATARIOS'].strip() != '':
                values = row['ARRENDATARIOS'].split(' - ')
                contact, created = Contact.objects.get_or_create(
                    name__exact=values[0],
                    defaults={
                        'name': values[0],
                        'details': 'Arrendatario'
                    })
                if len(values) > 1:
                    contact.phone_number = values[1]
                contact.save()
                lot.contacts.add(contact)

            if row['ESPOSA (O)'].strip() != '':
                contact, created = Contact.objects.get_or_create(
                    name__exact=row['ESPOSA (O)'],
                    defaults={'name': row['ESPOSA (O)']})
                if row['PROFESION ELLA'] != '':
                    contact.details = 'Porfesión: ' + row['PROFESION ELLA']
                contact.save()
                lot.contacts.add(contact)

        print("Finished importing contacts")
コード例 #24
0
    def test_bidding_place_bid(self):
        """
        """
        context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN)
        decimal.setcontext(context)

        category = MarketCategory.objects.all()[0]

        now = datetime.datetime.now()
        tomorrow = now + datetime.timedelta(days=1)

        # Creates an auction
        auction = AuctionSession(shop=self.shop,
                                 title="Auction Session Nr 0",
                                 description="-- no desc --",
                                 start=now,
                                 end=tomorrow)
        auction.save()

        # Creates a lot
        lot = Lot(shop=self.shop,
                  title="Coin From Egypt 1905 (PCGS 60)",
                  description="rare coin",
                  category=category,
                  date_time=now,
                  weight="5",
                  session=auction,
                  starting_bid=decimal.Decimal("10.00"),
                  reserve=decimal.Decimal("0.00"))
        lot.save()

        # Ttry to login
        success = self.client.login(username='******', password='******')
        self.assertEqual(success, True, "login failed")

        response = self.client.get(reverse("bidding_view_lot", args=[lot.id]),
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(response.status_code, 200,
                         "Failed when trying to view lot")

        # Check than when is created there is no any bid
        lot = Lot.objects.get(id=lot.id)
        self.assertEqual(lot.bid_actual, None)

        # Testing bid increment table
        increment_calculator = BidderIncrementCalculator()
        #from    0.01    to    0.99   --> 0.05
        #from    1.00    to    4.99   --> 0.25
        #from    5.00    to    24.99   --> 0.50
        #from    25.00   to    99.99   --> 1.00
        #from    100.00  to    249.99  --> 2.50
        #from    250.00  to    499.99  --> 5.00
        #from    500.00  to    999.99  --> 10.00
        #from    1000.00 to    2499.99 --> 25.00
        #from    2500.00 to    4999.99 --> 50.00
        #from    5000.00 to    99999.99--> 100.00

        for i in range(30):
            lot = Lot.objects.get(id=lot.id)
            if lot.bid_actual:
                logging.info("Current Bid: %s" % (lot.bid_actual.bid_amount))

            else:
                logging.info("Starting Bid: %s" % (lot.starting_bid))

            min_bid = lot.next_bid_from()
            (from_price, to_price,
             inc) = increment_calculator.match_for(min_bid)
            logging.info(
                "From: %s To: %s Bid must be grater than %s (increment to be applied %s)"
                % (from_price, to_price, min_bid, inc))

            logging.info("Minimum Bid allowed: %s" % min_bid)

            # Should not be allowed to bid
            wrong_bid = min_bid - (min_bid * decimal.Decimal(("0.1")))
            logging.info("Testing Invalid Bidding Price: %s" % wrong_bid)
            response = self.client.get(reverse("bidding_view_lot",
                                               args=[lot.id]),
                                       {'amount': wrong_bid},
                                       HTTP_HOST=self.HTTP_HOST)
            self.assertEqual(response.status_code, 200,
                             "Failed: This bid shouldn't be valid!!")

            # Should be allowed to bid
            string_format = '%.2f' % (min_bid + (min_bid * decimal.Decimal(
                ("0.5"))))
            valid_bid = decimal.Decimal((string_format))
            logging.info("Testing Valid Bidding Price: %s" % valid_bid)
            response = self.client.get(reverse("bidding_view_lot",
                                               args=[lot.id]),
                                       {'amount': valid_bid},
                                       HTTP_HOST=self.HTTP_HOST)
            self.assertEqual(
                response.status_code, 302,
                "Failed when trying to bid a valid amount %s. This value should be allowed..."
                % valid_bid)

            # Check that last bid is the the currently lot.bid_actual
            logging.info("Testing Correct Lot.bid_actual: %s" % valid_bid)
            lot = Lot.objects.get(id=lot.id)
            self.assertEqual(
                lot.bid_actual.bid_amount, valid_bid,
                "Failed: The bid actual is wrong, is %s but should be %s" %
                (lot.bid_actual.bid_amount, valid_bid))
コード例 #25
0
    def test_lot_sold(self):
        """
        """

        context = decimal.Context(prec=20, rounding=decimal.ROUND_HALF_DOWN)
        decimal.setcontext(context)

        category = MarketCategory.objects.all()[0]

        now = datetime.datetime.now()
        now_plus_10 = now + datetime.timedelta(seconds=5)

        auction = AuctionSession(shop=self.shop,
                                 title="Auction Session Nr 1",
                                 description="-- no desc --",
                                 start=now,
                                 end=now_plus_10)
        auction.save()

        lot = Lot(shop=self.shop,
                  title="Coin From Rusia 1901 (PCGS 60)",
                  description="rare coin",
                  category=category,
                  date_time=now,
                  weight="5",
                  session=auction,
                  starting_bid=decimal.Decimal("10.00"),
                  reserve=decimal.Decimal("0.00"))
        lot.save()

        success = self.client.login(username='******', password='******')
        self.assertEqual(success, True, "login failed")

        bidder = User.objects.filter(username="******").get()
        cart = Cart(shop=self.shop, bidder=bidder)
        cart.save()

        #Check that lot is still active...
        self.assertEqual(lot.is_active(), True,
                         "Failed: The lot should be active!")
        self.assertEqual(lot.bidhistory_set.all().count(), 0,
                         "Failed: The lot should not have any bid yet!")

        my_bid = decimal.Decimal("19.00")
        response = self.client.get(reverse("bidding_view_lot", args=[lot.id]),
                                   {'amount': my_bid},
                                   HTTP_HOST=self.HTTP_HOST)
        self.assertEqual(
            response.status_code, 302,
            "Failed when trying to bid a valid amount $19.00. This value should be allowed..."
        )

        lot = Lot.objects.get(id=lot.id)

        self.assertNotEqual(lot.bidhistory_set.all().count(), 0,
                            "Failed: The lot should have at least one bid!")
        logging.info("waiting to auction session finish...")

        while not lot.session.finished():
            time.sleep(1)

        logging.info("Running cron...")
        cron.minute_update()

        lot = Lot.objects.get(id=lot.id)

        self.assertEqual(lot.reserve_has_been_met(), True,
                         "Failed, reserved has not been met!")
        self.assertEqual(
            lot.bid_actual.bid_amount, my_bid,
            "Failed: The bid actual is wrong, is %s but should be %s" %
            (lot.bid_actual.bid_amount, my_bid))
        self.assertEqual(lot.bid_actual.bidder.username, "test",
                         "Failed, wrong bidder won!")
        self.assertEqual(
            lot.is_active(), False,
            "Failed: The lot state is wrong, should be SOLD but it is %s" %
            lot.state)
        self.assertEqual(
            lot.is_didnt_sell(), False,
            "Failed: The lot state is wrong, should be SOLD but it is %s" %
            lot.state)
        self.assertEqual(
            lot.is_sold(), True,
            "Failed: The lot state is wrong, should be SOLD but it is %s" %
            lot.state)