示例#1
0
def associations_home(request):
    """
    Displays the list of student associations.

    Homepage for the associations module.

    :param request: request object
    """
    association_list = Association.objects.all().order_by('name')

    tooltip.content(request,
        title="""Découvrez les <b>associations</b> !""",
        text="""Ne restez pas dans votre coin et faites bouger votre école !
            Le catalogue des associations est là pour vous aider à trouver
            chaussure à votre pied. Que vous soyez sportif, musicos ou grand
            nerd honoraire de la loge Klingon, il y a une asso qui vous
            ressemble !""")
    tooltip.icon(request, 'bullhorn')

    return render_to_response(
        "associations_portal.html",
        {
            'request': request,
            'association_list': association_list
        }, context_instance=RequestContext(request))
示例#2
0
def home(request):
    """
    Website homepage (/).
    """

    announcements = Announcement.objects.all().order_by('-publication_date')
    carousel_items = CarouselItem.objects.filter(
        expiration_date__gt=datetime.today).order_by('priority')[:6]

    tooltip.content(request,
        title="""Bienvenue sur la nouvelle version d'<b>eistiens.net</b>""",
        text="""Après des années d'absence, eistiens.net reprend du service en
                tant que portail dédié à la vie étudiante à l'EISTI. Vous
                pouvez désormais consulter <b>eistiens.net</b> pour connaître
                les prochains <b>événements</b> organisés dans l'école ou
                encore découvrir de nouvelles <b>associations</b>""")
    tooltip.icon(request, 'rocket')
    tooltip.button(request, 'En savoir plus', 'portal.views.features')

    return render_to_response(
        "home2.html",
        {
            'request': request,
            'recent_announcements': announcements,
            'carousel_items': carousel_items,
        }, context_instance=RequestContext(request))
示例#3
0
def membership_conditions(request, association_name):
    """
    Displays the terms and conditions to join an association and asks the user
    his agreement.

    Those conditions may concern registration fees or any kind of conditions
    the board has decided. A member can consult those conditions, but he should
    not be able to accept it twice (not making much sense, does it ?).

    :param request: request object
    :param association_name: association the user wants to join
    """

    association = get_object_or_404(Association, name=association_name)
    current_year = util.get_current_year()

    already_member = Member.objects.filter(
        user=request.user, association=association, year=current_year).exists()
    agreement_form = ConditionsAgreementForm(request.POST or None)

    if not already_member and agreement_form.is_valid():

        if agreement_form.cleaned_data['agreement'].upper() == "J'ACCEPTE":
            new_member = Member(
                user=request.user,
                association=association,
                year=current_year,
                status=10)
            new_member.save()

            return HttpResponseRedirect(reverse_lazy(
                'associations.views.association_display',
                args=(association_name,)))

    if already_member:
        tooltip.content(request,
            title="""Consultation des conditions d'adhésion à
                {{ association.name }}""",
            text="""En tant que membre de l'association
                {{ association.name }}, vous avez déjà accepté les conditions
                énoncées ci-dessous pour l'année en cours. Vous pouvez
                consulter cette page à loisir afin de savoir tout ce que
                l'association peut attendre de vous.""")
        tooltip.icon(request, 'question-circle')

    return render_to_response(
        "membership_conditions.html",
        {
            'request': request,
            'association': association,
            'already_member': already_member,
            'agreement_form': agreement_form,
        },
        context_instance=RequestContext(request))
示例#4
0
def display_event(request, event_id):
    """
    Displays informations relative to an event.

    This views give all publicly available informations about a given event,
    such as the date, place, and participants.

    :param request: request object
    :param event_id: event unique numeric id
    """

    event = get_object_or_404(Event, id=event_id)

    participants = event.participants.all()
    nb_available_places = event.max_nb_participants-participants.count()

    if event.is_past_event():
        tooltip.content(request,
            title="""Cet évènement appartient au passé...""",
            text="""Cet évènement a déjà eu lieu et a été archivé : vous ne
                pouvez plus vous y inscrire, mais il reste consultable.""")
        tooltip.icon(request, 'clock-o')

    elif not event.registration_possible():
        tooltip.content(request,
            title="""Navré, mais il n'est plus possible de s'inscrire à cet
                évènement""",
            text="""Il se peut que l'organisateur ait décidé de suspendre les
                inscriptions ou bien il ne reste plus de places disponibles.
                Tentez de nouveau dans quelque temps, avec un peu de chance il
                se pourrait qu'une place se libère.""")
        tooltip.icon(request, 'frown')

    return render_to_response(
        "display_event.html",
        {
            'request': request,
            'event': event,
            'participants': participants,
            'nb_available_places': nb_available_places
        }, context_instance=RequestContext(request))
示例#5
0
def agenda(request):
    """
    Displays a list of upcoming events.

    This views is the homepage of the events module. It shows a list of
    upcoming events, and splits them into three categories : current week
    event, next week, and further events.

    :param request: request object
    """

    today = datetime.today()
    two_weeks_later, _ = get_week_boundaries(2)

    # Querying all upcoming events
    upcoming_events = Event.objects.filter(
        day__gte=datetime.today(), day__lte=two_weeks_later)
    upcoming_events.order_by('day', 'start_time')

    later_events_count = Event.objects.filter(day__gt=two_weeks_later).count()

    tooltip.content(request,
        title="""Planning des événements""",
        text="""Ce serait dommage de passer à côté des activités proposées par
            les associations !""")
    tooltip.icon(request, 'calendar')
    tooltip.button(request,
        text='<i class="fa fa-calendar-o"></i>  Calendrier des événements',
        view='events.views.calendar')

    return render_to_response(
        "agenda2.html",
        {
            'request': request,
            'current_day': today,
            'end_two_week_span': two_weeks_later,
            'event_list': upcoming_events,
            'later_events_count': later_events_count,
        }, context_instance=RequestContext(request))