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_logs_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')) return render(request, 'units/accreds/logs_list.html', {'main_unit': main_unit})
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_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 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 home(request): """Home page dashboard""" from units.models import Accreditation BOXES = [ # (lambda request: should_show, Function to call, template) (lambda request: True, _home_news, "news.html"), (lambda request: True, lambda request: {}, "moderate.html"), (lambda request: Accreditation.static_rights_can('VALIDATE', request.user), _home_accreds, "accreds_to_validate.html"), (lambda request: request.user.rights_in_any_unit('TRESORERIE') or request.user.is_superuser, _home_invoices, "invoices.html"), (lambda request: request.user.rights_in_root_unit(request.user, ['TRESORERIE', 'SECRETARIAT']) or request.user.is_superuser, _home_internal_transferts, "internaltransfers.html"), (lambda request: request.user.rights_in_any_unit(['TRESORERIE', 'SECRETARIAT']) or request.user.is_superuser, _home_withdrawals, "withdrawals.html"), (lambda request: request.user.rights_in_any_unit(['TRESORERIE', 'SECRETARIAT']) or request.user.is_superuser, _home_expenseclaim, "expenseclaims.html"), (lambda request: request.user.rights_in_any_unit(['TRESORERIE', 'SECRETARIAT']) or request.user.is_superuser, _home_cashbook, "cashbooks.html"), (lambda request: request.user.rights_in_any_unit('TRESORERIE') or request.user.is_superuser, _home_accounting_lines, "accounting_lines.html"), (lambda request: request.user.rights_in_any_unit('TRESORERIE') or request.user.is_superuser, _home_accounting_errors, "accounting_errors.html"), (lambda request: request.user.rights_in_any_unit(['TRESORERIE', 'SECRETARIAT']) or request.user.is_superuser, _home_providerInvoice, "providerInvoice.html"), ] data = {} boxes_to_show = [] for (should_show, get_data, template) in BOXES: if should_show(request): data.update(get_data(request)) boxes_to_show.append('main/box/{}'.format(template)) ordered_boxes_to_show = [] user_order = ['main/box/{}'.format(x) for x in request.user.homepage.split(',')] if request.user.homepage else [] for box in user_order: if box in boxes_to_show: ordered_boxes_to_show.append(box) for box in boxes_to_show: if box not in user_order: ordered_boxes_to_show.append(box) data.update({'boxes_to_show': ordered_boxes_to_show}) from main.models import SignableDocument for document in SignableDocument.objects.filter(deleted=False, active=True): if document.should_sign(request.user) and not document.signed(request.user): return redirect(reverse('main-views-signabledocument_sign', args=(document.pk,))) return render(request, 'main/home.html', data)
def home(request): """Home page dashboard""" from units.models import Accreditation BOXES = [ # (lambda request: should_show, Function to call, template) (lambda request: True, _home_news, "news.html"), (lambda request: True, lambda request: {}, "moderate.html"), (lambda request: Accreditation.static_rights_can('VALIDATE', request.user), _home_accreds, "accreds_to_validate.html"), (lambda request: request.user.rights_in_any_unit('TRESORERIE') or request.user.is_superuser, _home_invoices, "invoices.html"), (lambda request: request.user.rights_in_root_unit(request.user, ['TRESORERIE', 'SECRETARIAT']) or request.user.is_superuser, _home_internal_transferts, "internaltransfers.html"), (lambda request: request.user.rights_in_any_unit(['TRESORERIE', 'SECRETARIAT']) or request.user.is_superuser, _home_withdrawals, "withdrawals.html"), (lambda request: request.user.rights_in_any_unit(['TRESORERIE', 'SECRETARIAT']) or request.user.is_superuser, _home_expenseclaim, "expenseclaims.html"), (lambda request: request.user.rights_in_any_unit(['TRESORERIE', 'SECRETARIAT']) or request.user.is_superuser, _home_cashbook, "cashbooks.html"), (lambda request: request.user.rights_in_any_unit('TRESORERIE') or request.user.is_superuser, _home_accounting_lines, "accounting_lines.html"), (lambda request: request.user.rights_in_any_unit('TRESORERIE') or request.user.is_superuser, _home_accounting_errors, "accounting_errors.html"), ] data = {} boxes_to_show = [] for (should_show, get_data, template) in BOXES: if should_show(request): data.update(get_data(request)) boxes_to_show.append('main/box/{}'.format(template)) ordered_boxes_to_show = [] user_order = ['main/box/{}'.format(x) for x in request.user.homepage.split(',')] if request.user.homepage else [] for box in user_order: if box in boxes_to_show: ordered_boxes_to_show.append(box) for box in boxes_to_show: if box not in user_order: ordered_boxes_to_show.append(box) data.update({'boxes_to_show': ordered_boxes_to_show}) from main.models import SignableDocument for document in SignableDocument.objects.filter(deleted=False, active=True): if document.should_sign(request.user) and not document.signed(request.user): return redirect(reverse('main.views.signabledocument_sign', args=(document.pk,))) return render(request, 'main/home.html', data)
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 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 setup_testing_users_units(): from units.models import Unit, Role, Accreditation now = timezone.now() admin_user = TruffeUser.objects.create_superuser(username='******', password='******', first_name='admin', last_name='admin') admin_user.mobile = "0123456789" admin_user.adresse = "rue machin" admin_user.nom_banque = "Postfinance" admin_user.iban_ou_ccp = "0009876543210" admin_user.save() Unit(id=2, name='My unit', description='unit very nice', is_commission=True, is_equipe=True).save() user1 = TruffeUser.objects.create_user(username='******', password='******', first_name='user1', last_name='user1') user1.mobile = "0123456789" user1.adresse = "rue machin" user1.nom_banque = "Postfinance" user1.iban_ou_ccp = "0009876543210" user1.save() user2 = TruffeUser.objects.create_user(username='******', password='******', first_name='user2', last_name='user2') user2.mobile = "0123456789" user2.adresse = "rue machin" user2.nom_banque = "Postfinance" user2.iban_ou_ccp = "0009876543210" user2.save() user3 = TruffeUser.objects.create_user(username='******', password='******', first_name='user3', last_name='user3') user3.mobile = "0123456789" user3.adresse = "rue machin" user3.nom_banque = "Postfinance" user3.iban_ou_ccp = "0009876543210" user3.save() user4 = TruffeUser.objects.create_user(username='******', password='******', first_name='user4', last_name='user4') user4.mobile = "0123456789" user4.adresse = "rue machin" user4.nom_banque = "Postfinance" user4.iban_ou_ccp = "0009876543210" user4.save() Role(id=1, name="role0", order=1, need_validation=False).save() Role(id=2, name="role1", order=2, need_validation=False, access='PRESIDENCE').save() Role(id=3, name="role2", order=3, need_validation=False, access='TRESORERIE').save() Role(id=4, name="role3", order=4, need_validation=False, access='SECRETARIAT').save() Role(id=5, name="role4", order=5, need_validation=False, access='INFORMATIQUE').save() Accreditation(unit_id=settings.ROOT_UNIT_PK, user=admin_user, role_id=1, need_validation=True).save() Accreditation(unit_id=2, user=user1, role_id=2, need_validation=False).save() Accreditation(unit_id=2, user=user2, role_id=3, need_validation=False).save() Accreditation(unit_id=2, user=user3, role_id=4, need_validation=False).save() Accreditation(unit_id=2, user=user4, role_id=5, need_validation=False).save() system_user = TruffeUser(pk=settings.SYSTEM_USER_PK, username='******', first_name='system', last_name='system', is_active=True, is_superuser=True, last_login=now, date_joined=now) system_user.set_password('system') system_user.save() return admin_user
def home(request): """Home page dashboard""" from units.models import Accreditation BOXES = [ # (lambda request: should_show, Function to call, template) (lambda request: True, _home_news, "news.html"), (lambda request: True, lambda request: {}, "moderate.html"), ( lambda request: Accreditation.static_rights_can("VALIDATE", request.user), _home_accreds, "accreds_to_validate.html", ), ( lambda request: request.user.rights_in_any_unit("TRESORERIE") or request.user.is_superuser, _home_invoices, "invoices.html", ), ( lambda request: request.user.rights_in_root_unit(request.user, ["TRESORERIE", "SECRETARIAT"]) or request.user.is_superuser, _home_internal_transferts, "internaltransfers.html", ), ( lambda request: request.user.rights_in_any_unit(["TRESORERIE", "SECRETARIAT"]) or request.user.is_superuser, _home_withdrawals, "withdrawals.html", ), ( lambda request: request.user.rights_in_any_unit(["TRESORERIE", "SECRETARIAT"]) or request.user.is_superuser, _home_expenseclaim, "expenseclaims.html", ), ( lambda request: request.user.rights_in_any_unit(["TRESORERIE", "SECRETARIAT"]) or request.user.is_superuser, _home_cashbook, "cashbooks.html", ), ( lambda request: request.user.rights_in_any_unit("TRESORERIE") or request.user.is_superuser, _home_accounting_lines, "accounting_lines.html", ), ( lambda request: request.user.rights_in_any_unit("TRESORERIE") or request.user.is_superuser, _home_accounting_errors, "accounting_errors.html", ), ] data = {} boxes_to_show = [] for (should_show, get_data, template) in BOXES: if should_show(request): data.update(get_data(request)) boxes_to_show.append("main/box/{}".format(template)) ordered_boxes_to_show = [] user_order = ["main/box/{}".format(x) for x in request.user.homepage.split(",")] if request.user.homepage else [] for box in user_order: if box in boxes_to_show: ordered_boxes_to_show.append(box) for box in boxes_to_show: if box not in user_order: ordered_boxes_to_show.append(box) data.update({"boxes_to_show": ordered_boxes_to_show}) return render(request, "main/home.html", data)