Esempio n. 1
0
class Schedule(Model):

    sections = ManyToManyField(Section, blank=True)
    start_time = TimeField(default=datetime.time(7))
    end_time = TimeField(default=datetime.time(22))

    def __unicode__(self):
        return "Schedule (%s)" % unicode(self.id)
Esempio n. 2
0
class SectionTime(Model):

    TIME_PATTERNS = ['MWF', 'MW', 'MF', 'WF', 'TH', 'MTWH', 'MTWF']
    TIME_PATTERN_CHOICES = [(TIME_PATTERNS.index(time_pattern), time_pattern)
                            for time_pattern in TIME_PATTERNS]

    time_pattern = IntegerField(choices=TIME_PATTERN_CHOICES)
    start_time = TimeField()
    length = DecimalField(max_digits=3,
                          decimal_places=2,
                          verbose_name='Length (Hours)')

    def __unicode__(self):
        length_digits = self.length.as_tuple().digits
        length_hours = length_digits[0]
        try:
            length_minutes = (60 * ((length_digits[1] * 10) + length_digits[2])
                              ) / 100  # Integer math gets nice minute numbers
        except IndexError:
            length_minutes = 0

        # A bit of a hack to get time and delta to play together nicely.
        end_time = (
            datetime.datetime.combine(datetime.date.today(), self.start_time) +
            datetime.timedelta(hours=length_hours,
                               minutes=length_minutes)).time()

        return self.TIME_PATTERNS[self.time_pattern] + " " + unicode(
            self.start_time) + " - " + unicode(end_time)
Esempio n. 3
0
 def test_convert_values_to_handle_null_value(self):
     database_operations = DatabaseOperations(connection)
     self.assertEqual(
         None,
         database_operations.convert_values(None, AutoField(primary_key=True))
     )
     self.assertEqual(
         None,
         database_operations.convert_values(None, DateField())
     )
     self.assertEqual(
         None,
         database_operations.convert_values(None, DateTimeField())
     )
     self.assertEqual(
         None,
         database_operations.convert_values(None, DecimalField())
     )
     self.assertEqual(
         None,
         database_operations.convert_values(None, IntegerField())
     )
     self.assertEqual(
         None,
         database_operations.convert_values(None, TimeField())
     )
Esempio n. 4
0
 def test_convert_values_to_handle_null_value(self):
     from django.db.backends.sqlite3.base import DatabaseOperations
     convert_values = DatabaseOperations(connection).convert_values
     self.assertIsNone(convert_values(None, AutoField(primary_key=True)))
     self.assertIsNone(convert_values(None, DateField()))
     self.assertIsNone(convert_values(None, DateTimeField()))
     self.assertIsNone(convert_values(None, DecimalField()))
     self.assertIsNone(convert_values(None, IntegerField()))
     self.assertIsNone(convert_values(None, TimeField()))
Esempio n. 5
0
class TruncTime(TruncBase):
    kind = "time"
    lookup_name = "time"
    output_field = TimeField()

    def as_sql(self, compiler, connection):
        # Cast to time rather than truncate to time.
        sql, params = compiler.compile(self.lhs)
        tzname = self.get_tzname()
        return connection.ops.datetime_cast_time_sql(sql, tuple(params), tzname)
Esempio n. 6
0
class TruncTime(TruncBase):
    kind = 'time'
    lookup_name = 'time'
    output_field = TimeField()

    def as_sql(self, compiler, connection):
        # Cast to time rather than truncate to time.
        lhs, lhs_params = compiler.compile(self.lhs)
        tzname = self.get_tzname()
        sql = connection.ops.datetime_cast_time_sql(lhs, tzname)
        return sql, lhs_params
Esempio n. 7
0
class TruncTime(TruncBase):
    kind = 'time'
    lookup_name = 'time'
    output_field = TimeField()

    def as_sql(self, compiler, connection):
        # Cast to time rather than truncate to time.
        lhs, lhs_params = compiler.compile(self.lhs)
        tzname = timezone.get_current_timezone_name() if settings.USE_TZ else None
        sql = connection.ops.datetime_cast_time_sql(lhs, tzname)
        return sql, lhs_params
class Offer(models.Model):
    title = models.CharField(max_length=100, verbose_name='title')
    content = models.TextField(verbose_name='content')
    location = models.CharField(max_length=100, verbose_name='location')
    date = models.DateField(default='20/12/2021')
    time = TimeField(null=True)
    duration = PositiveIntegerField(null=True)
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    image = models.ImageField(default='defaultservice.jpg',
                              upload_to='post_pics')

    max_participants = models.PositiveIntegerField(
        default=3, validators=[MinValueValidator(1)])
    timecredit = models.PositiveIntegerField(default=1)
    num_participants = models.PositiveIntegerField(default=0)

    finished_participants = models.ManyToManyField(
        User, related_name="finished_offers")
    current_participants = models.ManyToManyField(
        User, related_name="current_offers")
    waiting_participants = models.ManyToManyField(
        User, related_name="waiting_offers")

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        #redirect to its own detail page after being created
        return reverse('offer-detail', kwargs={'pk': self.pk})

    def clean(self):
        if self.num_participants > self.max_participants:
            raise ValidationError(
                _('Maximum number of participants cannot be less than number of current participants!'
                  ))

    @property
    def feedback_senders(self):

        return list(self.feedbacks.values_list("sender__username", flat=True))

    @property
    def feedback_receivers(self):

        return list(self.feedbacks.values_list("receiver__username",
                                               flat=True))

    def get_type(self):
        return "offer"
Esempio n. 9
0
 def _load_period_ipstat(fill_date: date, period: timedelta):
     end_time = timezone.make_aware(
         time(hour=23, minute=59, second=59, microsecond=999999))
     end_date = datetime.combine(fill_date, end_time)
     start_date = (end_date - period).replace(hour=0,
                                              minute=0,
                                              second=0,
                                              microsecond=0)
     return Lead.objects \
         .filter(session_started__range=(start_date, end_date)) \
         .filter(ip_addr__isnull=False) \
         .values('ip_addr', 'geo', 'geo__country', 'geo__postal_code', 'provider') \
         .annotate(s_cnt=Count('id')) \
         .annotate(s_time=Sum(ExpressionWrapper(
             Coalesce('created', 'last_event_time') - F('session_started'),
             output_field=DurationField()))) \
         .annotate(s0_cnt=Count(Case(
             When(created__isnull=True, then=F('id')),
             default=None, output_field=UUIDField()))) \
         .annotate(s_beg=Cast(Avg(
             Cast(F('session_started'), output_field=TimeField())
         ), output_field=TimeField())) \
         .annotate(user_ids=ArrayAgg('pixel__project__user__id', distinct=True))\
         .annotate(cnt_dev=Count('device_id'))
Esempio n. 10
0
class Flavor(Model):
    name = CharField(max_length=255)
    label = CharField(max_length=255)
    parent = ForeignKey("self", blank=True, null=True, on_delete=SET_NULL)
    float_value = FloatField(blank=True, null=True)
    decimal_value = DecimalField(blank=True,
                                 null=True,
                                 max_digits=10,
                                 decimal_places=2)
    uuid = UUIDField(default=uuid.uuid4)
    datetime = DateTimeField(blank=True, null=True)
    date = DateField(blank=True, null=True)
    time = TimeField(blank=True, null=True)
    duration = DurationField(blank=True, null=True)

    def __str__(self):
        return self.name
class Post(models.Model):
    title = models.CharField(max_length=100, verbose_name='title')
    content = models.TextField(verbose_name='content')
    # city = models.CharField(max_length=255)
    # location = PlainLocationField(based_fields=['city'], zoom=7)
    location = models.CharField(max_length=100, verbose_name='location')
    date = models.DateField(default='20/12/2021')
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    image = models.ImageField(default='defaultservice.jpg',
                              upload_to='post_pics')
    time = TimeField(null=True)
    duration = PositiveIntegerField(null=True)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        #redirect to its own detail page after being created
        return reverse('post-detail', kwargs={'pk': self.pk})

    def get_type(self):
        return "post"
Esempio n. 12
0
class HourTransform(DateTransform):
    lookup_name = 'hour'


class MinuteTransform(DateTransform):
    lookup_name = 'minute'


class SecondTransform(DateTransform):
    lookup_name = 'second'


DateField.register_lookup(YearTransform)
DateField.register_lookup(MonthTransform)
DateField.register_lookup(DayTransform)
DateField.register_lookup(WeekDayTransform)

TimeField.register_lookup(HourTransform)
TimeField.register_lookup(MinuteTransform)
TimeField.register_lookup(SecondTransform)

DateTimeField.register_lookup(DateTimeDateTransform)
DateTimeField.register_lookup(YearTransform)
DateTimeField.register_lookup(MonthTransform)
DateTimeField.register_lookup(DayTransform)
DateTimeField.register_lookup(WeekDayTransform)
DateTimeField.register_lookup(HourTransform)
DateTimeField.register_lookup(MinuteTransform)
DateTimeField.register_lookup(SecondTransform)
Esempio n. 13
0
    lookup_name = 'minute'


class ExtractSecond(Extract):
    lookup_name = 'second'


DateField.register_lookup(ExtractYear)
DateField.register_lookup(ExtractMonth)
DateField.register_lookup(ExtractDay)
DateField.register_lookup(ExtractWeekDay)
DateField.register_lookup(ExtractWeek)
DateField.register_lookup(ExtractIsoYear)
DateField.register_lookup(ExtractQuarter)

TimeField.register_lookup(ExtractHour)
TimeField.register_lookup(ExtractMinute)
TimeField.register_lookup(ExtractSecond)

DateTimeField.register_lookup(ExtractHour)
DateTimeField.register_lookup(ExtractMinute)
DateTimeField.register_lookup(ExtractSecond)

ExtractYear.register_lookup(YearExact)
ExtractYear.register_lookup(YearGt)
ExtractYear.register_lookup(YearGte)
ExtractYear.register_lookup(YearLt)
ExtractYear.register_lookup(YearLte)

ExtractIsoYear.register_lookup(YearExact)
ExtractIsoYear.register_lookup(YearGt)
Esempio n. 14
0
    lookup_name = 'minute'


class ExtractSecond(Extract):
    lookup_name = 'second'


DateField.register_lookup(ExtractYear)
DateField.register_lookup(ExtractMonth)
DateField.register_lookup(ExtractDay)
DateField.register_lookup(ExtractWeekDay)
DateField.register_lookup(ExtractWeek)
DateField.register_lookup(ExtractIsoYear)
DateField.register_lookup(ExtractQuarter)

TimeField.register_lookup(ExtractHour)
TimeField.register_lookup(ExtractMinute)
TimeField.register_lookup(ExtractSecond)

DateTimeField.register_lookup(ExtractHour)
DateTimeField.register_lookup(ExtractMinute)
DateTimeField.register_lookup(ExtractSecond)

ExtractYear.register_lookup(YearExact)
ExtractYear.register_lookup(YearGt)
ExtractYear.register_lookup(YearGte)
ExtractYear.register_lookup(YearLt)
ExtractYear.register_lookup(YearLte)

ExtractIsoYear.register_lookup(YearExact)
ExtractIsoYear.register_lookup(YearGt)
Esempio n. 15
0
 def test_TimeField(self):
     self.assertIsInstance(
         TimeField().get_prep_value(datetime.datetime.now().time()),
         datetime.time)
Esempio n. 16
0
 def test_TimeField(self):
     lazy_func = lazy(lambda: datetime.datetime.now().time(), datetime.time)
     self.assertIsInstance(TimeField().get_prep_value(lazy_func()),
                           datetime.time)
Esempio n. 17
0
from copy import copy
from django.conf import settings
from django.db.models.expressions import Func, Value
from django.db.models.fields import (
    DateField, DateTimeField, Field, IntegerField, TimeField,
)
from django.db.models.query_utils import RegisterLookupMixin
from django.utils import timezone
from django.utils.functional import cached_property
from django.utils.six.moves import range

class Lookup(object):
    lookup_name = None
    def __init__(self, lhs, rhs):
        self.lhs, self.rhs = lhs, rhs
        self.rhs = self.get_prep_lookup()
        if hasattr(self.lhs, 'get_bilateral_transforms'):
            bilateral_transforms = self.lhs.get_bilateral_transforms()
        else:
            bilateral_transforms = []
        if bilateral_transforms:
            # We should warn the user as soon as possible if he is trying to apply
            # a bilateral transformation on a nested QuerySet: that won't work.
            # We need to import QuerySet here so as to avoid circular
            from django.db.models.query import QuerySet
            if isinstance(rhs, QuerySet):
                raise NotImplementedError("Bilateral transformations on nested querysets are not supported.")
        self.bilateral_transforms = bilateral_transforms
    def apply_bilateral_transforms(self, value):
        for transform in self.bilateral_transforms:
Esempio n. 18
0
class HourTransform(DateTransform):
    lookup_name = 'hour'


class MinuteTransform(DateTransform):
    lookup_name = 'minute'


class SecondTransform(DateTransform):
    lookup_name = 'second'


DateField.register_lookup(YearTransform)
DateField.register_lookup(MonthTransform)
DateField.register_lookup(DayTransform)
DateField.register_lookup(WeekDayTransform)

TimeField.register_lookup(HourTransform)
TimeField.register_lookup(MinuteTransform)
TimeField.register_lookup(SecondTransform)

DateTimeField.register_lookup(DateTimeDateTransform)
DateTimeField.register_lookup(YearTransform)
DateTimeField.register_lookup(MonthTransform)
DateTimeField.register_lookup(DayTransform)
DateTimeField.register_lookup(WeekDayTransform)
DateTimeField.register_lookup(HourTransform)
DateTimeField.register_lookup(MinuteTransform)
DateTimeField.register_lookup(SecondTransform)
Esempio n. 19
0
File: models.py Progetto: Maxzkp/TT
class Horario(models.Model):
    inicio = TimeField()
    final = TimeField()
    descripcion = CharField(max_length=100, null=False, blank=False)
Esempio n. 20
0

class ExtractSecond(Extract):
    lookup_name = "second"


DateField.register_lookup(ExtractYear)
DateField.register_lookup(ExtractMonth)
DateField.register_lookup(ExtractDay)
DateField.register_lookup(ExtractWeekDay)
DateField.register_lookup(ExtractIsoWeekDay)
DateField.register_lookup(ExtractWeek)
DateField.register_lookup(ExtractIsoYear)
DateField.register_lookup(ExtractQuarter)

TimeField.register_lookup(ExtractHour)
TimeField.register_lookup(ExtractMinute)
TimeField.register_lookup(ExtractSecond)

DateTimeField.register_lookup(ExtractHour)
DateTimeField.register_lookup(ExtractMinute)
DateTimeField.register_lookup(ExtractSecond)

ExtractYear.register_lookup(YearExact)
ExtractYear.register_lookup(YearGt)
ExtractYear.register_lookup(YearGte)
ExtractYear.register_lookup(YearLt)
ExtractYear.register_lookup(YearLte)

ExtractIsoYear.register_lookup(YearExact)
ExtractIsoYear.register_lookup(YearGt)
Esempio n. 21
0
class Visite(Model):
    state = BooleanField(default=False)
    id_habitation = ForeignKey(Habitation, on_delete=CASCADE)  #id_logement
    date = DateField()
    hour = TimeField()
    id_seeker = ForeignKey(Seeker, on_delete=CASCADE)
Esempio n. 22
0
class CaThi(models.Model):
    '''
    Thiet lap mot ca thi, trong do co danh sach cau hoi de tu do lam
    cac de thi cho tung sinh vien
    '''
    title = CharField(verbose_name="Ca thi", max_length=200, blank=False)
    
    description=TextField(verbose_name="Ghi chú", blank=True, null=True)
    mon_thi = ForeignKey(MonThi, blank=False, null=False,
                         verbose_name="Môn thi")
#     lop_thi = ForeignKey(Lop, blank=False, null=False,
#                          verbose_name="Lớp thi")
#     ds_thisinh = ForeignKey(Lop_CaThi, blank=False, null=False, 
#                          verbose_name="Danh sách thí sinh")
    ds_giamthi = ManyToManyField(GiaoVien, verbose_name=u'Danh sách giám thị coi thi')
    
    ds_thisinh = ManyToManyField(SinhVien, blank=False, 
                                verbose_name=u"Danh sách thí sinh")
    ds_thisinh.help_text = 'Tìm kiếm theo họ tên sinh viên hoặc mã lớp.'
    
    ngay_thi = DateField(verbose_name="Ngày thi")
    tg_bat_dau=TimeField(verbose_name="Thời gian bắt đầu")
    tg_ket_thuc=TimeField(verbose_name="Thời gian kết thúc")
    
    ds_cau_hoi = CommaSeparatedIntegerField(max_length=1024, 
                                            verbose_name="Danh sach cau hoi (ids)")
#     setting = ManyToManyField(QuestionGroup_Setting, 
#                             verbose_name="Thiết lập cấu hình ca thi")
    tao_moi_de_thi = BooleanField(blank=False, null=False,
                                  verbose_name="Tạo mới đề thi cho các sinh viên",
                                  default=True)
    
    random_order = BooleanField(blank=False, null=False,
                                verbose_name="Hiển thị câu hỏi ngẫu nhiên",
                                default=True)
    answers_at_end = BooleanField(blank=False, null=False,
                                  verbose_name="Hiển thị câu trả lời khi kết thúc",
                                  default=False)
    result_at_end = BooleanField(blank=False, null=False,
                               verbose_name="Hiển thị kết quả khi kết thúc",
                               default=True)
    exam_paper = BooleanField(blank=False, null=False,
                              verbose_name="Lưu bài thi",
                              default=True)
    single_attempt = BooleanField(blank=False, null=False,
                                  verbose_name="Mỗi người một đề thi",
                                  default=True)
    pass_mark = PositiveIntegerField(verbose_name="Điểm đạt yêu cầu")
    success_text = TextField(blank=True,
                             verbose_name="Thông báo được hiển thị nếu thí sinh vượt qua")
    fail_text = TextField(blank=True,
                          verbose_name="Thông báo được hiển thị nếu thí sinh không vượt qua")
    draft=BooleanField(verbose_name="Bản nháp", 
                       default=False)
    
    class Meta:
        verbose_name = "Ca thi"
        verbose_name_plural = "Danh sách ca thi"

    def __unicode__(self):
        return u'%s' %(self.title)
    
    def save(self, *args, **kwargs):
        # luu CaThi va Cathi_Setting
#         super(CaThi, self).save(*args, **kwargs)
#         # lay danh sach cau hoi cho ca thi
#         # lay cathi_setting
        questionGroup_settings = QuestionGroup_Setting.objects.filter(ca_thi__exact=self)
#         # cac cau hoi cua de thi
        questions = []
        for cathi_setting in questionGroup_settings:
            # lay cau hoi theo nhom va loai (type)
            qs = Question.objects.filter(mon_thi=self.mon_thi,
                                    question_type = cathi_setting.question_type,
                                    question_group = cathi_setting.question_group)
            # lay id
            q_ids = qs.values_list('id', flat=True)
            # lay ngau nhien so cau hoi
             
            questions += sample(q_ids, cathi_setting.num_of_questions)
         
        self.ds_cau_hoi = ','.join(map(str, questions)) + ","
         
        # luu CaThi-ds_cauhoi
        super(CaThi, self).save(*args, **kwargs)
        # tao de thi cho tung sinh vien
 
        # lay danh sach sinh vien cua lop
#         dsSV = SinhVien.objects.filter(lop=self.lop_thi)
        dsSV = self.ds_thisinh.all()
         
        if(self.tao_moi_de_thi == False):
            return
         
        # voi moi sinh vien, tao mot de thi
        for sv in dsSV:
            # tao de thi
            dethi = DeThi.objects.update_or_create(sinh_vien=sv,
                                                   ca_thi=self,
                                                   )[0]
            # lay ngau nhien cau hoi trong ngan hang de
            ds_cauhoi = sample(questions, len(questions))
            ds_cauhoi_answer = []
            for cauhoi_id in ds_cauhoi:
                # lay cau hoi voi id tuong ung
                q = Question.objects.get(id=cauhoi_id)
                # neu cau hoi la multichoice question thi hoan doi thu tu
                # cau tra loi
                if q.question_type == MCQUESTION:
                    # lay cac cau tra loi cua cau hoi nay
#                     q = (MCQuestion)q
                     
#                     answers = Answer.objects.filter(question=q.id)
                    q.__class__ = MCQuestion
                    answers = q.getAnswers()
                     
                    # lay id cua cac cau hoi
                    answer_ids = answers.values_list('id', flat=True)
                     
                    # dao thu tu cau tra loi
                    answer_ids = sample(answer_ids, len(answer_ids))
                     
                    # add vao mot dictionary
                    ds_cauhoi_answer.append((cauhoi_id, answer_ids))
                 
                elif q.question_type == TFQUESTION:
                    ds_cauhoi_answer.append((cauhoi_id, [1, 0]))
                 
                else:
                    ds_cauhoi_answer.append((cauhoi_id, []))
                     
            dethi.ds_cau_hoi =  json.dumps(ds_cauhoi_answer)
            dethi.save()                             
Esempio n. 23
0
class Time_slots(Model):
    hour = TimeField()