#ARC-18 Add stages and update stages for customer

remotes/origin/setup
Mukhtar 10 years ago
parent 0dfbce1186
commit 3e2cc8c348
  1. 7
      api/views.py
  2. 3
      archilance/settings/base.py
  3. 133
      chat/templates/chat_customer.html
  4. 41
      chat/templates/test1.html
  5. 4
      chat/views.py
  6. 11
      projects/serializers.py
  7. 1
      users/templates/contractor_profile.html

@ -1,6 +1,6 @@
from django.db.models import Q
from rest_framework.viewsets import ModelViewSet
from rest_framework import permissions
from projects.models import Project, Realty, Stage
from projects.serializers import ProjectSerializer, RealtySerializer, StageSerializer
@ -27,6 +27,11 @@ class StageViewSet(ModelViewSet):
queryset = Stage.objects.all()
serializer_class = StageSerializer
filter_class = StageFilterSet
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
# def put(self, request, *args, **kwargs):
# # import code; code.interact(local=dict(globals(), **locals()))
# return super().update(request, *args, **kwargs)
class ProjectViewSet(ModelViewSet):

@ -238,9 +238,10 @@ REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',
# 'rest_framework.permissions.DjangoModelPermissions',
],
'PAGE_SIZE': 10,
'PAGE_SIZE': 100,
'DEFAULT_FILTER_BACKENDS': ('rest_framework_filters.backends.DjangoFilterBackend',), # djangorestframework-filters
}

@ -156,7 +156,7 @@
<div id="message-chat-order-space">
</div>
<form id="chat-order-add">
<form id="chat-order-add" style="display:none;">
<input type="hidden" name="senderId" id="senderId" value="{{ request.user.pk }}"/>
<input type="hidden" name="recipentId" id="recipentId" value=""/>
<input type="hidden" name="orderId" id="orderId" value=""/>
@ -174,43 +174,47 @@
</div>
<div class="col-lg-3 wrTAB">
<p>Этапы работы</p>
<div class="stepssBlock box-sizing disTab">
<p class="titleStepss">1 / Согласование условий</p>
<p class="textStepss">
Обсуджение задания и условий выполнения работы. Подтверждение заказа исполнителем.
</p>
<p></p>
<p class="textStepss">
Какое кол-во этапов подразумевает работа? <input type="text" id="countStage" size="3" />
</p>
</div>
<div id="formsetStage" class="numberStepp box-sizing">
<div class="insetNumStepp" id="stage1">
<p class="titleNumStepp">
<span>Этап </span>
</p>
<div class="textAreaBlock2 box-sizing disTab">
<form>
<input type="text" value="Название этапа" />
<input type="text" value="Результат этапа" />
<input type="text" value="Срок этапа" />
<input type="text" value="Цена этапа" />
<input type="text" value="" class="orderStagesInput" />
</form>
<div class="col-lg-3 wrstepschat">
<p>Этапы работы</p>
<div class="stepssBlock box-sizing disTab">
<p class="titleStepss">1 / Согласование условий</p>
<p class="textStepss">
Обсуджение задания и условий выполнения работы. Подтверждение заказа исполнителем.
</p>
<p></p>
</div>
<div class="stepssBlock box-sizing disTab">
<p class="textStepss">
Какое кол-во этапов подразумевает работа? <input type="text" id="countStage" size="3"/>
</p>
<div id="formsetStage" class="numberStepp box-sizing" style="display: none;">
<div class="insetNumStepp" id="stage1">
<p class="titleNumStepp">
<span>Этап </span>
</p>
<div class="textAreaBlock2 box-sizing disTab">
<form class="new-stages-form">
<label>Название</label>
<input type="text" name="name" />
<label>Результат</label>
<input type="text" name="result" />
<label>Стоимость</label>
<input type="text" name="cost" />
<input type="hidden" name="order" class="orderStagesInput"/>
</form>
</div>
</div>
</div>
<div class="textAreaBlock2 box-sizing disTab">
<a href="javascript:void()">сохранить</a>
<div class="textAreaBlock2 box-sizing disTab">
<a href="javascript:void()" id="addStagesForm">сохранить</a>
</div>
</div>
</div>
<div class="textAreaBlock2 FFD box-sizing disTab">
<a href="javascript:void()">согласовать</a>
</div>
</div>
<div class="textAreaBlock2 FFD box-sizing disTab">
<a href="javascript:void()">согласовать</a>
</div>
<div id="order-stages"></div>
@ -241,23 +245,48 @@
var csrftoken = getCookie('csrftoken');
$('#countStage').on('change', function(e){
$(".stages_form").each(function(){
$("#addStagesForm").on('click',function(){
$(".new-stages-form").each(function(i,v){
$.ajax({
url: '/api/stages/',
type: 'POST',
beforeSend: function (xhr) {
xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'))
},
data:$(this).serialize(),
dataType: 'json',
success: function (json) {
console.log(json);
},
error: function(e){
console.log(e);
}
});
});
});
$('#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");
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');
$("#chat-order-add").css("display", "block");
$("#formsetStage").css("display","block");
$('.order-block').each(function () {
$(this).removeClass('orAct');
});
$(this).addClass('orAct');
var orderId = $(this).attr('data-id');
var recipentId = $(this).attr('data-recipent-id');
@ -281,8 +310,8 @@
className = '';
}
inbox.innerHTML += '<div class="col-lg-12 insetCommChat '+ className +'"><div class="topCommChat">' +
'<p class="nameCommChat">'+ senderName +'</p><span>'+ v.created +'</span></div>' +
inbox.innerHTML += '<div class="col-lg-12 insetCommChat ' + className + '"><div class="topCommChat">' +
'<p class="nameCommChat">' + senderName + '</p><span>' + v.created + '</span></div>' +
'<p class="textCommChat">' + v.text + '</p></div>';
});
}
@ -296,10 +325,22 @@
success: function (json) {
var htmlInbox = "";
$.each(json.results, function (i, v) {
htmlInbox += '<div class="numberStepp box-sizing"><div class="insetNumStepp">' +
'<p class="titleNumStepp"><span>Этап '+ v.pos +'</span>'+ v.name +'</p>' +
'<p class="textNumStepp">Результаты этапа:'+ v.result+'</p><div>' +
'<p>до 16.03.2015</p><span>'+ v.cost +'<i class="fa fa-rub"></i></span></div></div></div>';
if (v.status == "not_agreed") {
htmlInbox += '<div class="numberStepp box-sizing">' +
'<p>Этап</p><form class="update-stages-form" id="stage-form-'+ v.pos +'">' +
'<label for="">Название</label><input class="form-control" type="text" value="'+ v.name +'" />' +
'<label for="">Цена</label><input class="form-control" type="text" value="'+ v.cost +'" />' +
'<input class="form-control" type="hidden" value="'+ v.order +'" />' +
'<label for="">Срок</label><input class="form-control" type="text" value="'+ v.term +'" />' +
'<label for="">Результат</label><input class="form-control" type="text" value="'+ v.result +'" />' +
'</form></div>';
} else {
htmlInbox += '<div class="numberStepp box-sizing"><div class="insetNumStepp">' +
'<p class="titleNumStepp"><span>Этап ' + v.pos + '</span>' + v.name + '</p>' +
'<p class="textNumStepp">Результаты этапа:' + v.result + '</p><div>' +
'<p>до 16.03.2015</p><span>' + v.cost + '<i class="fa fa-rub"></i></span></div></div></div>';
}
});
$("#order-stages").html(htmlInbox);
}

@ -1,10 +1,33 @@
<h1>Test page </h1>
{% extends 'partials/base.html' %}
{% block content %}
<h1>Test page </h1>
{% endblock %}
{% block js_block %}
<script type="text/javascript">
$(function () {
<form method="post" action="">
{{ formset.management_form }}
<table>
{% for form in formset %}
{{ form }}
{% endfor %}
</table>
</form>
$.ajax({
url: '/api/stages/4/',
type: 'PUT',
beforeSend: function (xhr) {
xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'))
},
data: {
name: 'Test name.HA HA HA nnnnnn ',
cost: 100,
result: 'Результат',
order: 1,
},
dataType: 'json',
success: function (json) {
console.log(json);
},
error: function(e){
console.log(e);
}
});
});
</script>
{% endblock %}

@ -53,6 +53,4 @@ class ChatUserView(View):
def test(request):
ArticleFormSet = formset_factory(ArticleForm, extra=2)
formset = ArticleFormSet()
return render(request, 'test1.html', {'formset': formset})
return render(request, 'test1.html')

@ -80,6 +80,17 @@ class StageSerializer(ModelSerializer):
)
# def update(self, inst, validated_data):
# import code; code.interact(local=dict(globals(), **locals()))
# inst.id = validated_data.get('id',inst.id)
# inst.name = validated_data.get('name', inst.name)
# inst.cost = validated_data.get('cost', inst.cost)
# inst.order = validated_data.get('order', inst.order)
# inst.result = validated_data.get('result', inst.result)
# inst.save()
# return inst
class ProjectSerializer(ModelSerializer):
customer = UserSerializer()
specialization = SpecializationSerializer()

@ -287,6 +287,7 @@
<div class="col-lg-12 wr-inset-pluss">
<div class="pluss-block">
{{ contractor.contractor_resume.text }}
</div>
<div class="gal-pluss">
<div class="inset-gp">

Loading…
Cancel
Save