medor.www
clone your own copy | download snapshot

Snapshots | iceberg

Inside this repository

subscribe_tags.py
text/x-python

Download raw (1.4 KB)

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

import caldav
import datetime
import pytz

from django import template
from django.db.models import Sum
from subscribe.models import Subscription, Cooperation
from django.conf import settings


register = template.Library()


@register.assignment_tag
def get_subscriber_count():
    return Subscription.objects.exclude(status=2).count()


@register.assignment_tag
def get_capital_amount():
    return Cooperation.objects.exclude(status=2).aggregate(total=Sum('share_number'))['total'] * 20


def _get_next_events():

    def sort_key_func(x):
        val = getattr(x.instance.vevent, 'dtstart', None)
        if not val:
            return None
        val = val.value
        if hasattr(val, 'strftime'):
            return val.strftime('%F%H%M%S')
            return val.strftime('%F%H%M%S')

    url = settings.CALDAV_URL
    client = caldav.DAVClient(url)
    principal = client.principal()
    cal = principal.calendar(cal_id=settings.CALDAV_CAL_ID)

    now = datetime.datetime.now()
    now = now.replace(tzinfo=pytz.timezone(settings.TIME_ZONE))

    events = cal.date_search(now)
    events.sort(key=sort_key_func)

    return [e.instance.vevent for e in events[:4]]


@register.assignment_tag
def get_next_events():
    try:
        events = _get_next_events()
    except:
        events = []

    return events