from datetime import datetime from django.views.generic.edit import CreateView, UpdateView from utils.views import PaginatedListView from .models import LuxTrade, LuxOptionsTrade class LuxTradeListView(PaginatedListView): model = LuxTrade template_name = 'trading/list.html' def get_context_data(self, **kwargs): # Call the base implementation first to get a context context = super(LuxTradeListView, self).get_context_data(**kwargs) context['open_trades'] = LuxTrade.objects.filter(status=0) context['watch_trades'] = LuxTrade.objects.filter(status=2) context['options_trades'] = LuxOptionsTrade.objects.filter(status__in=[0,2]) context['options_trades_closed'] = LuxOptionsTrade.objects.filter(status=1) context['monthly_pl'] = LuxTrade.stats.get_month_pl() context['year_pl'] = LuxTrade.stats.get_year_pl() context['options_monthly_pl'] = LuxOptionsTrade.stats.get_month_pl() context['options_year_pl'] = LuxOptionsTrade.stats.get_year_pl() context['month'] = datetime.now().strftime('%h') return context def get_queryset(self): queryset = super(LuxTradeListView, self).get_queryset() return queryset.filter(status=1) class LuxTradeDetailView(UpdateView): model = LuxTrade fields = ['symbol', 'status', 'entry_price', 'stop_price', 'target_price', 'shares', 'close_price', 'notes', 'is_wanderer'] template_name = 'trading/update_form.html' success_url = '/trading/' class TradeModelFormView(CreateView): model = LuxTrade fields = ['symbol', 'status', 'entry_price', 'stop_price', 'target_price', 'shares', 'is_wanderer'] success_url = '/trading/' template_name = 'trading/create_form.html' class LuxOptionsTradeDetailView(UpdateView): model = LuxOptionsTrade fields = [ 'symbol', 'status', 'close_date', 'entry_price', 'stop_price', 'target_price', 'call_put', 'expiration_date', 'strike_price', 'contract_price', 'contract_close_price', 'number_contracts', 'delta', 'notes', 'pl' ] template_name = 'trading/update_options_form.html' success_url = '/trading/' class OptionsModelFormView(CreateView): model = LuxOptionsTrade fields = [ 'symbol', 'status', 'entry_price', 'stop_price', 'target_price', 'call_put', 'expiration_date', 'strike_price', 'contract_price', 'number_contracts', 'delta' ] success_url = '/trading/' template_name = 'trading/create_options_form.html'