stat part 1

remotes/origin/statistics_migrate
Andrey 8 years ago
parent cd8fdbaf0f
commit 2c7b3db616
  1. 20
      progress/migrations/0011_auto_20180427_1213.py
  2. 20
      progress/migrations/0012_auto_20180427_1220.py
  3. 22
      progress/migrations/0013_progresslesson_dif_check_timestamps.py
  4. 25
      progress/models.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2018-04-27 12:13
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('progress', '0010_progress_exp_date'),
]
operations = [
migrations.AlterField(
model_name='progresslesson',
name='last_update',
field=models.DateTimeField(verbose_name='Дата последней проверки'),
),
]

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2018-04-27 12:20
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('progress', '0011_auto_20180427_1213'),
]
operations = [
migrations.AlterField(
model_name='progresslesson',
name='last_update',
field=models.DateTimeField(auto_now_add=True, verbose_name='Дата последней здачи'),
),
]

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2018-04-27 12:26
from __future__ import unicode_literals
import django.contrib.postgres.fields
from django.db import migrations, models
import lms.tools
class Migration(migrations.Migration):
dependencies = [
('progress', '0012_auto_20180427_1220'),
]
operations = [
migrations.AddField(
model_name='progresslesson',
name='dif_check_timestamps',
field=django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(verbose_name='Время проверки'), default=lms.tools.get_empty_list, size=None, verbose_name='Временные интервалы проверок'),
),
]

@ -3,6 +3,7 @@ from django.contrib.postgres.fields import ArrayField
from django.db import models
from model_utils import Choices
from django.utils import timezone
from lms.tools import get_empty_list
@ -55,8 +56,30 @@ class ProgressLesson(models.Model):
finish_date = models.DateTimeField(verbose_name='Дата зачтения задания', blank=True, null=True)
start_date = models.DateTimeField(verbose_name='Дата начала прохождения задания', auto_now_add=True)
status = models.CharField(choices=STATUSES, default=STATUSES.start, max_length=20)
last_update = models.DateTimeField(verbose_name='Дата последнего изменения', auto_now=True)
last_update = models.DateTimeField(verbose_name='Дата последней здачи', auto_now_add=True)
comment_tokens = ArrayField(models.UUIDField(verbose_name="Токен комента", editable=False), default=get_empty_list)
dif_check_timestamps = ArrayField(
models.IntegerField(
verbose_name="Время проверки"
),
verbose_name='Временные интервалы проверок',
default=get_empty_list,
)
def __init__(self, *args, **kwargs):
super(ProgressLesson, self).__init__(*args, **kwargs)
self.old_status = self.status
def save(self, force_insert=False, force_update=False, **kwargs):
if self.status == 'wait' and (self.old_status == 'start' or self.old_status == 'fail'):
self.last_update = timezone.now()
if self.old_status == 'wait' and (self.status == 'fail' or self.status == 'done'):
dif = int(timezone.now().timestamp() - self.last_update.timestamp())
self.dif_check_timestamps.append(dif)
super(ProgressLesson, self).save(force_insert, force_update, **kwargs)
self.old_status = self.status
def __str__(self):
return self.progress.user.email

Loading…
Cancel
Save