#ARC-22 Add viewset for stages

remotes/origin/setup
Mukhtar 10 years ago
parent f3278b4605
commit 3285b3ba50
  1. 2
      api/urls.py
  2. 12
      api/views.py
  3. 7
      chat/forms.py
  4. 61
      chat/templates/chat_customer.html
  5. 10
      chat/templates/test1.html
  6. 2
      chat/urls.py
  7. 10
      chat/views.py
  8. 28
      projects/filters.py
  9. 21
      projects/serializers.py
  10. 1
      templates/registration/activation_complete.html
  11. 10
      templates/users/activate/complete.html
  12. 4
      users/models.py
  13. 8
      users/signals.py
  14. 2
      users/templates/contractor_profile.html

@ -7,6 +7,7 @@ from .views import (
SpecializationViewSet, SpecializationViewSet,
UserViewSet, UserViewSet,
MessageViewSet, MessageViewSet,
StageViewSet,
) )
@ -14,6 +15,7 @@ router = routers.DefaultRouter()
router.register(r'locations', LocationViewSet) router.register(r'locations', LocationViewSet)
router.register(r'projects', ProjectViewSet) router.register(r'projects', ProjectViewSet)
router.register(r'stages', StageViewSet)
router.register(r'realties', RealtyViewSet) router.register(r'realties', RealtyViewSet)
router.register(r'specializations', SpecializationViewSet) router.register(r'specializations', SpecializationViewSet)
router.register(r'users', UserViewSet) router.register(r'users', UserViewSet)

@ -2,9 +2,9 @@ from django.db.models import Q
from rest_framework.viewsets import ModelViewSet from rest_framework.viewsets import ModelViewSet
from projects.models import Project, Realty from projects.models import Project, Realty, Stage
from projects.serializers import ProjectSerializer, RealtySerializer from projects.serializers import ProjectSerializer, RealtySerializer, StageSerializer
from projects.filters import ProjectFilterSet, RealtyFilterSet from projects.filters import ProjectFilterSet, RealtyFilterSet, StageFilterSet
from specializations.models import Specialization from specializations.models import Specialization
from specializations.serializers import SpecializationSerializer from specializations.serializers import SpecializationSerializer
@ -23,6 +23,12 @@ from chat.serializers import MessageSerializer
from chat.filters import MessageFilterSet from chat.filters import MessageFilterSet
class StageViewSet(ModelViewSet):
queryset = Stage.objects.all()
serializer_class = StageSerializer
filter_class = StageFilterSet
class ProjectViewSet(ModelViewSet): class ProjectViewSet(ModelViewSet):
queryset = Project.objects.all() queryset = Project.objects.all()
serializer_class = ProjectSerializer serializer_class = ProjectSerializer

@ -0,0 +1,7 @@
from django import forms
class ArticleForm(forms.Form):
title = forms.CharField()
pub_date = forms.DateField()

@ -154,16 +154,8 @@
</div> </div>
<div class="col-lg-6 commChat"> <div class="col-lg-6 commChat">
<div id="message-chat-order-space"> <div id="message-chat-order-space">
{% for msg in chat_messages %}
{# <div class="col-lg-12 insetCommChat {% if msg.sender.pk == request.user.pk %}youChat{% endif %}">#}
{# <div class="topCommChat">#}
{# <p class="nameCommChat {% if msg.sender.pk == request.user.pk %}greenNCC{% endif %}">{{ msg.sender.get_full_name }}</p>#}
{# <span>{{ msg.created }}</span>#}
{# </div>#}
{# <p class="textCommChat">{{ msg }}</p>#}
{# </div>#}
{% endfor %}
</div> </div>
<form id="chat-order-add"> <form id="chat-order-add">
<input type="text" name="senderId" id="senderId" value="{{ request.user.pk }}"/> <input type="text" name="senderId" id="senderId" value="{{ request.user.pk }}"/>
<input type="text" name="recipentId" id="recipentId" value=""/> <input type="text" name="recipentId" id="recipentId" value=""/>
@ -179,6 +171,8 @@
<a href="javascript:void(0)" id="order-chat-add-message">отправить</a> <a href="javascript:void(0)" id="order-chat-add-message">отправить</a>
</div> </div>
</form> </form>
</div> </div>
<div class="col-lg-3 wrTAB"> <div class="col-lg-3 wrTAB">
<p>Этапы работы</p> <p>Этапы работы</p>
@ -187,11 +181,16 @@
<p class="textStepss"> <p class="textStepss">
Обсуджение задания и условий выполнения работы. Подтверждение заказа исполнителем. Обсуджение задания и условий выполнения работы. Подтверждение заказа исполнителем.
</p> </p>
<p></p>
<p class="textStepss">
Какое кол-во этапов подразумевает работа? <input type="text" id="countStage" size="3" />
</p>
</div> </div>
<div class="numberStepp box-sizing"> <div id="formsetStage" class="numberStepp box-sizing">
<div class="insetNumStepp"> <div class="insetNumStepp" id="stage1">
<p class="titleNumStepp"> <p class="titleNumStepp">
<span>Этап 1</span> <span>Этап </span>
</p> </p>
<div class="textAreaBlock2 box-sizing disTab"> <div class="textAreaBlock2 box-sizing disTab">
<form> <form>
@ -200,24 +199,12 @@
<input type="text" value="Срок этапа" /> <input type="text" value="Срок этапа" />
<input type="text" value="Цена этапа" /> <input type="text" value="Цена этапа" />
</form> </form>
<a href="javascript:void()">сохранить</a>
</div>
</div>
</div> </div>
<div class="numberStepp box-sizing">
<div class="insetNumStepp">
<p class="titleNumStepp">
<span>Этап 2</span>Название этапа
</p>
<p class="textNumStepp">
Результаты этапа: Готовый чертеж 1
</p>
<div>
<p>до 16.03.2015</p>
<span>30 000 <i class="fa fa-rub"></i></span>
</div> </div>
<div class="textAreaBlock2 box-sizing disTab">
<a href="javascript:void()">сохранить</a>
</div> </div>
</div> </div>
<div class="textAreaBlock2 FFD box-sizing disTab"> <div class="textAreaBlock2 FFD box-sizing disTab">
@ -250,7 +237,25 @@
var form = document.getElementById('message_form'); var form = document.getElementById('message_form');
var csrftoken = getCookie('csrftoken'); 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<limitCount;i++){
var stageCopy = $("#stage1").clone().attr("id","stage" + i).addClass("stages_form");
$("#stage1").after(stageCopy);
}
});
$('.order-block').on('click', function () { $('.order-block').on('click', function () {
$('.order-block').each(function(){
$(this).removeClass('orAct');
});
$(this).addClass('orAct');
var orderId = $(this).attr('data-id'); var orderId = $(this).attr('data-id');
var recipentId = $(this).attr('data-recipent-id'); var recipentId = $(this).attr('data-recipent-id');
$("#chat-order-add #orderId").val(orderId); $("#chat-order-add #orderId").val(orderId);

@ -0,0 +1,10 @@
<h1>Test page </h1>
<form method="post" action="">
{{ formset.management_form }}
<table>
{% for form in formset %}
{{ form }}
{% endfor %}
</table>
</form>

@ -2,10 +2,12 @@ from django.conf import urls
from .views import ( from .views import (
ChatUserView, ChatUserView,
test,
) )
app_name = 'chat' app_name = 'chat'
urlpatterns = [ urlpatterns = [
urls.url(r'^$', ChatUserView.as_view(), name='chat-user'), urls.url(r'^$', ChatUserView.as_view(), name='chat-user'),
urls.url(r'^test/$', test),
] ]

@ -1,8 +1,10 @@
from django.shortcuts import render from django.shortcuts import render
from django.views.generic import View from django.views.generic import View
from django.db.models import Q from django.db.models import Q
from django.forms import formset_factory
from .models import Message from .models import Message
from .forms import ArticleForm
from users.models import User from users.models import User
@ -24,7 +26,7 @@ class ChatUserView(View):
contacts_users = User.objects.filter(pk__in=users_ids) contacts_users = User.objects.filter(pk__in=users_ids)
chat_messages = Message.objects.filter(Q(sender=request.user.pk) | Q(recipent=request.user.pk)) 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' self.template_name = 'chat_customer.html'
return render(request, self.template_name, {'contacts_users': contacts_users, return render(request, self.template_name, {'contacts_users': contacts_users,
'chat_messages': chat_messages, 'chat_messages': chat_messages,
@ -48,3 +50,9 @@ class ChatUserView(View):
'contacts_users': contacts_users, 'contacts_users': contacts_users,
'chat_messages': chat_messages 'chat_messages': chat_messages
}) })
def test(request):
ArticleFormSet = formset_factory(ArticleForm, extra=2)
formset = ArticleFormSet()
return render(request, 'test1.html', {'formset': formset})

@ -1,6 +1,6 @@
from rest_framework_filters import FilterSet, RelatedFilter, AllLookupsFilter 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): class BuildingClassficationFilterSet(FilterSet):
@ -42,6 +42,32 @@ class ProjectFilterSet(FilterSet):
model = Project 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): class RealtyFilterSet(FilterSet):
id = AllLookupsFilter() id = AllLookupsFilter()
name = AllLookupsFilter() name = AllLookupsFilter()

@ -1,6 +1,6 @@
from rest_framework.serializers import ModelSerializer 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 common.serializers import LocationSerializer
from specializations.serializers import SpecializationSerializer from specializations.serializers import SpecializationSerializer
from users.serializers import UserSerializer from users.serializers import UserSerializer
@ -50,6 +50,7 @@ class OrderSerializer(ModelSerializer):
model = Order model = Order
fields = ( fields = (
'id',
'contractor', 'contractor',
'created', 'created',
'project', '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): class ProjectSerializer(ModelSerializer):
customer = UserSerializer() customer = UserSerializer()
specialization = SpecializationSerializer() specialization = SpecializationSerializer()

@ -0,0 +1 @@
<h1>Активация пользователя</h1>

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Активация</h1>
</body>
</html>

@ -78,8 +78,8 @@ class ContractorFinancialInfo(models.Model):
class ContractorResume(models.Model): class ContractorResume(models.Model):
resume_file = models.FileField(upload_to='users/resume/files/') resume_file = models.FileField(upload_to='users/resume/files/', null=True, blank=True)
text = models.TextField() text = models.TextField(null=True, blank=True)
def __str__(self): def __str__(self):
return self.text return self.text

@ -1,7 +1,7 @@
from django.dispatch import receiver from django.dispatch import receiver
from django.contrib.auth.models import Group from django.contrib.auth.models import Group
from registration.signals import user_registered from registration.signals import user_registered
from users.models import ContractorResume
@receiver(user_registered) @receiver(user_registered)
def user_registered_callback(sender, user, request, **kwargs): 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 group_name = request.POST['group_id'] or None
g = Group.objects.get(name=group_name) g = Group.objects.get(name=group_name)
g.user_set.add(user) g.user_set.add(user)
if group_name == 'Исполнители':
resume = ContractorResume.objects.create(text='')
user.contractor_resume = resume
user.save()

@ -248,7 +248,7 @@
<div class="col-lg-9"> <div class="col-lg-9">
<div class="top-summary"> <div class="top-summary">
<p class="name-summ">{{ user.get_full_name }}</p> <p class="name-summ">{{ user.get_full_name }}</p>
{% if contractor.contractor_resume.resume_file.url %} {% if contractor.contractor_resume.resume_file %}
<a href="{{ contractor.contractor_resume.resume_file.url }}" <a href="{{ contractor.contractor_resume.resume_file.url }}"
class="download-summ">скачать резюме</a> class="download-summ">скачать резюме</a>
{% endif %} {% endif %}

Loading…
Cancel
Save