Exemple #1
0
def signInUser():
    try:
        username = request.json['username']
        password = request.json['password']
        sign_in = SignIn(username, password)
        if sign_in.check_user():
            valid = sign_in.check_password()
        else:
            valid = "User does not exist"
        if valid == "User successfully authenticated":
            token = str(generate_token())
            db = connection()
            presentTime = str(time())
            insert_into_token_table(db, username, presentTime, token)

            message = """You just signed in, is it really you? Stay organized and on track,
                      If not! change your password immediately. For everyone minute spent in organizing,
                      an hour is earned!"""
            insert_into_recent_table(connection(), username, str(time()), "3:Signed In", message)

        else:
            token = False
        return jsonify({'valid': valid, 'token': token, 'username': username})
    except:
        return jsonify(False)
Exemple #2
0
def remove_users_from_group():
    try:
        user_name = request.json['user_name']
        refresh_token(connection(), user_name)
        users = request.json['users']
        users = list(set(users))  # Avoid adding same users multiple times to the groups
        group_id = request.json['group_id']
        group_admin = request.json['group_admin']

        group_title = get_group_title(connection(), group_id)
        if not group_title:
            return jsonify(False)
        for user in users:
            if not get_group_admin_approval(connection(), user, group_id):
                insert_into_admin_approvals_table(connection(), group_admin, "awaiting", "remove",
                                                  user, group_title, group_id)
        # adding transaction to logs
        message = "The users were waiting for the admins approval to be removed from the group " + group_title
        message_description = " The users are " + str(users)
        insert_into_recent_table(connection(), user_name, str(time()),
                                 "16:Awaiting approval for removed users from group " + group_title,
                                 message + message_description)

        return jsonify(True)
    except:
        return jsonify(False)
def add_users_to_group():
    try:
        group_admin = request.json['user_name']
        refresh_token(connection(), group_admin)
        users = request.json['users']
        users = list(
            set(users))  # Avoid adding same users multiple times to the groups
        group_id = request.json['group_id']
        group_title = get_group_title(connection(), group_id)
        if not group_title:
            return jsonify(False)
        for user in users:
            try:  # resolving admin approvals
                resolve_admin_approval(connection(), group_admin, "remove",
                                       user, group_id)
            except:
                pass

        # adding transaction to logs
        message = "You as a group admin of the group " + group_title + " rejected the claim to remove the users"
        message_description = "The users are " + str(users)
        insert_into_recent_table(
            connection(), group_admin, str(time()),
            "17:Rejected claim to remove users from group" + group_title,
            message + message_description)

        return jsonify(True)
    except:
        return jsonify(False)
def previewImage():
    """
    API to preview the image for a particular transaction
    """
    user_name = request.json['username']
    mapped_image_name = request.json['mapped_name']
    try:
        original_image_name = request.json['original_name']

        # adding transaction to logs
        insert_into_recent_table(connection(), user_name, str(time()), "20:Previewed Bill", original_image_name)

    except KeyError:
        original_image_name = ""
        bill_title = request.json['bill_title']
        # adding transaction to logs
        insert_into_recent_table(connection(), user_name, str(time()), "21:Previewed Group Bill", bill_title)

    refresh_token(connection(), user_name)
    try:
        # downloading the image to cacheable region
        user_name = str('.' + user_name)
        file = path.join(getcwd(), "temp", user_name, mapped_image_name)
        if not path.exists(file):
            download_file(user_name, mapped_image_name, original_image_name)
        with open(file, "rb") as f:
            Image_data = f.read()
            encoded_string = b64encode(Image_data)
        return jsonify({'Image': str(encoded_string.decode('utf-8'))})
    except:
        return jsonify(False)
def registerUser():
    try:
        username = request.json['username']
        password = request.json['password']
        is_premium = request.json['premium']
        signup = SignUp(username, password, is_premium)
        registered = signup.add_user_after_authentication()
        token = False
        if registered:
            token = str(generate_token())
            db = connection()
            presentTime = str(time())

            message = "Welcome to Costrajectory, our beautiful chaos! You are in for an exhilarating journey with us!"
            # adding transaction to logs
            insert_into_recent_table(connection(), username, presentTime,
                                     "2:Registered Profile", message)

            # adding entry to username alias table
            alias = get_alias(username)
            add_alias(connection(), username, alias)

            insert_into_token_table(db, username, presentTime, token)
        x = jsonify({
            'username': request.json['username'],
            'registered': registered,
            'token': token
        })
        return x
    except:
        return jsonify(False)
Exemple #6
0
def edit_transaction():
    try:
        if 'image' in request.files:
            # Image has to be uploaded
            file = request.files['image']
            file_name = file.filename
            file_extension = file_name.split('.')[-1]
            original_file_name = file_name
            present_time = str(time())
            file_name = present_time + '.' + file_extension
            mapped_file_name = file_name
            # adding image mapping for cross referencing later
            insert_into_image_mapping_table(connection(),
                                            request.form['username'],
                                            original_file_name,
                                            mapped_file_name)

            # uploading the file to dropbox
            uploadFile(file, mapped_file_name)

            file.seek(0, SEEK_END)
            file_size = file.tell() / (10**6)  # file_size in mb
            # adding entry to image size table
            insert_into_image_size_table(connection(), mapped_file_name,
                                         file_size)

        else:
            # Image not a part of the transaction
            mapped_file_name = str(False)
        user_name = request.form['username']
        uid = request.form['uid']
        title = request.form['Name']
        date_time = request.form['Date']
        description = request.form['Description']
        amount = request.form['Amount']
        category = request.form['category']

        # adding the transaction record
        edit_transactions_image_table(connection(), uid, user_name, title,
                                      date_time, amount, description,
                                      mapped_file_name, category)
        # refresh the token, needs to be added to other API Calls
        refresh_token(connection(), request.form['username'])

        message = "You edited this transaction "
        message_description = {
            'Title': title,
            'DateTime': date_time,
            'Description': description,
            'Amount': amount,
            'Category': category,
        }
        # adding transaction to logs
        insert_into_recent_table(connection(), user_name, str(time()),
                                 "19:Edit Transaction " + title,
                                 message + str(message_description))

        return jsonify({'editStatus': True})
    except:
        return jsonify(False)
Exemple #7
0
def create_sharing_group():
    try:
        group_admin = request.json['user_name']
        refresh_token(connection(), request.json['user_name'])
        group_title = request.json['group_title']
        group_description = request.json['group_description']
        users = request.json['users']

        users = list(
            set(users))  # Avoid adding same users multiple times to the groups
        pending_users = users[:]

        current_users = str([group_admin])  # only adding admin to the group
        group_creation_time = str(time())
        group_id = insert_into_group_table(connection(), group_admin,
                                           current_users, group_title,
                                           group_description,
                                           group_creation_time, pending_users)

        # adding admin to accepted list
        insert_into_pending_requests_table(connection(), group_id, group_admin,
                                           "accepted")

        for user in pending_users:
            insert_into_pending_requests_table(connection(), group_id, user,
                                               "pending")

        message = "You created a new group, enjoy! " + group_title
        # adding transaction to logs
        insert_into_recent_table(connection(), group_admin, str(time()),
                                 "9:Created Group " + group_title, message)

        return jsonify(True)
    except:
        return jsonify(False)
def api_is_user_premium():
    try:
        username = request.json['username']
        refresh_token(connection(), request.json['username'])
        bool_is_user_premium = is_user_premium(connection(), username)
        if bool_is_user_premium == -1:
            bool_is_user_premium = 'Username not found'
    except KeyError:
        bool_is_user_premium = 'Username not found'
    return jsonify({'isPremium': bool_is_user_premium})
Exemple #9
0
def change_admin():
    try:
        user_name = request.args.get('user_name')
        pending_groups = get_pending_groups(connection(), user_name)
        group_admin_approvals = get_pending_admin_approvals(
            connection(), user_name)
        return jsonify({
            'personal_requests': pending_groups,
            'group_admin_approvals': group_admin_approvals
        })
    except:
        return jsonify(False)
Exemple #10
0
def user_space_usage():
    """
    API for usage details
    """
    try:
        user_name = request.json['username']
        refresh_token(connection(), user_name)
        size = space_usage(connection(), user_name) + group_space_usage(connection(), user_name)
        bool_is_user_premium = is_user_premium(connection(), user_name)
        premium = False
        if bool_is_user_premium == 'True':
            premium = True
        total_quota = get_total_size(premium)
        return jsonify({'TotalQuota': total_quota, 'UsedQuota': size})
    except:
        return jsonify(False)
Exemple #11
0
def api_go_premium():
    try:
        username = request.json['username']
        refresh_token(connection(), request.json['username'])

        message = "Now, we're talking, you are premium, way to go!"
        # adding transaction to logs
        insert_into_recent_table(connection(), username, str(time()),
                                 "1:Premium User", message)

        bool_is_user_premium = is_user_premium(connection(), username)
        if bool_is_user_premium == 'False':
            user_go_premium(connection(), username)
            bool_is_user_premium = is_user_premium(connection(), username)
    except KeyError:
        bool_is_user_premium = 'Username not found'
    return jsonify({'isPremium': bool_is_user_premium})
Exemple #12
0
def change_admin():
    try:
        group_admin = request.json['group_admin']
        refresh_token(connection(), request.json['user_name'])
        group_id = request.json['group_id']
        group_title = get_group_title(connection(), group_id)
        if not group_title:
            return jsonify(False)
        change_group_admin(connection(), group_id, group_admin)

        # adding transaction to logs
        message = "Group: %s, New Admin: %s" % (group_title, group_admin)
        insert_into_recent_table(connection(), group_admin, str(time()),
                                 "8:Changed group admin of " + group_title,
                                 message)
        return jsonify(True)
    except:
        return jsonify(False)
Exemple #13
0
def check_user():
    signup = SignUp(request.json['username'])
    username = request.json['username']
    try:
        group_id = request.json['group_id']
        if get_status_for_group(connection(), group_id, username, "rejected") and \
                get_group_pending_state_machine(connection(), username, group_id) >= 4:
            message = 'User has rejected the group too many times'
        else:
            message = 'Request successfully sent to user'
        x = jsonify({
            'username': username,
            'available': signup.check_user(),
            'message': message
        })
    except KeyError:
        x = jsonify({'username': username, 'available': signup.check_user()})
    return x
Exemple #14
0
def recentLogs():
    """
    Api to get the recent logs of a particular user.
    :return: 10 transactions for now.
    """
    user_name = request.args.get('user_name')
    refresh_token(connection(), user_name)
    limit_transactions = request.args.get('limit')
    if limit_transactions is None:
        limit_transactions = 10  # limit of the transaction to be retrieved
    try:
        transactions = get_recent_logs(connection(), user_name,
                                       limit_transactions)
        if not transactions:
            return jsonify(False)
        return jsonify(transactions)
    except:
        return jsonify(False)
Exemple #15
0
def recentTransactions():
    """
    Api to get the recent transactions of a particular user.
    :return: 5 transactions for now. #TODO need to make it more dynamic and generalized later on.
    """
    user_name = request.json['username']
    refresh_token(connection(), user_name)
    try:
        limit_transactions = request.json['limit']
    except KeyError:
        limit_transactions = 1000  # limit of the transaction to be retrieved
    try:
        transactions = query_recent_transaction(connection(), user_name,
                                                limit_transactions)
        if not transactions:
            return jsonify([])
        return build_json_recent_transactions(transactions, user_name)
    except:
        return jsonify(False)
def group_status_update():
    try:
        user_name = request.json['user_name']
        refresh_token(connection(), request.json['user_name'])
        group_id = request.json['group_id']
        group_title = get_group_title(connection(), group_id)
        if not group_title:
            return jsonify(False)
        delete_group(connection(), group_id)
        delete_users_in_group(connection(), group_id)

        message = "You just deleted the group " + group_title
        message_description = "Hope it's purpose served you well!"
        # adding transaction to logs
        insert_into_recent_table(connection(), user_name, str(time()), "10:Deleted Group " + group_title, message +
                                 message_description)

        return jsonify(True)
    except:
        return jsonify(False)
Exemple #17
0
def check_validity_token(username, token):
    """
    Function to check validity of a token
    :param username: Username
    :param token: Token
    :return: Validity of a token
    """
    db = connection()
    date_time = get_datetime_token(db, username, token)
    present_time = time()
    timeout = 3600  # seconds (1 hour)
    return float(present_time) - float(date_time) < timeout
Exemple #18
0
def viewing_group():
    try:
        user_name = request.json['user_name']
        refresh_token(connection(), user_name)

        # get all the accepted groups for a user
        groups = get_groups_user(connection(), user_name, "accepted")
        all_group_info = []
        # for each group, get all the information pertinent to the group
        for group in groups:
            try:
                group_info = get_group_info(connection(), group)
                user_details = get_user_details(connection(),
                                                group_info['users'])
                if group_info:
                    bills = []
                    settlements = []
                    for bill_id in group_info['bills']:
                        bill_data = get_bill_data(connection(), bill_id)
                        if bill_data:
                            if bill_data['category'] == 'settlement':
                                settlements.append(bill_data)
                            else:
                                bills.append(bill_data)
                    cost_sharing_info = cost_sharing_split(bills, settlements)
                    cost_sharing_info['settlement_history'] = settlements
                    group_payload = {
                        'group_info': group_info,
                        'bill_data': bills,
                        'user_details': user_details,
                        'cost_sharing': cost_sharing_info
                    }
                    all_group_info.append(group_payload)
            except:
                continue

        return jsonify({'body': all_group_info})

    except:
        return jsonify(False)
Exemple #19
0
def deleteTransaction():
    """
    API to delete a particular transaction
    """
    user_name = request.json['username']
    bill_id = request.json['bill_id']
    group_id = request.json['group_id']
    refresh_token(connection(), user_name)
    mapped_name = request.json['mapped_name']
    try:
        title = get_bill_name(connection(), bill_id)
        bill_data = get_bill_data(connection(), bill_id)

        message = "You deleted this group bill " + title
        message_description = str(bill_data)
        # adding transaction to logs
        insert_into_recent_table(connection(), user_name, str(time()), "11:Deleted group bill " + title,
                                 message + message_description)

        delete_from_group_bills_table(connection(), bill_id)
        delete_from_groups_table(connection(), bill_id, group_id)
        if mapped_name:
            delete_file(mapped_name)  # deleting that image from dropbox

        return jsonify(True)
    except:
        return jsonify(False)
Exemple #20
0
def delete_transaction():
    """
    API to delete a particular transaction
    """
    user_name = request.json['username']
    uid = request.json['uid']
    refresh_token(connection(), user_name)
    mapped_name = request.json['mapped_name']
    try:
        title = get_bill_name(connection(), uid)
        # adding transaction to logs
        bill_data = query_particular_transaction(connection(), uid)
        message = "You just deleted this transaction "
        insert_into_recent_table(connection(), user_name, str(time()),
                                 "18:Deleted Transaction " + title,
                                 message + str(bill_data))

        message = delete_from_image_table(connection(), uid, user_name)
        delete_file(mapped_name)  # deleting that image from dropbox
        return jsonify(message)
    except:
        return jsonify("Deleting the transaction failed.")
Exemple #21
0
def bugs():
    """
    API for reporting bugs
    """
    try:
        title = request.json['title']
        description = request.json['description']
        creation_time = str(time())
        bug_id = new_bugs(connection(), title, description, creation_time)
        email_bug_info(title, description, bug_id, creation_time)
        return jsonify({'bug_id': bug_id})
    except:
        return jsonify(False)
Exemple #22
0
def profile_pic_random():
    try:
        user_name = request.json['user_name']
        refresh_token(connection(), request.json['user_name'])
        profile_pic_path = path.join(getcwd(), "temp", "." + user_name,
                                     "profile_pic", 'pic')
        if not path.exists(profile_pic_path):
            # Caching and Saving profile pic
            profile_pic = generate_image()
            if not path.exists(path.split(profile_pic_path)[0]):
                makedirs(path.split(profile_pic_path)[0])
            with open(profile_pic_path, 'w') as fp:
                pass
            dump(profile_pic, file=open(profile_pic_path, "wb"))
        # Profile pic already cached
        profile_pic = load(open(profile_pic_path, "rb"))
        return profile_pic
    except:
        return jsonify({'Error': 'Failed to get profile Picture'})
Exemple #23
0
def signout():
    """
    API when user signs out. Delete all his transaction Data
    """
    try:
        upload_db(
        )  # upload the dropbox server to the latest code (automation)
        user_name = request.json['username']

        message = "There are no goodbyes for us, wherever you are, you data will stay safe in our heart!"
        # adding transaction to logs
        insert_into_recent_table(connection(), user_name, str(time()),
                                 "4:Signed Out", message)

        user_data_path = path.join(getcwd(), "temp", "." + user_name)
        if path.exists(user_data_path):
            rmtree(user_data_path)
        return jsonify(True)
    except:
        return jsonify(False)
def remove_users_from_group():
    try:
        user_name = request.json['user_name']
        refresh_token(connection(), user_name)
        users = request.json['users']
        users = list(
            set(users))  # Avoid adding same users multiple times to the groups
        group_id = request.json['group_id']
        group_title = get_group_title(connection(), group_id)
        if not group_title:
            return jsonify(False)
        for user in users:
            try:  # resolving admin approvals
                group_admin = request.json['group_admin']
                resolve_admin_approval(connection(), group_admin, "remove",
                                       user, group_id)
                resolve_admin_approval(connection(), group_admin, "add", user,
                                       group_id)
            except:
                pass

            update_group_status(connection(), group_id, user, "removed")
            try:
                current_users = get_group_current_users(connection(), group_id)
                new_users = literal_eval(current_users)
                new_users.remove(user)
                add_new_users_group(connection(), group_id, str(new_users))
            except:
                pass
        message = "You removed users from the group " + group_title + ". The users removed were " + str(
            users)
        # adding transaction to logs
        insert_into_recent_table(connection(), user_name, str(time()),
                                 "15:Removed users from group " + group_title,
                                 message)

        return jsonify(True)
    except:
        return jsonify(False)
Exemple #25
0
def build_json_recent_transactions(transactions, user_name):
    response_json = {'username': user_name}  # Building the required response json for the recent transactions
    table_entries = []
    image_intermediate_json = {}
    for each_transaction in transactions:
        intermediate_json = {'Name': each_transaction[0], 'Description': each_transaction[3],
                             'Date': each_transaction[1], 'Amount': each_transaction[2],
                             'uid': each_transaction[5],   'category': each_transaction[6]}
        if each_transaction[4]:
            intermediate_json['HasImage'] = True
            intermediate_json['Identifier'] = each_transaction[4]
            original_name = get_original_name(connection(), user_name, each_transaction[4])
            image_intermediate_json[each_transaction[4]] = original_name

        else:
            intermediate_json['HasImage'] = False
            intermediate_json['Identifier'] = ""
        table_entries.append(intermediate_json)
    response_json['TableEntries'] = table_entries
    response_json['ImageEntries'] = image_intermediate_json
    return jsonify(response_json)
Exemple #26
0
def exit_group():
    try:
        user_name = request.json['user_name']
        refresh_token(connection(), request.json['user_name'])
        group_id = request.json['group_id']
        group_title = get_group_title(connection(), group_id)
        if not group_title:
            return jsonify(False)
        current_users = get_group_current_users(connection(), group_id)
        new_users = literal_eval(current_users)
        new_users.remove(user_name)
        add_new_users_group(connection(), group_id, str(new_users))

        update_group_status(connection(), group_id, user_name, "exited")

        message = "You left the group " + group_title + ". Why did you leave it? :("
        # adding transaction to logs
        insert_into_recent_table(connection(), user_name, str(time()),
                                 "13:Exited group " + group_title, message)
        return jsonify(True)
    except:
        return jsonify(False)
def add_users_to_group_non_admin():
    try:
        user_name = request.json['user_name']
        refresh_token(connection(), user_name)
        users = request.json['users']
        users = list(set(users))  # Avoid adding same users multiple times to the groups

        group_id = request.json['group_id']
        group_title = get_group_title(connection(), group_id)
        group_admin = request.json['group_admin']

        response = {'success': [], 'fail': []}

        if not group_title:
            return jsonify(False)
        for user in users:
            #  if user has rejected the group, or exited, or has been removed, update the status to pending
            if get_status_for_group(connection(), group_id, user, "rejected") or \
                    get_status_for_group(connection(), group_id, user, "removed") or \
                    get_status_for_group(connection(), group_id, user, "exited") or \
                    get_status_for_group(connection(), group_id, user, "pending"):

                if get_status_for_group(connection(), group_id, user, "rejected") and \
                        get_group_pending_state_machine(connection(), user, group_id) >= 4:
                    # user has rejected the group too many times, can't be added
                    response['fail'].append(user)
                else:  # successfully add the user to the group
                    update_group_status(connection(), group_id, user, "awaiting")
                    response['success'].append(user)
                    if not get_group_admin_approval(connection(), user, group_id):  # to avoid duplicates
                        insert_into_admin_approvals_table(connection(), group_admin, "awaiting", "add",
                                                          user, group_title, group_id)
            #  if user entry does not exist in the group, then add a new entry
            elif not get_status_for_group(connection(), group_id, user, "accepted"):
                response['success'].append(user)
                insert_into_pending_requests_table(connection(), group_id, user, "awaiting", 0)
                if not get_group_admin_approval(connection(), user, group_id):
                    insert_into_admin_approvals_table(connection(), group_admin, "awaiting", "add",
                                                      user, group_title, group_id)
        # adding transaction to logs

        if response['success']:
            message = "You added a few users to the group " + group_title + ". The users are: "
            message_description = response['success']
            insert_into_recent_table(connection(), user_name, str(time()), "7:Added users to group " + group_title,
                                     message + str(message_description))

        return jsonify(response)
    except:
        return jsonify(False)
Exemple #28
0
def upload():
    try:
        usage_exceeded = None
        if 'image' in request.files:
            # Image has to be uploaded
            file = request.files['image']
            file_name = file.filename

            # If user quota has been exceeded
            user_name = request.form['username']
            size = space_usage(connection(), user_name) + group_space_usage(
                connection(), user_name)

            bool_is_user_premium = is_user_premium(connection(), user_name)
            premium = False
            if bool_is_user_premium == 'True':
                premium = True
            total_quota = get_total_size(premium)

            usage_exceeded = quota_exceeded(size, total_quota)
            if not usage_exceeded:  # Upload image if user has not exceeded his quota
                file_extension = file_name.split('.')[-1]
                original_file_name = file_name
                present_time = str(time())
                file_name = present_time + '.' + file_extension
                mapped_file_name = file_name

                # adding image mapping for cross referencing later
                insert_into_image_mapping_table(connection(),
                                                request.form['username'],
                                                original_file_name,
                                                mapped_file_name)

                # uploading the file to dropbox
                uploadFile(file, mapped_file_name)

                file.seek(0, SEEK_END)
                file_size = file.tell() / (10**6)  # file_size in mb
                # adding entry to image size table
                insert_into_image_size_table(connection(), mapped_file_name,
                                             file_size)
            else:
                mapped_file_name = str(False)
        else:
            # Image not a part of the transaction
            mapped_file_name = str(False)
        user_name = request.form['username']
        title = request.form['Name']
        date_time = request.form['Date']
        description = request.form['Description']
        amount = request.form['Amount']
        category = request.form['category']
        # adding the transaction record
        insert_into_image_table(connection(), user_name, title, date_time,
                                amount, description, mapped_file_name,
                                category)

        message_description = {
            'Title': title,
            'DateTime': date_time,
            'Description': description,
            'Amount': amount,
            'Category': category,
        }
        message = "You added a new bill "
        # adding transaction to logs
        insert_into_recent_table(connection(), user_name, str(time()),
                                 "22:Added Transaction " + title,
                                 message + str(message_description))

        # refresh the token, needs to be added to other API Calls
        refresh_token(connection(), request.form['username'])
        if usage_exceeded is not None and usage_exceeded:
            message = "User Quota Exceeded"
            return jsonify({'uploadStatus': True, 'message': message})
        return jsonify({'uploadStatus': True})
    except:
        return jsonify(False)
Exemple #29
0
 def __init__(self, username, password=None):
     self.db = connection()
     self.user = username
     self.password = password
def edit_group_bill_api():
    try:
        if 'image' in request.files:
            # Image has to be uploaded
            file = request.files['image']
            file_name = file.filename
            file_extension = file_name.split('.')[-1]
            original_file_name = file_name
            present_time = str(time())
            file_name = present_time + '.' + file_extension
            mapped_file_name = file_name
            # adding image mapping for cross referencing later
            insert_into_image_mapping_table(connection(),
                                            request.form['username'],
                                            original_file_name,
                                            mapped_file_name)

            # uploading the file to dropbox
            uploadFile(file, mapped_file_name)

            file.seek(0, SEEK_END)
            file_size = file.tell() / (10**6)  # file_size in mb
            # adding entry to image size table
            insert_into_image_size_table(connection(), mapped_file_name,
                                         file_size)

        else:
            # Image not a part of the transaction
            mapped_file_name = str(False)
        user_name = request.form['username']
        title = request.form['title']
        date_time = request.form['date']
        description = request.form['description']
        amount = request.form['amount']
        category = request.form['category']
        payer = request.form['payer']
        group_id = request.form['group_id']
        shares = request.form['shares']
        bill_id = request.form['bill_id']

        # editing the transaction record
        edit_group_bill(connection(), title, date_time, amount, description,
                        mapped_file_name, category, shares, payer, group_id,
                        bill_id)

        # refresh the token, needs to be added to other API Calls
        refresh_token(connection(), request.form['username'])

        message = "You added a group bill "
        message_description = {
            'Title': title,
            'DateTime': date_time,
            'Description': description,
            'Amount': amount,
            'Category': category,
            'Payer': payer,
            'Shares': shares,
            'Group': title
        }
        # adding transaction to logs
        insert_into_recent_table(connection(), user_name, str(time()),
                                 "12:Edit Group Bill " + title,
                                 message + str(message_description))

        return jsonify({'editStatus': True})
    except:
        return jsonify(False)