#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. 63
      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,
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)

@ -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

@ -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 class="col-lg-6 commChat">
<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>
<form id="chat-order-add">
<input type="text" name="senderId" id="senderId" value="{{ request.user.pk }}"/>
<input type="text" name="recipentId" id="recipentId" value=""/>
@ -179,6 +171,8 @@
<a href="javascript:void(0)" id="order-chat-add-message">отправить</a>
</div>
</form>
</div>
<div class="col-lg-3 wrTAB">
<p>Этапы работы</p>
@ -187,11 +181,16 @@
<p class="textStepss">
Обсуджение задания и условий выполнения работы. Подтверждение заказа исполнителем.
</p>
<p></p>
<p class="textStepss">
Какое кол-во этапов подразумевает работа? <input type="text" id="countStage" size="3" />
</p>
</div>
<div class="numberStepp box-sizing">
<div class="insetNumStepp">
<div id="formsetStage" class="numberStepp box-sizing">
<div class="insetNumStepp" id="stage1">
<p class="titleNumStepp">
<span>Этап 1</span>
<span>Этап </span>
</p>
<div class="textAreaBlock2 box-sizing disTab">
<form>
@ -200,25 +199,13 @@
<input type="text" value="Срок этапа" />
<input type="text" value="Цена этапа" />
</form>
<a href="javascript:void()">сохранить</a>
</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 class="textAreaBlock2 FFD box-sizing disTab">
<a href="javascript:void()">согласовать</a>
@ -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<limitCount;i++){
var stageCopy = $("#stage1").clone().attr("id","stage" + i).addClass("stages_form");
$("#stage1").after(stageCopy);
}
});
$('.order-block').on('click', function () {
$('.order-block').each(function(){
$(this).removeClass('orAct');
});
$(this).addClass('orAct');
var orderId = $(this).attr('data-id');
var recipentId = $(this).attr('data-recipent-id');
$("#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 (
ChatUserView,
test,
)
app_name = 'chat'
urlpatterns = [
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.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})

@ -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()

@ -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()

@ -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):
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

@ -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()

@ -248,7 +248,7 @@
<div class="col-lg-9">
<div class="top-summary">
<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 }}"
class="download-summ">скачать резюме</a>
{% endif %}

Loading…
Cancel
Save