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))
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))
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))
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))
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))