diff --git a/apps/course/templates/course/_items.html b/apps/course/templates/course/_items.html index a251747a..c6df667b 100644 --- a/apps/course/templates/course/_items.html +++ b/apps/course/templates/course/_items.html @@ -1,26 +1,36 @@ {% load static %} - -
-
Подробнее
- {% if course.is_featured %} +
+ + +
Подробнее
+ {% if course.is_featured %}
- {% endif %} - {% if course.is_deferred_start %} + {% endif %} {% if course.is_deferred_start %}
До запуска курса осталось:
-
{{ course.deferred_start_at_humanize }}
+
{{ course.deferred_start_at.timestamp }}
- {% endif %} -
-
{{ course.category | upper }} - {% if not course.is_free %}
{{ course.price|floatformat:"-2" }}$
{% endif %} + {% endif %} + +
+ {{ course.category | upper }} + {% if not course.is_free %} +
{{ course.price|floatformat:"-2" }}$
{% endif %}
{{ course.title }}
{{ course.short_description }}
-
+ {% if course.author.photo %} +
+ +
+ {% else %} +
+ +
+ {% endif %}
{{ course.author.first_name }} {{ course.author.last_name }}
diff --git a/apps/user/admin.py b/apps/user/admin.py index 694323fa..76e27edc 100644 --- a/apps/user/admin.py +++ b/apps/user/admin.py @@ -1 +1,19 @@ from django.contrib import admin +from django.contrib.auth import get_user_model +from django.contrib.auth.admin import UserAdmin as BaseUserAdmin +from django.utils.translation import gettext_lazy as _ + +User = get_user_model() + + +@admin.register(User) +class UserAdmin(BaseUserAdmin): + fieldsets = ( + (None, {'fields': ('username', 'password')}), + (_('Personal info'), {'fields': ('first_name', 'last_name', 'email', 'gender', 'about', 'photo')}), + ('Facebook Auth data', {'fields': ('fb_id', 'fb_data', 'is_email_proved')}), + (_('Permissions'), {'fields': ('role', 'is_active', 'is_staff', 'is_superuser', + 'groups', 'user_permissions')}), + (_('Important dates'), {'fields': ('last_login', 'date_joined')}), + ('Social urls', {'fields': ('instagram', 'facebook', 'twitter', 'pinterest', 'youtube', 'vkontakte', )}), + ) diff --git a/apps/user/apps.py b/apps/user/apps.py index fb1e7335..f4abee09 100644 --- a/apps/user/apps.py +++ b/apps/user/apps.py @@ -3,4 +3,5 @@ from django.apps import AppConfig class UserConfig(AppConfig): name = 'apps.user' - label = 'lilcity_user' + label = 'apps.user' + verbose_name = 'Пользователи' diff --git a/apps/user/migrations/0002_auto_20180129_0537.py b/apps/user/migrations/0002_auto_20180129_0537.py new file mode 100644 index 00000000..7c157928 --- /dev/null +++ b/apps/user/migrations/0002_auto_20180129_0537.py @@ -0,0 +1,53 @@ +# Generated by Django 2.0.1 on 2018-01-29 05:37 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('user', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='photo', + field=models.ImageField(blank=True, null=True, upload_to='users', verbose_name='Фото'), + ), + migrations.AlterField( + model_name='user', + name='about', + field=models.CharField(default='', max_length=1000, verbose_name='О себе'), + ), + migrations.AlterField( + model_name='user', + name='city', + field=models.CharField(default='', max_length=85, verbose_name='Город'), + ), + migrations.AlterField( + model_name='user', + name='country', + field=models.CharField(default='', max_length=50, verbose_name='Страна'), + ), + migrations.AlterField( + model_name='user', + name='gender', + field=models.CharField(choices=[('n', 'не указан'), ('m', 'Мужчина'), ('f', 'Женщина')], max_length=1, verbose_name='Пол'), + ), + migrations.AlterField( + model_name='user', + name='is_email_proved', + field=models.BooleanField(default=False, verbose_name='Верифицирован по email'), + ), + migrations.AlterField( + model_name='user', + name='role', + field=models.PositiveSmallIntegerField(choices=[(0, 'пользователь'), (1, 'автор'), (2, 'администратор')], default=0, verbose_name='Роль'), + ), + migrations.AlterField( + model_name='user', + name='vkontakte', + field=models.URLField(default='', verbose_name='ВКонтакте'), + ), + ] diff --git a/apps/user/migrations/0003_auto_20180129_0624.py b/apps/user/migrations/0003_auto_20180129_0624.py new file mode 100644 index 00000000..86e4ad32 --- /dev/null +++ b/apps/user/migrations/0003_auto_20180129_0624.py @@ -0,0 +1,59 @@ +# Generated by Django 2.0.1 on 2018-01-29 06:24 + +import django.contrib.postgres.fields.jsonb +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('user', '0002_auto_20180129_0537'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='about', + field=models.CharField(blank=True, default='', max_length=1000, verbose_name='О себе'), + ), + migrations.AlterField( + model_name='user', + name='facebook', + field=models.URLField(blank=True, default='', null=True), + ), + migrations.AlterField( + model_name='user', + name='fb_data', + field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default={}, null=True), + ), + migrations.AlterField( + model_name='user', + name='gender', + field=models.CharField(choices=[('n', 'не указан'), ('m', 'Мужчина'), ('f', 'Женщина')], default='n', max_length=1, verbose_name='Пол'), + ), + migrations.AlterField( + model_name='user', + name='instagram', + field=models.URLField(blank=True, default='', null=True), + ), + migrations.AlterField( + model_name='user', + name='pinterest', + field=models.URLField(blank=True, default='', null=True), + ), + migrations.AlterField( + model_name='user', + name='twitter', + field=models.URLField(blank=True, default='', null=True), + ), + migrations.AlterField( + model_name='user', + name='vkontakte', + field=models.URLField(blank=True, default='', null=True, verbose_name='ВКонтакте'), + ), + migrations.AlterField( + model_name='user', + name='youtube', + field=models.URLField(blank=True, default='', null=True), + ), + ] diff --git a/apps/user/models.py b/apps/user/models.py index c0aac8ca..c21cc819 100644 --- a/apps/user/models.py +++ b/apps/user/models.py @@ -17,19 +17,20 @@ class User(AbstractUser): ) email = models.EmailField(_('email address'), unique=True) role = models.PositiveSmallIntegerField('Роль', default=0, choices=ROLE_CHOICES) - gender = models.CharField('Пол', max_length=1, choices=GENDER_CHOICES) + gender = models.CharField('Пол', max_length=1, default='n', choices=GENDER_CHOICES) country = models.CharField('Страна', max_length=50, default='') city = models.CharField('Город', max_length=85, default='') - about = models.CharField('О себе', max_length=1000, default='') - instagram = models.URLField(default='') - facebook = models.URLField(default='') - twitter = models.URLField(default='') - pinterest = models.URLField(default='') - youtube = models.URLField(default='') - vkontakte = models.URLField('ВКонтакте', default='') + about = models.CharField('О себе', max_length=1000, default='', blank=True) + instagram = models.URLField(default='', null=True, blank=True) + facebook = models.URLField(default='', null=True, blank=True) + twitter = models.URLField(default='', null=True, blank=True) + pinterest = models.URLField(default='', null=True, blank=True) + youtube = models.URLField(default='', null=True, blank=True) + vkontakte = models.URLField('ВКонтакте', default='', null=True, blank=True) fb_id = models.PositiveIntegerField(null=True, blank=True, unique=True) - fb_data = pgfields.JSONField(default={}) + fb_data = pgfields.JSONField(default={}, null=True, blank=True) is_email_proved = models.BooleanField('Верифицирован по email', default=False) + photo = models.ImageField('Фото', null=True, blank=True, upload_to='users') USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['username'] diff --git a/project/templates/lilcity/index.html b/project/templates/lilcity/index.html index 380acc39..e1356ad9 100644 --- a/project/templates/lilcity/index.html +++ b/project/templates/lilcity/index.html @@ -46,6 +46,9 @@ } + diff --git a/project/urls.py b/project/urls.py index 1beebd12..c54f8cc6 100644 --- a/project/urls.py +++ b/project/urls.py @@ -24,7 +24,7 @@ urlpatterns = [ path('admin/', admin.site.urls), path('auth/', include(('apps.auth.urls', 'lilcity'))), path('courses/', CoursesView.as_view(), name='courses'), - path('courses//like/', likes, name='likes'), + path('courses//like', likes, name='likes'), path('', TemplateView.as_view(template_name="templates/lilcity/main.html"), name='index'), ]