Exemple #1
0
def accreds_list_json(request):
    """Display the list of accreds, json call for the list"""

    # Update current unit
    update_current_unit(request, request.GET.get('upk'))

    unit = get_current_unit(request)

    # Check unit access
    if not Accreditation.static_rights_can('LIST', request.user, unit):
        raise Http404

    # Filter by unit
    filter_ = lambda x: x.filter(unit=unit)

    # Si pas le droit de créer, filtrage des accreds invisibles
    if not Accreditation.static_rights_can('CREATE', request.user, get_current_unit(request)):
        filter__ = lambda x: x.filter(hidden_in_truffe=False)
    else:
        filter__ = lambda x: x

    # Filter old accreds, if needed
    if request.GET.get('h', '0') == '0':
        filter2 = lambda x: filter_(filter__(x)).filter(end_date=None)
    else:
        filter2 = lambda x: filter_(filter__(x))

    return generic_list_json(request, Accreditation, ['pk', 'user', 'get_role_or_display_name', 'start_date', 'no_epfl_sync', 'hidden_in_epfl', 'hidden_in_truffe', 'renewal_date', 'pk'], 'units/accreds/list_json.html', filter_fields=['user__first_name', 'user__last_name', 'role__name'], bonus_filter_function=filter2, columns_mapping={'get_role_or_display_name': 'role__order', 'user': '******'})
Exemple #2
0
def accreds_list_json(request):
    """Display the list of accreds, json call for the list"""

    # Update current unit
    update_current_unit(request, request.GET.get('upk'))

    unit = get_current_unit(request)

    # Check unit access
    if not Accreditation.static_rights_can('LIST', request.user, unit):
        raise Http404

    # Filter by unit
    filter_ = lambda x: x.filter(unit=unit)

    # Si pas le droit de créer, filtrage des accreds invisibles
    if not Accreditation.static_rights_can('CREATE', request.user, get_current_unit(request)):
        filter__ = lambda x: x.filter(hidden_in_truffe=False)
    else:
        filter__ = lambda x: x

    # Filter old accreds, if needed
    if request.GET.get('h', '0') == '0':
        filter2 = lambda x: filter_(filter__(x)).filter(end_date=None)
    else:
        filter2 = lambda x: filter_(filter__(x))

    return generic_list_json(request, Accreditation, ['pk', 'user', 'get_role_or_display_name', 'start_date', 'no_epfl_sync', 'hidden_in_epfl', 'hidden_in_truffe', 'renewal_date', 'pk'], 'units/accreds/list_json.html', filter_fields=['user__first_name', 'user__last_name', 'role__name'], bonus_filter_function=filter2, columns_mapping={'get_role_or_display_name': 'role__order', 'user': '******'})
Exemple #3
0
    def render(self, context):
        for (obj, user, right), nodelist in self.conditions_nodelists:

            if right is not None:  # if / elif clause
                obj = template.Variable(obj).resolve(context)
                user = template.Variable(user).resolve(context)
                right = template.Variable(right).resolve(context)

                if isinstance(obj, basestring):
                    new_obj = importlib.import_module('.'.join(obj.split('.')[:-1]))
                    obj = getattr(new_obj, obj.split('.')[-1])

                force_static = False

                if right[0] == '!':
                    force_static = True
                    right = right[1:]

                if isinstance(obj, ModelWithRight) and not force_static:
                    match = obj.rights_can(right, user)
                elif hasattr(obj, 'static_rights_can'):
                    match = obj.static_rights_can(right, user, get_current_unit(context['request']) if force_static else None, get_current_year(context['request']) if force_static else None)
                else:
                    raise Exception("?", obj, " cannot be used for rights")

            else:
                match = True

            if match:
                return nodelist.render(context)
        return ''
Exemple #4
0
def accreds_list_json(request):
    """Display the list of accreds, json call for the list"""

    # Update current unit
    update_current_unit(request, request.GET.get("upk"))

    unit = get_current_unit(request)

    # Check unit access
    if not Accreditation.static_rights_can("LIST", request.user, unit):
        raise Http404

    # Filter by unit
    filter_ = lambda x: x.filter(unit=unit)

    # Si pas le droit de créer, filtrage des accreds invisibles
    if not Accreditation.static_rights_can("CREATE", request.user, get_current_unit(request)):
        filter__ = lambda x: x.filter(hidden_in_truffe=False)
    else:
        filter__ = lambda x: x

    # Filter old accreds, if needed
    if request.GET.get("h", "0") == "0":
        filter2 = lambda x: filter_(filter__(x)).filter(end_date=None)
    else:
        filter2 = lambda x: filter_(filter__(x))

    return generic_list_json(
        request,
        Accreditation,
        [
            "pk",
            "user",
            "get_role_or_display_name",
            "start_date",
            "no_epfl_sync",
            "hidden_in_epfl",
            "hidden_in_truffe",
            "renewal_date",
            "pk",
        ],
        "units/accreds/list_json.html",
        filter_fields=["user__first_name", "user__last_name", "role__name"],
        bonus_filter_function=filter2,
        columns_mapping={"get_role_or_display_name": "role__order", "user": "******"},
    )
Exemple #5
0
def accreds_add(request):

    update_current_unit(request, request.GET.get("upk"))
    unit = get_current_unit(request)

    if not Accreditation.static_rights_can("CREATE", request.user, unit):
        raise Http404

    from units.forms2 import AccreditationAddForm
    from units.models import Role

    done = False

    if request.method == "POST":  # If the form has been submitted...
        form = AccreditationAddForm(request.user, request.POST)

        if form.is_valid():  # If the form is valid
            accred = form.save(commit=False)

            accred.unit = unit

            # Try to find the user. If he dosen't exists, create it.
            try:
                user = TruffeUser.objects.get(username=form.cleaned_data["user"].strip())
            except TruffeUser.DoesNotExist:
                user = TruffeUser()

                user.username = form.cleaned_data["user"].strip()

                user.last_name, user.first_name, user.email = get_attrs_of_sciper(user.username)

                user.is_active = True

                user.save()

            accred.user = user
            accred.save()

            AccreditationLog(accreditation=accred, who=request.user, type="created").save()

            # Check if validation is needed
            accred.check_if_validation_needed(request)
            accred.save()

            accred.user.clear_rights_cache()

            messages.success(request, _(u"Accréditation sauvegardée !"))

            done = True

    else:
        form = AccreditationAddForm(request.user)

    validables = Role.objects.filter(deleted=False, need_validation=True)

    return render(
        request, "units/accreds/add.html", {"form": form, "done": done, "unit": unit, "validables": validables}
    )
Exemple #6
0
def accreds_add(request):

    update_current_unit(request, request.GET.get('upk'))
    unit = get_current_unit(request)

    if not Accreditation.static_rights_can('CREATE', request.user, unit):
        raise Http404

    from units.forms2 import AccreditationAddForm
    from units.models import Role

    done = False

    if request.method == 'POST':  # If the form has been submitted...
        form = AccreditationAddForm(request.user, request.POST)

        if form.is_valid():  # If the form is valid
            accred = form.save(commit=False)

            accred.unit = unit

            # Try to find the user. If he dosen't exists, create it.
            try:
                user = TruffeUser.objects.get(username=form.cleaned_data['user'].strip())
            except TruffeUser.DoesNotExist:
                user = TruffeUser()

                user.username = form.cleaned_data['user'].strip()

                user.last_name, user.first_name, user.email = get_attrs_of_sciper(user.username)

                user.is_active = True

                user.save()

            accred.user = user
            accred.save()

            AccreditationLog(accreditation=accred, who=request.user, type='created').save()

            # Check if validation is needed
            accred.check_if_validation_needed(request)
            accred.save()

            accred.user.clear_rights_cache()

            messages.success(request, _(u'Accréditation sauvegardée !'))

            done = True

    else:
        form = AccreditationAddForm(request.user)

    validables = Role.objects.filter(deleted=False, need_validation=True)

    return render(request, 'units/accreds/add.html', {'form': form, 'done': done, 'unit': unit, 'validables': validables})
Exemple #7
0
def accreds_logs_list_json(request):
    """Display the list of accreds, json call for the list"""

    # Update current unit
    update_current_unit(request, request.GET.get("upk"))

    unit = get_current_unit(request)

    # Check unit access
    if not Accreditation.static_rights_can("LIST", request.user, unit):
        raise Http404

    # Filter by unit
    filter_ = lambda x: x.filter(accreditation__unit=unit)

    # Si pas le droit de créer, filtrage des accreds invisibles
    if not Accreditation.static_rights_can("CREATE", request.user, get_current_unit(request)):
        filter__ = lambda x: x.filter(accreditation__hidden_in_truffe=False)
    else:
        filter__ = lambda x: x

    filter2 = lambda x: filter_(filter__(x))

    return generic_list_json(
        request,
        AccreditationLog,
        ["pk", "accreditation__user", "type", "when", "what"],
        "units/accreds/logs_list_json.html",
        filter_fields=[
            "accreditation__user__first_name",
            "accreditation__user__last_name",
            "accreditation__role__name",
            "who__first_name",
            "who__last_name",
        ],
        bonus_filter_function=filter2,
        columns_mapping={"pk": "accreditation__user__first_name"},
    )
Exemple #8
0
def users_myunit_list_json(request):
    """Json for user list in the current unit"""
    from units.models import Accreditation

    update_current_unit(request, request.GET.get('upk'))

    current_unit = get_current_unit(request)

    if not current_unit or not current_unit.is_user_in_groupe(request.user):
        raise Http404

    filter = lambda x: x.filter(Q(unit=current_unit) & Q(end_date=None)).distinct()

    return generic_list_json(request, Accreditation, ['user__username', 'user__first_name', 'user__last_name', 'user__pk', 'role__order'], 'users/users/myunit_list_json.html', bonus_filter_function=filter)
Exemple #9
0
def users_myunit_list_json(request):
    """Json for user list in the current unit"""
    from units.models import Accreditation

    update_current_unit(request, request.GET.get('upk'))

    current_unit = get_current_unit(request)

    if not current_unit or not current_unit.is_user_in_groupe(request.user):
        raise Http404

    filter = lambda x: x.filter(Q(unit=current_unit) & Q(end_date=None)).distinct()

    return generic_list_json(request, Accreditation, ['user__username', 'user__first_name', 'user__last_name', 'user__pk', 'role__order'], 'users/users/myunit_list_json.html', bonus_filter_function=filter)
Exemple #10
0
def accreds_logs_list_json(request):
    """Display the list of accreds, json call for the list"""

    # Update current unit
    update_current_unit(request, request.GET.get('upk'))

    unit = get_current_unit(request)

    # Check unit access
    if not Accreditation.static_rights_can('LIST', request.user, unit):
        raise Http404

    # Filter by unit
    filter_ = lambda x: x.filter(accreditation__unit=unit)

    # Si pas le droit de créer, filtrage des accreds invisibles
    if not Accreditation.static_rights_can('CREATE', request.user,
                                           get_current_unit(request)):
        filter__ = lambda x: x.filter(accreditation__hidden_in_truffe=False)
    else:
        filter__ = lambda x: x

    filter2 = lambda x: filter_(filter__(x))

    return generic_list_json(
        request,
        AccreditationLog,
        ['pk', 'accreditation__user', 'type', 'when', 'what'],
        'units/accreds/logs_list_json.html',
        filter_fields=[
            'accreditation__user__first_name',
            'accreditation__user__last_name', 'accreditation__role__name',
            'who__first_name', 'who__last_name'
        ],
        bonus_filter_function=filter2,
        columns_mapping={'pk': 'accreditation__user__first_name'})
Exemple #11
0
    def genericFormExtraClean(self, data, form):
        """Check if accred corresponds to generation constraints & that unique_together is fulfiled"""
        from members.models import MemberSet

        if 'generates_accred' in form.fields:
            if data['generates_accred'] and data['generated_accred_type'] is None:
                raise forms.ValidationError(_(u'Accréditation nécessaire pour l\'attribuer aux membres.'))

            if 'generates_accred' not in data:  # If no accred generation, both other fields are Blank/False
                data['generated_accred_type'] = ''
                if 'ldap_visible' in data:
                    del data['ldap_visible']

        if MemberSet.objects.exclude(pk=self.pk).filter(unit=get_current_unit(form.truffe_request), name=data['name']).count():
            raise forms.ValidationError(_(u'L\'unité possède déjà un groupe avec ce nom.'))  # Potentiellement parmi les supprimées
Exemple #12
0
def accreds_logs_list_json(request):
    """Display the list of accreds, json call for the list"""

    # Update current unit
    update_current_unit(request, request.GET.get('upk'))

    unit = get_current_unit(request)

    # Check unit access
    if not Accreditation.static_rights_can('LIST', request.user, unit):
        raise Http404

    # Filter by unit
    filter_ = lambda x: x.filter(accreditation__unit=unit)

    # Si pas le droit de créer, filtrage des accreds invisibles
    if not Accreditation.static_rights_can('CREATE', request.user, get_current_unit(request)):
        filter__ = lambda x: x.filter(accreditation__hidden_in_truffe=False)
    else:
        filter__ = lambda x: x

    filter2 = lambda x: filter_(filter__(x))

    return generic_list_json(request, AccreditationLog, ['pk', 'accreditation__user', 'type', 'when', 'what'], 'units/accreds/logs_list_json.html', filter_fields=['accreditation__user__first_name', 'accreditation__user__last_name', 'accreditation__role__name', 'who__first_name', 'who__last_name'], bonus_filter_function=filter2, columns_mapping={'pk': 'accreditation__user__first_name'})
Exemple #13
0
    def genericFormExtraClean(self, data, form):
        """Check if accred corresponds to generation constraints & that unique_together is fulfiled"""
        from members.models import MemberSet

        if 'generates_accred' in form.fields:
            if data['generates_accred'] and data['generated_accred_type'] is None:
                raise forms.ValidationError(_(u'Accréditation nécessaire pour l\'attribuer aux membres.'))

            if 'generates_accred' not in data:  # If no accred generation, both other fields are Blank/False
                data['generated_accred_type'] = ''
                if 'ldap_visible' in data:
                    del data['ldap_visible']

        if MemberSet.objects.exclude(pk=self.pk).filter(unit=get_current_unit(form.truffe_request), name=data['name']).count():
            raise forms.ValidationError(_(u'L\'unité possède déjà un groupe avec ce nom.'))  # Potentiellement parmi les supprimées
Exemple #14
0
def users_myunit_pdf(request):
    """PDF of users in the current unit"""

    current_unit = get_current_unit(request)

    if not current_unit.is_user_in_groupe(request.user):
        raise Http404

    no_display = bool(request.GET.get('no_display', False))

    liste = []

    for accred in current_unit.current_accreds():
        accred.truffe2_tmp_pdf_display_mobile = UserPrivacy.user_can_access(request.user, accred.user, 'mobile')
        liste.append(accred)

    return generate_pdf("users/users/myunit_pdf.html", request, {'unit': current_unit, 'liste': liste, 'no_display_name': no_display})
Exemple #15
0
def accreds_list(request):
    """Display the list of accreds"""

    from units.models import Unit

    main_unit = Unit.objects.get(pk=settings.ROOT_UNIT_PK)

    main_unit.set_rights_can_select(lambda unit: Accreditation.static_rights_can('LIST', request.user, unit))
    main_unit.set_rights_can_edit(lambda unit: Accreditation.static_rights_can('CREATE', request.user, unit))
    main_unit.check_if_can_use_hidden(request.user)

    if request.GET.get('upk'):
        update_current_unit(request, request.GET.get('upk'))

    can_edit = Accreditation.static_rights_can('CREATE', request.user, get_current_unit(request))

    return render(request, 'units/accreds/list.html', {'main_unit': main_unit, 'can_edit': can_edit})
Exemple #16
0
def users_myunit_pdf(request):
    """PDF of users in the current unit"""

    current_unit = get_current_unit(request)

    if not current_unit.is_user_in_groupe(request.user):
        raise Http404

    no_display = bool(request.GET.get('no_display', False))

    liste = []

    for accred in current_unit.current_accreds():
        accred.truffe2_tmp_pdf_display_mobile = UserPrivacy.user_can_access(request.user, accred.user, 'mobile')
        liste.append(accred)

    return generate_pdf("users/users/myunit_pdf.html", request, {'unit': current_unit, 'liste': liste, 'no_display_name': no_display})
Exemple #17
0
def accreds_list(request):
    """Display the list of accreds"""

    from units.models import Unit

    main_unit = Unit.objects.get(pk=settings.ROOT_UNIT_PK)

    main_unit.set_rights_can_select(lambda unit: Accreditation.static_rights_can('LIST', request.user, unit))
    main_unit.set_rights_can_edit(lambda unit: Accreditation.static_rights_can('CREATE', request.user, unit))
    main_unit.check_if_can_use_hidden(request.user)

    if request.GET.get('upk'):
        update_current_unit(request, request.GET.get('upk'))

    can_edit = Accreditation.static_rights_can('CREATE', request.user, get_current_unit(request))

    return render(request, 'units/accreds/list.html', {'main_unit': main_unit, 'can_edit': can_edit})
Exemple #18
0
def users_myunit_vcard(request):
    """VCARD for users in the current unit"""

    current_unit = get_current_unit(request)

    if not current_unit.is_user_in_groupe(request.user):
        raise Http404

    retour = ""

    for accred in current_unit.current_accreds():
        retour += "%s\n\n" % (accred.user.generate_vcard(request.user, add_unit=current_unit),)

    response = HttpResponse(retour[:-2], content_type="text/x-vcard")
    name = smart_str(current_unit)
    name = name.replace(" ", "_")
    response["Content-Disposition"] = "attachment; filename=" + name + ".vcf"

    return response
Exemple #19
0
def users_myunit_vcard(request):
    """VCARD for users in the current unit"""

    current_unit = get_current_unit(request)

    if not current_unit.is_user_in_groupe(request.user):
        raise Http404

    retour = ""

    for accred in current_unit.current_accreds():
        retour += "%s\n\n" % (accred.user.generate_vcard(request.user, add_unit=current_unit),)

    response = HttpResponse(retour[:-2], content_type='text/x-vcard')
    name = smart_str(current_unit)
    name = name.replace(' ', '_')
    response['Content-Disposition'] = 'attachment; filename=' + name + '.vcf'

    return response