Example #1
0
def save_new_transactions(request, transact_params=[]):
    if transact_params == []:
        # <DEBUG SECTION>
        user = get_debug_user(request)
        # <DEBUG SECTION>
        entries = request_to_array(request)
    else:
        user = transact_params[0]["user"]
        entries = transact_params
    if entries != []:
        for entry in entries:
            try:
                if entry['is_privat']:
                    transactionType = PrivatTransaction
                    audit_event_type = AuditEventTypes.private_transaction_created(
                    )
                else:
                    transactionType = PublicTransaction
                    audit_event_type = AuditEventTypes.transaction_created()
                new_transaction = transactionType(user = user, \
                                              transactionstime = entry['date'],\
                                              purpose = entry['purpose'], \
                                              comment = entry['comment'], \
                                              amount = entry['amount'])
                new_transaction.save()
                audit_created = audit_event(user, user,\
                                        audit_event_type, \
                                        transaction = new_transaction)
                if not audit_created:
                    raise Exception
            except Exception as exc:
                return failure_page(request, "Failed on transaction " + \
                                        str(entry) + " saving<br>" + str(exc))
    return saved_success(request)
Example #2
0
def family(request):
    #<DEBUG SECTION>
    user = get_debug_user(request)
    #<DEBUG SECTION>
    if len(user.get_all_members()) <= 1:
        return redirect("/main")
    return family_setings(request, user)
Example #3
0
File: main.py Project: havrylov/hk
def give_necessary_statistics(request):

    user = get_debug_user(request)
    response_data = {"public_outcome" : 0, \
                     "public_income" : 0, \
                     "public_balance" : 0, \
                     "public_transaction_time" : 0, \
                     "private_outcome" : 0, \
                     "private_income" : 0, \
                     "private_balance" : 0, \
                     "private_transaction_time" : 0}
    response_data["public_outcome"] = user.get_family_outcome_sum()
    response_data["public_income"] = user.get_family_income_sum()
    response_data["public_balance"] = user.get_family_balance()
    first_transactions_datetime = user.get_first_transactions_datetime()
    if first_transactions_datetime is None:
        response_data["public_transaction_time"] = "Start Now!"
    else:
        response_data["public_transaction_time"] = \
                                            first_transactions_datetime.date()
    response_data["private_outcome"] = user.get_private_outcome_sum()
    response_data["private_income"] = user.get_private_income_sum()
    response_data["private_balance"] = user.get_private_balance()
    first_transactions_datetime = user.get_first_private_transactions_datetime(
    )
    if first_transactions_datetime is None:
        response_data["private_transaction_time"] = "Start Now!"
    else:
        response_data["private_transaction_time"] = \
                                            first_transactions_datetime.date()
    return JsonResponse(response_data)
Example #4
0
def resend_confirmation(request, type="email"):
    #DEBUG section
    user = get_debug_user(request)
    #DEBUG section
    if get_count_confirmations_today(user) > 2:
        return -6
    code_conf = generate_email_confirmation(user)
    if (code_conf == -1) or (code_conf == -2):
        return -7


#TODO: Here is just an excellent place for refactoring!!!

    host = get_hostname(request)
    url = create_url(host, user.user.email, code_conf)
    if type == "email":
        receiver = user.user.email
        subject = "Household keeper: Email confirmation"
        new_user_name = return_full_name(receiver, "New User")
        body_email = get_body_email_conf(new_user_name, \
                                              receiver, url)
    elif type == "family":
        receiver = user.family.founder
        family_founder_name = return_full_name(receiver, \
                                                       "Family founder")
        body_email = get_body_family_conf(family_founder_name, \
                                                        user.user.email, url)
        subject = "Household keeper: New member wants to join your family"
    else:
        return -8
    email_is_sent = send_email("*****@*****.**", receiver, subject, \
               body_email)
    if not email_is_sent:
        return -9
    return 1
Example #5
0
def search_result(request):
    ##DEBUG
    user = get_debug_user(request)
    ##DEBUG
    search_criterium = parse_request(request)
    empty_set = []
    if search_criterium["give_no_result"]:
        return empty_set
    output_set = get_initial_transactions_set(request)
    if is_empty(output_set):
        return empty_set
    if search_criterium["show_outcome"] and search_criterium["show_income"]:
        pass
    elif search_criterium["show_outcome"]:
        output_set = return_only_outcome(output_set)
    elif search_criterium["show_income"]:
        output_set = return_only_income(output_set)

    if is_empty(output_set):
        return empty_set

    output_set = filter_transactions_by_amount(output_set,\
                            min_amount = search_criterium["min_amount"], \
                            max_amount = search_criterium["max_amount"])

    if is_empty(output_set):
        return empty_set

    output_set = filter_transactions_by_date(output_set,\
                            before = search_criterium["before"], \
                            after = search_criterium["after"])

    if is_empty(output_set):
        return empty_set

    output_set = filter_transactions_by_users(output_set,\
                            users = search_criterium["users"])

    if is_empty(output_set):
        return empty_set

    output_set = filter_transactions_by_purpose(output_set,\
                            value=search_criterium["purpose"], \
                            exact=search_criterium["purpose_exact"])

    if is_empty(output_set):
        return empty_set

    output_set = filter_transactions_by_comment(output_set,\
                            value=search_criterium["comment"], \
                            exact=search_criterium["comment_exact"])

    return order_by_time(output_set)
Example #6
0
def user_edit_form_validation(request):
    # <DEBUG SECTION>
    user = get_debug_user(request)
    # <DEBUG SECTION>
    if request.method == 'POST':
        edit_user_form = EditUserForm(request.POST)
        if edit_user_form.is_valid():
            response = save_settings(request)
            return response
    else:
        edit_user_form = EditUserForm()  # An unbound form

    return personal_settings(request, user, user_form=edit_user_form)
Example #7
0
def user_is_allowed_to_edit(tr_id, request,
                            is_private):  #DONE: Find out ow to define the user
    #DEBUG SECTION#
    user = get_debug_user(request)
    #DEBUG SECTION#
    if is_private:
        transaction_type = PrivatTransaction
    else:
        transaction_type = PublicTransaction
    user_list = user.get_all_members()
    try:
        transaction = transaction_type.objects.get(pk=tr_id)
    except Exception as exc:
        return -1
    if transaction.user in user_list:
        return transaction
    else:
        return False
Example #8
0
def save_family_pseudos(request):
    #<DEBUG SECTION>
    for_user = get_debug_user(request)
    #<DEBUG SECTION>
    params_array = request_to_array(request)
    for entry in params_array:
        of_user = entry["user"]
        pseudonym = entry["pseudo"]
        try:
            new_pseudo = Pseudonym.objects.get(of_the_user = of_user, \
                                               for_the_user = for_user)
            new_pseudo.pseudonym = pseudonym
        except Pseudonym.DoesNotExist:
            new_pseudo = Pseudonym(pseudonym = pseudonym, \
                                   of_the_user = of_user, \
                                   for_the_user = for_user)
        try:
            new_pseudo.save()
        except:
            return failure_page(request)
    return saved_success(request)
Example #9
0
def delete_transaction(request):
    # <DEBUG SECTION>
    user = get_debug_user(request)
    # <DEBUG SECTION>
    try:
        initial_state = request.POST["is_private"]
    except KeyError as excpt:
        return failure_page(request, "incorrect POST data")
    if int(initial_state) == 1:
        private_transaction = True
        audit_event_type = AuditEventTypes.private_transaction_deleted()
    elif int(initial_state) == 0:
        private_transaction = False
        audit_event_type = AuditEventTypes.transaction_deleted()
    else:
        return failure_page(request, "incorrect POST data")

    try:
        tr_id = request.POST["id"]
    except KeyError as excpt:
        return failure_page(request, "incorrect POST data")

    if not transaction_exists(tr_id):
        return failure_page(request, "Incorrect ID")
    transaction = user_is_allowed_to_edit(tr_id, request, private_transaction)
    try:
        transaction.deleted = True
        transaction.save()
        audit_created = audit_event(transaction.user, transaction.user,\
                                    audit_event_type, \
                                    transaction = transaction)
        if not audit_created:
            raise Exception
    except Exception as exc:
        return failure_page(request, "Audit wasn't created" + str(exc))
    return deleted_success(request)
Example #10
0
def add(request, several):
    # <DEBUG SECTION>
    user = get_debug_user(request)
    # <DEBUG SECTION>
    return add_transactions(request, user, several)
Example #11
0
def parse_request(request):
    ##DEBUG
    user = get_debug_user(request)
    ##DEBUG
    output = {}
    try:
        after = request.GET["begin"]
    except KeyError:
        after = get_min_value_of_transaction(user, "transactionstime")

    if after != "":
        try:
            after = parse(after)
        except:
            after = ""

    output["after"] = after

    try:
        before = request.GET["end"]
    except KeyError:
        before = get_max_value_of_transaction(user, "transactionstime")

    if before != "":
        try:
            before = parse(before)
        except:
            before = ""
    output["before"] = before

    try:
        max_amount = request.GET["maxamount"]
    except KeyError:
        max_amount = get_max_value_of_transaction(user, "amount")
    try:
        float(max_amount)
    except ValueError:
        max_amount = ""
    except TypeError:
        max_amount = ""
    output["max_amount"] = max_amount

    try:
        min_amount = request.GET["minamount"]
    except KeyError:
        min_amount = get_min_value_of_transaction(user, "amount")
    try:
        float(min_amount)
    except ValueError:
        min_amount = ""
    except TypeError:
        min_amount = ""
    output["min_amount"] = min_amount

    #     try:
    #         show_private = request.GET["private"]
    #         output["show_private"] = True
    #     except KeyError:
    #         output["show_private"] = False
    #
    #     try:
    #         show_private = request.GET["public"]
    #         output["show_public"] = True
    #     except KeyError:
    #         output["show_public"] = False

    try:
        show_income = request.GET["income"]
        output["show_income"] = True
    except KeyError:
        output["show_income"] = False

    try:
        give_no_result = request.GET["nosearch"]
        output["give_no_result"] = True
    except KeyError:
        output["give_no_result"] = False

    try:
        show_outcome = request.GET["outcome"]
        output["show_outcome"] = True
    except KeyError:
        output["show_outcome"] = False

    try:
        users = request.GET.getlist('users')
        output["users"] = []
        for user_email in users:
            try:
                user_auth = User.objects.get(email=user_email)
                user = Users.objects.get(user=user_auth)
                output["users"].append(user)
            except User.DoesNotExist:
                pass
            except Users.DoesNotExist:
                pass
    except KeyError:
        output["users"] = []

    output["purpose_exact"] = define_exact("purposecomparation", request)
    output["comment_exact"] = define_exact("commentcomparation", request)
    output["purpose"] = define_text("purpose", request)
    output["comment"] = define_text("comment", request)

    return output
Example #12
0
def save_changes(request):
    # <DEBUG SECTION>
    user = get_debug_user(request)
    # <DEBUG SECTION>
    try:
        initial_state = request.POST["is_private"]
    except KeyError as excpt:
        return failure_page(request, "incorrect POST data")
    if int(initial_state) == 1:
        private_transaction = True
        audit_event_type = AuditEventTypes.private_transaction_edited()
    elif int(initial_state) == 0:
        private_transaction = False
        audit_event_type = AuditEventTypes.transaction_edited()
    else:
        return failure_page(request, "incorrect POST data")

    try:
        private_flag = request.POST["private"]
        is_private = True
    except KeyError as excpt:
        is_private = False

    try:
        tr_id = request.POST["id"]
        amount = request.POST["amount"]
        date = request.POST["date"]
        purpose = request.POST["purpose"]
        comment = request.POST["comment"]
    except KeyError as excpt:
        return failure_page(request, "incorrect POST data")
    if not transaction_exists(tr_id):
        return failure_page(request, "Incorrect PublicTransaction ID")
    transaction = user_is_allowed_to_edit(tr_id, request, private_transaction)

    if private_transaction != is_private:
        transaction = change_transaction_type(transaction, \
                                              private_transaction, is_private)
        if isinstance(transaction, str):
            return failure_page(request, "Failed on transaction " + \
                                        transaction)
    if transaction == -1:
        return failure_page(request, "Unknown error")
    if not transaction:
        return failure_page(request, "Attempt for edit unallowed transaction")
    if is_float(amount) and is_date(date):
        float_amount = float(amount)
        transactionstime = parse(date)
        audit_list = []

        if transaction.amount != float_amount:
            change_dic = {"field": "amount", "old_value": transaction.amount, \
                      "new_value": float_amount}
            audit_list.append(change_dic)
        transaction.amount = float_amount

        transactionstime_tz_aware = timezone.make_aware(transactionstime, \
                                        timezone.get_current_timezone())

        if transaction.transactionstime != transactionstime_tz_aware:
            change_dic = {"field": "transactionstime", \
                          "old_value": transaction.transactionstime, \
                      "new_value": transactionstime}
            audit_list.append(change_dic)
        transaction.transactionstime = transactionstime_tz_aware

        if transaction.purpose != purpose:
            change_dic = {"field": "purpose", \
                          "old_value": transaction.purpose, \
                      "new_value": purpose}
            audit_list.append(change_dic)
        transaction.purpose = purpose

        if transaction.comment != comment:
            change_dic = {"field": "comment", \
                          "old_value": transaction.comment, \
                      "new_value": comment}
            audit_list.append(change_dic)
        transaction.comment = comment
        try:
            transaction.save()
        except Exception as exc:
            return failure_page(request, "Failed to save transaction " + \
                                "changes to DB")
        try:
            audit_created = audit_event(user, transaction.user, \
                                    audit_event_type, \
                                    transaction = transaction, \
                                    list_of_changes = audit_list)
            if not audit_created:
                raise Exception
        except Exception as exc:
            return failure_page(request, "Failed to save audit changes to DB")
        return saved_success(request)
    else:
        return failure_page(request, "Amount or Data parameters are incorrect")
Example #13
0
def access(request):
    #<DEBUG SECTION>
    user = get_debug_user(request)
    #<DEBUG SECTION>
    return access_data(request, user)
Example #14
0
'''
Created on Jul 10, 2014

@author: thavr
'''
from budget.debug import get_debug_user
from django.http.request import HttpRequest
from budget.transactions import save_new_transactions

def create_request(date = "", amount = "13.65", purpose ="", comment = "", \
                   count = 1):
    request = HttpRequest()
    request.POST["date"] = [date]
    request.POST["amount"] = [amount]
    request.POST["purpose"] = [purpose]
    request.POST["comment"] = [comment]
    for i in range(count - 1):
        request.POST["date"].append(date)
        request.POST["amount"].append(amount)
        request.POST["purpose"].append(purpose)
        request.POST["comment"].append(comment)
    return request


if __name__ == '__main__':
    user = get_debug_user()
    request = create_request(count=1)
    output = save_new_transactions(request)
    print output
Example #15
0
'''
Created on Jul 15, 2014

@author: thavr
'''
from budget.debug import get_debug_user
import django

if __name__ == '__main__':
    django.setup()
    u2 = get_debug_user()
    u2.transaction_set.create(amount = -35.33, purpose = "Dinner with wife", \
                              transactionstime = "2013-01-01 23:59:00Z", \
                              comment = "")
    u2.transaction_set.create(amount = 35.33, purpose = "Bank rate", \
                              transactionstime = "2012-12-31 13:27:00Z", \
                              comment = "Bank of America")
    u2.transaction_set.create(amount = -36.33, purpose = "Pertol", \
                              transactionstime = "2013-02-15 12:59:00Z", \
                              comment = "ARAL")
    u2.transaction_set.create(amount = 36.33, purpose = "Money-back from amazon",\
                               transactionstime = "2012-01-01 00:00:01-08:00", \
                               comment = "")

    print "OK"
Example #16
0
def personal_forms(request):
    #<DEBUG SECTION>
    user = get_debug_user(request)
    #<DEBUG SECTION>
    return edit_wo_form(request, user)
Example #17
0
def personal(request):
    #<DEBUG SECTION>
    user = get_debug_user(request)
    #<DEBUG SECTION>
    return personal_settings(request, user)
Example #18
0
def search(request):
    from budget.views import search_page
    ##DEBUG
    user = get_debug_user(request)
    ##DEBUG
    return search_page(request, user)
Example #19
0
def preferences(request):
    #<DEBUG SECTION>
    user = get_debug_user(request)
    #<DEBUG SECTION>
    return site_preferences(request, user)
Example #20
0
def change_site_prefernces(request):
    #DEBUG section
    user = get_debug_user(request)
    #DEBUG section
    try:
        request_parameters = parse_request(request)
    except Exception as e:
        return server_error(e, request)
    current_preferences = user.get_settings_with_name()
    prefernces_name_value = user.get_user_settings_as_voc()
    for sett_name, new_value in request_parameters.iteritems():
        entry_exists = True
        audit_list = []
        new_bool = None
        new_float = None
        new_string = None
        try:
            old_preference = current_preferences[sett_name]
        except KeyError as e:
            recreate_setting = SitePreferncesList.objects.get(setting_name\
                                                     =sett_name)
            setting_conn = SitePrefernce.objects.get(setting=recreate_setting)
            if setting_conn.type.prefernce_type == 'bool':
                new_bool = request_parameters[sett_name]
            elif setting_conn.type.prefernce_type == 'float':
                new_float = request_parameters[sett_name]
            elif setting_conn.type.prefernce_type == 'string':
                new_string = request_parameters[sett_name]
            elif setting_conn.type.prefernce_type == 'int':
                new_int = request_parameters[sett_name]
            users_default_settings = UserSettings(user = user, \
                                                  setting = setting_conn, \
                                                  value_bool = new_bool, \
                                                  value_float = new_float, \
                                                  value_int = new_int, \
                                                  value_string = new_string)
            users_default_settings.save()
            change_dic = {"field": sett_name, "old_value": None, \
                      "new_value": request_parameters[sett_name]}
            audit_list.append(change_dic)
            entry_exists = False

        if entry_exists and prefernces_name_value[sett_name] != \
                                        request_parameters[sett_name]:
            setting_type = \
                    current_preferences[sett_name].setting.type.prefernce_type
            if setting_type == 'bool':
                new_bool = new_value
            elif setting_type == 'float':
                new_float = new_value
            elif setting_type == 'string':
                new_string = new_value
            elif setting_type == 'int':
                new_int = new_value
            old_preference.value_bool = new_bool
            old_preference.value_float = new_float
            old_preference.value_string = new_string
            old_preference.value_int = new_int
            try:
                old_preference.save()
            except:
                return failure_page(request, "Failed on user saving<br>")
            change_dic = {"field": sett_name, \
                    "old_value": prefernces_name_value[sett_name], \
                    "new_value": request_parameters[sett_name]}
            audit_list.append(change_dic)
            audit_created = audit_event(user, user,\
                                    AuditEventTypes.site_preferences_edited(), \
                                    list_of_changes = audit_list)
            if not audit_created:
                raise Exception
    response = HttpResponse("OK.", content_type="text/plain")
    response['Overflow'] = "0"
    return response
Example #21
0
def get_initial_transactions_set(request):
    ##DEBUG
    user = get_debug_user(request)
    ##DEBUG
    return [user.get_all_public_family_transactions(), \
            user.get_all_privat_user_transactions()]
Example #22
0
File: main.py Project: havrylov/hk
def main2(request):
    #<DEBUG SECTION>
    user = get_debug_user(request)
    family = user.family
    #<DEBUG SECTION>
    return main_page2(request, family, user)
Example #23
0
def change_access_data(request):
    #DEBUG section
    user = get_debug_user(request)
    #DEBUG section
    attempt_audit = AccessDataChange(user_impacted = user, \
                    pasword_change= False, \
                    email_change= False, \
                    change_date = timezone.now(), \
                    password_verification_result = 'Pending')
    try:
        request_parameters = parse_request(request)
    except Exception as e:
        return server_error(e, request)
    if request_parameters['new_email'] != '':
        attempt_audit.email_change = True
    if request_parameters['new_password'] != \
                                    request_parameters['retype_new_password']:
        return server_error(e, request)
    if request_parameters['new_password'] != '':
        attempt_audit.pasword_change = True
    try:
        attempt_is_allowed = is_attempt_allowed(user)
    except Exception as e:
        return server_error(e, request)
    if not attempt_is_allowed:
        response = HttpResponse("OK.", content_type="text/plain")
        response['Overflow'] = "1"
        attempt_audit.password_verification_result = 'Fail'
        try:
            attempt_audit.save()
        except Exception as e:
            return server_error(e, request)
        return response
    try:
        password_is_correct = is_password_correct(user, \
                                request_parameters["conf_password"])
    except Exception as e:
        return server_error(e, request)
    if not password_is_correct:
        response = HttpResponse("OK.", content_type="text/plain")
        response['Overflow'] = "-6"
        attempt_audit.password_verification_result = 'Fail'
        try:
            attempt_audit.save()
        except Exception as e:
            return server_error(e, request)
        return response
    try:
        save_access_data(user, request_parameters)
    except Exception as e:
        return server_error(e, request)
    response = HttpResponse("OK.", content_type="text/plain")
    response['Overflow'] = "0"
    attempt_audit.password_verification_result = 'Success'
    try:
        attempt_audit.save()
    except Exception as e:
        return server_error(e, request)
    try:
        send_email_confirmation(user, get_hostname(request))
    except Exception as e:
        return server_error(e, request)
    audit_created = audit_event(user, user,\
                                        AuditEventTypes.user_edited())
    if not audit_created:
        return HttpResponseServerError("NOK")
    return response
Example #24
0
def save_settings(request):
    # <DEBUG SECTION>
    user = get_debug_user(request)
    # <DEBUG SECTION>
    audit_list = []
    params = parse_inputs_personal(request)
    if params == -1:
        return failure_page(request, "Failed on parsing inputs<br>")

    if user.birthdate != params['birthdate']:
        change_dic = {"field": "birthdate", "old_value": user.birthdate, \
                      "new_value": params['birthdate']}
        audit_list.append(change_dic)
        user.birthdate = params['birthdate']

    if user.cellcountry != params['cellcountry']:
        change_dic = {"field": "cellcountry", "old_value": user.cellcountry, \
                      "new_value": params['cellcountry']}
        audit_list.append(change_dic)
        user.cellcountry = params['cellcountry']

    if user.cellarea != params['cellarea']:
        change_dic = {"field": "cellarea", "old_value": user.cellarea, \
                      "new_value": params['cellarea']}
        audit_list.append(change_dic)
        user.cellarea = params['cellarea']

    if user.cellnum != params['cellnum']:
        change_dic = {"field": "cellnum", "old_value": user.cellnum, \
                      "new_value": params['cellnum']}
        audit_list.append(change_dic)
        user.cellnum = params['cellnum']

    if user.addrcountry != params['addrcountry']:
        change_dic = {"field": "addrcountry", "old_value": user.addrcountry, \
                      "new_value": params['addrcountry']}
        audit_list.append(change_dic)
        user.addrcountry = params['addrcountry']

    if user.addrpostid != params['addrpostid']:
        change_dic = {"field": "addrpostid", "old_value": user.addrpostid, \
                      "new_value": params['addrpostid']}
        audit_list.append(change_dic)
        user.addrpostid = params['addrpostid']

    if user.addrtown != params['addrtown']:
        change_dic = {"field": "addrtown", "old_value": user.addrtown, \
                      "new_value": params['addrtown']}
        audit_list.append(change_dic)
        user.addrtown = params['addrtown']

    if user.addrstr != params['addrstr']:
        change_dic = {"field": "addrstr", "old_value": user.addrstr, \
                      "new_value": params['addrstr']}
        audit_list.append(change_dic)
        user.addrstr = params['addrstr']

    if user.addrhousenum != params['addrhousenum']:
        change_dic = {"field": "addrhousenum", "old_value": user.addrhousenum, \
                      "new_value": params['addrhousenum']}
        audit_list.append(change_dic)
        user.addrhousenum = params['addrhousenum']

    if user.addrapt != params['addrapt']:
        change_dic = {"field": "addrapt", "old_value": user.addrapt, \
                      "new_value": params['addrapt']}
        audit_list.append(change_dic)
        user.addrapt = params['addrapt']

    if user.addradditional != params['addradditional']:
        change_dic = {"field": "addradditional", \
                      "old_value": user.addradditional, \
                      "new_value": params['addradditional']}
        audit_list.append(change_dic)
        user.addradditional = params['addradditional']

    user_auth = user.user

    if user_auth.first_name != params['fname']:
        change_dic = {"field": "fname", "old_value": user_auth.first_name, \
                      "new_value": params['fname']}
        audit_list.append(change_dic)
        user_auth.first_name = params['fname']

    if user_auth.last_name != params['sname']:
        change_dic = {"field": "sname", "old_value": user_auth.last_name, \
                      "new_value": params['sname']}
        audit_list.append(change_dic)
        user_auth.last_name = params['sname']
    if audit_list != []:
        try:
            user.save()
            user_auth.save()
            audit_created = audit_event(user, user,\
                                        AuditEventTypes.user_edited(), \
                                        list_of_changes = audit_list)
            if not audit_created:
                raise Exception
        except:
            return failure_page(request, "Failed on user saving<br>")
    return saved_success(request)