Какие есть варианты передать правильно период времени в прогресс-бар?
Передаю в прогресс-бар оставшийся или полный период времени. Передается не совсем верно, может кто делал уже такое, подскажите как правильно передать данные?
views.py
from django.shortcuts import render
from django.template.defaulttags import register
import datetime
from .models import Factory
@register.filter
def get_range(l):
return range(len(l))
def operator(request):
if request.method == 'POST':
start_data1 = request.POST.get('start1').split('.')
end_data1 = request.POST.get('end1').split('.')
start_data2 = request.POST.get('start2').split('.')
end_data2 = request.POST.get('end2').split('.')
start_data3 = request.POST.get('start3').split('.')
end_data3 = request.POST.get('end3').split('.')
start_data4 = request.POST.get('start4').split('.')
end_data4 = request.POST.get('end4').split('.')
start_data5 = request.POST.get('start5').split('.')
end_data5 = request.POST.get('end5').split('.')
start_data6 = request.POST.get('start6').split('.')
end_data6 = request.POST.get('end6').split('.')
f = Factory()
f.name = request.POST.get('name1')
f.order_number = request.POST.get('order1')
f.contract = request.POST.get('contract1')
f.weight = request.POST.get('weight1')
f.start_data1 = datetime.datetime(2000 + int(start_data1[2]), int(start_data1[1]), int(start_data1[0])) # год, месяц, день
f.end_start1 = datetime.datetime(2000 + int(end_data1[2]), int(end_data1[1]), int(end_data1[0]))
f.start_data2 = datetime.datetime(2000 + int(start_data2[2]), int(start_data2[1]), int(start_data2[0])) # год, месяц, день
f.end_start2 = datetime.datetime(2000 + int(end_data2[2]), int(end_data2[1]), int(end_data2[0]))
f.start_data3 = datetime.datetime(2000 + int(start_data3[2]), int(start_data3[1]), int(start_data3[0])) # год, месяц, день
f.end_start3 = datetime.datetime(2000 + int(end_data3[2]), int(end_data3[1]), int(end_data3[0]))
f.start_data4 = datetime.datetime(2000 + int(start_data4[2]), int(start_data4[1]), int(start_data4[0])) # год, месяц, день
f.end_start4 = datetime.datetime(2000 + int(end_data4[2]), int(end_data4[1]), int(end_data4[0]))
f.start_data5 = datetime.datetime(2000 + int(start_data5[2]), int(start_data5[1]), int(start_data5[0])) # год, месяц, день
f.end_start5 = datetime.datetime(2000 + int(end_data5[2]), int(end_data5[1]), int(end_data5[0]))
f.start_data6 = datetime.datetime(2000 + int(start_data6[2]), int(start_data6[1]), int(start_data6[0])) # год, месяц, день
f.end_start6 = datetime.datetime(2000 + int(end_data6[2]), int(end_data6[1]), int(end_data6[0]))
f.save()
dt = datetime.datetime.now().date()
objects = []
for i in Factory.objects.all():
object = dict()
object['id'] = i.id
object['name'] = i.name
object['order_number'] = i.order_number
object['contract'] = i.contract
object['start_data'] = i.start_data
object['end_start'] = i.end_start
object['weight'] = i.weight
object['meter'] = []
if i.end_start1 > dt:
object['meter'].append(100 - int(str(i.end_start1-dt).split()[0])/int(str(i.end_start1-i.start_data1).split()[0])*100)
if i.end_start2 > dt:
object['meter'].append(100 - int(str(i.end_start2-dt).split()[0])/int(str(i.end_start2-i.start_data2).split()[0])*100)
if i.end_start3 > dt:
object['meter'].append(100 - int(str(i.end_start3-dt).split()[0])/int(str(i.end_start3-i.start_data3).split()[0])*100)
if i.end_start4 > dt:
object['meter'].append(100 - int(str(i.end_start4-dt).split()[0])/int(str(i.end_start4-i.start_data4).split()[0])*100)
if i.end_start5 > dt:
object['meter'].append(100 - int(str(i.end_start5-dt).split()[0])/int(str(i.end_start5-i.start_data5).split()[0])*100)
if i.end_start6 > dt:
object['meter'].append(100 - int(str(i.end_start6-dt).split()[0])/int(str(i.end_start6-i.start_data6).split()[0])*100)
else:
object['meter'].append(100)
objects.append(object)
return render(request, 'users/operator.html', {'title': 'Оператор', 'objects': objects})
def index(request):
return render(request, 'users/index.html', {'title': 'Главная страница'})
def about(request):
return render(request, 'users/about.html')
html
{% for i in objects %}
<tr>
<td>{{ i.order_number }}</td>
<td>{{ i.name }}</td>
<td>{{ i.weight }}</td>
<td>{{ i.start_data }}</td>
<td>{{ i.end_start }}</td>
<td>{{ i.end_start }}</td>
<td><meter value="{{ i.meter.1 }}" max="100"></meter></td>
<td><meter value="{{ i.meter.2 }}" max="100"></meter></td>
<td><meter value="{{ i.meter.3 }}" max="100"></meter></td>
<td><meter value="{{ i.meter.4 }}" max="100"></meter></td>
<td><meter value="{{ i.meter.5 }}" max="100"></meter></td>
<td><meter value="{{ i.meter.6 }}" max="100"></meter></td>
</tr>
{% endfor %}
models.py
from django.db import models
from django.utils import timezone
class Factory(models.Model):
name = models.CharField(max_length=100, verbose_name='чертеж')
order_number = models.IntegerField(verbose_name='номер заказа')
contract = models.IntegerField(verbose_name='номер договора')
start_data = models.DateField(verbose_name='дата начало', default=timezone.now)
end_start = models.DateField(verbose_name='дата окончания', default=timezone.now)
weight = models.FloatField(verbose_name='масса')
start_data1 = models.DateField(verbose_name='дата начало', default=timezone.now)
end_start1 = models.DateField(verbose_name='дата окончания', default=timezone.now)
start_data2 = models.DateField(verbose_name='дата начало', default=timezone.now)
end_start2 = models.DateField(verbose_name='дата окончания', default=timezone.now)
start_data3 = models.DateField(verbose_name='дата начало', default=timezone.now)
end_start3 = models.DateField(verbose_name='дата окончания', default=timezone.now)
start_data4 = models.DateField(verbose_name='дата начало', default=timezone.now)
end_start4 = models.DateField(verbose_name='дата окончания', default=timezone.now)
start_data5 = models.DateField(verbose_name='дата начало', default=timezone.now)
end_start5 = models.DateField(verbose_name='дата окончания', default=timezone.now)
start_data6 = models.DateField(verbose_name='дата начало', default=timezone.now)
end_start6 = models.DateField(verbose_name='дата окончания', default=timezone.now)
def __str__(self) -> str:
return super().__str__()
def save(self, *args, **kwargs):
super().save()
class Meta:
verbose_name = 'Заказ'
verbose_name_plural = 'Заказы'
class ContractUser(models.Model):
factory = models.ForeignKey(Factory, verbose_name='factory, которому принадлежит контракт', on_delete=models.CASCADE)
contract_number = models.IntegerField(verbose_name='номер договора')
def save(self, *args, **kwargs):
super().save()