' +
+ var senderName = 'Вы';
+ var className = 'youChat';
+
+ if (v.sender.id !== currentChatUser) {
+ senderName = v.sender.username;
+ className = '';
+ }
+
+ inbox.innerHTML += '
';
});
}
});
+
+ $.ajax({
+ url: '/api/stages/',
+ type: 'GET',
+ data: {csrfmiddlewaretoken: csrftoken, 'order': orderId},
+ dataType: 'json',
+ success: function (json) {
+ var htmlInbox = "";
+ $.each(json.results, function (i, v) {
+ htmlInbox += '
';
+ });
+ $("#order-stages").html(htmlInbox);
+ }
+ });
+
+
});
@@ -335,7 +365,6 @@
var senderId = $("#chat-order-add #senderId").val();
var orderId = $("#chat-order-add #orderId").val();
-
socket.add_contact_message({
"format_type": "add_message_order",
"data": {
@@ -350,8 +379,6 @@
$("#chat-order-add #chat").val("");
});
-
-
});
var userId = '{{ request.user.pk }}';
@@ -368,13 +395,12 @@
};
sock.onmessage = function (event) {
console.log(event.data);
- alert(event.data);
var message = JSON.parse(event.data);
var inbox;
if (message.answer_type == 'contact') {
- inbox = document.getElementById('message-chat-order-space');
- } else if (message.answer_type == 'order') {
inbox = document.getElementById('message-chat-space');
+ } else if (message.answer_type == 'order' || message.answer_type == 'add_order') {
+ inbox = document.getElementById('message-chat-order-space')
}
inbox.innerHTML += '
' +
diff --git a/chat/testapp.py b/chat/testapp.py
index f8e5fa7..92df387 100644
--- a/chat/testapp.py
+++ b/chat/testapp.py
@@ -101,7 +101,7 @@ class TutorialHandler(websocket.WebSocketHandler):
insert_sql = "INSERT INTO chat_message (id,text,created,order_id, sender_id,recipent_id, private_type) " \
"VALUES (DEFAULT,'{0}',NOW(),{1},{2},{3},'false')".format(message,order_id, sender_id, recipent_id)
yield self.db.execute(insert_sql)
- waiters = tuple(w for c, w in self.waiters if c == recipent_id)
+ waiters = tuple(w for c, w in self.waiters if c == recipent_id or c == sender_id)
for waiter in waiters:
waiter.write_message({'msg': message, 'answer_type': 'add_order'})
diff --git a/projects/admin.py b/projects/admin.py
index c924c0b..d878455 100644
--- a/projects/admin.py
+++ b/projects/admin.py
@@ -32,13 +32,17 @@ class ProjectAdmin(admin.ModelAdmin):
form = ProjectAdminForm
+class StageAdmin(admin.ModelAdmin):
+ list_display = ('name','status','pos','order',)
+
+
admin.site.register(Answer)
admin.site.register(Portfolio)
admin.site.register(PortfolioPhoto)
admin.site.register(Realty)
admin.site.register(Order)
admin.site.register(Candidate)
-admin.site.register(Stage)
+admin.site.register(Stage, StageAdmin)
admin.site.register(BuildingClassfication)
admin.site.register(ConstructionType)
admin.site.register(Project, ProjectAdmin)
diff --git a/projects/filters.py b/projects/filters.py
index 26813da..0323424 100755
--- a/projects/filters.py
+++ b/projects/filters.py
@@ -62,6 +62,8 @@ class StageFilterSet(FilterSet):
term = AllLookupsFilter()
cost_type = AllLookupsFilter()
term_type = AllLookupsFilter()
+ status = AllLookupsFilter()
+ pos = AllLookupsFilter()
order = RelatedFilter('projects.filters.OrderFilterSet')
class Meta:
diff --git a/projects/migrations/0002_auto_20160725_1605.py b/projects/migrations/0002_auto_20160725_1605.py
new file mode 100644
index 0000000..72874af
--- /dev/null
+++ b/projects/migrations/0002_auto_20160725_1605.py
@@ -0,0 +1,37 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-07-25 13:05
+from __future__ import unicode_literals
+
+import datetime
+from django.db import migrations, models
+from django.utils.timezone import utc
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('projects', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='stage',
+ name='created',
+ field=models.DateTimeField(default=datetime.datetime(2016, 7, 25, 13, 5, 40, 39347, tzinfo=utc)),
+ ),
+ migrations.AddField(
+ model_name='stage',
+ name='pos',
+ field=models.IntegerField(blank=True, default=0, null=True),
+ ),
+ migrations.AddField(
+ model_name='stage',
+ name='status',
+ field=models.CharField(choices=[('not_agreed', 'Не согласован'), ('in_process', 'В процессе'), ('completed', 'Завершен')], default='not_agreed', max_length=30),
+ ),
+ migrations.AlterField(
+ model_name='project',
+ name='deal_type',
+ field=models.CharField(choices=[('secure_deal', 'Безопасная сделка'), ('direct_payment', 'Прямая оплата')], default='secure_deal', max_length=20),
+ ),
+ ]
diff --git a/projects/migrations/0003_auto_20160725_1606.py b/projects/migrations/0003_auto_20160725_1606.py
new file mode 100644
index 0000000..c20c9ee
--- /dev/null
+++ b/projects/migrations/0003_auto_20160725_1606.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-07-25 13:06
+from __future__ import unicode_literals
+
+import datetime
+from django.db import migrations, models
+from django.utils.timezone import utc
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('projects', '0002_auto_20160725_1605'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='stage',
+ name='created',
+ field=models.DateTimeField(default=datetime.datetime(2016, 7, 25, 13, 6, 34, 550741, tzinfo=utc)),
+ ),
+ ]
diff --git a/projects/models.py b/projects/models.py
index 70f05aa..f97d1ff 100644
--- a/projects/models.py
+++ b/projects/models.py
@@ -149,6 +149,13 @@ class Order(models.Model):
verbose_name_plural = 'Заказы'
+STATUSES = (
+ ('not_agreed','Не согласован'),
+ ('in_process','В процессе'),
+ ('completed','Завершен'),
+)
+
+
class Stage(models.Model):
cost = models.DecimalField(max_digits=10, decimal_places=0)
cost_type = models.CharField(max_length=5, choices=CURRENCIES, default='rur')
@@ -157,11 +164,15 @@ class Stage(models.Model):
result = models.CharField(max_length=255)
term = models.IntegerField(default=0)
term_type = models.CharField(max_length=10, choices=TERMS, default='hour')
+ status = models.CharField(choices=STATUSES, max_length=30, default='not_agreed')
+ created = models.DateTimeField(default=timezone.now())
+ pos = models.IntegerField(default=0, null=True, blank=True)
def __str__(self):
return self.name
class Meta:
+ ordering = ['pos']
verbose_name = 'Этап'
verbose_name_plural = 'Этапы'
diff --git a/projects/serializers.py b/projects/serializers.py
index 604a0df..45cf44a 100755
--- a/projects/serializers.py
+++ b/projects/serializers.py
@@ -74,6 +74,9 @@ class StageSerializer(ModelSerializer):
'name',
'order',
'result',
+ 'pos',
+ 'status',
+
)
diff --git a/requirements/base.txt b/requirements/base.txt
index cfc10d3..60af455 100644
--- a/requirements/base.txt
+++ b/requirements/base.txt
@@ -36,5 +36,6 @@ six==1.10.0
sorl-thumbnail==12.3
sqlparse==0.1.19
tornado==4.3
-natsort
+nats
+ort
django-mathfilters
diff --git a/users/migrations/0002_auto_20160725_1605.py b/users/migrations/0002_auto_20160725_1605.py
new file mode 100644
index 0000000..490435d
--- /dev/null
+++ b/users/migrations/0002_auto_20160725_1605.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-07-25 13:05
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('users', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='contractorresume',
+ name='resume_file',
+ field=models.FileField(blank=True, null=True, upload_to='users/resume/files/'),
+ ),
+ migrations.AlterField(
+ model_name='contractorresume',
+ name='text',
+ field=models.TextField(blank=True, null=True),
+ ),
+ ]