def post(self, request): form = self.form_class(request.POST) if form.is_valid(): user = form.save(commit=False) #storing user info locally # cleaning data username = form.cleaned_data['username'] password = form.cleaned_data['password'] #change password user.set_password(password) user.save() #returns User objects if credentials are correct user = authenticate(username=username, password=password) if user is not None: if user.is_active: login(request, user) # also need to make them a portfolio portfolio = Portfolio(user=User.objects.get( username=username)) portfolio.save() return redirect( 'index') # redirecting you back to the home page return render(request, self.template_name, {'form': form})
def create(self, validated_data): """ Overwrites the create() method to return a ``Portfolio`` object after the POSTED ``Transaction`` has occured (instead of a ``Transaction`` object). Note that the validation for the posted transaction is done in the .save() method of the model, not here. (Model raises ValidationError on errors.) """ transaction = Transaction( user=validated_data["user"], symbol=validated_data["symbol"], amount=validated_data["amount"], date_posted=validated_data["date_posted"], simulation=None, ) # this automatically adds to / substracts from # the user's Portfolio for given <symbol> # (see Portfolio's .save() method overwrite) transaction.save() try: portfolio = Portfolio.objects.get( user=validated_data["user"], symbol=validated_data["symbol"], simulation=None, ) return portfolio except Portfolio.DoesNotExist: # user sold all his stocks # > user's portfolio for given <symbol> was deleted # > return a dummy portfolio return Portfolio(symbol=validated_data["symbol"], amount=0)
def snapshot(save=True): stocks = polling() from portfolio.models import Portfolio portfolio = Portfolio(stocks) if save: portfolio.save() return portfolio
def snapshot(): stocks = polling() print(stocks) stock_list = [] for stock in stocks: stock_list.append({ 'code': stock['code'], 'name': stock['name'], 'amount': stock['amount'], 'current': stock['current'], 'percentage': stock['percentage'], 'change': stock['change'] or 0 }) from portfolio.models import Portfolio from datetime import date date = get_date(str(date.today())) print('date***{}'.format(date)) p = Portfolio(list=stock_list) p.compute() Portfolio.objects(date=date).update_one( list=p.list, market_value=p.market_value, total=p.total, net_asset=p.net_asset, cost=p.cost, cost_history=p.cost_history, cost_zs=p.cost_zs, cost_ht1=p.cost_ht1, cost_ht2=p.cost_ht2, cost_ht1_real=p.cost_ht1_real, cost_ht2_real=p.cost_ht2_real, position_ratio=p.position_ratio, financing=p.financing, lever=p.lever, cash=p.cash, profit=p.profit, profit_ratio=p.profit_ratio, profit_today=p.profit_today, profit_ratio_today=p.profit_ratio_today, upsert=True) result = Portfolio.objects.get(date=date) if result: print('result list***{}'.format(result.list)) return result else: return None
def create_portfolios(loan_number_list): print('Portfolio started....') for loan_number in loan_number_list: loan_number_str = str(loan_number) portfolio_name = loan_number_str + ' Sample Loans' new_portfolio = Portfolio(name=portfolio_name) new_portfolio.save() bank_loan_id = random.randint(500000, 600000) loans = [] # file_name = loan_number_str + '_sample_loans.csv' while len(loans) < loan_number: start_row = random.randint(0, 3000) real_world_file_number_str = str(random.randint(1, 7)) real_world_file_name = 'real_world_data/5000_real_world_loans_' + real_world_file_number_str + '.csv' with open(real_world_file_name) as real_world_csv_file: reader = csv.DictReader(real_world_csv_file) for row in reader: if start_row == 0 and len(loans) < loan_number: bank_loan_id = next_bank_loan_id(bank_loan_id) loans.append( Loan( portfolio=new_portfolio, bank_loan_id=bank_loan_id, deferred_balance=is_set(row['DEFERRED_BAL']), pmi_insurance=is_set(row['PMI']), first_payment_date=convert_date_string( row['First_Payment_Date']), junior_lien_balance=is_set( row['Junior Lien Bal']), senior_lien_balance=is_set( row['Senior Lien Bal']), mortgage_type=is_set(row['Mortgagetype']), gross_margin=is_set(row['Gross_Margin']), original_amount=is_set(row['Original_Amount']), current_value_date=convert_date_string( row['Current_Value_Date']), us_state=is_set(row['STATE']), BK_flag=is_set(row['BK_FLAG']), negam_initial_minimum_payment_period=is_set( row['Negam_Initial_Minimum_Payment_Period'] ), product_type=is_set(row['Product_Type']), remaining_term=is_set(row['Remaining_Term']), first_recast_or_next_recast=is_set( row['First_Recast/Next_Recast']), amortized_term=is_set(row['Amor_Term']), recast_cap=is_set(row['Recast_Cap']), occupancy_code=is_set(row['Occupancy']), modification_date=convert_date_string( row['Modification_Date']), negam_payment_reset_frequency=is_set( row['Negam_Payment_Reset_Frequency']), IO_term=is_set(row['IO_Term']), senior_lien_balance_date=convert_date_string( row['Senior Lien Bal Date']), icap=is_set(row['ICAP']), current_interest_rate=is_set( row['Current_Interest_Rate']), SF=is_set(row['SF']), fico=is_set(row['FICO']), pcap=is_set(row['PCAP']), interest_reset_interval=is_set( row['Interest_Reset_Interval']), recast_frequency=is_set( row['Recast_Frequency']), original_term=is_set(row['Original_Term']), as_of_date=convert_date_string( row['AS_OF_DATE']), lcap=is_set(row['LCAP']), status=is_set(row['STATUS']), MSR=is_set(row['MSR']), original_appraisal_amount=is_set( row['Original_Appraisal_Amount']), lfloor=is_set(row['LFLOOR']), purpose=is_set(row['Purpose']), reset_index=is_set(row['Reset_Index']), zipcode=is_set(row['ZIP']), property_type_code=is_set(row['Property']), lien_position=is_set(row['Lien_Position']), current_FICO_score=is_set( row['Current_FICO_Score']), current_property_value=is_set( row['Current_Property_Value']), foreclosure_referral_date=convert_date_string( row['Foreclosure_Referral_Date']), current_principal_balance=is_set( row['Current_Principal_Balance']), last_payment_received=convert_date_string( row['LAST_PMT_RECD']), original_rate=is_set(row['ORATE']), original_date=convert_date_string( row['Origination_Date']), city=is_set(row['CITY']), second_lien_piggyback_flag=is_set( row['2nd Lien Piggyback Flag']), junior_lien_balance_date=convert_date_string( row['Junior Lien Bal Date']), first_index_rate_adjustment_date= convert_date_string( row['First_Interest_Rate_Adjustment_Date'] ))) else: start_row -= 1 Loan.objects.bulk_create(loans) saved_loans = Loan.objects.filter(portfolio=new_portfolio).values() portfolio_loans_calculations = calculate_aggregate_portfolio_data( saved_loans) new_portfolio.total_loan_balance = portfolio_loans_calculations[ 'total_loan_balance'] new_portfolio.total_loan_count = portfolio_loans_calculations[ 'total_loan_count'] new_portfolio.average_loan_balance = portfolio_loans_calculations[ 'avg_loan_balance'] new_portfolio.weighted_average_coupon = portfolio_loans_calculations[ 'weighted_avg_coupon'] new_portfolio.weighted_average_life_to_maturity = portfolio_loans_calculations[ 'weighted_avg_life_to_maturity'] # Loan status summary data loan_status_summary = loans_status_summary(saved_loans) new_portfolio.current_balance = loan_status_summary["CURRENT"][ "balance"] new_portfolio.current_count = loan_status_summary["CURRENT"]["count"] new_portfolio.dpd90_balance = loan_status_summary["90 DPD"]["balance"] new_portfolio.dpd90_count = loan_status_summary["90 DPD"]["count"] new_portfolio.fc_balance = loan_status_summary["FC"]["balance"] new_portfolio.fc_count = loan_status_summary["FC"]["count"] new_portfolio.dpd60_balance = loan_status_summary["60 DPD"]["balance"] new_portfolio.dpd60_count = loan_status_summary["60 DPD"]["count"] new_portfolio.reo_balance = loan_status_summary["REO"]["balance"] new_portfolio.reo_count = loan_status_summary["REO"]["count"] new_portfolio.reperf_balance = loan_status_summary["REPERF"]["balance"] new_portfolio.reperf_count = loan_status_summary["REPERF"]["count"] new_portfolio.dpd30_balance = loan_status_summary["30 DPD"]["balance"] new_portfolio.dpd30_count = loan_status_summary["30 DPD"]["count"] new_portfolio.rem_balance = loan_status_summary["REM"]["balance"] new_portfolio.rem_count = loan_status_summary["REM"]["count"] new_portfolio.claim_balance = loan_status_summary["CLAIM"]["balance"] new_portfolio.claim_count = loan_status_summary["CLAIM"]["count"] # FICO summary data fico_results = fico_summary(saved_loans) new_portfolio.max_fico = fico_results["max_fico"] new_portfolio.min_fico = fico_results["min_fico"] new_portfolio.weighted_average_fico = fico_results["wa_fico"] print('Portfolio created...') new_portfolio.save()