コード例 #1
0
 def test_add_purchase_no_group(self):
     db.child("groups").child("test_add_purchase").remove()
     group.Group("test_add_purchase")
     original_purchases = db.child("groups").child(
         'test_add_purchase').child("purchases").get().val()
     len_original_purchases = len(original_purchases)
     purchase.Purchase('testing', '', 'coffee', 1345, {'adit': 100})
     new_purchases = db.child("groups").child('test_add_purchase').child(
         "purchases").get().val()
     len_new_purchases = len(new_purchases)
     self.assertEqual(len_original_purchases, len_new_purchases)
コード例 #2
0
    def add_purchase() -> bytes:
        """This functions defines the process for adding a purchase to a specific group. The user will add the name
        of the item and the price, and it will become associated with that specific user and be posted to the group page

        :return: (HTML) Will redirect the user back to the group page with the updated purchase added in a column"""
        username = session['is_logged']
        group_name = session['group_name']
        # if loading the page, get the add_purchase page
        if request.method == 'GET':
            group_members = group.get_all_users_in_group(group_name)
            return render_template('add_purchase.html',
                                   username=username,
                                   group_name=group_name,
                                   group_members=group_members,
                                   auto_percent=100 / len(group_members))
        elif request.method == 'POST':
            # add the purchase with the item and price
            item = request.form['item']
            price = request.form['price']

            # get the receipt image
            if 'image' in request.files:
                image = request.files['image']
                temp = tempfile.NamedTemporaryFile(delete=False)
                image.save(temp.name)
                group.add_receipt(temp.name, group_name)

                temp.close()
                os.remove(temp.name)

            # do the splitting algorithm
            group_members = group.get_all_users_in_group(group_name)
            num_members = len(group_members)
            group_percentage = {}
            sum_percentages = 0

            # Handles the process of splitting purchases and returning the correct HTML template
            for member in group_members:
                group_percentage[member] = request.form[member]
                sum_percentages += int(float(group_percentage[member]))
            if sum_percentages == 100:
                purchase.Purchase(username, group_name, item, price,
                                  group_percentage)
                return redirect(url_for('choose_group'))
            else:
                return render_template('add_purchase.html',
                                       username=username,
                                       group_name=group_name,
                                       group_members=group_members,
                                       auto_percent=100 / len(group_members))
コード例 #3
0
 def test_add_percentages(self):
     db.child("groups").child("test_add_purchase").remove()
     group.Group("test_add_purchase")
     original_purchases = db.child("groups").child(
         'test_add_purchase').child("purchases").get().val()
     len_original_purchases = len(original_purchases)
     purchase.Purchase('adit', 'test_add_purchase', 'coffee', 1345, {
         'adit': 33,
         'Morty1': 33,
         'Morty2': 34
     })
     new_purchases = db.child("groups").child('test_add_purchase').child(
         "purchases").get().val()
     len_new_purchases = len(new_purchases)
     self.assertEqual(len_original_purchases + 1, len_new_purchases)