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': '******'})
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 ''
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": "******"}, )
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} )
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})
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"}, )
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)
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'})
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
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'})
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})
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})
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
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