From 8e0657a0118c2440ac1b7f658d12e401dcc19859 Mon Sep 17 00:00:00 2001 From: Mukhtar Date: Mon, 11 Jul 2016 20:04:48 +0300 Subject: [PATCH] #ARC-5 Add resume files and output in template --- archilance/settings/dev.py | 2 +- templates/partials/header.html | 5 +- users/admin.py | 4 +- users/migrations/0020_auto_20160711_1759.py | 47 +++++++ .../0021_contractorresumefiles_resume.py | 22 ++++ users/models.py | 33 +++++ users/templates/contractor_profile.html | 88 +++++-------- users/templates/contractor_profile_edit.html | 5 +- users/templates/customer_profile_edit.html | 1 + work_sell/admin.py | 3 +- work_sell/migrations/0011_picture.py | 23 ++++ work_sell/models.py | 16 +++ work_sell/response.py | 19 +++ work_sell/serialize.py | 14 +++ work_sell/templates/picture_basic_form.html | 117 ++++++++++++++++++ work_sell/urls.py | 5 + work_sell/views.py | 27 +++- 17 files changed, 369 insertions(+), 62 deletions(-) create mode 100644 users/migrations/0020_auto_20160711_1759.py create mode 100644 users/migrations/0021_contractorresumefiles_resume.py create mode 100644 work_sell/migrations/0011_picture.py create mode 100644 work_sell/response.py create mode 100644 work_sell/serialize.py create mode 100644 work_sell/templates/picture_basic_form.html diff --git a/archilance/settings/dev.py b/archilance/settings/dev.py index 9603670..52aa52c 100644 --- a/archilance/settings/dev.py +++ b/archilance/settings/dev.py @@ -2,7 +2,7 @@ from .base import * # AUTH_PASSWORD_VALIDATORS = [] -# INSTALLED_APPS += ['debug_toolbar',] +INSTALLED_APPS += ['debug_toolbar',] try: from .local import * diff --git a/templates/partials/header.html b/templates/partials/header.html index 573a7ca..06745ec 100644 --- a/templates/partials/header.html +++ b/templates/partials/header.html @@ -1,4 +1,5 @@ {% load staticfiles %} + {% load thumbnail %}
@@ -54,7 +55,9 @@
{% if request.user.is_contractor %} - profile-image + {% thumbnail request.user.avatar "75x75" crop="center" as im %} + profile-image + {% endthumbnail %} {% elif request.user.is_customer %} diff --git a/users/admin.py b/users/admin.py index 4e404c4..1d81876 100644 --- a/users/admin.py +++ b/users/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin -from .models import User, Team, ContractorFinancialInfo +from .models import User, Team, ContractorFinancialInfo, ContractorResume, ContractorResumeFiles class UserAdmin(admin.ModelAdmin): @@ -13,3 +13,5 @@ class UserAdmin(admin.ModelAdmin): admin.site.register(User, UserAdmin) admin.site.register(ContractorFinancialInfo) admin.site.register(Team) +admin.site.register(ContractorResume) +admin.site.register(ContractorResumeFiles) diff --git a/users/migrations/0020_auto_20160711_1759.py b/users/migrations/0020_auto_20160711_1759.py new file mode 100644 index 0000000..0d729f3 --- /dev/null +++ b/users/migrations/0020_auto_20160711_1759.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-07-11 14:59 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0019_auto_20160710_1950'), + ] + + operations = [ + migrations.CreateModel( + name='ContractorResume', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('text', models.TextField()), + ('resume_file', models.FileField(upload_to='users/resume/files/')), + ], + options={ + 'verbose_name': 'Резюме', + 'verbose_name_plural': 'Резюме', + }, + ), + migrations.CreateModel( + name='ContractorResumeFiles', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('img', models.ImageField(upload_to='users/resume/images/')), + ('title', models.CharField(max_length=255)), + ('description', models.TextField(blank=True)), + ('type', models.CharField(choices=[('diplom', 'Дипломы/Сертификаты'), ('cro', 'Допуск CPO')], max_length=50)), + ], + options={ + 'verbose_name': 'Файлы резюме', + 'verbose_name_plural': 'Файлы резюме', + }, + ), + migrations.AddField( + model_name='user', + name='contractor_resume', + field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='contractor', to='users.ContractorResume'), + ), + ] diff --git a/users/migrations/0021_contractorresumefiles_resume.py b/users/migrations/0021_contractorresumefiles_resume.py new file mode 100644 index 0000000..00b4577 --- /dev/null +++ b/users/migrations/0021_contractorresumefiles_resume.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-07-11 16:27 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0020_auto_20160711_1759'), + ] + + operations = [ + migrations.AddField( + model_name='contractorresumefiles', + name='resume', + field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='resume_files', to='users.ContractorResume'), + preserve_default=False, + ), + ] diff --git a/users/models.py b/users/models.py index fe84289..f26d5d9 100644 --- a/users/models.py +++ b/users/models.py @@ -77,6 +77,38 @@ class ContractorFinancialInfo(models.Model): verbose_name = 'Финансовая информация' verbose_name_plural = 'Финансовая информация' +class ContractorResume(models.Model): + text = models.TextField() + resume_file = models.FileField(upload_to='users/resume/files/') + + def __str__(self): + return self.text + + class Meta: + verbose_name = 'Резюме' + verbose_name_plural = 'Резюме' + + +RESUME_TYPE_FILES = ( + ('diplom', 'Дипломы/Сертификаты'), + ('cro', 'Допуск CPO'), +) + + +class ContractorResumeFiles(models.Model): + img = models.ImageField(upload_to='users/resume/images/') + title = models.CharField(max_length=255) + description = models.TextField(blank=True) + type = models.CharField(max_length=50, choices=RESUME_TYPE_FILES) + resume = models.ForeignKey(ContractorResume, related_name='resume_files') + + def __str__(self): + return self.title + + class Meta: + verbose_name = 'Файлы резюме' + verbose_name_plural = 'Файлы резюме' + class User(AbstractBaseUser, PermissionsMixin): STATUSES = ( @@ -96,6 +128,7 @@ class User(AbstractBaseUser, PermissionsMixin): contractor_specializations = TreeManyToManyField(Specialization, related_name='contractors', blank=True) contractor_status = models.CharField(default='free', max_length=20, choices=STATUSES) contractor_financial_info = models.OneToOneField(ContractorFinancialInfo, related_name='contractor',blank=True, null=True) + contractor_resume = models.OneToOneField(ContractorResume, related_name='contractor', blank=True, null=True) location = TreeForeignKey('common.Location', related_name='users', null=True, blank=True) skype = models.CharField(max_length=100, blank=True) gender = models.CharField(max_length=30, choices=GENDERS, blank=True) diff --git a/users/templates/contractor_profile.html b/users/templates/contractor_profile.html index 8ae75fa..2a418d7 100644 --- a/users/templates/contractor_profile.html +++ b/users/templates/contractor_profile.html @@ -1,7 +1,7 @@ {% extends 'partials/base.html' %} {% load staticfiles %} - +{% load thumbnail %} {% block content %} {% include 'partials/header.html' %} @@ -11,7 +11,9 @@
- profile-image + {% thumbnail contractor.avatar "235x224" crop="center" as im %} + profile-image + {% endthumbnail %}