-
Оплатить этап
+
Оплатить этап
Бюджет Этапа 1: р.
Итого к оплате: р.
@@ -44,6 +44,27 @@
Резервирование средств
+
+
diff --git a/chat/views.py b/chat/views.py
index 63fb363..424e45b 100644
--- a/chat/views.py
+++ b/chat/views.py
@@ -1,5 +1,6 @@
import json
from django.shortcuts import render
+from django.conf import settings
from django.views.generic import View
from django.http import HttpResponse, Http404
from django.db.models import Q
@@ -7,6 +8,7 @@ from django.contrib.auth.mixins import LoginRequiredMixin
from .models import Message
from projects.models import Order
+from wallets.models import Transaction
from users.models import User, Team
@@ -16,7 +18,7 @@ class ChatUserView(LoginRequiredMixin, View):
def get(self, request, *args, **kwargs):
# import code; code.interact(local=dict(globals(), **locals()))
user_id = request.GET.get('user_id',None)
- if request.user.is_authenticated() and request.user.is_customer():
+ if request.user.is_customer():
customer_contacts = Message.objects.values_list('sender_id', 'recipent_id'). \
filter(Q(recipent_id=request.user.pk) | Q(sender_id=request.user.pk)).filter(Q(team_id=None)).distinct()
@@ -34,10 +36,15 @@ class ChatUserView(LoginRequiredMixin, View):
chat_messages = Message.objects.filter(Q(sender=request.user.pk) | Q(recipent=request.user.pk))
orders = request.user.projects.select_related('order').exclude(order__contractor__isnull=True)
+ transaction = Transaction.objects.get_or_create(customer=request.user, type='reservation')
+ print(transaction)
self.template_name = 'chat_customer.html'
return render(request, self.template_name, {'contacts_users': contacts_users,
'chat_messages': chat_messages,
- 'orders': orders})
+ 'orders': orders,
+ 'transaction': transaction[0],
+ 'YANDEX_MONEY': settings.YANDEX_MONEY,
+ })
else:
orders = request.user.orders.all()
contractor_contacts = Message.objects.values_list('sender_id', 'recipent_id').filter(
@@ -60,13 +67,13 @@ class ChatUserView(LoginRequiredMixin, View):
else:
teams = Team.objects.filter(contractors__id=request.user.pk).all()
team_orders = Order.objects.filter(team_id__in=[team.pk for team in teams]).all()
- # team_orders = []
self.template_name = 'chat_contractor.html'
return render(request, self.template_name, {'orders': orders,
'contacts_users': contacts_users,
'chat_messages': chat_messages,
'team_orders': team_orders,
+
})
diff --git a/projects/migrations/0015_auto_20160824_1119.py b/projects/migrations/0015_auto_20160824_1119.py
new file mode 100644
index 0000000..84fa9a6
--- /dev/null
+++ b/projects/migrations/0015_auto_20160824_1119.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-24 08:19
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('projects', '0014_auto_20160824_0154'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='order',
+ name='status',
+ field=models.CharField(choices=[('created', 'Создан'), ('process', 'В процессе'), ('completed', 'Завершен')], default='created', max_length=30),
+ ),
+ ]
diff --git a/projects/models.py b/projects/models.py
index 49971af..9cbb45f 100644
--- a/projects/models.py
+++ b/projects/models.py
@@ -199,12 +199,17 @@ class AnswerFile(models.Model):
class Order(models.Model):
+ STATUSES = (
+ ('created', 'Создан'),
+ ('process', 'В процессе'),
+ ('completed', 'Завершен'),
+ )
contractor = models.ForeignKey(User, null=True, blank=True, related_name='orders')
team = models.ForeignKey(Team, null=True, blank=True, related_name='orders')
created = models.DateTimeField(default=timezone.now)
project = models.OneToOneField(Project, related_name='order')
secure = models.BooleanField(default=False)
- status = models.BooleanField(default=False)
+ status = models.CharField(max_length=30, choices=STATUSES, default='created')
def __str__(self):
return self.project.name
diff --git a/projects/views.py b/projects/views.py
index 0c5d098..034c2da 100644
--- a/projects/views.py
+++ b/projects/views.py
@@ -374,8 +374,12 @@ class CustomerProjectCreateView(BaseMixin, View):
project.customer = request.user
project.save()
form.save_m2m()
+
+ secure = False
+ if 'secure_deal' in project.deal_type:
+ secure = True
- Order.objects.create(project=project)
+ Order.objects.create(project=project, secure=secure)
for file in request.FILES.getlist('new_files'):
ProjectFile.objects.create(file=file, project=project)
diff --git a/wallets/migrations/0009_transaction_stages_id.py b/wallets/migrations/0009_transaction_stages_id.py
new file mode 100644
index 0000000..a8de5a4
--- /dev/null
+++ b/wallets/migrations/0009_transaction_stages_id.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-24 12:53
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('wallets', '0008_wallet'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='transaction',
+ name='stages_id',
+ field=models.CharField(blank=True, max_length=100, null=True),
+ ),
+ ]
diff --git a/wallets/models.py b/wallets/models.py
index bebbc19..6acef3a 100644
--- a/wallets/models.py
+++ b/wallets/models.py
@@ -70,6 +70,7 @@ class Transaction(models.Model):
voids_at = models.DateTimeField()
sum = models.DecimalField(max_digits=20, decimal_places=0, default=0)
type = models.CharField(max_length=20, choices=TYPES, default='add')
+ stages_id = models.CharField(max_length=100, null=True, blank=True)
def save(self, *args, **kwargs):
if not self.pk and self.created_at:
diff --git a/wallets/views.py b/wallets/views.py
index e5a11f8..9785045 100644
--- a/wallets/views.py
+++ b/wallets/views.py
@@ -35,13 +35,13 @@ class ScoreView(View):
def get(self, request, *args, **kwargs):
# transaction = Transaction.objects.get_or_create(customer=request.user, complete=False)
- transaction = Transaction.objects.create(customer=request.user,type='add')
+ transaction = Transaction.objects.get_or_create(customer=request.user, type='add')
user_score = get_object_or_404(User.objects, pk=kwargs.get('pk'))
current_sum_info = InvoiceHistory.objects.filter(user=user_score).aggregate(Sum('sum'))
user_score_balance = current_sum_info['sum__sum'] or 0
return render(request, self.template_name, {
- 'transaction': transaction,
+ 'transaction': transaction[0],
'YANDEX_MONEY': settings.YANDEX_MONEY,
'user_score': user_score,
'user_score_balance': user_score_balance,