diff --git a/api/urls.py b/api/urls.py
index eb8ecb1..176d031 100755
--- a/api/urls.py
+++ b/api/urls.py
@@ -11,6 +11,8 @@ from .views import (
NoteViewSet,
DocumentViewSet,
ReviewViewSet,
+ ContractorResumeViewSet,
+ ContractorResumeFilesViewSet,
)
@@ -20,6 +22,8 @@ router.register(r'locations', LocationViewSet)
router.register(r'projects', ProjectViewSet)
router.register(r'stages', StageViewSet)
router.register(r'reviews', ReviewViewSet)
+router.register(r'contractorresume', ContractorResumeViewSet)
+router.register(r'contractorresumefiles', ContractorResumeFilesViewSet)
router.register(r'documents', DocumentViewSet)
router.register(r'realties', RealtyViewSet)
router.register(r'specializations', SpecializationViewSet)
diff --git a/api/views.py b/api/views.py
index 09410c3..49d7f8d 100755
--- a/api/views.py
+++ b/api/views.py
@@ -10,9 +10,9 @@ from specializations.models import Specialization
from specializations.serializers import SpecializationSerializer
from specializations.filters import SpecializationFilterSet
-from users.models import User
-from users.serializers import UserSerializer
-from users.filters import UserFilterSet
+from users.models import User, ContractorResumeFiles, ContractorResume
+from users.serializers import UserSerializer, ContractorResumeFilesSerializer, ContractorResumeSerializer
+from users.filters import UserFilterSet, ContractorResumeFilesFilterSet, ContractorResumeFilterSet
from common.models import Location
from common.serializers import LocationSerializer
@@ -27,6 +27,20 @@ from reviews.serializers import ReviewSerializer
from reviews.filters import ReviewFilterSet
+class ContractorResumeFilesViewSet(ModelViewSet):
+ queryset = ContractorResumeFiles.objects.all()
+ serializer_class = ContractorResumeFilesSerializer
+ # filter_class = ContractorResumeFilesFilterSet
+ permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
+
+
+class ContractorResumeViewSet(ModelViewSet):
+ queryset = ContractorResume.objects.all()
+ serializer_class = ContractorResumeSerializer
+ # filter_class = ContractorResumeFilterSet
+ permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
+
+
class StageViewSet(ModelViewSet):
queryset = Stage.objects.all()
serializer_class = StageSerializer
diff --git a/archilance/settings/base.py b/archilance/settings/base.py
index 9b25660..2c76934 100644
--- a/archilance/settings/base.py
+++ b/archilance/settings/base.py
@@ -183,12 +183,12 @@ SOCIAL_AUTH_PIPELINE = (
'social.pipeline.social_auth.social_user',
'social.pipeline.user.get_username',
'users.pipeline.add_email_for_user',
- # 'users.pipeline.test_contractor',
'social.pipeline.mail.mail_validation',
'social.pipeline.user.create_user',
'social.pipeline.social_auth.associate_user',
'social.pipeline.social_auth.load_extra_data',
'social.pipeline.user.user_details',
+ 'users.pipeline.test_contractor',
)
FIELDS_STORED_IN_SESSION = ['user_type']
diff --git a/common/templates/printorder_detail.html b/common/templates/printorder_detail.html
new file mode 100644
index 0000000..dec4ea2
--- /dev/null
+++ b/common/templates/printorder_detail.html
@@ -0,0 +1 @@
+
{{ object }}
diff --git a/common/urls.py b/common/urls.py
index de30340..10e2318 100644
--- a/common/urls.py
+++ b/common/urls.py
@@ -2,10 +2,12 @@ from django.conf import urls
from .views import (
PrintDocumentCreate,
+ PrintOrderDetailView,
)
app_name = 'common'
urlpatterns = [
urls.url(r'^printdocument/create/$', PrintDocumentCreate.as_view(), name='create'),
+ urls.url(r'^printorder/(?P\d+)/$', PrintOrderDetailView.as_view(), name='print-order-detail'),
]
diff --git a/common/views.py b/common/views.py
index 104893b..b5b3865 100644
--- a/common/views.py
+++ b/common/views.py
@@ -2,13 +2,18 @@ from django.shortcuts import render, redirect
from django.contrib import messages
from django.core.mail import send_mail, EmailMultiAlternatives
from django.template.loader import get_template, render_to_string
-from django.views.generic import View
+from django.views.generic import View, DetailView
from archilance.mixins import BaseMixin
from .forms import PrintOrderForm
from .models import PrintDocuments, PrintOrder, Settings
+class PrintOrderDetailView(DetailView):
+ model = PrintOrder
+ template_name = 'printorder_detail.html'
+
+
class PrintDocumentCreate(BaseMixin, View):
form_class = PrintOrderForm
template_name = 'printdocument_create.html'
@@ -27,7 +32,7 @@ class PrintDocumentCreate(BaseMixin, View):
print_doc = PrintDocuments.objects.create(file=file, printorder=print_order)
print_doc.save()
- print_documents = PrintDocuments.objects.all()
+ print_documents = print_order.print_documents.all()
limit_size = 10 * 1024 * 1024
attachments = []
link_files = []
@@ -57,7 +62,7 @@ class PrintDocumentCreate(BaseMixin, View):
msg.send()
messages.info(request, 'Заявка на распечатку принята')
- return redirect('common:create')
+ return redirect('common:print-order-detail',pk=print_order.pk)
# import code; code.interact(local=dict(globals(), **locals()))
else:
context = self.get_context_data(**kwargs)
diff --git a/templates/registration/registration_form.html b/templates/registration/registration_form.html
index 285f4d9..dc7dfbb 100644
--- a/templates/registration/registration_form.html
+++ b/templates/registration/registration_form.html
@@ -57,7 +57,7 @@
diff --git a/users/filters.py b/users/filters.py
index c796aff..6c6d611 100755
--- a/users/filters.py
+++ b/users/filters.py
@@ -1,5 +1,6 @@
from rest_framework_filters import FilterSet, RelatedFilter, AllLookupsFilter
-from .models import User, Team
+from .models import User, Team, ContractorResumeFiles, ContractorResume
+
class UserFilterSet(FilterSet):
id = AllLookupsFilter()
@@ -19,6 +20,24 @@ class TeamFilterSet(FilterSet):
name = AllLookupsFilter()
owner = RelatedFilter('users.filters.UserFilterSet')
-
class Meta:
model = Team
+
+
+class ContractorResumeFilterSet(FilterSet):
+ id = AllLookupsFilter()
+ text = AllLookupsFilter()
+ resume_file = AllLookupsFilter()
+
+ class Meta:
+ model = ContractorResume
+
+
+class ContractorResumeFilesFilterSet(FilterSet):
+ id = AllLookupsFilter()
+ title = AllLookupsFilter()
+ img = AllLookupsFilter()
+ resume = RelatedFilter('users.filters.ContractorResumeFilterSet')
+
+ class Meta:
+ model = ContractorResumeFiles
diff --git a/users/forms.py b/users/forms.py
index fa12a56..31e0c77 100644
--- a/users/forms.py
+++ b/users/forms.py
@@ -2,7 +2,7 @@ from django import forms
import itertools
import pydash as _; _.map = _.map_; _.filter = _.filter_
-from .models import User, UserFinancialInfo, Team, ContractorResume, GENDERS
+from .models import User, UserFinancialInfo, Team, ContractorResume, ContractorResumeFiles, GENDERS
from common.models import Location
from projects.models import Project, Realty, BuildingClassfication, ConstructionType
from specializations.models import Specialization
@@ -26,6 +26,18 @@ class ContractorResumeForm(forms.ModelForm):
'text',
)
+class ContractorResumeFilesForm(forms.ModelForm):
+
+ class Meta:
+ model = ContractorResumeFiles
+
+ fields = (
+ 'type',
+ 'resume',
+ )
+
+
+
class UserProfileEditForm(forms.ModelForm):
gender = forms.ChoiceField(
choices=GENDERS,
diff --git a/users/models.py b/users/models.py
index a3d995c..8e2ec92 100644
--- a/users/models.py
+++ b/users/models.py
@@ -101,8 +101,8 @@ class ContractorResumeFiles(models.Model):
description = models.TextField(blank=True)
img = models.ImageField(upload_to='users/resume/images/')
resume = models.ForeignKey(ContractorResume, related_name='resume_files')
- title = models.CharField(max_length=255)
- type = models.CharField(max_length=50, choices=RESUME_TYPE_FILES)
+ title = models.CharField(max_length=255,blank=True)
+ type = models.CharField(max_length=50, choices=RESUME_TYPE_FILES, default='diplom')
def __str__(self):
return self.title
diff --git a/users/pipeline.py b/users/pipeline.py
index 0870121..e181e8b 100644
--- a/users/pipeline.py
+++ b/users/pipeline.py
@@ -1,21 +1,30 @@
from django.shortcuts import redirect, render_to_response
-
from social.pipeline.partial import partial
+from django.contrib.auth.models import Group
+from users.models import ContractorResume
@partial
-def test_contractor(backend, details, response, is_new=False, *args, **kwargs):
- import code; code.interact(local=dict(globals(), **locals()))
-
+def test_contractor(backend, details, response, user,is_new=False, *args, **kwargs):
+ if is_new:
+ group_name = 'Исполнители'
+ g = Group.objects.get(name=group_name)
+ g.user_set.add(user)
+ if group_name == 'Исполнители':
+ resume = ContractorResume.objects.create(text='Здесь должна быть описание вашего резюме')
+ user.contractor_resume = resume
+ user.save()
@partial
def add_email_for_user(backend, details, response, is_new=False, *args, **kwargs):
data = backend.strategy.request_data()
- # import code; code.interact(local=dict(globals(), **locals()))
- if not details.get('email'):
- if 'email' in kwargs['request']:
- return {'email': kwargs['request']['email']}
- else:
- return render_to_response('add_email_form.html')
+ if is_new:
+ if not details.get('email'):
+ if 'email' in kwargs['request']:
+ return {'email': kwargs['request']['email']}
+ else:
+ return render_to_response('add_email_form.html')
+
+
@partial
def require_email(strategy, details, user=None, is_new=False, *args, **kwargs):
if kwargs.get('ajax') or user and user.email:
@@ -26,3 +35,4 @@ def require_email(strategy, details, user=None, is_new=False, *args, **kwargs):
details['email'] = email
else:
return redirect('require_email')
+
diff --git a/users/serializers.py b/users/serializers.py
index 59c94db..9f21146 100755
--- a/users/serializers.py
+++ b/users/serializers.py
@@ -1,11 +1,36 @@
from rest_framework.serializers import ModelSerializer
-from .models import User, Team
+from .models import User, Team, ContractorResumeFiles, ContractorResume
from projects.models import Project
-class TeamSerializer(ModelSerializer):
+class ContractorResumeSerializer(ModelSerializer):
+ class Meta:
+ model = ContractorResume
+
+ fields = (
+ 'id',
+ 'resume_file',
+ 'text',
+ )
+
+
+class ContractorResumeFilesSerializer(ModelSerializer):
+ class Meta:
+ model = ContractorResumeFiles
+ fields = (
+ 'id',
+ 'description',
+ 'img',
+ 'resume',
+ 'title',
+ 'type',
+ 'resume',
+ )
+
+
+class TeamSerializer(ModelSerializer):
class Meta:
model = Team
@@ -17,8 +42,8 @@ class TeamSerializer(ModelSerializer):
'users',
)
-class UserSerializer(ModelSerializer):
+class UserSerializer(ModelSerializer):
class Meta:
model = User
@@ -48,20 +73,19 @@ class UserSerializer(ModelSerializer):
# 'is_active',
# 'is_admin',
# )
-
- # def create(self, validated_data):
- # return User.objects.create(**validated_data)
-
- # def update(self, inst, validated_data):
- # inst.email = validated_data.get('email', inst.email)
- # inst.first_name = validated_data.get('first_name', inst.first_name)
- # inst.is_active = validated_data.get('is_active', inst.is_active)
- # inst.last_name = validated_data.get('last_name', inst.last_name)
- # # inst.projects = validated_data.get('projects', inst.projects)
- #
- # inst.save()
- #
- # return inst
+ # def create(self, validated_data):
+ # return User.objects.create(**validated_data)
+
+ # def update(self, inst, validated_data):
+ # inst.email = validated_data.get('email', inst.email)
+ # inst.first_name = validated_data.get('first_name', inst.first_name)
+ # inst.is_active = validated_data.get('is_active', inst.is_active)
+ # inst.last_name = validated_data.get('last_name', inst.last_name)
+ # # inst.projects = validated_data.get('projects', inst.projects)
+ #
+ # inst.save()
+ #
+ # return inst
# import code; code.interact(local=dict(globals(), **locals()))
diff --git a/users/templates/add_email_form.html b/users/templates/add_email_form.html
index 364b4bd..e32ce1f 100644
--- a/users/templates/add_email_form.html
+++ b/users/templates/add_email_form.html
@@ -1,9 +1,20 @@
{% extends 'partials/base.html' %}
{% block content %}
-Введите свой email
-
+ {% include 'partials/header.html' %}
+
+
+
+
+
+
+ {% include 'partials/footer.html' %}
+
+
+
{% endblock %}
diff --git a/users/templates/contractor_profile.html b/users/templates/contractor_profile.html
index e2c53ba..29b7f5e 100644
--- a/users/templates/contractor_profile.html
+++ b/users/templates/contractor_profile.html
@@ -313,7 +313,6 @@
Редактировать текст резюме
-
-
+
Дипломы / Сертификаты
@@ -358,8 +357,8 @@
{{ diplom.title }}
@@ -392,7 +391,7 @@
{{ cro.title }}