コード例 #1
0
ファイル: views.py プロジェクト: Atilla106/eistiens.net
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,)))
コード例 #2
0
ファイル: views.py プロジェクト: Atilla106/eistiens.net
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))
コード例 #3
0
ファイル: views.py プロジェクト: Atilla106/eistiens.net
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))
コード例 #4
0
ファイル: views.py プロジェクト: Atilla106/eistiens.net
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,)))