from django.contrib.auth.mixins import LoginRequiredMixin from django.shortcuts import render from django.views import View from two_factor.views.mixins import OTPRequiredMixin from core.forms import TradeForm from core.models import Trade from core.util import logs from core.views import ( ObjectCreate, ObjectDelete, ObjectList, ObjectNameMixin, ObjectUpdate, ) log = logs.get_logger(__name__) class TradeList(LoginRequiredMixin, OTPRequiredMixin, ObjectList): list_template = "partials/trade-list.html" model = Trade page_title = ( "List of bot and manual trades. This may not reflect actual live trades." ) page_subtitle = "Trades deleted here will not be closed on the exchange." list_url_name = "trades" list_url_args = ["type"] submit_url_name = "trade_create" delete_all_url_name = "trade_delete_all" class TradeCreate(LoginRequiredMixin, OTPRequiredMixin, ObjectCreate): model = Trade form_class = TradeForm list_url_name = "trades" list_url_args = ["type"] submit_url_name = "trade_create" def post_save(self, obj): obj.post() log.debug(f"Posting trade {obj}") class TradeUpdate(LoginRequiredMixin, OTPRequiredMixin, ObjectUpdate): model = Trade form_class = TradeForm list_url_name = "trades" list_url_args = ["type"] submit_url_name = "trade_update" class TradeDelete(LoginRequiredMixin, OTPRequiredMixin, ObjectDelete): model = Trade list_url_name = "trades" list_url_args = ["type"] class TradeDeleteAll(LoginRequiredMixin, OTPRequiredMixin, ObjectNameMixin, View): template_name = "partials/notify.html" model = Trade def delete(self, request): """ Delete all trades by the current user """ Trade.objects.filter(user=request.user).delete() context = {"message": "All trades deleted", "class": "success"} response = render(request, self.template_name, context) response["HX-Trigger"] = f"{self.context_object_name_singular}Event" return response