Exemple #1
0
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.fields['user'].choices = [('','')]
     self.fields['goal'].choices = [('','')]
     users = get_all_users()
     for k,v in users.items():
         self.fields['user'].choices.append((k, v))
     print("in form user is ", self.instance.user)
     if self.instance.user:
         goal_list = get_goal_id_name_mapping_for_user(self.instance.user)
         for k,v in goal_list.items():
             self.fields['goal'].choices.append((k, v))
         if self.instance.goal:
             #self.instance.goal = get_goal_name_from_id(self.instance.goal)
             self.initial['goal'] = self.instance.goal
def update_trans(request, id):
    template = 'gold/update_trans.html'
    context = dict()
    message = ''
    message_color = 'ignore'
    try:
        g = Gold.objects.get(id=id)
        if request.method == 'POST':
            try:
                goal = request.POST.get('goal', '')
                if goal != '':
                    goal_id = Decimal(goal)
                else:
                    goal_id = None
                g.goal = goal_id
                g.notes = request.POST['notes']
                g.weight = Decimal(request.POST['weight'])
                g.per_gm = Decimal(request.POST['per_gm'])
                g.buy_value = Decimal(request.POST['buy_value'])
                g.save()
                message = 'Update successful'
                message_color = 'green'
                update_gold_vals(g.user)
            except IntegrityError as ie:
                print(f'exception when updating Gold trans {ie}')
                message = 'Update failed'
                message_color = 'red'
    except Gold.DoesNotExist:
        return HttpResponseRedirect(reverse('gold:trans-list'))
    g = Gold.objects.get(id=id)
    context['message'] = message
    context['message_color'] = message_color
    context['user'] = get_user_name_from_id(g.user)
    context['goal'] = g.goal if g.goal else ''
    context['goals'] = {'goal_list': get_goal_id_name_mapping_for_user(g.user)}
    context['buy_value'] = g.buy_value
    context['buy_date'] = g.buy_date
    context['id'] = g.id
    context['weight'] = g.weight
    context['per_gm'] = g.per_gm
    context['buy_type'] = g.buy_type
    return render(request, template, context)
def update_ssy(request, id):
    template_name = 'ssys/ssy_update.html'
    if request.method == 'POST':
        try:
            print(request.POST)
            ssy_obj = Ssy.objects.get(number=id)
            ssy_obj.start_date = request.POST['start_date']
            ssy_obj.user = request.POST['user']
            goal = request.POST.get('goal', '')
            if goal != '':
                goal_id = Decimal(goal)
            else:
                goal_id = None
            ssy_obj.goal = goal_id
            ssy_obj.save()
            return HttpResponseRedirect("../")
        except Ssy.DoesNotExist:
            pass
    else:
        try:
            ssy_obj = Ssy.objects.get(number=id)
            # Always put date in %Y-%m-%d for chrome to show things properly
            users = get_all_users()
            goals = get_goal_id_name_mapping_for_user(ssy_obj.user)
            context = {
                'goals': goals,
                'users': users,
                'user': ssy_obj.user,
                'number': ssy_obj.number,
                'start_date': ssy_obj.start_date.strftime("%Y-%m-%d"),
                'notes': ssy_obj.notes,
                'goal': ssy_obj.goal,
                'operation': 'Edit SSY',
                'curr_module_id': 'id_ssy_module'
            }
        except Ssy.DoesNotExist:
            context = {'operation': 'Edit SSY'}
    print(context)
    return render(request, template_name, context)
def update_account(request, id):
    template_name = 'retirement_401k/account_update.html'
    account = get_object_or_404(Account401K, id=id)
    if request.method == 'POST':
        print(request.POST)
        company = request.POST['company']
        start_date = get_date_or_none_from_string(request.POST['start_date'])
        end_date = get_date_or_none_from_string(request.POST['end_date'])
        #user = request.POST['user']
        goal = request.POST.get('goal', '')
        notes = request.POST['notes']
        if goal != '':
            goal_id = Decimal(goal)
        else:
            goal_id = None
        account.company = company
        account.start_date = start_date
        account.end_date = end_date
        account.notes = notes
        account.goal = goal_id
        account.save()
    else:
        acct = dict()
        acct['id'] = account.id
        acct['company'] = account.company
        acct['start_date'] = account.start_date.strftime("%Y-%m-%d")
        if account.end_date:
            acct['end_date'] = account.end_date.strftime("%Y-%m-%d")
        acct['notes'] = account.notes
        goals = get_goal_id_name_mapping_for_user(account.user)
        acct['goal'] = account.goal
        acct['goals'] = goals
        acct['user'] = account.user
        acct['curr_module_id'] = 'id_401k_module'
        print(f'context {acct}')
        return render(request, template_name, acct)

    return HttpResponseRedirect(reverse('retirement_401k:account-list'))
def update_epf(request, id):
    template_name = 'epfs/epf_create.html'

    try:
        epf_obj = Epf.objects.get(id=id)
        if request.method == 'POST':
            print(request.POST)
            number = request.POST['number']
            end_date = get_date_or_none_from_string(request.POST['end_date'])
            start_date = get_date_or_none_from_string(
                request.POST['start_date'])
            company = request.POST['company']
            notes = request.POST['notes']
            user = request.POST['user']
            goal = request.POST.get('goal', '')
            uan = request.POST['uan']
            eps = request.POST['eps']
            if goal != '':
                goal_id = Decimal(goal)
            else:
                goal_id = None
            epf_obj.number = number
            epf_obj.end_date = end_date
            epf_obj.start_date = start_date
            epf_obj.company = company
            epf_obj.user = user
            epf_obj.goal = goal_id
            epf_obj.notes = notes
            epf_obj.uan = uan
            epf_obj.eps = eps
            epf_obj.save()
            return HttpResponseRedirect("../")
        else:
            users = get_all_users()
            goals = get_goal_id_name_mapping_for_user(epf_obj.user)
            context = {
                'goals':
                goals,
                'users':
                users,
                'user':
                epf_obj.user,
                'number':
                epf_obj.number,
                'start_date':
                epf_obj.start_date.strftime("%Y-%m-%d"),
                'notes':
                epf_obj.notes,
                'goal':
                epf_obj.goal,
                'end_date':
                epf_obj.end_date.strftime("%Y-%m-%d")
                if epf_obj.end_date else None,
                'operation':
                'Edit EPF',
                'company':
                epf_obj.company,
                'curr_module_id':
                'id_epf_module',
                'uan':
                epf_obj.uan if epf_obj.uan else '',
                'eps':
                epf_obj.eps if epf_obj.eps else ''
            }

    except Epf.DoesNotExist:
        return HttpResponseRedirect("../")

    return render(request, template_name, context)
def add_fixed_deposit(request):
    # https://www.youtube.com/watch?v=Zx09vcYq1oc&list=PLLxk3TkuAYnpm24Ma1XenNeq1oxxRcYFT
    template = 'fixed-deposits/add_fixed_deposit.html'
    if request.method == 'POST':
        print(request.POST)
        if "submit" in request.POST:
            print("submit button pressed")
            number = request.POST['number']
            bank_name = request.POST['bank_name']
            start_date = request.POST['start_date']
            user = request.POST['user']
            time_period_days = Decimal(request.POST['time_period_days'])
            roi = Decimal(request.POST['roi'])
            principal = Decimal(request.POST['principal'])
            final_val = Decimal(request.POST['final_val'])
            goal = request.POST.get('goal', '')
            if goal != '':
                goal_id = Decimal(goal)
            else:
                goal_id = None
            notes = request.POST['notes']
            mat_date = request.POST['mat_date']
            add_fd_entry(number, bank_name, start_date, principal,
                         time_period_days, final_val, user, notes, goal_id,
                         roi, mat_date)
        else:
            print("calculate button pressed")
            number = request.POST['number']
            bank_name = request.POST['bank_name']
            start_date = request.POST['start_date']
            user = request.POST['user']
            time_period_days = Decimal(request.POST['time_period_days'])
            principal = Decimal(request.POST['principal'])
            roi = Decimal(request.POST['roi'])
            notes = request.POST['notes']
            goal = request.POST.get('goal', '')
            mat_date, val = get_maturity_value(int(principal), start_date,
                                               float(roi),
                                               int(time_period_days))
            print("calculated value", val)
            users = get_all_users()
            goals = get_goal_id_name_mapping_for_user(user)
            context = {
                'users': users,
                'user': user,
                'number': number,
                'start_date': start_date,
                'bank_name': bank_name,
                'roi': roi,
                'time_period_days': time_period_days,
                'principal': principal,
                'final_val': val,
                'notes': notes,
                'goal': goal,
                'mat_date': mat_date,
                'operation': 'Add Fixed Deposit',
                'goals': goals,
                'curr_module_id': 'id_fd_module'
            }
            return render(request, template, context=context)
    users = get_all_users()
    context = {
        'users': users,
        'operation': 'Add Fixed Deposit',
        'curr_module_id': 'id_fd_module'
    }
    return render(request, template, context)
def update_fixed_deposit(request, id):
    # https://www.youtube.com/watch?v=Zx09vcYq1oc&list=PLLxk3TkuAYnpm24Ma1XenNeq1oxxRcYFT
    template = 'fixed-deposits/add_fixed_deposit.html'
    if request.method == 'POST':
        print(request.POST)
        if "submit" in request.POST:
            print("submit button pressed")
            try:
                fd_obj = FixedDeposit.objects.get(id=id)
                fd_obj.number = request.POST['number']
                fd_obj.bank_name = request.POST['bank_name']
                fd_obj.start_date = request.POST['start_date']
                fd_obj.user = request.POST['user']
                fd_obj.time_period_days = Decimal(
                    request.POST['time_period_days'])
                fd_obj.roi = Decimal(request.POST['roi'])
                fd_obj.principal = Decimal(request.POST['principal'])
                fd_obj.final_val = Decimal(request.POST['final_val'])
                goal = request.POST.get('goal', '')
                if goal != '':
                    fd_obj.goal = Decimal(goal)
                else:
                    fd_obj.goal = None
                fd_obj.notes = request.POST['notes']
                fd_obj.mat_date = request.POST['mat_date']
                fd_obj.save()
            except FixedDeposit.DoesNotExist:
                pass
        else:
            print("calculate button pressed")
            number = request.POST['number']
            bank_name = request.POST['bank_name']
            start_date = request.POST['start_date']
            user = request.POST['user']
            time_period_days = Decimal(request.POST['time_period_days'])
            principal = Decimal(request.POST['principal'])
            roi = Decimal(request.POST['roi'])
            notes = request.POST['notes']
            goal = request.POST.get('goal', '')
            mat_date, val = get_maturity_value(int(principal), start_date,
                                               float(roi),
                                               int(time_period_days))
            print("calculated value", val)
            users = get_all_users()
            goals = get_goal_id_name_mapping_for_user(user)
            context = {
                'goals': goals,
                'users': users,
                'user': user,
                'number': number,
                'start_date': start_date,
                'bank_name': bank_name,
                'roi': roi,
                'time_period_days': time_period_days,
                'principal': principal,
                'final_val': val,
                'notes': notes,
                'goal': goal,
                'mat_date': mat_date,
                'operation': 'Edit Fixed Deposit',
                'curr_module_id': 'id_fd_module'
            }
            return render(request, template, context=context)
        return HttpResponseRedirect("../")
    else:
        try:
            fd_obj = FixedDeposit.objects.get(id=id)
            # Always put date in %Y-%m-%d for chrome to show things properly
            users = get_all_users()
            goals = get_goal_id_name_mapping_for_user(fd_obj.user)
            context = {
                'goals': goals,
                'users': users,
                'user': fd_obj.user,
                'number': fd_obj.number,
                'start_date': fd_obj.start_date.strftime("%Y-%m-%d"),
                'bank_name': fd_obj.bank_name,
                'roi': fd_obj.roi,
                'time_period_days': fd_obj.time_period,
                'principal': fd_obj.principal,
                'final_val': fd_obj.final_val,
                'notes': fd_obj.notes,
                'goal': fd_obj.goal,
                'mat_date': fd_obj.mat_date.strftime("%Y-%m-%d"),
                'operation': 'Edit Fixed Deposit',
                'curr_module_id': 'id_fd_module'
            }
        except FixedDeposit.DoesNotExist:
            context = {'operation': 'Edit Fixed Deposit'}
        return render(request, template, context=context)
def update_account(request, id):
    template = 'bankaccounts/update_account.html'
    context = dict()
    message = ''
    message_color = 'ignore'
    try:
        ba = BankAccount.objects.get(id=id)
        if request.method == 'POST':
            try:
                number = request.POST['number']
                bank_name = request.POST['bank_name']
                start_date = request.POST['start_date']
                notes = request.POST['notes']
                currency = request.POST['currency']
                acc_type = request.POST['acc_type']
                goal = request.POST.get('goal', '')
                print(f'goal {goal}')
                if goal != '':
                    goal_id = Decimal(goal)
                else:
                    goal_id = None
                if start_date == '':
                    start_date = None
                else:
                    start_date = get_date_or_none_from_string(start_date)
                ba.number = number
                ba.bank_name = bank_name
                ba.start_date = start_date
                ba.notes = notes
                ba.goal = goal_id
                ba.currency = currency
                ba.acc_type = acc_type
                ba.save()
                message = 'Account updated successfully'
                message_color = 'green'
                update_bank_acc_bal(ba.id)
            except IntegrityError as ie:
                print(f'failed to update bank account {ie}')
                message = 'Failed to update account'
                message_color = 'red'
            except Exception as ex:
                print(f'failed to update bank account {ex}')
                message = 'Failed to update account'
                message_color = 'red'
        url = f'https://raw.githubusercontent.com/krishnakuruvadi/portfoliomanager-data/main/currencies.json'
        print(f'fetching from url {url}')
        r = requests.get(url, timeout=15)
        context['currencies'] = list()
        if r.status_code == 200:
            for entry in r.json()['currencies']:
                context['currencies'].append(entry)
        else:
            context['currencies'].append('INR')
            context['currencies'].append('USD')
        context['message'] = message
        context['message_color'] = message_color
        user_name_mapping = get_all_users()
        context['user'] = user_name_mapping[ba.user]
        context['number'] = ba.number
        context['currency'] = ba.currency
        context['notes'] = ba.notes
        context['bank_name'] = ba.bank_name
        context['acc_type'] = ba.acc_type
        context['goal'] = ba.goal if ba.goal else ''
        context['goals'] = get_goal_id_name_mapping_for_user(ba.user)

        context['curr_module_id'] = 'id_bank_acc_module'
        print(context)
        return render(request, template, context)
    except BankAccount.DoesNotExist:
        return HttpResponseRedirect(reverse('bankaccounts:account-list'))