Skip to content

Instantly share code, notes, and snippets.

@teror4uks
Last active September 1, 2017 18:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save teror4uks/2af4d1477477fd190b43775c6b76a2b9 to your computer and use it in GitHub Desktop.
Save teror4uks/2af4d1477477fd190b43775c6b76a2b9 to your computer and use it in GitHub Desktop.
models.py
# -*- coding: utf-8 -*-
from django.db import models
from itertools import chain
from datetime import datetime, timedelta
class EventManager(models.Manager):
def all(self, *args, **kwargs):
qs = super(EventManager, self).all(*args, **kwargs).filter()
return qs
def current(self):
today = datetime.today()
qs = Event.objects.filter(
date__year=today.year,
date__month=today.month,
date__day=today.day)
return qs
def archive(self):
yesterday = datetime.today() - timedelta(1)
one_day_events = Event.objects.filter(
date__year__lte=yesterday.year,
date__month__lte=yesterday.month,
date__day__lte=yesterday.day,
date_end__isnull=True)
range_day_events = Event.objects.filter(
date_end__year__lte=yesterday.year,
date_end__month__lte=yesterday.month,
date_end__day__lte=yesterday.day)
result_list = list(chain(one_day_events, range_day_events))
return result_list
class Event(models.Model):
"""
Событие
"""
title = models.CharField(
verbose_name=u'Название',
max_length=255, )
announce = models.CharField(
verbose_name=u'Анонс',
max_length=255,
blank=True, )
date = models.DateField(
verbose_name=u'Дата', )
date_end = models.DateField(
verbose_name=u'Дата до',
null=True,
blank=True, )
objects = EventManager()
class Meta:
"""
Дополнительные настройки
"""
verbose_name = u'Событие'
verbose_name_plural = u'События'
def __str__(self):
return "title: {0}, " \
"announce: {1}, " \
"date: {2}, " \
"date_end: {3}".format(
self.title,
self.announce,
self.date,
self.date_end)
def __unicode__(self):
"""
Представление в виде unicode строки
"""
return self.title
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment