diff --git a/hacknight/templates/index.html b/hacknight/templates/index.html index 9420cb6..2c5ec5f 100644 --- a/hacknight/templates/index.html +++ b/hacknight/templates/index.html @@ -44,10 +44,12 @@

-
{{ cardset(upcoming_events, type = 'upcoming') }}

+
{{ cardset(upcoming_events, type = 'upcoming') }}
+ {% if upcoming_events and past_events %} +
+ {% endif %}
{{ cardset(past_events, type = 'past') }}
{% endblock %} diff --git a/hacknight/templates/profile.html b/hacknight/templates/profile.html index 7b08807..141061a 100644 --- a/hacknight/templates/profile.html +++ b/hacknight/templates/profile.html @@ -6,7 +6,17 @@ {{ profile.description|safe }}
{% if events -%} -
{{ cardset(events) }}
+
+ {% if upcoming_events -%} +
{{ cardset(upcoming_events, type = 'upcoming') }}
+ {% endif %} + {% if upcoming_events and past_events %} +
+ {% endif %} + {% if past_events -%} +
{{ cardset(past_events, type = 'past') }}
+ {% endif %} +
{%- else -%}

{%- if is_user -%} diff --git a/hacknight/views/profile.py b/hacknight/views/profile.py index fbf821a..12540e4 100644 --- a/hacknight/views/profile.py +++ b/hacknight/views/profile.py @@ -1,26 +1,32 @@ # -*- coding: utf-8 -*- +import operator from flask import render_template, g, abort, flash from coaster.views import load_model from baseframe.forms import render_redirect, render_form from hacknight import app from hacknight.models import db, Profile, User, Event -from hacknight.models.event import profile_types +from hacknight.models.event import profile_types, Event from hacknight.forms.profile import ProfileForm from hacknight.views.login import lastuser from hacknight.models.participant import Participant +from datetime import datetime +from pytz import utc @app.route('/') @load_model(Profile, {'name': 'profile'}, 'profile') def profile_view(profile): - events = Event.query.filter_by(profile_id=profile.id).order_by(Event.start_datetime.desc()).all() + events = Event.query.filter_by(profile_id=profile.id).order_by(Event.start_datetime.asc()).all() + upcoming_events, past_events = [], [] + for event in events: + if event.end_datetime >= datetime.utcnow(): + upcoming_events.append(event) + else: + past_events.append(event) + past_events = sorted(past_events, key=operator.attrgetter('end_datetime'), reverse=True) user = User.query.filter_by(userid=profile.userid).first() - if user is not None: - # User profile. Show all events this user owns or is participating in. - events = list(set(events + [p.event for p in Participant.query.filter_by(user=user).all()])) - events.sort(key=lambda item: item.start_datetime, reverse=True) - return render_template('profile.html', profile=profile, events=events, is_user=True if user else False) + return render_template('profile.html', profile=profile, events=events, upcoming_events=upcoming_events, past_events=past_events, is_user=True if user else False) @app.route('//edit', methods=['GET', 'POST'])