Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 17, 2012 13:09:09

andreiru
От:
Зарегистрирован: 2010-11-06
Сообщения: 154
Репутация: +  0  -
Профиль   Отправить e-mail  

Группировка по дате

Добрый день!

Делаю афишу…

Нужно группировать события по дате, сделал так:

    events_group = [{
        'date': now.date(),
        'today': True,
        'events': []
    }]
 
    for event in events:
        event_date = event.date_start.date()
        if event_date <= now.date():
            events_group[0]['events'].append(event)
        else:
            if event_date != events_group[-1]['date']:
                events_group.append({
                    'date': event_date,
                    'events': []
                })
 
            events_group[-1]['events'].append(event)
 
    if len(events_group[0]['events']) == 0:
        events_group.pop(0)

Работает, подскажите я на правильно пути или такая сортировка делается через annotate ?




Отредактировано andreiru (Окт. 19, 2012 07:01:40)

Офлайн

#2 Окт. 17, 2012 14:46:08

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Группировка по дате

andreiru
или такая сортировка делается через annotate ?
Не думаю, через annotate обычно суммы, макс/мин, средние значение, количества и т.п. делается.

Если просто получить даты или посчитать их, то есть такой вариант: http://python.su/forum/post/91133/

А в данном случае, наверное, вручную нужно. Только я бы использовал itertools.groupby

import itertools
 
now_date = now.date()
events_group = []
for date, events in itertools.groupby(events, key=lambda x: x.date_start.date()):
    events_group.append({'date': date, 
                         'events': list(events),
                         'today': date == now_date})

Офлайн

#3 Окт. 17, 2012 16:00:29

andreiru
От:
Зарегистрирован: 2010-11-06
Сообщения: 154
Репутация: +  0  -
Профиль   Отправить e-mail  

Группировка по дате

reclosedev спасибо, с itertools особо не сталкивался, буду разбираться!



Офлайн

#4 Окт. 18, 2012 11:35:19

andreiru
От:
Зарегистрирован: 2010-11-06
Сообщения: 154
Репутация: +  0  -
Профиль   Отправить e-mail  

Группировка по дате

Эм, ещё вопрос:

Сделал для заголовков надписи “Сегодня”, “Завтра” и т.п, так:

    for date, events in itertools.groupby(events, key=lambda x: x.date_start.date()):
        events_group.append({
            'date': date,
            'events': list(events),
            'after_days': abs((now.date() - date).days)
        })

И в шаблоне:

            {% if group.after_days == 0 %}
            Сегодня /
            {% elif group.after_days == 1 %}
            Завтра /
            {% elif group.after_days == 2 %}
            Послезавтра /
            {% endif %}

Такой вариант пойдёт или можно лучше ?)



Офлайн

#5 Окт. 18, 2012 12:02:52

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Группировка по дате

Андрей, я надеюсь ты свою афишу не собираешься пускать в продакшен с таким дизайном?



Офлайн

#6 Окт. 18, 2012 12:35:15

andreiru
От:
Зарегистрирован: 2010-11-06
Сообщения: 154
Репутация: +  0  -
Профиль   Отправить e-mail  

Группировка по дате

FishHook, я не дизайнер, поэтому сделал как сделал)!
Что именно не так в дизайне ? (жду конструктивной критики и советов)



Офлайн

#7 Окт. 18, 2012 12:55:43

d1ffuz0r
От: Moscow
Зарегистрирован: 2011-03-25
Сообщения: 127
Репутация: +  5  -
Профиль   Отправить e-mail  

Группировка по дате

а мне понравился дизайн. хотя для гику похоже будет родней http://www.gnu.org/

Офлайн

#8 Окт. 18, 2012 13:08:54

andreiru
От:
Зарегистрирован: 2010-11-06
Сообщения: 154
Репутация: +  0  -
Профиль   Отправить e-mail  

Группировка по дате

это ещё не конечный дизайн, почти каждый день что-нибудь меняю, так что ещё 100 раз всё переделаю…



Офлайн

#9 Окт. 18, 2012 13:17:10

d1ffuz0r
От: Moscow
Зарегистрирован: 2011-03-25
Сообщения: 127
Репутация: +  5  -
Профиль   Отправить e-mail  

Группировка по дате

надо ориентироваться на конечных пользователей, а не программистов(если не идёт ориентация на них). разработчик и дизайн вещи несовместимые. это видно по всему опенсорсу.
но тема совсем не об этом

Отредактировано d1ffuz0r (Окт. 18, 2012 13:33:52)

Офлайн

#10 Окт. 18, 2012 13:48:42

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Группировка по дате

andreiru
FishHook, я не дизайнер, поэтому сделал как сделал)!
Что именно не так в дизайне ? (жду конструктивной критики и советов)
1. Меню не должно скроллиться
2. В твоем меню “фестивали” как бедный родственник, которого не допустили до банкета, это безобразно






Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version