コード例 #1
0
def tjek(user):
    return tjek_rettigheder(user, {'arkiveringsversioner_typer_se'})
コード例 #2
0
def tjek(user):
    return tjek_rettigheder(user, {'hardware_medie_se'})
コード例 #3
0
def tjek(user):
    return tjek_rettigheder(user, {'system_grupper_se'})
コード例 #4
0
ファイル: leverandoer_view.py プロジェクト: edbsystem/metax
def leverandoer_view(request, pk=None):

    if request.method == 'GET':

        if pk:
            if Leverandoer.objects.filter(pk=pk).exists():
                _leverandoer_obj = Leverandoer.objects.get(pk=pk)

                return render(
                    request, 'arkiveringsversioner/leverandoer.html', {
                        "bruger_rettigheder": rettigheder(request.user),
                        "pk": _leverandoer_obj.pk,
                        "navn": _leverandoer_obj.navn,
                    })

            if not Leverandoer.objects.filter(pk=pk).exists():
                messages.error(request, "Den angivet leverandør findes ikke.")
                return redirect('leverandoerer_view')

        if not pk:
            messages.error(request, "Ingen leverandør angivet.")
            return redirect('leverandoerer_view')

    if request.method == 'POST' and tjek_rettigheder(
            request.user, {'arkiveringsversioner_leverandør_rediger'}):

        if 'fortryd' in request.POST:
            return redirect('leverandoerer_view')

        _pk = request.POST['pk'] if 'pk' in request.POST else None
        _navn = request.POST['navn'] if 'navn' in request.POST else None

        if _pk:
            _leverandoer_obj = None
            _tjek_navn = False

            try:
                _pk = int(_pk)
            except ValueError:
                messages.error(request, f"Den angivet leverandør findes ikke.")
                return redirect('leverandoerer_view')

            if Leverandoer.objects.filter(pk=_pk).exists():
                _leverandoer_obj = Leverandoer.objects.get(pk=_pk)
            else:
                messages.error(request, f"Den angivet leverandør findes ikke.")
                return redirect('leverandoerer_view')

            if 'slet' in request.POST and tjek_rettigheder(
                    request.user, {'arkiveringsversioner_leverandør_slet'}):
                messages.warning(
                    request,
                    f"Leverandøren '{_leverandoer_obj.navn}' blev slettet.")
                _leverandoer_obj.delete()
                return redirect('leverandoerer_view')

            if _navn != '' and Leverandoer.objects.filter(navn=_navn).exists():
                _navn_leverandoer_obj = Leverandoer.objects.filter(
                    navn=_navn).first()
                if _leverandoer_obj.pk == _navn_leverandoer_obj.pk:
                    _tjek_navn = True
                else:
                    _tjek_navn = False
                    messages.error(
                        request,
                        f"En leverandør med navnet '{_navn}' findes allerede.")
            else:
                _tjek_navn = True

            if not _tjek_navn:
                return render(
                    request, 'arkiveringsversioner/leverandoer.html', {
                        "bruger_rettigheder": rettigheder(request.user),
                        "pk": _pk,
                        "navn": _navn,
                    })

            _leverandoer_obj.navn = _navn.strip()
            _leverandoer_obj.save()

            messages.success(
                request, f"Leverandøren '{_leverandoer_obj.navn}' blev gemt.")
            return redirect('leverandoerer_view')

        if not _pk and tjek_rettigheder(
                request.user, {'arkiveringsversioner_leverandør_opret'}):
            _leverandoer_obj = Leverandoer.objects.create()
            messages.success(request, "Ny leverandør blev oprettet.")
            return render(
                request, 'arkiveringsversioner/leverandoer.html', {
                    "bruger_rettigheder": rettigheder(request.user),
                    "pk": _leverandoer_obj.pk,
                    "navn": _leverandoer_obj.navn,
                    "ny": True,
                })

        return redirect('leverandoerer_view')

    return redirect('leverandoerer_view')
コード例 #5
0
def medie_view(request, pk=None):

    if request.method == 'GET':

        if pk:
            if Medie.objects.filter(pk=pk).exists():
                _medie_obj = Medie.objects.get(pk=pk)

                return render(
                    request, 'hardware/medie.html', {
                        "bruger_rettigheder": rettigheder(request.user),
                        "pk": _medie_obj.pk,
                        "navn": _medie_obj.navn,
                        "producent": _medie_obj.producent,
                        "kapacitet": _medie_obj.kapacitet,
                        "medie_type": _medie_obj.type,
                        "ny": False,
                    })

            if not Medie.objects.filter(pk=pk).exists():
                messages.error(request, "Det angivet medie findes ikke.")
                return redirect('medier_view')

        if not pk:
            messages.error(request, "Intet medie angivet.")
            return redirect('medier_view')

    if request.method == 'POST' and tjek_rettigheder(
            request.user, {'hardware_medie_rediger'}):

        if 'fortryd' in request.POST:
            return redirect('medier_view')

        _pk = request.POST['pk'] if 'pk' in request.POST else None
        _navn = request.POST['navn'].upper(
        ) if 'navn' in request.POST else None
        _producent = request.POST[
            'producent'] if 'producent' in request.POST else None
        _kapacitet = request.POST[
            'kapacitet'] if 'kapacitet' in request.POST else None
        _medie_type = request.POST[
            'medie_type'] if 'medie_type' in request.POST else None

        if _pk:
            _medie_obj = None
            _tjek_navn = False
            _tjek_kapacitet = False

            try:
                _pk = int(_pk)
            except ValueError:
                messages.error(request, f"Det angivet medie findes ikke.")
                return redirect('medier_view')

            if Medie.objects.filter(pk=_pk).exists():
                _medie_obj = Medie.objects.get(pk=_pk)
            else:
                messages.error(request, f"Det angivet medie findes ikke.")
                return redirect('medier_view')

            if 'slet' in request.POST and tjek_rettigheder(
                    request.user, {'hardware_medie_slet'}):
                messages.warning(request,
                                 f"Mediet '{_medie_obj.navn}' blev slettet.")
                _medie_obj.delete()
                return redirect('medier_view')

            if _navn != '' and Medie.objects.filter(navn=_navn).exists():
                _navn_medie_obj = Medie.objects.filter(navn=_navn).first()
                if _medie_obj.pk == _navn_medie_obj.pk:
                    _tjek_navn = True
                else:
                    _tjek_navn = False
                    messages.error(
                        request,
                        f"Et medie med navnet '{_navn}' findes allerede.")
            else:
                _tjek_navn = True

            if _kapacitet != '':
                try:
                    _kapacitet = int(_kapacitet)
                    _tjek_kapacitet = True
                except ValueError:
                    _tjek_kapacitet = False
                    messages.error(request,
                                   "'Kapacitet i GB' er ikke et heltal.")
            else:
                _kapacitet = 0
                _tjek_kapacitet = True

            if not _tjek_navn or not _tjek_kapacitet:
                return render(
                    request, 'hardware/medie.html', {
                        "bruger_rettigheder": rettigheder(request.user),
                        "pk": _pk,
                        "navn": _navn,
                        "producent": _producent,
                        "kapacitet": _kapacitet,
                        "medie_type": _medie_type,
                        "ny": False,
                    })

            _medie_obj.navn = _navn.strip()
            _medie_obj.producent = _producent.strip()
            _medie_obj.kapacitet = _kapacitet
            _medie_obj.type = _medie_type
            _medie_obj.save()

            messages.success(request, f"Mediet '{_medie_obj.navn}' blev gemt.")
            return redirect('medier_view')

        if not _pk and tjek_rettigheder(request.user,
                                        {'hardware_medie_opret'}):
            _medie_obj = Medie.objects.create()
            messages.success(request, "Nyt medie blev oprettet.")
            return render(
                request, 'hardware/medie.html', {
                    "bruger_rettigheder": rettigheder(request.user),
                    "pk": _medie_obj.pk,
                    "navn": _medie_obj.navn,
                    "producent": _medie_obj.producent,
                    "kapacitet": _medie_obj.kapacitet,
                    "medie_type": _medie_obj.type,
                    "ny": True,
                })

        return redirect('medier_view')

    return redirect('medier_view')
コード例 #6
0
def bruger_view(request, initialer=None):

    if request.method == 'GET':

        if initialer:

            if Profil.objects.filter(initialer=initialer).exists():
                _profil_obj = Profil.objects.get(initialer=initialer)
                _bruger_obj = Bruger.objects.get(profil=_profil_obj)

                _tildelte_grupper = []
                for _gruppe_obj in Gruppe.objects.filter(bruger=_bruger_obj):
                    _tildelte_grupper.append(_gruppe_obj.navn)

                return render(
                    request, 'system/bruger.html', {
                        "bruger_rettigheder": rettigheder(request.user),
                        "initialer": _bruger_obj.profil.initialer,
                        "fornavn": _bruger_obj.profil.fornavn,
                        "mellemnavn": _bruger_obj.profil.mellemnavn,
                        "efternavn": _bruger_obj.profil.efternavn,
                        "adgangskode": '',
                        "tildelte_grupper": sorted(_tildelte_grupper),
                        "ny": False,
                        "slet":
                        False if 'SUPERUSER' in _tildelte_grupper else True
                    })

            if not Profil.objects.filter(initialer=initialer).exists():
                messages.error(request, "Den angivet bruger findes ikke.")
                return redirect('brugere_view')

        if not initialer:
            return render(
                request, 'system/bruger.html', {
                    "bruger_rettigheder": rettigheder(request.user),
                    "initialer": '',
                    "fornavn": '',
                    "mellemnavn": '',
                    "efternavn": '',
                    "adgangskode": '',
                    "ny": True,
                    "slet": False,
                })

    if request.method == 'POST' and tjek_rettigheder(
            request.user, {'system_bruger_rediger'}):

        if 'fortryd' in request.POST:
            return redirect('brugere_view')

        _ny = request.POST['ny'] if 'ny' in request.POST else 'False'
        _initialer = request.POST['initialer'].upper(
        ) if 'initialer' in request.POST else None
        _fornavn = request.POST[
            'fornavn'] if 'fornavn' in request.POST else None
        _mellemnavn = request.POST[
            'mellemnavn'] if 'mellemnavn' in request.POST else None
        _efternavn = request.POST[
            'efternavn'] if 'efternavn' in request.POST else None
        _adgangskode = request.POST[
            'adgangskode'] if 'adgangskode' in request.POST else None

        if _initialer:
            if len(_initialer) != 3:

                _grupper = []
                for _gruppe_obj in Gruppe.objects.all():
                    _grupper.append(_gruppe_obj.navn)

                _tildelte_grupper = []
                for _gruppe in _grupper:
                    if _gruppe in request.POST:
                        _tildelte_grupper.append(_gruppe)

                messages.error(
                    request,
                    f"Initialer skal altid udgøres af tre tegn. Hverken mere eller mindre. Tre tegn!"
                )
                return render(
                    request, 'system/bruger.html', {
                        "bruger_rettigheder": rettigheder(request.user),
                        "initialer": _initialer,
                        "fornavn": _fornavn,
                        "mellemnavn": _mellemnavn,
                        "efternavn": _efternavn,
                        "adgangskode": '',
                        "tildelte_grupper": sorted(_tildelte_grupper),
                        "ny": True,
                        "slet": False,
                    })

            if Profil.objects.filter(initialer=_initialer).exists():

                if 'slet' in request.POST and tjek_rettigheder(
                        request.user, {'system_bruger_slet'}):
                    _user_obj = User.objects.get(username=_initialer)
                    _profil_obj = Profil.objects.get(initialer=_initialer)
                    _bruger_obj = Bruger.objects.get(profil=_profil_obj)

                    _tildelte_grupper = []
                    for _gruppe_obj in Gruppe.objects.filter(
                            bruger=_bruger_obj):
                        _tildelte_grupper.append(_gruppe_obj.navn)

                    if 'SUPERUSER' in _tildelte_grupper:
                        messages.error(
                            request,
                            f"Du kan ikke slette en bruger der er medlem af gruppen 'SUPERUSER'"
                        )
                        return redirect('brugere_view')

                    _user_obj.delete()
                    _bruger_obj.delete()
                    _profil_obj.delete()

                    messages.warning(request,
                                     f"Brugeren '{_initialer}' blev slettet.")
                    return redirect('brugere_view')

                if _ny == 'True':
                    messages.error(
                        request, f"Brugeren '{_initialer}' findes allerede.")

                    return render(
                        request, 'system/bruger.html', {
                            "bruger_rettigheder": rettigheder(request.user),
                            "fornavn": _fornavn,
                            "mellemnavn": _mellemnavn,
                            "efternavn": _efternavn,
                            "adgangskode": '',
                            "ny": True,
                            "slet": False,
                        })

                if not _ny == 'True':
                    _profil_obj = Profil.objects.get(initialer=_initialer)
                    _bruger_obj = Bruger.objects.get(profil=_profil_obj)

                    _bruger_obj.profil.fornavn = _fornavn if _fornavn != '' else _bruger_obj.profil.fornavn
                    _bruger_obj.profil.mellemnavn = _mellemnavn if _mellemnavn != '' else _bruger_obj.profil.mellemnavn
                    _bruger_obj.profil.efternavn = _efternavn if _efternavn != '' else _bruger_obj.profil.efternavn
                    _bruger_obj.profil.save()

                    if _adgangskode != '':
                        _user_obj = User.objects.get(username=_initialer)
                        _user_obj.set_password(_adgangskode)
                        _user_obj.save()

                    _grupper = []
                    for gruppe_obj in Gruppe.objects.all():
                        _grupper.append(gruppe_obj.navn)

                    for _gruppe in _grupper:
                        _post_gruppe = request.POST[
                            _gruppe] if _gruppe in request.POST else None

                        if _post_gruppe:
                            if not Gruppe.objects.filter(
                                    navn=_gruppe, bruger=_bruger_obj).first():
                                _gruppe_obj = Gruppe.objects.get(navn=_gruppe)
                                _gruppe_obj.bruger.add(_bruger_obj)

                        if not _post_gruppe:
                            _gruppe_obj = Gruppe.objects.filter(
                                navn=_gruppe, bruger=_bruger_obj).first()
                            if _gruppe_obj:
                                _gruppe_obj.bruger.remove(_bruger_obj)

                    messages.success(request,
                                     f"Brugeren '{_initialer}' blev gemt.")
                    return redirect('brugere_view')

            if not Profil.objects.filter(
                    initialer=_initialer).exists() and tjek_rettigheder(
                        request.user, {'system_bruger_opret'}):
                User.objects.create_user(username=_initialer)
                _profil_obj = Profil.objects.create(initialer=_initialer)
                _bruger_obj = Bruger.objects.create(profil=_profil_obj)

                _bruger_obj.profil.fornavn = _fornavn if _fornavn != '' else _bruger_obj.profil.fornavn
                _bruger_obj.profil.mellemnavn = _mellemnavn if _mellemnavn != '' else _bruger_obj.profil.mellemnavn
                _bruger_obj.profil.efternavn = _efternavn if _efternavn != '' else _bruger_obj.profil.efternavn
                _bruger_obj.profil.save()

                if _adgangskode:
                    _user_obj = User.objects.get(username=_initialer)
                    _user_obj.set_password(_adgangskode)
                    _user_obj.save()

                _grupper = []
                for gruppe_obj in Gruppe.objects.all():
                    _grupper.append(gruppe_obj.navn)

                for _gruppe in _grupper:
                    _post_gruppe = request.POST[
                        _gruppe] if _gruppe in request.POST else None

                    if _post_gruppe:
                        if not Gruppe.objects.filter(
                                navn=_gruppe, bruger=_bruger_obj).first():
                            _gruppe_obj = Gruppe.objects.get(navn=_gruppe)
                            _gruppe_obj.bruger.add(_bruger_obj)

                    if not _post_gruppe:
                        _gruppe_obj = Gruppe.objects.filter(
                            navn=_gruppe, bruger=_bruger_obj).first()
                        if _gruppe_obj:
                            _gruppe_obj.bruger.remove(_bruger_obj)

                messages.success(request,
                                 f"Brugeren '{_initialer}' blev oprettet.")
                return redirect('brugere_view')

        if not _initialer:
            messages.error(request, f"Udfyld venligst feltet 'Initialer'.")
            return render(
                request, 'system/bruger.html', {
                    "bruger_rettigheder": rettigheder(request.user),
                    "initialer": _initialer,
                    "fornavn": _fornavn,
                    "mellemnavn": _mellemnavn,
                    "efternavn": _efternavn,
                    "adgangskode": '',
                    "ny": True,
                    "slet": False,
                })
コード例 #7
0
def tjek(user):
    return tjek_rettigheder(user, {'system_bruger_se'})
コード例 #8
0
def tjek(user):
    return tjek_rettigheder(user, {'arkiveringsversioner_leverandører_se'})
コード例 #9
0
def tjek(user):
    return tjek_rettigheder(user, {'hardware_maskiner_se'})
コード例 #10
0
ファイル: statistik_view.py プロジェクト: edbsystem/metax
def tjek(user):
    return tjek_rettigheder(user, {'statistik_se'})
コード例 #11
0
ファイル: profil_view.py プロジェクト: edbsystem/metax
def tjek(user):
    return tjek_rettigheder(user, {'system_profil_se'})
コード例 #12
0
ファイル: profil_view.py プロジェクト: edbsystem/metax
def profil_view(request, initialer=None):

    if request.method == 'GET':

        if Profil.objects.filter(initialer=request.user.username).exists():
            profil_obj = Profil.objects.get(initialer=request.user.username)

            return render(
                request, 'system/profil.html', {
                    "bruger_rettigheder": rettigheder(request.user),
                    "profil": profil_obj
                })

    if request.method == 'POST' and tjek_rettigheder(
            request.user, {'system_profil_rediger'}):

        if Profil.objects.filter(initialer=request.user.username).exists():

            _profil_obj = Profil.objects.get(initialer=request.user.username)
            _user_obj = User.objects.get(username=request.user.username)

            _nuvaerende_adgangskode = request.POST[
                'nuvaerende_adgangskode'] if 'nuvaerende_adgangskode' in request.POST else None
            _ny_adgangskode = request.POST[
                'ny_adgangskode'] if 'ny_adgangskode' in request.POST else None
            _bekraeft_adgangskode = request.POST[
                'bekraeft_adgangskode'] if 'bekraeft_adgangskode' in request.POST else None

            _check_nuvaerende_adgangskode = False
            _check_ny_og_bekraeft_adgangskode = False

            if _nuvaerende_adgangskode:
                if _user_obj.check_password(_nuvaerende_adgangskode):
                    _check_nuvaerende_adgangskode = True
                else:
                    messages.error(request,
                                   "'Nuværende' adgangkode er forkert.")
            else:
                messages.error(request, "Feltet 'Nuværende' er tomt.")

            if not _ny_adgangskode:
                messages.error(request, "Feltet 'Ny' er tomt.")

            if not _bekraeft_adgangskode:
                messages.error(request, "Feltet 'Bekræft' er tomt.")

            if _ny_adgangskode and _bekraeft_adgangskode:
                if _ny_adgangskode == _bekraeft_adgangskode:
                    _check_ny_og_bekraeft_adgangskode = True
                else:
                    messages.error(
                        request,
                        "'Ny' afgangskode og 'Bekræft' adgangskode stemmer ikke overens."
                    )

            if _check_nuvaerende_adgangskode and _check_ny_og_bekraeft_adgangskode:
                _user_obj.set_password(_ny_adgangskode)
                _user_obj.save()
                return redirect('login_view')

            return render(
                request, 'system/profil.html', {
                    "bruger_rettigheder": rettigheder(request.user),
                    "profil": _profil_obj,
                    "nuvaerende_adgangskode": _nuvaerende_adgangskode,
                    "ny_adgangskode": _ny_adgangskode,
                    "bekraeft_adgangskode": _bekraeft_adgangskode,
                })

    return redirect('forside_view')
コード例 #13
0
ファイル: forside_view.py プロジェクト: edbsystem/metax
def tjek(user):
    return tjek_rettigheder(user, {'system_logind'})
コード例 #14
0
ファイル: maskine_view.py プロジェクト: edbsystem/metax
def maskine_view(request, pk=None):

    if request.method == 'GET':

        if pk:
            if Maskine.objects.filter(pk=pk).exists():
                _maskine_obj = Maskine.objects.get(pk=pk)

                return render(
                    request, 'hardware/maskine.html', {
                        "bruger_rettigheder":
                        rettigheder(request.user),
                        "pk":
                        _maskine_obj.pk,
                        "navn":
                        _maskine_obj.navn,
                        "processor":
                        _maskine_obj.processor,
                        "bundkort":
                        _maskine_obj.bundkort,
                        "arbejdshukommelse":
                        _maskine_obj.arbejdshukommelse,
                        "maskine_type":
                        _maskine_obj.type,
                        "lokation":
                        _maskine_obj.placering.lokation
                        if _maskine_obj.placering else None,
                        "lokale":
                        _maskine_obj.placering.lokale
                        if _maskine_obj.placering else None,
                        "netvaerk":
                        _maskine_obj.placering.netvaerk
                        if _maskine_obj.placering else None,
                        "kommentar":
                        _maskine_obj.kommentar,
                        "ny":
                        False,
                    })

            if not Maskine.objects.filter(pk=pk).exists():
                messages.error(request, "Den angivet maskine findes ikke.")
                return redirect('maskiner_view')

        if not pk:
            messages.error(request, "Ingen maskine angivet.")
            return redirect('maskiner_view')

    if request.method == 'POST' and tjek_rettigheder(
            request.user, {'hardware_maskine_rediger'}):

        if 'fortryd' in request.POST:
            return redirect('maskiner_view')

        _pk = request.POST['pk'] if 'pk' in request.POST else None
        _navn = request.POST['navn'].upper(
        ) if 'navn' in request.POST else None
        _processor = request.POST[
            'processor'] if 'processor' in request.POST else None
        _bundkort = request.POST[
            'bundkort'] if 'bundkort' in request.POST else None
        _arbejdshukommelse = request.POST[
            'arbejdshukommelse'] if 'arbejdshukommelse' in request.POST else None
        _type = request.POST[
            'maskine_type'] if 'maskine_type' in request.POST else None
        _lokation = request.POST[
            'lokation'] if 'lokation' in request.POST else None
        _lokale = request.POST['lokale'] if 'lokale' in request.POST else None
        _netvaerk = request.POST[
            'netvaerk'] if 'netvaerk' in request.POST else None
        _kommentar = request.POST.get('kommentar') if request.POST.get(
            'kommentar') else ''

        if _pk:
            _maskine_obj = None
            _tjek_navn = False
            _tjek_arbejdshukommelse = False

            try:
                _pk = int(_pk)
            except ValueError:
                messages.error(request, f"Den angivet maskine findes ikke.")
                return redirect('maskiner_view')

            if Maskine.objects.filter(pk=_pk).exists():
                _maskine_obj = Maskine.objects.get(pk=_pk)
            else:
                messages.error(request, f"Den angivet maskine findes ikke.")
                return redirect('maskiner_view')

            if 'slet' in request.POST and tjek_rettigheder(
                    request.user, {'hardware_maskine_slet'}):
                messages.warning(
                    request, f"Maskinen '{_maskine_obj.navn}' blev slettet.")
                _maskine_obj.placering.delete()
                _maskine_obj.delete()
                return redirect('maskiner_view')

            if _navn != '' and Maskine.objects.filter(navn=_navn).exists():
                _navn_maskine_obj = Maskine.objects.filter(navn=_navn).first()
                if _maskine_obj.pk == _navn_maskine_obj.pk:
                    _tjek_navn = True
                else:
                    _tjek_navn = False
                    messages.error(
                        request,
                        f"En maskine med navnet '{_navn}' findes allerede.")
            else:
                _tjek_navn = True

            if _arbejdshukommelse != '':
                try:
                    _arbejdshukommelse = int(_arbejdshukommelse)
                    _tjek_arbejdshukommelse = True
                except ValueError:
                    _tjek_arbejdshukommelse = False
                    messages.error(
                        request, "'Arbejdshukommelse i GB' er ikke et heltal.")
            else:
                _arbejdshukommelse = 0
                _tjek_arbejdshukommelse = True

            if not _tjek_navn or not _tjek_arbejdshukommelse:
                return render(
                    request, 'hardware/maskine.html', {
                        "bruger_rettigheder": rettigheder(request.user),
                        "pk": _pk,
                        "navn": _navn,
                        "processor": _processor,
                        "bundkort": _bundkort,
                        "arbejdshukommelse": _arbejdshukommelse,
                        "type": _type,
                        "lokation": _lokation,
                        "lokale": _lokale,
                        "netvaerk": _netvaerk,
                        "kommentar": _kommentar,
                        "ny": False,
                    })

            _maskine_obj.navn = _navn.strip()
            _maskine_obj.processor = _processor.strip()
            _maskine_obj.bundkort = _bundkort.strip()
            _maskine_obj.arbejdshukommelse = _arbejdshukommelse
            _maskine_obj.type = _type
            _maskine_obj.placering.lokation = _lokation
            _maskine_obj.placering.lokale = _lokale
            _maskine_obj.placering.netvaerk = _netvaerk
            _maskine_obj.placering.save()
            _maskine_obj.kommentar = _kommentar
            _maskine_obj.save()

            messages.success(request,
                             f"Maskinen '{_maskine_obj.navn}' blev gemt.")
            return redirect('maskiner_view')

        if not _pk and tjek_rettigheder(request.user,
                                        {'hardware_maskine_opret'}):
            _maskine_obj = Maskine.objects.create(
                placering=Placering.objects.create())

            messages.success(request, "Ny maskine blev oprettet.")
            return render(
                request, 'hardware/maskine.html', {
                    "bruger_rettigheder":
                    rettigheder(request.user),
                    "pk":
                    _maskine_obj.pk,
                    "navn":
                    _maskine_obj.navn,
                    "processor":
                    _maskine_obj.processor,
                    "bundkort":
                    _maskine_obj.bundkort,
                    "arbejdshukommelse":
                    _maskine_obj.arbejdshukommelse,
                    "type":
                    _maskine_obj.type,
                    "lokation":
                    _maskine_obj.placering.lokation
                    if _maskine_obj.placering else None,
                    "lokale":
                    _maskine_obj.placering.lokale
                    if _maskine_obj.placering else None,
                    "netvaerk":
                    _maskine_obj.placering.netvaerk
                    if _maskine_obj.placering else None,
                    "kommentar":
                    _maskine_obj.kommentar,
                    "ny":
                    True,
                })

        return redirect('maskiner_view')

    return redirect('maskiner_view')