diff --git a/api/urls.py b/api/urls.py
index f64ce8a..81f751d 100755
--- a/api/urls.py
+++ b/api/urls.py
@@ -7,6 +7,7 @@ from .views import (
SpecializationViewSet,
UserViewSet,
MessageViewSet,
+ StageViewSet,
)
@@ -14,6 +15,7 @@ router = routers.DefaultRouter()
router.register(r'locations', LocationViewSet)
router.register(r'projects', ProjectViewSet)
+router.register(r'stages', StageViewSet)
router.register(r'realties', RealtyViewSet)
router.register(r'specializations', SpecializationViewSet)
router.register(r'users', UserViewSet)
diff --git a/api/views.py b/api/views.py
index 8aaeff2..89a3569 100755
--- a/api/views.py
+++ b/api/views.py
@@ -2,9 +2,9 @@ from django.db.models import Q
from rest_framework.viewsets import ModelViewSet
-from projects.models import Project, Realty
-from projects.serializers import ProjectSerializer, RealtySerializer
-from projects.filters import ProjectFilterSet, RealtyFilterSet
+from projects.models import Project, Realty, Stage
+from projects.serializers import ProjectSerializer, RealtySerializer, StageSerializer
+from projects.filters import ProjectFilterSet, RealtyFilterSet, StageFilterSet
from specializations.models import Specialization
from specializations.serializers import SpecializationSerializer
@@ -23,6 +23,12 @@ from chat.serializers import MessageSerializer
from chat.filters import MessageFilterSet
+class StageViewSet(ModelViewSet):
+ queryset = Stage.objects.all()
+ serializer_class = StageSerializer
+ filter_class = StageFilterSet
+
+
class ProjectViewSet(ModelViewSet):
queryset = Project.objects.all()
serializer_class = ProjectSerializer
diff --git a/chat/forms.py b/chat/forms.py
new file mode 100644
index 0000000..c65267a
--- /dev/null
+++ b/chat/forms.py
@@ -0,0 +1,7 @@
+from django import forms
+
+
+class ArticleForm(forms.Form):
+ title = forms.CharField()
+ pub_date = forms.DateField()
+
diff --git a/chat/templates/chat_customer.html b/chat/templates/chat_customer.html
index 8e2c2d9..7f7399e 100644
--- a/chat/templates/chat_customer.html
+++ b/chat/templates/chat_customer.html
@@ -154,16 +154,8 @@
- {% for msg in chat_messages %}
- {#
#}
- {#
#}
- {#
{{ msg.sender.get_full_name }}
#}
- {#
{{ msg.created }}#}
- {#
#}
- {#
{{ msg }}
#}
- {#
#}
- {% endfor %}
+
+
+
Этапы работы
@@ -187,11 +181,16 @@
Обсуджение задания и условий выполнения работы. Подтверждение заказа исполнителем.
+
+
+ Какое кол-во этапов подразумевает работа?
+
+
-
-
+
-
-
-
- Этап 2Название этапа
-
-
- Результаты этапа: Готовый чертеж 1
-
-
-
до 16.03.2015
-
30 000
-
+
+
+
согласовать
@@ -250,7 +237,25 @@
var form = document.getElementById('message_form');
var csrftoken = getCookie('csrftoken');
+
+ $('#countStage').on('change', function(e){
+ $(".stages_form").each(function(){
+ $(this).remove();
+ });
+ var countStage = parseInt($(this).val());
+ var limitCount = countStage + 1;
+ for(var i=2;i
Test page
+
+
diff --git a/chat/urls.py b/chat/urls.py
index aa77baa..3bd4c93 100644
--- a/chat/urls.py
+++ b/chat/urls.py
@@ -2,10 +2,12 @@ from django.conf import urls
from .views import (
ChatUserView,
+ test,
)
app_name = 'chat'
urlpatterns = [
urls.url(r'^$', ChatUserView.as_view(), name='chat-user'),
+ urls.url(r'^test/$', test),
]
diff --git a/chat/views.py b/chat/views.py
index e1d3b70..1268f22 100644
--- a/chat/views.py
+++ b/chat/views.py
@@ -1,8 +1,10 @@
from django.shortcuts import render
from django.views.generic import View
from django.db.models import Q
+from django.forms import formset_factory
from .models import Message
+from .forms import ArticleForm
from users.models import User
@@ -24,7 +26,7 @@ class ChatUserView(View):
contacts_users = User.objects.filter(pk__in=users_ids)
chat_messages = Message.objects.filter(Q(sender=request.user.pk) | Q(recipent=request.user.pk))
- orders = request.user.projects.select_related('order').all()
+ orders = request.user.projects.select_related('order').exclude(order__contractor__isnull=True)
self.template_name = 'chat_customer.html'
return render(request, self.template_name, {'contacts_users': contacts_users,
'chat_messages': chat_messages,
@@ -48,3 +50,9 @@ class ChatUserView(View):
'contacts_users': contacts_users,
'chat_messages': chat_messages
})
+
+
+def test(request):
+ ArticleFormSet = formset_factory(ArticleForm, extra=2)
+ formset = ArticleFormSet()
+ return render(request, 'test1.html', {'formset': formset})
diff --git a/projects/filters.py b/projects/filters.py
index 3fc0181..26813da 100755
--- a/projects/filters.py
+++ b/projects/filters.py
@@ -1,6 +1,6 @@
from rest_framework_filters import FilterSet, RelatedFilter, AllLookupsFilter
-from .models import Project, Realty, BuildingClassfication, ConstructionType
+from .models import Project, Stage, Order, Realty, BuildingClassfication, ConstructionType
class BuildingClassficationFilterSet(FilterSet):
@@ -42,6 +42,32 @@ class ProjectFilterSet(FilterSet):
model = Project
+class OrderFilterSet(FilterSet):
+ id = AllLookupsFilter()
+ contractor = RelatedFilter('users.filters.UserFilterSet')
+ created = AllLookupsFilter()
+ project = RelatedFilter('projects.filters.ProjectFilterSet')
+ secure = AllLookupsFilter()
+ status = AllLookupsFilter()
+
+ class Meta:
+ model = Order
+
+
+class StageFilterSet(FilterSet):
+ id = AllLookupsFilter()
+ name = AllLookupsFilter()
+ result = AllLookupsFilter()
+ cost = AllLookupsFilter()
+ term = AllLookupsFilter()
+ cost_type = AllLookupsFilter()
+ term_type = AllLookupsFilter()
+ order = RelatedFilter('projects.filters.OrderFilterSet')
+
+ class Meta:
+ model = Stage
+
+
class RealtyFilterSet(FilterSet):
id = AllLookupsFilter()
name = AllLookupsFilter()
diff --git a/projects/serializers.py b/projects/serializers.py
index f8fa4b8..604a0df 100755
--- a/projects/serializers.py
+++ b/projects/serializers.py
@@ -1,6 +1,6 @@
from rest_framework.serializers import ModelSerializer
-from .models import Project, Realty, BuildingClassfication, ConstructionType, Order
+from .models import Project, Realty, BuildingClassfication, ConstructionType, Order, Stage
from common.serializers import LocationSerializer
from specializations.serializers import SpecializationSerializer
from users.serializers import UserSerializer
@@ -50,6 +50,7 @@ class OrderSerializer(ModelSerializer):
model = Order
fields = (
+ 'id',
'contractor',
'created',
'project',
@@ -58,6 +59,24 @@ class OrderSerializer(ModelSerializer):
)
+class StageSerializer(ModelSerializer):
+ # order = OrderSerializer()
+
+ class Meta:
+ model = Stage
+
+ fields = (
+ 'id',
+ 'cost',
+ 'cost_type',
+ 'term',
+ 'term_type',
+ 'name',
+ 'order',
+ 'result',
+ )
+
+
class ProjectSerializer(ModelSerializer):
customer = UserSerializer()
specialization = SpecializationSerializer()
diff --git a/templates/registration/activation_complete.html b/templates/registration/activation_complete.html
new file mode 100644
index 0000000..c390e5f
--- /dev/null
+++ b/templates/registration/activation_complete.html
@@ -0,0 +1 @@
+Активация пользователя
diff --git a/templates/users/activate/complete.html b/templates/users/activate/complete.html
new file mode 100644
index 0000000..dc6039f
--- /dev/null
+++ b/templates/users/activate/complete.html
@@ -0,0 +1,10 @@
+
+
+
+
+ Title
+
+
+ Активация
+
+
diff --git a/users/models.py b/users/models.py
index f841d64..25e071f 100644
--- a/users/models.py
+++ b/users/models.py
@@ -78,8 +78,8 @@ class ContractorFinancialInfo(models.Model):
class ContractorResume(models.Model):
- resume_file = models.FileField(upload_to='users/resume/files/')
- text = models.TextField()
+ resume_file = models.FileField(upload_to='users/resume/files/', null=True, blank=True)
+ text = models.TextField(null=True, blank=True)
def __str__(self):
return self.text
diff --git a/users/signals.py b/users/signals.py
index 5ff9b35..b32c869 100644
--- a/users/signals.py
+++ b/users/signals.py
@@ -1,7 +1,7 @@
from django.dispatch import receiver
from django.contrib.auth.models import Group
from registration.signals import user_registered
-
+from users.models import ContractorResume
@receiver(user_registered)
def user_registered_callback(sender, user, request, **kwargs):
@@ -9,6 +9,12 @@ def user_registered_callback(sender, user, request, **kwargs):
group_name = request.POST['group_id'] or None
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()
+
+
diff --git a/users/templates/contractor_profile.html b/users/templates/contractor_profile.html
index 547575f..b335576 100644
--- a/users/templates/contractor_profile.html
+++ b/users/templates/contractor_profile.html
@@ -248,7 +248,7 @@
{{ user.get_full_name }}
- {% if contractor.contractor_resume.resume_file.url %}
+ {% if contractor.contractor_resume.resume_file %}
скачать резюме
{% endif %}