# @Time : 2018/10/16 23:11 # @Author : RobbieHan # @File : views_user.py import re import json from django.shortcuts import render, HttpResponse from django.views.generic.base import View, TemplateView from django.http import HttpResponseRedirect from django.contrib.auth import authenticate, login, logout, get_user_model from django.urls import reverse from django.contrib.auth.hashers import make_password from django.shortcuts import get_object_or_404 from django.db.models import Q from .forms import LoginForm, UserCreateForm, UserUpdateForm, PasswordChangeForm from .mixin import LoginRequiredMixin from .models import Structure, Role from apps.custom import BreadcrumbMixin User = get_user_model() class IndexView(LoginRequiredMixin, View): def get(self, request): return render(request, 'index.html') class LoginView(View): def get(self, request): if not request.user.is_authenticated: return render(request, 'system/users/login.html') else: return HttpResponseRedirect('/') def post(self, request): redirect_to = request.GET.get('next', '/') login_form = LoginForm(request.POST) ret = dict(login_form=login_form) print(request.META.get('REMOTE_ADDR')) if login_form.is_valid(): user_name = request.POST['username'] pass_word = request.POST['password'] user = authenticate(username=user_name, password=pass_word) if user is not None: if user.is_active: login(request, user) return HttpResponseRedirect(redirect_to) else: ret['msg'] = '用户未激活!' else: ret['msg'] = '用户名或密码错误!' else: ret['msg'] = '用户和密码不能为空!' return render(request, 'system/users/login.html', ret) class LogoutView(View): def get(self, request): logout(request) return HttpResponseRedirect(reverse('login')) class UserView(LoginRequiredMixin, BreadcrumbMixin, TemplateView): template_name = 'system/users/user.html' class UserListView(LoginRequiredMixin, View): def get(self, request): fields = ['id', 'name', 'gender', 'mobile', 'email', 'department__name', 'post', 'superior__name', 'is_active'] filters = dict() if 'select' in request.GET and request.GET['select']: filters['is_active'] = request.GET['select'] ret = dict(data=list(User.objects.filter(**filters).values(*fields))) return HttpResponse(json.dumps(ret), content_type='application/json') class UserCreateView(LoginRequiredMixin, View): """ 添加用户 """ def get(self, request): users = User.objects.exclude(username='admin') structures = Structure.objects.values() roles = Role.objects.values() ret = { 'users': users, 'structures': structures, 'roles': roles, } return render(request, 'system/users/user_create.html', ret) def post(self, request): user_create_form = UserCreateForm(request.POST) if user_create_form.is_valid(): new_user = user_create_form.save(commit=False) new_user.password = make_password(user_create_form.cleaned_data['password']) new_user.save() user_create_form.save_m2m() ret = {'status': 'success'} else: pattern = '
  • .*?