80
trading/views.py
Normal file
80
trading/views.py
Normal file
@@ -0,0 +1,80 @@
|
||||
from django import forms
|
||||
from django.contrib.auth import views as auth_views, password_validation
|
||||
from django.contrib.auth.forms import UsernameField
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.contrib import messages
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.http import HttpResponseForbidden, HttpResponseRedirect
|
||||
from django.views.generic import TemplateView
|
||||
from django.views.generic.detail import DetailView
|
||||
from django.views.generic.edit import CreateView, UpdateView
|
||||
from django.urls import reverse, reverse_lazy
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from trading.models import User, Commodity, MaxCommodityError
|
||||
|
||||
|
||||
class IndexView(LoginRequiredMixin, TemplateView):
|
||||
template_name = "trading/index.html"
|
||||
|
||||
|
||||
class CommodityDetailView(DetailView):
|
||||
template_name = "trading/c/detail.html"
|
||||
model = Commodity
|
||||
|
||||
|
||||
class CommodityCreateView(LoginRequiredMixin, CreateView):
|
||||
template_name = "trading/c/create.html"
|
||||
model = Commodity
|
||||
fields = (
|
||||
"name",
|
||||
"in_circulation",
|
||||
)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context["object"] = self.request.user
|
||||
return context
|
||||
|
||||
def form_valid(self, form):
|
||||
user = self.request.user
|
||||
if not user.can_create_commodity():
|
||||
raise MaxCommodityError(user)
|
||||
form.instance.created_by = user
|
||||
return super(CreateView, self).form_valid(form)
|
||||
|
||||
|
||||
class UserProfileView(DetailView):
|
||||
template_name = "trading/u/profile.html"
|
||||
model = User
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
if self.object.is_active:
|
||||
status = "Active"
|
||||
else:
|
||||
status = "Inactive"
|
||||
context["object_status"] = status
|
||||
return context
|
||||
|
||||
|
||||
class UserUpdateSettingsForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = User
|
||||
fields = (
|
||||
"username",
|
||||
"email",
|
||||
)
|
||||
field_classes = {"username": UsernameField}
|
||||
|
||||
def __init__(self, user, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
|
||||
class UserSettingsView(LoginRequiredMixin, UpdateView):
|
||||
template_name = "trading/account/settings.html"
|
||||
model = User
|
||||
fields = ("username", "email")
|
||||
success_url = reverse_lazy("trading:settings")
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
return self.request.user
|
||||
Reference in New Issue
Block a user