Esempio n. 1
0
def mangler_maskine_view(request, maskine=None, avid=None, version=None):

    if not maskine or not avid or not version:

        versioner = []
        stoerrelse = 0

        versioner_objs = Version.objects.filter(
            status='Modtaget',
            modtaget_kopieret=True,
            modtaget_modtagelse_godkendt=True,
        ).order_by('svarfrist')

        for version_obj in versioner_objs:
            av_obj = Arkiveringsversion.objects.filter(
                avid=version_obj.avid.avid).first()
            if len(Medie.objects.filter(versioner=version_obj,
                                        maskine=None)) > 0:
                if Medie.objects.filter(maskine=None):
                    versioner.append({
                        "avid":
                        av_obj.avid,
                        "version":
                        version_obj.nummer,
                        "jnr":
                        av_obj.jnr,
                        "titel":
                        av_obj.titel,
                        "kategori":
                        av_obj.kategori,
                        "svarfrist":
                        '{:%d-%m-%Y}'.format(version_obj.svarfrist)
                        if version_obj.svarfrist != None else '',
                        "stoerrelse":
                        int(version_obj.stoerrelsemb / 1024),
                    })
                    stoerrelse += version_obj.stoerrelsemb

        return render(
            request, 'arkiveringsversioner/mangler_maskine.html', {
                "bruger_rettigheder": rettigheder(request.user),
                "versioner": versioner,
                "samlet_stoerrelse": int(stoerrelse / 1024),
            })

    if maskine or avid or version:

        _maskine_obj = Maskine.objects.get(navn=maskine)
        _arkiveringsversion_obj = Arkiveringsversion.objects.get(avid=avid)
        _version_obj = Version.objects.get(nummer=version,
                                           avid=_arkiveringsversion_obj)
        _medie_obj = Medie.objects.filter(versioner=_version_obj).first()
        _medie_obj.maskine = _maskine_obj
        _medie_obj.save()
        messages.success(
            request,
            f"Maskinen '{_maskine_obj.navn}' tildelt til version '{_version_obj.nummer}' af 'AVID.{_version_obj.avid}'"
        )

    return redirect('arkiveringsversion_view', avid=avid, version=version)
Esempio n. 2
0
def medier_view(request):

    _medier_objs = sorted(Medie.objects.all(), key=lambda _medie: _medie.navn)

    _medier = []
    for _medie_obj in _medier_objs:
        versioner_objs = _medie_obj.versioner.all()
        versioner = []
        for v in versioner_objs:
            versioner.append(v.avid.avid)
        _medier.append({
            "pk": _medie_obj.pk,
            "navn": _medie_obj.navn,
            "producent": _medie_obj.producent,
            "kapacitet": _medie_obj.kapacitet,
            "versioner": versioner,
            "maskine": _medie_obj.maskine,
        })

    print(_medier)

    return render(request, 'hardware/medier.html', {
        "bruger_rettigheder": rettigheder(request.user),
        "medier": _medier,
    })
Esempio n. 3
0
def typer_view(request):

    _typer_objs = sorted(Type.objects.all(), key=lambda _type: _type.navn)

    return render(request, 'arkiveringsversioner/typer.html', {
        "bruger_rettigheder": rettigheder(request.user),
        "typer": _typer_objs,
    })
Esempio n. 4
0
def brugere_view(request):

    _brugere = sorted(Bruger.objects.all(),
                      key=lambda _bruger: _bruger.profil.initialer)

    return render(request, 'system/brugere.html', {
        "bruger_rettigheder": rettigheder(request.user),
        "brugere": _brugere,
    })
Esempio n. 5
0
def grupper_view(request):

    _grupper_objs = Gruppe.objects.all().order_by(Lower('navn'))

    return render(
        request, 'system/grupper.html', {
            "bruger_rettigheder": rettigheder(request.user),
            "grupper": _grupper_objs,
        })
Esempio n. 6
0
def leverandoerer_view(request):

    _leverandoerer_objs = sorted(Leverandoer.objects.all(),
                                 key=lambda _leverandoer: _leverandoer.navn)

    return render(
        request, 'arkiveringsversioner/leverandoerer.html', {
            "bruger_rettigheder": rettigheder(request.user),
            "leverandoerer": _leverandoerer_objs,
        })
Esempio n. 7
0
def maskiner_view(request):

    _maskiner_objs = sorted(Maskine.objects.all(),
                            key=lambda _maskine: _maskine.navn)

    return render(
        request, 'hardware/maskiner.html', {
            "bruger_rettigheder": rettigheder(request.user),
            "maskiner": _maskiner_objs,
        })
Esempio n. 8
0
def tjek_rettigheder(user, rttghdr):

    if not user.is_authenticated:
        return False

    _rettigheder = rettigheder(user)

    if not rttghdr.issubset(_rettigheder):
        return False

    return True
Esempio n. 9
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')
Esempio n. 10
0
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')
Esempio n. 11
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,
                })
Esempio n. 12
0
def system_view(request):
    return render(request, 'system/system.html', {
        "bruger_rettigheder": rettigheder(request.user),
    })
Esempio n. 13
0
def forside_view(request):
    return render(request, 'forside/forside.html', {
        "bruger_rettigheder": rettigheder(request.user)
    })
Esempio n. 14
0
def hardware_view(request):
    return render(request, 'hardware/hardware.html', {
        "bruger_rettigheder": rettigheder(request.user),
    })
Esempio n. 15
0
def soeg_view(request, nulstil=0):

    _avid = request.GET.get(
        'avid_soeg') if 'avid_soeg' in request.GET and request.GET.get(
            'avid_soeg') != '' else None
    _jnr = request.GET.get(
        'jnr_soeg') if 'jnr_soeg' in request.GET and request.GET.get(
            'jnr_soeg') != '' else None
    _titel = request.GET.get(
        'titel_soeg') if 'titel_soeg' in request.GET and request.GET.get(
            'titel_soeg') != '' else None
    _land = request.GET.getlist(
        'land_soeg') if 'land_soeg' in request.GET else None
    _status = request.GET.getlist(
        'status_soeg') if 'status_soeg' in request.GET else None
    _kategori = request.GET.getlist(
        'kategori_soeg') if 'kategori_soeg' in request.GET else None
    _klassifikation = request.GET.getlist(
        'klassifikation_soeg'
    ) if 'klassifikation_soeg' in request.GET else None
    _type = request.GET.getlist(
        'type_soeg') if 'type_soeg' in request.GET else None
    _arkivar = request.GET.getlist(
        'arkivar_soeg') if 'arkivar_soeg' in request.GET else None
    _leverandoer = request.GET.getlist(
        'leverandoer_soeg') if 'leverandoer_soeg' in request.GET else None
    _tester = request.GET.getlist(
        'tester_soeg') if 'tester_soeg' in request.GET else None
    _afleveringsfrist_fra = datetime.strptime(
        request.GET.get('afleveringsfrist_fra_soeg'), '%d-%m-%Y').date(
        ) if 'afleveringsfrist_fra_soeg' in request.GET and request.GET.get(
            'afleveringsfrist_fra_soeg') != '' else None
    _afleveringsfrist_til = datetime.strptime(
        request.GET.get('afleveringsfrist_til_soeg'), '%d-%m-%Y').date(
        ) if 'afleveringsfrist_til_soeg' in request.GET and request.GET.get(
            'afleveringsfrist_til_soeg') != '' else None
    _modtaget_fra = datetime.strptime(
        request.GET.get('modtaget_fra_soeg'), '%d-%m-%Y').date(
        ) if 'modtaget_fra_soeg' in request.GET and request.GET.get(
            'modtaget_fra_soeg') != '' else None
    _modtaget_til = datetime.strptime(
        request.GET.get('modtaget_til_soeg'), '%d-%m-%Y').date(
        ) if 'modtaget_til_soeg' in request.GET and request.GET.get(
            'modtaget_til_soeg') != '' else None
    _adgang_fra = datetime.strptime(
        request.GET.get('adgang_fra_soeg'), '%d-%m-%Y').date(
        ) if 'adgang_fra_soeg' in request.GET and request.GET.get(
            'adgang_fra_soeg') != '' else None
    _adgang_til = datetime.strptime(
        request.GET.get('adgang_til_soeg'), '%d-%m-%Y').date(
        ) if 'adgang_til_soeg' in request.GET and request.GET.get(
            'adgang_til_soeg') != '' else None
    _svarfrist_fra = datetime.strptime(
        request.GET.get('svarfrist_fra_soeg'), '%d-%m-%Y').date(
        ) if 'svarfrist_fra_soeg' in request.GET and request.GET.get(
            'svarfrist_fra_soeg') != '' else None
    _svarfrist_til = datetime.strptime(
        request.GET.get('svarfrist_til_soeg'), '%d-%m-%Y').date(
        ) if 'svarfrist_til_soeg' in request.GET and request.GET.get(
            'svarfrist_til_soeg') != '' else None
    _genafleveringsfrist_fra = datetime.strptime(
        request.GET.get('genafleveringsfrist_fra_soeg'), '%d-%m-%Y').date(
        ) if 'genafleveringsfrist_fra_soeg' in request.GET and request.GET.get(
            'genafleveringsfrist_fra_soeg') != '' else None
    _genafleveringsfrist_til = datetime.strptime(
        request.GET.get('genafleveringsfrist_til_soeg'), '%d-%m-%Y').date(
        ) if 'genafleveringsfrist_til_soeg' in request.GET and request.GET.get(
            'genafleveringsfrist_til_soeg') != '' else None
    _svar_fra = datetime.strptime(
        request.GET.get('svar_fra_soeg'), '%d-%m-%Y').date(
        ) if 'svar_fra_soeg' in request.GET and request.GET.get(
            'svar_fra_soeg') != '' else None
    _svar_til = datetime.strptime(
        request.GET.get('svar_til_soeg'), '%d-%m-%Y').date(
        ) if 'svar_til_soeg' in request.GET and request.GET.get(
            'svar_til_soeg') != '' else None
    _enkelte_versioner = True if request.GET.get(
        'enkelte_versioner') != None else False
    _vis_avid = True if request.GET.get('vis_avid') != None else False
    _vis_version = True if request.GET.get('vis_version') != None else False
    _vis_jnr = True if request.GET.get('vis_jnr') != None else False
    _vis_titel = True if request.GET.get('vis_titel') != None else False
    _vis_land = True if request.GET.get('vis_land') != None else False
    _vis_status = True if request.GET.get('vis_status') != None else False
    _vis_kategori = True if request.GET.get('vis_kategori') != None else False
    _vis_klassifikation = True if request.GET.get(
        'vis_klassifikation') != None else False
    _vis_type = True if request.GET.get('vis_type') != None else False
    _vis_arkivar = True if request.GET.get('vis_arkivar') != None else False
    _vis_leverandoer = True if request.GET.get(
        'vis_leverandoer') != None else False
    _vis_tester = True if request.GET.get('vis_tester') != None else False
    _vis_afleveringsfrist = True if request.GET.get(
        'vis_afleveringsfrist') != None else False
    _vis_modtaget = True if request.GET.get('vis_modtaget') != None else False
    _vis_adgang = True if request.GET.get('vis_adgang') != None else False
    _vis_svarfrist = True if request.GET.get(
        'vis_svarfrist') != None else False
    _vis_genafleveringsfrist = True if request.GET.get(
        'vis_genafleveringsfrist') != None else False
    _vis_svar = True if request.GET.get('vis_svar') != None else False
    _sortering_avid = True if request.GET.get(
        'sortering') == 'sortering_avid' else False
    _sortering_titel = True if request.GET.get(
        'sortering') == 'sortering_titel' else False
    _sortering_status = True if request.GET.get(
        'sortering') == 'sortering_status' else False
    _sortering_kategori = True if request.GET.get(
        'sortering') == 'sortering_kategori' else False
    _sortering_klassifikation = True if request.GET.get(
        'sortering') == 'sortering_klassifikation' else False
    _sortering_type = True if request.GET.get(
        'sortering') == 'sortering_type' else False
    _sortering_afleveringsfrist = True if request.GET.get(
        'sortering') == 'sortering_afleveringsfrist' else False
    _sortering_modtaget = True if request.GET.get(
        'sortering') == 'sortering_modtaget' else False
    _sortering_adgang = True if request.GET.get(
        'sortering') == 'sortering_adgang' else False
    _sortering_svarfrist = True if request.GET.get(
        'sortering') == 'sortering_svarfrist' else False
    _sortering_genafleveringsfrist = True if request.GET.get(
        'sortering') == 'sortering_genafleveringsfrist' else False
    _sortering_svar = True if request.GET.get(
        'sortering') == 'sortering_svar' else False
    _sortering_faldende = True if request.GET.get(
        'sortering_faldende') != None else False
    _bookmark = True if 'bookmark' in request.GET else False

    _resultat = list()
    _sorted_resultat = list()
    _arkiveringsversioner = set()

    if nulstil:
        _vis_avid = True
        _vis_version = True
        _vis_jnr = True
        _vis_titel = True
        _vis_status = True
        _vis_kategori = True

    if not nulstil:
        _avs_objs = Arkiveringsversion.objects.all()
        if _avid:
            _avs_objs = _avs_objs.filter(avid__icontains=_avid)
        if _jnr:
            _avs_objs = _avs_objs.filter(jnr__icontains=_jnr)
        if _titel:
            _avs_objs = _avs_objs.filter(titel__icontains=_titel)
        if _land:
            _avs_objs = _avs_objs.filter(
                qtq([Q(land=value) for value in _land]))
        if _kategori:
            _avs_objs = _avs_objs.filter(
                qtq([Q(kategori=value) for value in _kategori]))
        if _klassifikation:
            _avs_objs = _avs_objs.filter(
                qtq([Q(klassifikation=value) for value in _klassifikation]))
        if _type:
            _avs_objs = _avs_objs.filter(
                qtq([
                    Q(type=value) for value in
                    [Type.objects.get(navn=value) for value in _type]
                ]))

        _version_objs = Version.objects.filter(avid__in=(av
                                                         for av in _avs_objs))
        if _status:
            _version_objs = _version_objs.filter(
                qtq([Q(status=value) for value in _status]))
        if _arkivar:
            _version_objs = _version_objs.filter(
                qtq([
                    Q(arkivar=Bruger.objects.get(profil=value)) for value in [
                        Profil.objects.get(initialer=value)
                        for value in _arkivar
                    ]
                ]))
        if _leverandoer:
            _version_objs = _version_objs.filter(
                qtq([
                    Q(leverandoer=value) for value in [
                        Leverandoer.objects.get(navn=value)
                        for value in _leverandoer
                    ]
                ]))
        if _tester:
            _version_objs = _version_objs.filter(
                qtq([
                    Q(tester=Bruger.objects.get(profil=value)) for value in
                    [Profil.objects.get(initialer=value) for value in _tester]
                ]))
        if _afleveringsfrist_fra:
            _version_objs = _version_objs.filter(
                Q(afleveringsfrist__gte=_afleveringsfrist_fra)
                | ~Q(afleveringsfrist=None))
        if _afleveringsfrist_til:
            _version_objs = _version_objs.filter(
                Q(afleveringsfrist__lte=_afleveringsfrist_til)
                | ~Q(afleveringsfrist=None))
        if _modtaget_fra:
            _version_objs = _version_objs.filter(
                Q(modtaget__gte=_modtaget_fra) | ~Q(modtaget=None))
        if _modtaget_til:
            _version_objs = _version_objs.filter(
                Q(modtaget__lte=_modtaget_til) | ~Q(modtaget=None))
        if _adgang_fra:
            _version_objs = _version_objs.filter(
                Q(adgang__gte=_adgang_fra) | ~Q(adgang=None))
        if _adgang_til:
            _version_objs = _version_objs.filter(
                Q(adgang__lte=_adgang_til) | ~Q(adgang=None))
        if _svarfrist_fra:
            _version_objs = _version_objs.filter(
                Q(svarfrist__gte=_svarfrist_fra) | ~Q(svarfrist=None))
        if _svarfrist_til:
            _version_objs = _version_objs.filter(
                Q(svarfrist__lte=_svarfrist_til) | ~Q(svarfrist=None))
        if _genafleveringsfrist_fra:
            _version_objs = _version_objs.filter(
                Q(genafleveringsfrist__gte=_genafleveringsfrist_fra)
                | ~Q(genafleveringsfrist=None))
        if _genafleveringsfrist_til:
            _version_objs = _version_objs.filter(
                Q(genafleveringsfrist__lte=_genafleveringsfrist_til)
                | ~Q(genafleveringsfrist=None))
        if _svar_fra:
            _version_objs = _version_objs.filter(
                Q(svar__gte=_svar_fra) | ~Q(svar=None))
        if _svar_til:
            _version_objs = _version_objs.filter(
                Q(svar__lte=_svar_til) | ~Q(svar=None))

        if _enkelte_versioner:
            for version in _version_objs:
                _arkiveringsversioner.add(version.avid.avid)
                _resultat.append({
                    "avid":
                    version.avid.avid,
                    "version":
                    version.nummer,
                    "jnr":
                    version.avid.jnr,
                    "titel":
                    version.avid.titel,
                    "land":
                    version.avid.land,
                    "status":
                    version.status,
                    "kategori":
                    version.avid.kategori,
                    "klassifikation":
                    version.avid.klassifikation,
                    "type":
                    version.avid.type if version.avid.type else '',
                    "stoerrelse":
                    int(version.stoerrelsemb / 1024),
                    "arkivar":
                    version.arkivar if version.arkivar else '',
                    "leverandoer":
                    version.leverandoer,
                    "tester":
                    version.tester if version.tester else '',
                    "afleveringsfrist":
                    '{:%d-%m-%Y}'.format(version.afleveringsfrist)
                    if version.afleveringsfrist != None else '',
                    "modtaget":
                    '{:%d-%m-%Y}'.format(version.modtaget)
                    if version.modtaget != None else '',
                    "adgang":
                    '{:%d-%m-%Y}'.format(version.adgang)
                    if version.adgang != None else '',
                    "svarfrist":
                    '{:%d-%m-%Y}'.format(version.svarfrist)
                    if version.svarfrist != None else '',
                    "genafleveringsfrist":
                    '{:%d-%m-%Y}'.format(version.genafleveringsfrist)
                    if version.genafleveringsfrist != None else '',
                    "svar":
                    '{:%d-%m-%Y}'.format(version.svar)
                    if version.svar != None else '',
                })

        if not _enkelte_versioner:
            for version in _version_objs:
                _arkiveringsversioner.add(version.avid.avid)
            for avid in _arkiveringsversioner:
                av = Arkiveringsversion.objects.get(avid=avid)
                version_last = Version.objects.filter(
                    avid=av).order_by('nummer').last()
                _resultat.append({
                    "avid":
                    av.avid,
                    "jnr":
                    av.jnr,
                    "version":
                    version_last.nummer,
                    "titel":
                    av.titel,
                    "land":
                    av.land,
                    "status":
                    version_last.status,
                    "kategori":
                    av.kategori,
                    "klassifikation":
                    av.klassifikation,
                    "type":
                    av.type if av.type else '',
                    "stoerrelse":
                    int(version_last.stoerrelsemb / 1024),
                    "arkivar":
                    version_last.arkivar if version_last.arkivar else '',
                    "leverandoer":
                    version_last.leverandoer
                    if version_last.leverandoer else '',
                    "tester":
                    version_last.tester if version_last.tester else '',
                    "afleveringsfrist":
                    '{:%d-%m-%Y}'.format(version_last.afleveringsfrist)
                    if version_last.afleveringsfrist != None else '',
                    "modtaget":
                    '{:%d-%m-%Y}'.format(version_last.modtaget)
                    if version_last.modtaget != None else '',
                    "adgang":
                    '{:%d-%m-%Y}'.format(version_last.adgang)
                    if version_last.adgang != None else '',
                    "svarfrist":
                    '{:%d-%m-%Y}'.format(version_last.svarfrist)
                    if version_last.svarfrist != None else '',
                    "genafleveringsfrist":
                    '{:%d-%m-%Y}'.format(version_last.genafleveringsfrist)
                    if version_last.genafleveringsfrist != None else '',
                    "svar":
                    '{:%d-%m-%Y}'.format(version_last.svar)
                    if version_last.svar != None else '',
                })

    if _sortering_avid:
        if _sortering_faldende:
            _sorted_resultat = sorted(_resultat,
                                      key=lambda i: (i['avid'], i['version']),
                                      reverse=True)
        else:
            _sorted_resultat = sorted(_resultat,
                                      key=lambda i: (i['avid'], i['version']))
    elif _sortering_titel:
        if _sortering_faldende:
            _sorted_resultat = sorted(_resultat,
                                      key=lambda i:
                                      (i['titel'], i['avid'], i['version']),
                                      reverse=True)
        else:
            _sorted_resultat = sorted(_resultat,
                                      key=lambda i:
                                      (i['titel'], i['avid'], i['version']))
    elif _sortering_status:
        if _sortering_faldende:
            _sorted_resultat = sorted(_resultat,
                                      key=lambda i:
                                      (i['status'], i['avid'], i['version']),
                                      reverse=True)
        else:
            _sorted_resultat = sorted(_resultat,
                                      key=lambda i:
                                      (i['status'], i['avid'], i['version']))
    elif _sortering_kategori:
        if _sortering_faldende:
            _sorted_resultat = sorted(_resultat,
                                      key=lambda i:
                                      (i['kategori'], i['avid'], i['version']),
                                      reverse=True)
        else:
            _sorted_resultat = sorted(_resultat,
                                      key=lambda i:
                                      (i['kategori'], i['avid'], i['version']))
    elif _sortering_klassifikation:
        if _sortering_faldende:
            _sorted_resultat = sorted(
                _resultat,
                key=lambda i: (i['klassifikation'], i['avid'], i['version']),
                reverse=True)
        else:
            _sorted_resultat = sorted(
                _resultat,
                key=lambda i: (i['klassifikation'], i['avid'], i['version']))
    elif _sortering_type:
        if _sortering_faldende:
            _sorted_resultat = sorted(
                _resultat,
                key=lambda i: (str(i['type']), i['avid'], i['version']),
                reverse=True)
        else:
            _sorted_resultat = sorted(
                _resultat,
                key=lambda i: (str(i['type']), i['avid'], i['version']))
    elif _sortering_afleveringsfrist:
        if _sortering_faldende:
            _sorted_resultat = sorted(
                _resultat,
                key=lambda i:
                (notnonedate(i['afleveringsfrist']), i['avid'], i['version']),
                reverse=True)
        else:
            _sorted_resultat = sorted(
                _resultat,
                key=lambda i:
                (notnonedate(i['afleveringsfrist']), i['avid'], i['version']))
    elif _sortering_modtaget:
        if _sortering_faldende:
            _sorted_resultat = sorted(
                _resultat,
                key=lambda i:
                (notnonedate(i['modtaget']), i['avid'], i['version']),
                reverse=True)
        else:
            _sorted_resultat = sorted(
                _resultat,
                key=lambda i:
                (notnonedate(i['modtaget']), i['avid'], i['version']))
    elif _sortering_adgang:
        if _sortering_faldende:
            _sorted_resultat = sorted(
                _resultat,
                key=lambda i:
                (notnonedate(i['adgang']), i['avid'], i['version']),
                reverse=True)
        else:
            _sorted_resultat = sorted(
                _resultat,
                key=lambda i:
                (notnonedate(i['adgang']), i['avid'], i['version']))
    elif _sortering_svarfrist:
        if _sortering_faldende:
            _sorted_resultat = sorted(
                _resultat,
                key=lambda i:
                (notnonedate(i['svarfrist']), i['avid'], i['version']),
                reverse=True)
        else:
            _sorted_resultat = sorted(
                _resultat,
                key=lambda i:
                (notnonedate(i['svarfrist']), i['avid'], i['version']))
    elif _sortering_genafleveringsfrist:
        if _sortering_faldende:
            _sorted_resultat = sorted(_resultat,
                                      key=lambda i:
                                      (notnonedate(i['genafleveringsfrist']),
                                       i['avid'], i['version']),
                                      reverse=True)
        else:
            _sorted_resultat = sorted(_resultat,
                                      key=lambda i:
                                      (notnonedate(i['genafleveringsfrist']),
                                       i['avid'], i['version']))
    elif _sortering_svar:
        if _sortering_faldende:
            _sorted_resultat = sorted(
                _resultat,
                key=lambda i:
                (notnonedate(i['svar']), i['avid'], i['version']),
                reverse=True)
        else:
            _sorted_resultat = sorted(
                _resultat,
                key=lambda i:
                (notnonedate(i['svar']), i['avid'], i['version']))
    else:
        _sorted_resultat = _resultat

    _samlet_stoerrrelse = 0
    for r in _sorted_resultat:
        _samlet_stoerrrelse += r['stoerrelse']
    _samlet_stoerrrelse = str(int(_samlet_stoerrrelse))

    return render(
        request, 'arkiveringsversioner/soeg.html', {
            "bruger_rettigheder": rettigheder(request.user),
            "avid": _avid,
            "jnr": _jnr,
            "titel": _titel,
            "land": _land,
            "status": _status,
            "kategori": _kategori,
            "klassifikation": _klassifikation,
            "type": _type,
            "arkivar": _arkivar,
            "leverandoer": _leverandoer,
            "tester": _tester,
            "afleveringsfrist_fra": _afleveringsfrist_fra,
            "afleveringsfrist_til": _afleveringsfrist_til,
            "modtaget_fra": _modtaget_fra,
            "modtaget_til": _modtaget_til,
            "adgang_fra": _adgang_fra,
            "adgang_til": _adgang_til,
            "svarfrist_fra": _svarfrist_fra,
            "svarfrist_til": _svarfrist_til,
            "genafleveringsfrist_fra": _genafleveringsfrist_fra,
            "genafleveringsfrist_til": _genafleveringsfrist_til,
            "svar_fra": _svar_fra,
            "svar_til": _svar_til,
            "enkelte_versioner": _enkelte_versioner,
            "nulstil": nulstil,
            "vis_avid": _vis_avid,
            "vis_version": _vis_version,
            "vis_jnr": _vis_jnr,
            "vis_titel": _vis_titel,
            "vis_land": _vis_land,
            "vis_status": _vis_status,
            "vis_kategori": _vis_kategori,
            "vis_klassifikation": _vis_klassifikation,
            "vis_type": _vis_type,
            "vis_arkivar": _vis_arkivar,
            "vis_leverandoer": _vis_leverandoer,
            "vis_tester": _vis_tester,
            "vis_afleveringsfrist": _vis_afleveringsfrist,
            "vis_modtaget": _vis_modtaget,
            "vis_adgang": _vis_adgang,
            "vis_svarfrist": _vis_svarfrist,
            "vis_genafleveringsfrist": _vis_genafleveringsfrist,
            "vis_svar": _vis_svar,
            "sortering_avid": _sortering_avid,
            "sortering_titel": _sortering_titel,
            "sortering_status": _sortering_status,
            "sortering_kategori": _sortering_kategori,
            "sortering_klassifikation": _sortering_klassifikation,
            "sortering_type": _sortering_type,
            "sortering_afleveringsfrist": _sortering_afleveringsfrist,
            "sortering_modtaget": _sortering_modtaget,
            "sortering_adgang": _sortering_adgang,
            "sortering_svarfrist": _sortering_svarfrist,
            "sortering_genafleveringsfrist": _sortering_genafleveringsfrist,
            "sortering_svar": _sortering_svar,
            "sortering_faldende": _sortering_faldende,
            "resultat": _sorted_resultat,
            "arkiveringsversioner": _arkiveringsversioner,
            "samlet_stoerrelse": _samlet_stoerrrelse,
            "bookmark": _bookmark,
        })
Esempio n. 16
0
def arkiveringsversioner_view(request):
    return render(request, 'arkiveringsversioner/arkiveringsversioner.html', {
        "bruger_rettigheder": rettigheder(request.user),
    })
Esempio n. 17
0
def arkiveringsversion_view(request, avid, version=0, nystatus=None):

    if avid == '0' and version == '0' and nystatus == 'opret':

        _avid = request.GET.get('avid_opret')

        if not Arkiveringsversion.objects.filter(avid=_avid).exists():
            _arkiveringsversion_obj = Arkiveringsversion.objects.create(
                avid=_avid)
            _version_obj = Version.objects.create(nummer=1,
                                                  avid=_arkiveringsversion_obj,
                                                  status='Afventer aflevering')
            return redirect(
                f"/arkiveringsversioner/arkiveringsversion/{_avid}/")
        else:
            return redirect(
                f"/arkiveringsversioner/arkiveringsversion/{_avid}/")

    _url_error = False

    try:
        _avid = int(avid)
    except ValueError:
        messages.error(
            request,
            f"Det angivet AVID: '{avid}', overholder ikke reglerne for et sådant."
        )
        _url_error = True

    try:
        _version = int(version)
    except ValueError:
        messages.error(
            request,
            f"Den angivet version: '{version}', overholder ikke reglerne for et sådant."
        )
        _url_error = True

    _statusser = [
        'modtaget', 'klar_til_test', 'tilbagemeldt', 'begynd_test',
        'godkendt_af_tester', 'afvent_genaflevering', 'parat_til_godkendelse',
        'godkendt'
    ]
    _nystatus = {nystatus}

    if nystatus != None and not _nystatus.issubset(_statusser):
        messages.error(request,
                       f"Den angivet status: '{nystatus}', er ikke kendt.")
        _url_error = True

    if _url_error:
        return redirect('arkiveringsversioner_view')

    if request.method == 'GET':

        _arkiveringsversion_obj = None
        _version_obj = None

        if Arkiveringsversion.objects.filter(avid=avid).exists():
            _arkiveringsversion_obj = Arkiveringsversion.objects.get(avid=avid)

            _version = Version.objects.filter(
                avid=_arkiveringsversion_obj).order_by('nummer').last().nummer

            version = version if version != 0 else _version

            if Version.objects.filter(nummer=version,
                                      avid=_arkiveringsversion_obj).exists():
                _version_obj = Version.objects.get(
                    nummer=version, avid=_arkiveringsversion_obj)

            if not Version.objects.filter(
                    nummer=version, avid=_arkiveringsversion_obj).exists():
                messages.error(
                    request,
                    f"Den angivet version af arkiveringsversionen 'AVID.SA.{avid}' findes ikke."
                )
                return redirect('arkiveringsversioner_view')

            _status_error = False
            _ny_status = None

            if nystatus != None:
                if _version_obj.status == 'Afventer aflevering':
                    if nystatus != 'modtaget':
                        _status_error = True
                    else:
                        _ny_status = 'Modtaget'
                if _version_obj.status == 'Modtaget':
                    if nystatus != 'klar_til_test' and nystatus != 'tilbagemeldt':
                        _status_error = True
                    else:
                        if nystatus == 'klar_til_test':
                            _ny_status = 'Klar til test'
                        if nystatus == 'tilbagemeldt':
                            _ny_status = 'Tilbagemeldt'
                if _version_obj.status == 'Klar til test':
                    if nystatus != 'begynd_test':
                        _status_error = True
                    else:
                        _ny_status = 'Under test'
                if _version_obj.status == 'Under test':
                    if nystatus != 'tilbagemeldt' and nystatus != 'godkendt_af_tester':
                        _status_error = True
                    else:
                        if nystatus == 'tilbagemeldt':
                            _ny_status = 'Tilbagemeldt'
                        if nystatus == 'godkendt_af_tester':
                            _ny_status = 'Godkendt af tester'
                if _version_obj.status == 'Tilbagemeldt':
                    if nystatus != 'afvent_genaflevering':
                        _status_error = True
                    else:
                        _ny_status = 'Afventer genaflevering'
                if _version_obj.status == 'Afventer genaflevering':
                    if nystatus != 'modtaget':
                        _status_error = True
                    else:
                        _ny_status = 'Modtaget'
                if _version_obj.status == 'Godkendt af tester':
                    if nystatus != 'parat_til_godkendelse':
                        _status_error = True
                    else:
                        _ny_status = 'Parat til godkendelse'
                if _version_obj.status == 'Parat til godkendelse':
                    if nystatus != 'godkendt':
                        _status_error = True
                    else:
                        _ny_status = 'Godkendt'

            if _status_error:
                messages.error(request,
                               f"Det angivet statusskift er ikke tilladt.")
                return redirect(
                    f"/arkiveringsversioner/arkiveringsversion/{avid}/{version}/"
                )

            if _ny_status:
                if 'datoformodtagelse' in request.GET:
                    _version_obj.modtaget = datetime.strptime(
                        request.GET.get('datoformodtagelse'),
                        '%d-%m-%Y').date()
                if 'genmodtagetdato' in request.GET:
                    _version_obj.modtaget = datetime.strptime(
                        request.GET.get('genmodtagetdato'), '%d-%m-%Y').date()
                if 'datofortilbagemelding' in request.GET:
                    _version_obj.svar = datetime.strptime(
                        request.GET.get('datofortilbagemelding'),
                        '%d-%m-%Y').date()
                if 'datofortilbagemelding2' in request.GET:
                    _version_obj.svar = datetime.strptime(
                        request.GET.get('datofortilbagemelding2'),
                        '%d-%m-%Y').date()
                if 'datoforafleveringsfrist' in request.GET:
                    _version_obj.genafleveringsfrist = datetime.strptime(
                        request.GET.get('datoforafleveringsfrist'),
                        '%d-%m-%Y').date()
                if 'godkendelsesdato' in request.GET:
                    _version_obj.svar = datetime.strptime(
                        request.GET.get('godkendelsesdato'),
                        '%d-%m-%Y').date()
                    _version_obj.modtaget_kvitteret = False
                    _version_obj.modtaget_journaliseret = False
                    _version_obj.modtaget_kodeord = False
                    _version_obj.modtaget_mangler_kodeord = False
                    _version_obj.modtaget_ikke_krypteret = False
                    _version_obj.modtaget_kopieret = False
                    _version_obj.modtaget_modtagelse_godkendt = False
                    _version_obj.modtaget_modtagelse_afvist = False
                    _version_obj.modtaget_fileindex_kopieret = False
                    _version_obj.modtaget_ada_startet = False
                    _version_obj.modtaget_adatest_godkendt = False
                    _version_obj.modtaget_adatest_afvist = False
                    _version_obj.tilbagemeldt_nedpakket = False
                    _version_obj.tilbagemeldt_maskine_renset = False
                    _version_obj.godkendt_af_tester_fileindex_godkendt = False
                    _version_obj.godkendt_af_tester_afvikler_dea = False
                    _version_obj.godkendt_af_tester_afleveret_til_dea = False
                    _version_obj.godkendt_af_tester_retur_fra_dea = False
                    _version_obj.godkendt_af_tester_mary_kontrol = False
                    _version_obj.godkendt_af_tester_meta_opdateret = False
                    _version_obj.godkendt_af_tester_public_opdateret = False
                    _version_obj.godkendt_af_tester_maskine_renset = False

                if _ny_status == 'Under test':
                    _version_obj.test_begyndt = datetime.today()

                if _ny_status == 'Under test' or _ny_status == 'Tilbagemeldt':
                    _profil_obj = Profil.objects.get(
                        initialer=request.user.username)
                    _bruger_obj = Bruger.objects.get(profil=_profil_obj)
                    _version_obj.tester = _bruger_obj

                if _ny_status == 'Afventer genaflevering':
                    _version_obj.modtaget_kvitteret = False
                    _version_obj.modtaget_journaliseret = False
                    _version_obj.modtaget_kodeord = False
                    _version_obj.modtaget_mangler_kodeord = False
                    _version_obj.modtaget_ikke_krypteret = False
                    _version_obj.modtaget_kopieret = False
                    _version_obj.modtaget_modtagelse_godkendt = False
                    _version_obj.modtaget_modtagelse_afvist = False
                    _version_obj.modtaget_fileindex_kopieret = False
                    _version_obj.modtaget_ada_startet = False
                    _version_obj.modtaget_adatest_godkendt = False
                    _version_obj.modtaget_adatest_afvist = False
                    _version_obj.tilbagemeldt_nedpakket = False
                    _version_obj.tilbagemeldt_maskine_renset = False
                    _version_obj.godkendt_af_tester_fileindex_godkendt = False
                    _version_obj.godkendt_af_tester_afvikler_dea = False
                    _version_obj.godkendt_af_tester_afleveret_til_dea = False
                    _version_obj.godkendt_af_tester_retur_fra_dea = False
                    _version_obj.godkendt_af_tester_mary_kontrol = False
                    _version_obj.godkendt_af_tester_meta_opdateret = False
                    _version_obj.godkendt_af_tester_public_opdateret = False
                    _version_obj.godkendt_af_tester_maskine_renset = False
                    _version_obj.save()
                    Version.objects.create(
                        nummer=_version_obj.nummer + 1,
                        avid=_version_obj.avid,
                        status='Afventer genaflevering',
                        arkivar=_version_obj.arkivar,
                        leverandoer=_version_obj.leverandoer,
                        afleveringsfrist=_version_obj.genafleveringsfrist)
                    return redirect(
                        f"/arkiveringsversioner/arkiveringsversion/{avid}/")
                else:
                    _version_obj.status = _ny_status
                    _version_obj.save()
                    return redirect(
                        f"/arkiveringsversioner/arkiveringsversion/{avid}/{version}/"
                    )

            _tester_fuldenavn = ''
            if _version_obj.tester:
                if _version_obj.tester.profil.fornavn != '' and _version_obj.tester.profil.fornavn != None:
                    _tester_fuldenavn += _version_obj.tester.profil.fornavn
                if _version_obj.tester.profil.mellemnavn != '' and _version_obj.tester.profil.mellemnavn != None:
                    _tester_fuldenavn += ' '
                    _tester_fuldenavn += _version_obj.tester.profil.mellemnavn
                if _version_obj.tester.profil.efternavn != '' and _version_obj.tester.profil.efternavn != None:
                    _tester_fuldenavn += ' '
                    _tester_fuldenavn += _version_obj.tester.profil.efternavn

            _arkivar_fuldenavn = ''
            if _version_obj.arkivar:
                if _version_obj.arkivar.profil.fornavn != '' and _version_obj.arkivar.profil.fornavn != None:
                    _arkivar_fuldenavn += _version_obj.arkivar.profil.fornavn
                if _version_obj.arkivar.profil.mellemnavn != '' and _version_obj.arkivar.profil.mellemnavn != None:
                    _arkivar_fuldenavn += ' '
                    _arkivar_fuldenavn += _version_obj.arkivar.profil.mellemnavn
                if _version_obj.arkivar.profil.efternavn != '' and _version_obj.arkivar.profil.efternavn != None:
                    _arkivar_fuldenavn += ' '
                    _arkivar_fuldenavn += _version_obj.arkivar.profil.efternavn

            _seneste_version = True if _version_obj.nummer == Version.objects.filter(
                avid=_version_obj.avid).order_by(
                    'nummer').last().nummer else False

            _ibrugtaget_medier = []
            _maskine = None
            _ibrugtaget_medier_objs = Medie.objects.filter(
                versioner=_version_obj).order_by('navn')
            for _ibrugtaget_medie_obj in _ibrugtaget_medier_objs:
                _ibrugtaget_medier.append({'tag': _ibrugtaget_medie_obj.navn})
                if _ibrugtaget_medie_obj.maskine != None:
                    _maskine = _ibrugtaget_medie_obj.maskine.navn
            _ibrugtaget_medier = json.dumps(_ibrugtaget_medier)

            return render(
                request, 'arkiveringsversioner/arkiveringsversion.html', {
                    "bruger_rettigheder":
                    rettigheder(request.user),
                    "avid":
                    _arkiveringsversion_obj.avid,
                    "jnr":
                    _arkiveringsversion_obj.jnr,
                    "public":
                    _arkiveringsversion_obj.public,
                    "titel":
                    _arkiveringsversion_obj.titel,
                    "kategori":
                    _arkiveringsversion_obj.kategori,
                    "klassifikation":
                    _arkiveringsversion_obj.klassifikation,
                    "type":
                    str(_arkiveringsversion_obj.type),
                    "land":
                    _arkiveringsversion_obj.land,
                    "noterfraarkivar":
                    _arkiveringsversion_obj.arkivar_noter,
                    "noterfratester":
                    _arkiveringsversion_obj.tester_noter,
                    "versioner":
                    Version.objects.filter(avid=_arkiveringsversion_obj),
                    "version":
                    int(version),
                    "tester":
                    _tester_fuldenavn,
                    "arkivar":
                    _arkivar_fuldenavn,
                    "leverandoer":
                    str(_version_obj.leverandoer),
                    "stoerrelsemb":
                    _version_obj.stoerrelsemb,
                    "stoerrelsegb":
                    int(_version_obj.stoerrelsemb / 1024),
                    "afleveringsfrist":
                    '{:%d-%m-%Y}'.format(_version_obj.afleveringsfrist)
                    if _version_obj.afleveringsfrist != None else '',
                    "modtaget":
                    '{:%d-%m-%Y}'.format(_version_obj.modtaget)
                    if _version_obj.modtaget != None else '',
                    "adgang":
                    '{:%d-%m-%Y}'.format(_version_obj.adgang)
                    if _version_obj.adgang != None else '',
                    "svarfrist":
                    '{:%d-%m-%Y}'.format(_version_obj.svarfrist)
                    if _version_obj.svarfrist != None else '',
                    "svar":
                    '{:%d-%m-%Y}'.format(_version_obj.svar)
                    if _version_obj.svar != None else '',
                    "status":
                    _version_obj.status,
                    "maskine":
                    _maskine,
                    "modtaget_kvitteret":
                    _version_obj.modtaget_kvitteret,
                    "modtaget_journaliseret":
                    _version_obj.modtaget_journaliseret,
                    "modtaget_kodeord":
                    _version_obj.modtaget_kodeord,
                    "modtaget_mangler_kodeord":
                    _version_obj.modtaget_mangler_kodeord,
                    "modtaget_ikke_krypteret":
                    _version_obj.modtaget_ikke_krypteret,
                    "modtaget_kopieret":
                    _version_obj.modtaget_kopieret,
                    "modtaget_modtagelse_godkendt":
                    _version_obj.modtaget_modtagelse_godkendt,
                    "modtaget_modtagelse_afvist":
                    _version_obj.modtaget_modtagelse_afvist,
                    "modtaget_fileindex_kopieret":
                    _version_obj.modtaget_fileindex_kopieret,
                    "modtaget_ada_startet":
                    _version_obj.modtaget_ada_startet,
                    "modtaget_adatest_godkendt":
                    _version_obj.modtaget_adatest_godkendt,
                    "modtaget_adatest_afvist":
                    _version_obj.modtaget_adatest_afvist,
                    "tilbagemeldt_nedpakket":
                    _version_obj.tilbagemeldt_nedpakket,
                    "tilbagemeldt_maskine_renset":
                    _version_obj.tilbagemeldt_maskine_renset,
                    "godkendt_af_tester_fileindex_godkendt":
                    _version_obj.godkendt_af_tester_fileindex_godkendt,
                    "godkendt_af_tester_afvikler_dea":
                    _version_obj.godkendt_af_tester_afvikler_dea,
                    "godkendt_af_tester_afleveret_til_dea":
                    _version_obj.godkendt_af_tester_afleveret_til_dea,
                    "godkendt_af_tester_retur_fra_dea":
                    _version_obj.godkendt_af_tester_retur_fra_dea,
                    "godkendt_af_tester_mary_kontrol":
                    _version_obj.godkendt_af_tester_mary_kontrol,
                    "godkendt_af_tester_meta_opdateret":
                    _version_obj.godkendt_af_tester_meta_opdateret,
                    "godkendt_af_tester_public_opdateret":
                    _version_obj.godkendt_af_tester_public_opdateret,
                    "godkendt_af_tester_maskine_renset":
                    _version_obj.godkendt_af_tester_maskine_renset,
                    "dagsdato":
                    datetime.today().strftime('%d-%m-%Y'),
                    "seneste_version":
                    _seneste_version,
                    "backtick":
                    '`',
                    "ibrugtaget_medier":
                    _ibrugtaget_medier,
                })

        if not Arkiveringsversion.objects.filter(avid=avid).exists():
            messages.error(request,
                           "Den angivet arkiveringsversion findes ikke.")
            return redirect('arkiveringsversioner_view')

    if request.method == 'POST':

        _avid = request.POST.get('avid') if 'avid' in request.POST else None
        _jnr = request.POST.get('jnr') if 'jnr' in request.POST else None
        _public_link = request.POST.get(
            'public_link') if 'public_link' in request.POST else None
        _titel = request.POST.get('titel') if 'titel' in request.POST else None
        _kategori = request.POST.get(
            'kategori') if 'kategori' in request.POST else None
        _klassifikation = request.POST.get(
            'klassifikation') if 'klassifikation' in request.POST else None
        _type = Type.objects.get(navn=request.POST.get(
            'type')) if 'type' in request.POST and request.POST.get(
                'type') != '' else None
        _land = request.POST.get('land') if 'land' in request.POST else None
        _noterfraarkivar = request.POST[
            'noterfraarkivar'] if 'noterfraarkivar' in request.POST else None
        _noterfratester = request.POST[
            'noterfratester'] if 'noterfratester' in request.POST else None
        _version = request.POST.get(
            'version') if 'version' in request.POST else None
        _tester = request.POST.get(
            'tester') if 'tester' in request.POST else None
        _arkivar = request.POST.get(
            'arkivar') if 'arkivar' in request.POST else None
        _leverandoer = Leverandoer.objects.get(
            navn=request.POST.get('leverandoer')
        ) if 'leverandoer' in request.POST and request.POST.get(
            'leverandoer') != '' else None
        _stoerrelsemb = request.POST.get(
            'stoerrelsemb') if 'stoerrelsemb' in request.POST else None
        _afleveringsfrist = datetime.strptime(
            request.POST.get('afleveringsfrist'), '%d-%m-%Y').date() if (
                'afleveringsfrist' in request.POST
                and request.POST.get('afleveringsfrist') != '') else None
        # _afleveringsfrist = datetime.strptime(request.POST.get('afleveringsfrist'), '%d-%m-%Y').date() if 'afleveringsfrist' in request.POST else None
        # _modtaget = datetime.strptime(request.POST.get('modtaget'), '%d-%m-%Y').date() if 'modtaget' in request.POST else None
        _adgang = datetime.strptime(
            request.POST.get('adgang'), '%d-%m-%Y').date() if (
                'adgang' in request.POST
                and request.POST.get('adgang') != '') else None
        # _svarfrist = datetime.strptime(request.POST.get('svarfrist'), '%d-%m-%Y').date() if 'svarfrist' in request.POST else None
        # _svar = datetime.strptime(request.POST.get('svar'), '%d-%m-%Y').date() if 'svar' in request.POST else None
        # _status = request.POST.get('status') if 'status' in request.POST else None
        _kvitteret = request.POST.get(
            'kvitteret') if 'kvitteret' in request.POST else None
        _journaliseret = request.POST.get(
            'journaliseret') if 'journaliseret' in request.POST else None
        _kodeord = request.POST.get(
            'kodeord') if 'kodeord' in request.POST else None
        _kopieret = request.POST.get(
            'kopieret') if 'kopieret' in request.POST else None
        _modtagelse = request.POST.get(
            'modtagelse') if 'modtagelse' in request.POST else None
        _fileindex = request.POST.get(
            'fileindex') if 'fileindex' in request.POST else None
        _ada_startet = request.POST.get(
            'ada_startet') if 'ada_startet' in request.POST else None
        _ada = request.POST.get('ada') if 'ada' in request.POST else None
        _nedpakket = request.POST.get(
            'nedpakket') if 'nedpakket' in request.POST else None
        _maskine_renset = request.POST.get(
            'maskine_renset') if 'maskine_renset' in request.POST else None
        _fileindex_godkendt = request.POST.get(
            'fileindex_godkendt'
        ) if 'fileindex_godkendt' in request.POST else None
        _dea = request.POST.get('dea') if 'dea' in request.POST else None
        _mary_kontrol = request.POST.get(
            'mary_kontrol') if 'mary_kontrol' in request.POST else None
        _meta_opdateret = request.POST.get(
            'meta_opdateret') if 'meta_opdateret' in request.POST else None
        _public_opdateret = request.POST.get(
            'public_opdateret') if 'public_opdateret' in request.POST else None
        _godkendt_maskine_renset = request.POST.get(
            'godkendt_maskine_renset'
        ) if 'godkendt_maskine_renset' in request.POST else None
        _medier = request.POST.get(
            'av_medier') if 'av_medier' in request.POST else None
        _old_medier = request.POST.get(
            'old_medier') if 'old_medier' in request.POST else None

        _arkiveringsversion_obj = None
        _version_obj = None

        if Arkiveringsversion.objects.filter(avid=_avid).exists():
            _arkiveringsversion_obj = Arkiveringsversion.objects.get(
                avid=_avid)

            if Version.objects.filter(nummer=_version,
                                      avid=_arkiveringsversion_obj).exists():
                _version_obj = Version.objects.get(
                    nummer=_version, avid=_arkiveringsversion_obj)

            if not Version.objects.filter(
                    nummer=_version, avid=_arkiveringsversion_obj).exists():
                messages.error(
                    request,
                    f"Den angivet version af arkiveringsversionen 'AVID.SA.{avid}' findes ikke."
                )
                return redirect('arkiveringsversioner_view')

            _arkiveringsversion_obj.jnr = _jnr if _jnr else _arkiveringsversion_obj.jnr
            _arkiveringsversion_obj.public = _public_link if _public_link else _arkiveringsversion_obj.public
            _arkiveringsversion_obj.titel = _titel if _titel else _arkiveringsversion_obj.titel
            _arkiveringsversion_obj.kategori = _kategori if _kategori != None else _arkiveringsversion_obj.kategori
            _arkiveringsversion_obj.klassifikation = _klassifikation if _klassifikation != None else _arkiveringsversion_obj.klassifikation
            _arkiveringsversion_obj.type = _type
            _arkiveringsversion_obj.land = _land if _land else _arkiveringsversion_obj.land
            _arkiveringsversion_obj.arkivar_noter = _noterfraarkivar if _noterfraarkivar != None else _arkiveringsversion_obj.arkivar_noter
            _arkiveringsversion_obj.tester_noter = _noterfratester if _noterfratester != None else _arkiveringsversion_obj.tester_noter
            _arkiveringsversion_obj.save()

            if _tester:
                _profil_obj = Profil.objects.get(initialer=_tester)
                _bruger_obj = Bruger.objects.get(profil=_profil_obj)
                _version_obj.tester = _bruger_obj
            elif _tester == '':
                _version_obj.tester = None

            if _arkivar:
                _profil_obj = Profil.objects.get(initialer=_arkivar)
                _bruger_obj = Bruger.objects.get(profil=_profil_obj)
                _version_obj.arkivar = _bruger_obj
            elif _arkivar == '':
                _version_obj.arkivar = None

            if _leverandoer:
                _version_obj.leverandoer = _leverandoer
            elif _leverandoer == None:
                _version_obj.leverandoer = None

            _version_obj.adgang = _adgang
            _version_obj.afleveringsfrist = _afleveringsfrist

            if _version_obj.adgang:
                _version_obj.svarfrist = add_days(_version_obj.adgang, 90)

            _version_obj.stoerrelsemb = _stoerrelsemb if _stoerrelsemb else _version_obj.stoerrelsemb
            _version_obj.modtaget_kvitteret = True if _kvitteret == 'kvitteret' else False
            _version_obj.modtaget_journaliseret = True if _journaliseret == 'journaliseret' else False

            if _kodeord == None:
                _version_obj.modtaget_kodeord = False
                _version_obj.modtaget_mangler_kodeord = False
                _version_obj.modtaget_ikke_krypteret = False
            elif _kodeord == 'modtaget':
                _version_obj.modtaget_kodeord = True
                _version_obj.modtaget_mangler_kodeord = False
                _version_obj.modtaget_ikke_krypteret = False
            elif _kodeord == 'mangler':
                _version_obj.modtaget_kodeord = False
                _version_obj.modtaget_mangler_kodeord = True
                _version_obj.modtaget_ikke_krypteret = False
            elif _kodeord == 'ikke_krypteret':
                _version_obj.modtaget_kodeord = False
                _version_obj.modtaget_mangler_kodeord = False
                _version_obj.modtaget_ikke_krypteret = True

            _version_obj.modtaget_kopieret = True if _kopieret == 'kopieret' else False

            if _modtagelse == None:
                _version_obj.modtaget_modtagelse_godkendt = False
                _version_obj.modtaget_modtagelse_afvist = False
            elif _modtagelse == 'godkendt':
                _version_obj.modtaget_modtagelse_godkendt = True
                _version_obj.modtaget_modtagelse_afvist = False
            elif _modtagelse == 'afvist':
                _version_obj.modtaget_modtagelse_godkendt = False
                _version_obj.modtaget_modtagelse_afvist = True

            _version_obj.modtaget_fileindex_kopieret = True if _fileindex == 'kopieret' else False

            _version_obj.modtaget_ada_startet = True if _ada_startet == 'startet' else False

            if _ada == None:
                _version_obj.modtaget_adatest_godkendt = False
                _version_obj.modtaget_adatest_afvist = False
            elif _ada == 'godkendt':
                _version_obj.modtaget_adatest_godkendt = True
                _version_obj.modtaget_adatest_afvist = False
            elif _ada == 'afvist':
                _version_obj.modtaget_adatest_godkendt = False
                _version_obj.modtaget_adatest_afvist = True

            _version_obj.tilbagemeldt_nedpakket = True if _nedpakket == 'nedpakket' else False
            _version_obj.tilbagemeldt_maskine_renset = True if _maskine_renset == 'maskine_renset' else False

            _version_obj.godkendt_af_tester_fileindex_godkendt = True if _fileindex_godkendt else False

            if _dea == None:
                _version_obj.godkendt_af_tester_afvikler_dea = False
                _version_obj.godkendt_af_tester_afleveret_til_dea = False
                _version_obj.godkendt_af_tester_retur_fra_dea = False
            elif _dea == 'afvikler':
                _version_obj.godkendt_af_tester_afvikler_dea = True
                _version_obj.godkendt_af_tester_afleveret_til_dea = False
                _version_obj.godkendt_af_tester_retur_fra_dea = False
            elif _dea == 'afleveret':
                _version_obj.godkendt_af_tester_afvikler_dea = False
                _version_obj.godkendt_af_tester_afleveret_til_dea = True
                _version_obj.godkendt_af_tester_retur_fra_dea = False
            elif _dea == 'retur':
                _version_obj.godkendt_af_tester_afvikler_dea = False
                _version_obj.godkendt_af_tester_afleveret_til_dea = False
                _version_obj.godkendt_af_tester_retur_fra_dea = True

            _version_obj.godkendt_af_tester_mary_kontrol = True if _mary_kontrol == 'mary_kontrol' else False
            _version_obj.godkendt_af_tester_meta_opdateret = True if _meta_opdateret == 'meta_opdateret' else False
            _version_obj.godkendt_af_tester_public_opdateret = True if _public_opdateret == 'public_opdateret' else False
            _version_obj.godkendt_af_tester_maskine_renset = True if _godkendt_maskine_renset == 'godkendt_maskine_renset' else False

            old_medier = []
            if _old_medier:
                for m in json.loads(_old_medier):
                    old_medier.append(m['tag'].upper())
                for old_medie in old_medier:
                    old_m = Medie.objects.filter(navn=old_medie).first()
                    if old_m:
                        old_m.versioner.remove(_version_obj)

            medier = []
            if _medier:
                for m in json.loads(_medier):
                    medier.append(m['tag'].upper())
                for medie in medier:
                    m = Medie.objects.filter(navn=medie).first()
                    if m:
                        m.versioner.add(_version_obj)
                    else:
                        messages.error(request,
                                       f"Mediet '{medie}' findes ikke.")

            if len(medier) > 0:
                _version_obj.modtaget_kopieret = True
            else:
                _version_obj.modtaget_kopieret = False

            _version_obj.save()

            print('_version_obj.tilbagemeldt_nedpakket:',
                  _version_obj.tilbagemeldt_nedpakket)
            if _version_obj.tilbagemeldt_nedpakket:
                print()

            return redirect(
                f"/arkiveringsversioner/arkiveringsversion/{avid}/{version}/")

        if not Arkiveringsversion.objects.filter(avid=_avid).exists():
            messages.error(request,
                           "Den angivet arkiveringsversion findes ikke.")
            return redirect('arkiveringsversioner_view')

    return render(request, 'arkiveringsversioner/arkiveringsversioner.html', {
        "bruger_rettigheder": rettigheder(request.user),
    })
Esempio n. 18
0
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')
Esempio n. 19
0
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')
Esempio n. 20
0
def statistik_view(request):
    return render(request, 'statistik/statistik.html', {
        "bruger_rettigheder": rettigheder(request.user),
    })