# Create your views here. from django.views.generic import ListView, DetailView from django.views.generic.edit import CreateView, UpdateView from django.contrib import messages from django.shortcuts import render, redirect from django.contrib.auth.decorators import login_required from django.contrib.auth.forms import UserCreationForm from sedes.forms import UsuarioForm from sedes.models import Sede, Perfil from django.contrib.auth.models import User class SedeList(ListView): """docstring for SedeList""" model = Sede def get_context_data(self, **kwargs): context = super(SedeList, self).get_context_data(**kwargs) context['sedes'] = 'active' context['sedes_bc'] = 'active' return context class SedeDetail(DetailView): """docstring for SedeDetail""" model = Sede def get_context_data(self, **kwargs): context = super(SedeDetail, self).get_context_data(**kwargs) context['sedes'] = 'active' context['sede_detail_bc'] = 'active' return context class SedeCreate(CreateView): """docstring for SedeCreate""" model = Sede def get_context_data(self, **kwargs): context = super(SedeCreate, self).get_context_data(**kwargs) context['sedes'] = 'active' return context def form_valid(self, form): messages.success(self.request, 'Sede %s agregada correctamente' % form.instance) return super(SedeCreate, self).form_valid(form) class SedeUpdate(UpdateView): """docstring for SedeEdit""" model = Sede def get_context_data(self, **kwargs): context = super(SedeUpdate, self).get_context_data(**kwargs) context['sedes'] = 'active' return context def form_valid(self, form): messages.success(self.request, 'Sede %s modificada correctamente' % form.instance) return super(SedeUpdate, self).form_valid(form) @login_required def usuario_list(request): usuarios = User.objects.exclude(username='dgtic') context = { 'usuario_list': usuarios, 'usuarios' : 'active', 'usuarios_bc' : 'active' } return render(request, 'sedes/usuario_list.html', context) @login_required def usuario_detail(request, pk): usuario = User.objects.get(pk=pk) context = { 'usuario' : usuario, 'usuarios' : 'active', 'usuario_detail_bc' : 'active', } return render(request, 'sedes/usuario_detail.html', context) @login_required def usuario_create(request): if request.method == 'POST': form = UserCreationForm(request.POST) if form.is_valid(): form.save() messages.success(request, ('El Usuario %s se ha guardado correctamente.' % form.instance)) return redirect('usuario-update', pk=form.instance.id) else: form = UserCreationForm() context = { 'usuarios' : 'active', 'form' : form, } return render(request, 'sedes/usuario_form.html', context) @login_required def usuario_update(request, pk): u = User.objects.get(pk=pk) if request.method == 'POST': form = UsuarioForm(request.POST, instance=u) if form.is_valid(): form.save() if form.cleaned_data['sede']: sede = form.cleaned_data['sede'] perfil = Perfil(usuario=form.instance, sede=sede) perfil.save() messages.success(request, ('El Usuario %s ha sido actualizado correctamente') % form.instance) return redirect('usuario-detail', pk=form.instance.id) else: s = None if hasattr(u, 'perfil'): s = u.perfil.sede form = UsuarioForm(instance=u, initial={'sede': s}) context = { 'usuario' : u, 'usuarios' : 'active', 'form' : form, } return render(request, 'sedes/usuario_form.html', context)