from django.contrib.auth.mixins import LoginRequiredMixin from django.shortcuts import render from django.views import View from core.forms import TradeForm from core.models import Trade from core.util import logs from core.views import ObjectCreate, ObjectDelete, ObjectList, ObjectUpdate log = logs.get_logger(__name__) class TradeList(LoginRequiredMixin, ObjectList): list_template = "partials/trade-list.html" model = Trade context_object_name = "trades" context_object_name_singular = "trade" title = "Trades" title_singular = "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, ObjectCreate): model = Trade form_class = TradeForm context_object_name = "trades" context_object_name_singular = "trade" 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, ObjectUpdate): model = Trade form_class = TradeForm context_object_name = "trades" context_object_name_singular = "trade" list_url_name = "trades" list_url_args = ["type"] submit_url_name = "trade_update" class TradeDelete(LoginRequiredMixin, ObjectDelete): model = Trade context_object_name = "trades" context_object_name_singular = "trade" list_url_name = "trades" list_url_args = ["type"] class TradeDeleteAll(LoginRequiredMixin, View): template_name = "partials/notify.html" 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