def register_member(request, association_name): """ Adds a registered user to the list of an association's members. If the user is already a member of the association, this view does nothing. :param request: request object :param association_name: association in which the user becomes a member """ 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() if not already_member: 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,)))
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 admin_signing(request, association_name): association = get_object_or_404(Association, name=association_name) current_year = association.signing_year # util.get_current_year() if not Member.objects.filter( user=request.user.id, association=association.id, year=current_year, status=0).exists(): raise PermissionDenied signing_done = (association.signing_year != util.get_current_year()) if not signing_done and request.method == 'POST': user_id = request.POST.get('user_id', '') try: association.signing_year = util.get_current_year() + 1 association.save() user = User.objects.get(id=int(user_id, 10)) member = Member( user=user, association=association, year=association.signing_year, status=0) member.save() return HttpResponseRedirect(reverse_lazy( 'associations.views.association_display', args=(association_name,))) except: messages.error(request, u'Utilisateur invalide') return render_to_response( 'admin_signing.html', { 'request': request, 'association': association, 'signing_done': signing_done }, context_instance=RequestContext(request))
def admin_board_add_member(request, association_name, member_id, role): association = get_object_or_404(Association, name=association_name) current_year = association.signing_year # util.get_current_year() # The connected user must be a board member (status < 5) if not Member.objects.filter( user=request.user.id, association=association.id, year=current_year, status__lt=5).exists(): raise PermissionDenied member = get_object_or_404( Member, user=member_id, association=association.id, year=util.get_current_year()) try: role = int(role) # Only one president per association per year if role != 0: # If it is the next board being created if association.signing_year != util.get_current_year(): user = get_object_or_404(User, id=member_id) new_member = Member( user=user, association=association, year=association.signing_year, status=role) new_member.save() else: member.status = role member.save() except: pass return HttpResponseRedirect(reverse_lazy( 'associations.views.admin_board', args=(association.name,)))