Skip to content

Commit

Permalink
fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
KeoH committed Apr 25, 2018
1 parent a03ba79 commit a84e193
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 12 deletions.
15 changes: 11 additions & 4 deletions user_profile/admin.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,25 @@
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from django.utils.safestring import mark_safe
from django.utils.translation import gettext_lazy as _

from .models import UserProfile


class UserProfileAdmin(UserAdmin):

list_display = UserAdmin.list_display + ('avatar_admin',)

def avatar_admin(self, obj):
return '<figure><img width="60px" height="60px" src="{}"></figure>'.format(obj.avatar) # noqa
return mark_safe('<figure><img width="60px" height="60px" src="{}"></figure>'.format(obj.avatar.url)) # noqa

avatar_admin.allow_tags = True
avatar_admin.short_description = 'Avatar'
fieldsets = UserAdmin.fieldsets + (
('User Profile', {'fields': (
'avatar',
)}),
)


admin.site.unregister(User)
admin.site.register(User, UserProfileAdmin)
admin.site.register(UserProfile, UserProfileAdmin)
48 changes: 48 additions & 0 deletions user_profile/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Generated by Django 2.0.4 on 2018-04-25 20:42

import django.contrib.auth.models
import django.contrib.auth.validators
from django.db import migrations, models
import django.utils.timezone
import user_profile.models


class Migration(migrations.Migration):

initial = True

dependencies = [
('auth', '0009_alter_user_last_name_max_length'),
]

operations = [
migrations.CreateModel(
name='UserProfile',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('password', models.CharField(max_length=128, verbose_name='password')),
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')),
('first_name', models.CharField(blank=True, max_length=30, verbose_name='first name')),
('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')),
('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')),
('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')),
('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),
('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),
('twitter', models.CharField(blank=True, max_length=100)),
('facebook_link', models.URLField(blank=True)),
('avatar', models.ImageField(blank=True, upload_to=user_profile.models.UserProfile.save_avatar)),
('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')),
('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')),
],
options={
'verbose_name': 'user',
'verbose_name_plural': 'users',
'abstract': False,
},
managers=[
('objects', django.contrib.auth.models.UserManager()),
],
),
]
Empty file.
14 changes: 6 additions & 8 deletions user_profile/models.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
from django.contrib.auth.models import User
from django.contrib.auth.models import AbstractUser
from django.db import models
from django.conf import settings
from .storage import OverwriteStorage


class UserProfile(User):
class UserProfile(AbstractUser):

twitter = models.CharField(max_length=100, blank=True)
facebook_link = models.URLField(blank=True)
Expand All @@ -14,16 +13,15 @@ def get_twitter_url(self):

def save_avatar(self, filename):
extension = filename[filename.rfind('.'):]
new_path = 'user_profile/%s%s-avatar%s' % (
new_path = 'user_profile/{}{}-avatar{}'.format(
self.first_name, self.pk, extension)
return new_path

_avatar = models.ImageField(
storage=OverwriteStorage(), upload_to=save_avatar, blank=True)
avatar = models.ImageField(upload_to=save_avatar, blank=True)

@property
def avatar(self):
return self._avatar.url or '{}/static/img/default.png'.format(
def get_avatar(self):
return self.avatar.url or '{}/static/img/default.png'.format(
settings.STATIC_URL)

def __str__(self):
Expand Down

0 comments on commit a84e193

Please sign in to comment.