From fda8332eee628a841f7b58157153219124ac9a5d Mon Sep 17 00:00:00 2001 From: Zambom Date: Thu, 15 Sep 2016 23:35:46 -0300 Subject: [PATCH] Fixing users no image display and updating admin's user form --- app/templates/home.html | 4 ++-- app/templates/home_teacher_student_content.html | 4 ++-- core/static/img/no_image.jpg | Bin 0 -> 3059 bytes users/admin.py | 4 ++-- users/forms.py | 28 ++++++++++++++++++++++++++-- users/migrations/0013_auto_20160915_2334.py | 20 ++++++++++++++++++++ users/models.py | 14 +++++++++++--- 7 files changed, 63 insertions(+), 11 deletions(-) create mode 100644 core/static/img/no_image.jpg create mode 100644 users/migrations/0013_auto_20160915_2334.py diff --git a/app/templates/home.html b/app/templates/home.html index 41c0ef0..0dc1ba6 100644 --- a/app/templates/home.html +++ b/app/templates/home.html @@ -64,7 +64,7 @@ {% block sidebar %}
- +

@@ -92,7 +92,7 @@ {% if user|has_role:'system_admin' %}
  • {% trans 'Manage Users' %}
  • {% endif %} - {% if user|has_role:'system_admin, professor' %} + {% if user|has_role:'system_admin' or user|has_role:'professor' %}
  • {% trans 'Manage Courses' %} diff --git a/app/templates/home_teacher_student_content.html b/app/templates/home_teacher_student_content.html index 7e77852..6d67231 100644 --- a/app/templates/home_teacher_student_content.html +++ b/app/templates/home_teacher_student_content.html @@ -1,9 +1,9 @@ -{% load i18n %} +{% load static i18n %} {% for notification in objects %}
  • - +
    diff --git a/core/static/img/no_image.jpg b/core/static/img/no_image.jpg new file mode 100644 index 0000000..050c385 Binary files /dev/null and b/core/static/img/no_image.jpg differ diff --git a/users/admin.py b/users/admin.py index dc3b255..d1f55a1 100644 --- a/users/admin.py +++ b/users/admin.py @@ -1,10 +1,10 @@ from django.contrib import admin from .models import User -from .forms import ProfileForm +from .forms import UserForm class UserAdmin(admin.ModelAdmin): list_display = ['username', 'name', 'email', 'is_staff', 'is_active'] search_fields = ['username', 'name', 'email'] - form = ProfileForm + form = UserForm admin.site.register(User, UserAdmin) \ No newline at end of file diff --git a/users/forms.py b/users/forms.py index 4c8e3e8..d8e28a5 100644 --- a/users/forms.py +++ b/users/forms.py @@ -1,7 +1,9 @@ # coding=utf-8 - +import os +from django.conf import settings from django import forms from django.utils.translation import ugettext_lazy as _ +from rolepermissions.shortcuts import assign_role from .models import User @@ -25,10 +27,32 @@ class ProfileForm(forms.ModelForm): } class UserForm(forms.ModelForm): + def save(self, commit=True): + super(UserForm, self).save(commit=False) + + #if not self.instance.image: + # self.instance.image = os.path.join(os.path.dirname(settings.BASE_DIR), 'uploads', 'no_image.jpg') + + self.instance.set_password(self.cleaned_data['password']) + self.instance.save() + + if self.instance.is_staff: + assign_role(self.instance, 'system_admin') + elif self.instance.type_profile == 2: + assign_role(self.instance, 'student') + elif self.instance.type_profile == 1: + assign_role(self.instance, 'professor') + + self.instance.save() + + return self.instance class Meta: model = User - fields = ['username', 'name', 'email', 'birth_date', 'city', 'state', 'gender', 'type_profile', 'cpf', 'phone', 'image', 'is_staff', 'is_active'] + fields = ['username', 'name', 'email', 'password', 'birth_date', 'city', 'state', 'gender', 'type_profile', 'cpf', 'phone', 'image', 'is_staff', 'is_active'] + widgets = { + 'password':forms.PasswordInput + } class EditUserForm(forms.ModelForm): diff --git a/users/migrations/0013_auto_20160915_2334.py b/users/migrations/0013_auto_20160915_2334.py new file mode 100644 index 0000000..9bc9ea5 --- /dev/null +++ b/users/migrations/0013_auto_20160915_2334.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10 on 2016-09-16 02:34 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0012_auto_20160908_1625'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='image', + field=models.ImageField(blank=True, upload_to='users/', verbose_name='Image'), + ), + ] diff --git a/users/models.py b/users/models.py index b3b597a..6ee6e4a 100644 --- a/users/models.py +++ b/users/models.py @@ -4,6 +4,7 @@ from django.db import models from django.core import validators from django.utils.translation import ugettext_lazy as _ from django.contrib.auth.models import AbstractBaseUser, UserManager, PermissionsMixin +from django.contrib.staticfiles.templatetags.staticfiles import static class User(AbstractBaseUser, PermissionsMixin): @@ -19,7 +20,7 @@ class User(AbstractBaseUser, PermissionsMixin): city = models.CharField(_('City'), max_length = 90, blank = True) state = models.CharField(_('State'), max_length = 30, blank = True) gender = models.CharField(_('Gender'), max_length = 1, choices = (('M', _('Male')), ('F', _('Female')))) - image = models.ImageField(verbose_name = _('Image'), blank = True, upload_to = 'users/', default = 'no_image.jpg') + image = models.ImageField(verbose_name = _('Image'), blank = True, upload_to = 'users/') birth_date = models.DateField(_('Birth Date'), null = True, blank = True) phone = models.CharField(_('Phone'), max_length = 30, blank = True) cpf = models.CharField(_('Cpf'), max_length = 15, blank = True) @@ -40,8 +41,15 @@ class User(AbstractBaseUser, PermissionsMixin): def __str__(self): return self.name or self.username - def det_full_name(self): + def get_full_name(self): return str(self) def get_short_name(self): - return str(self).split(" ")[0] \ No newline at end of file + return str(self).split(" ")[0] + + @property + def image_url(self): + if self.image and hasattr(self.image, 'url'): + return self.image.url + else: + return static('img/no_image.jpg') \ No newline at end of file -- libgit2 0.21.2