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 %}
+
@@ -179,6 +171,8 @@ отправить
+ +

Этапы работы

@@ -187,11 +181,16 @@

Обсуджение задания и условий выполнения работы. Подтверждение заказа исполнителем.

+

+

+ Какое кол-во этапов подразумевает работа? +

+
-
-
+
+

- Этап 1 + Этап

@@ -200,25 +199,13 @@
- - сохранить
- -
-
-
-
-

- Этап 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;iTest page + +
+ {{ formset.management_form }} + + {% for form in formset %} + {{ form }} + {% endfor %} +
+
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 %}