diff --git a/.dockerignore b/.dockerignore old mode 100755 new mode 100644 diff --git a/.flake8 b/.flake8 deleted file mode 100755 index ae2594d2..00000000 --- a/.flake8 +++ /dev/null @@ -1,3 +0,0 @@ -[flake8] -# Use black's default line length -max-line-length = 88 diff --git a/.gitignore b/.gitignore old mode 100755 new mode 100644 index e87ba9b0..86d5ad17 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,7 @@ node_modules/ *.egg-info .env .idea +*.mo # These files are created when running "npm run build-for-dev" admin_site/static/css/bootstrap.css admin_site/static/css/bootstrap.css.map diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml old mode 100755 new mode 100644 index 8c7f4116..744a951d --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,7 +9,7 @@ # For deployment via config-updater and saltbert these variables are needed as well: # CONFIG_UPDATER_USERNAME # CONFIG_UPDATER_PASSWORD -# SALTBERT_TEST_PASSWORD and SALBERT_PROD_PASSWORD +# SALTBERT_TEST_PASSWORD and SALBERT_PROD_PASSWORD # (both are used as SALBERT_PASSWORD for test and prod servers respectively) include: @@ -48,9 +48,11 @@ Lint Python: <<: *lint-default before_script: - pip3 install -r admin_site/requirements.txt + - pip3 install black script: - cd admin_site - - black --check --diff --exclude=migrations . + - black --version + - black --check --diff . Lint Dockerfiles: <<: *lint-default @@ -67,7 +69,7 @@ Lint Dockerfiles: Build app image: stage: build - needs: + needs: - Lint Python - Lint Dockerfiles dependencies: [] @@ -105,8 +107,8 @@ Release dev: - develop script: - skopeo copy - --src-creds=${CI_REGISTRY_USER}:${CI_BUILD_TOKEN} - --dest-creds=${CI_REGISTRY_USER}:${CI_BUILD_TOKEN} + --src-creds=${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD} + --dest-creds=${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD} "docker://${IMAGE_SHA}" "docker://${IMAGE_DEV}" @@ -116,7 +118,7 @@ Release rc: - .rules:semver-all script: - skopeo copy - --src-creds=${CI_REGISTRY_USER}:${CI_BUILD_TOKEN} + --src-creds=${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD} --dest-creds=${RELEASE_REGISTRY_USER}:${RELEASE_REGISTRY_PASSWORD} "docker://${IMAGE_SHA}" "docker://${RELEASE_IMAGE_TAG}" @@ -127,12 +129,12 @@ Release master: - .rules:semver-core script: - skopeo copy - --src-creds=${CI_REGISTRY_USER}:${CI_BUILD_TOKEN} + --src-creds=${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD} --dest-creds=${RELEASE_REGISTRY_USER}:${RELEASE_REGISTRY_PASSWORD} "docker://${IMAGE_SHA}" "docker://${RELEASE_IMAGE_TAG}" - skopeo copy - --src-creds=${CI_REGISTRY_USER}:${CI_BUILD_TOKEN} + --src-creds=${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD} --dest-creds=${RELEASE_REGISTRY_USER}:${RELEASE_REGISTRY_PASSWORD} "docker://${IMAGE_SHA}" "docker://${RELEASE_IMAGE_LATEST}" diff --git a/Governancerapport.md b/Governancerapport.md old mode 100755 new mode 100644 diff --git a/LICENSE b/LICENSE old mode 100755 new mode 100644 diff --git a/NEWS.rst b/NEWS.rst old mode 100755 new mode 100644 index d3811c24..f5dd0652 --- a/NEWS.rst +++ b/NEWS.rst @@ -1,3 +1,180 @@ +Version 6.0.0, June 18, 2024 +---------------------------- + +- Customers can now create their own sites, via an added user type called called "customer admin" +- Site overview: Add various stats, indicating the number of PCs that are BorgerPC's, Kiosk PC's, activated, online - as well as the number of PCs for each Ubuntu version +- Status: Add various stats, indicating the number of BorgerPC's, Kiosk PC's as well as the number of PCs for each Ubuntu version +- General documentation update +- Improve the layout of the Images and Jobs pages to work better at lower resolutions +- Make page notifications work consistently and change to using bootstrap's instead of something homemade +- PC: Remove an invisible link from a PC to its Security Events +- Jobs: Fix bug where arguments for newly restarted Jobs wasn't shown +- Add weekly cleanup of old Security events and Citizen objects +- Prevent server error when attempting to register a PC with an invalid site name + +Version 5.28.0, April 18, 2024 +------------------------------ + +- Fix CVE-2024-1135 (gunicorn) by updating it to 22.0.0 +- Make choices input parameter type work in the policy list +- Various updates to changelogs (layouting, draft status, remove a few barely used fields) + +Version 5.27.0, April 10, 2024 +------------------------------ + +- Fix bug that prevented jobs related to scripts requiring feature permissions from showing correctly +- Update to Django version 4.2.11 +- Add new input parameter type: choices, which give a list of choices +- Make makemessages use the no-obsolete flag + +Version 5.26.0, April 08, 2024 +------------------------------ + +- Implement the first part of a change intended to restrict scripts to + being run on the products that they were intended for +- Add integration with Quria to support login on OS2borgerPC via Quria credentials. + This integration uses the same Easy!Appointments integration as SMS login. + The Quria integration is implemented via a general citizen login rpc-function + that can be reused for future and existing login integrations +- Update Easy!Appointments integration to support varying login duration and quarantine duration + per computer as well as the option to allow idle logins (idle logins refer to citizens being able + to login on a computer that requires booking without having a booking if the time until the start + of the next booking is greater than the login duration +- Update SMS login logic to support phone numbers with unlimited access +- Use checkboxes when adding groups/pcs/etc. to picklists thus allowing + multiple simultaneous selections +- Show feature permissions on site overview in backend +- Fix global script redirect to work correctly for security scripts +- Add support for hidden users that can only be seen by superusers +- Update requirements +- Add readthedocs.yaml + +Version 5.25.0, March 04, 2024 +------------------------------ + +- Fix picklists handling displaying html chars (e.g. quotes) correctly +- Fix leap year bug in backend +- Hide country and testsite from site settings +- Delete the old primitive API + +Version 5.24.0, February 27, 2024 +--------------------------------- + +- Fix minor bug in sms login integration +- Add country object related to sites +- Add is_testsite attribute to sites +- Sort site_list for superusers based on country and test status +- Make first group creation use the same form as creation of later groups + +Version 5.23.0, February 15, 2024 +--------------------------------- + +- Update rpc.py functions to prepare for removing outdated logic later +- Place .mo files in .gitignore and have the Dockerfile compile them +- Update the handling of security events to accept 3 or 4 parameters and + only generate logger exceptions during development and testing +- Add final translations. Everything but the database should now be translated +- Add information regarding supervisors on the groups page +- Rename "Versions" to "Images" +- Change user deletion logic so that a user with access to multiple sites + will only be deleted from one site at a time +- Update to markdownx version 4.0.7 +- Fix bug preventing scripts that require feature permissions from being associated +- Fix bug causing scripts that require feature permissions to be shown under security scripts +- Fix bug causing script parameter names with " to be displayed incorrectly + +Version 5.22.2, December 6, 2023 +-------------------------------- + +- Allow arbitrary URLs for Easy!Appointments + +Version 5.22.1, November 30, 2023 +--------------------------------- + +- Minor adjustments to integration with SMSTeknik and Easy!Appointments + +Version 5.22.0, November 28, 2023 +--------------------------------- + +- Add integration with SMSTeknik and Easy!Appointments to support login on OS2borgerPC's via sms verification + with or without booking via Easy!Appointments required +- Improve the error message when reregistering a PC. Message now includes the name of the already registered PC +- Generalize feature permission for scripts +- Add sites to the /admin overview of feature permissions +- Add site name to cicero validation logging + +Version 5.21.0, Oktober 23, 2023 +-------------------------------- + +- Add a new Django Ninja API, available at /api/, a page to generate API keys, and related documentation +- Fix bug: Scripts with new checkbox parameters now get a valid default value in the places where its associated: True +- Default to rerunning associated scripts with changed parameters on new sites +- Make it possible to rerun all completed jobs, not only those that failed +- Add FAQ for commonly asked auditor questions +- UX improvements on the two factor for superuser page +- Remove sorting on the jobs list for a single computer (it didn't work anyway) +- Fix bug: Updated configuration values are now reflected immediately in the list, + instead of having to press "Save changes" first. + +Version 5.20.0, September 18, 2023 +---------------------------------- + +- Expand Security Event / Security Rule system to cover other types of events - in this case specifically an event for when the PC's in + a group are offline for longer than a specified period of time. +- Added functionality to add Supervisors to a Group who receive the notification instead of the users attached to the + Security Problem. This makes it possible to reuse a SecurityProblem across locations when you want different recipients for + the alerts per location. +- Updated the Cicero integration to support preventing simultaneous logins by the same library user and store username/password + for the Cicero API in the database per site + +Version 5.19.0, September 5, 2023 +--------------------------------- + +- Fix wake plan not being sent/removed when adding/removing PC to/from group from PCUpdate +- Use translations in Site documentation and update documentation +- Fix server error when trying to access DeleteView for a nonexistent user, group, PC or wake plan +- Add button to copy job log +- Make job log show chosen arguments for new jobs +- Make changelog its own app +- Avoid saving PC MAC and UID as configurations. Show PC MAC attribute under details +- Remove modal when creating user, instead reuse template used for UserUpdate +- Make mandatory parameters required by the browser when editing a policy script +- Prevent saving a script with an unnamed input, which caused a server error +- Minor improvements to /admin + +Version 5.18.0, July 6, 2023 +---------------------------- + +- Remove execute permissions from files that don't need it +- Policy Scripts: Add functionality to optionally rerun policy scripts when their parameters are changed. +- SecurityProblems: Use ID instead of UID. Remove UID. +- Fix server error when trying to access a user from another site +- Remove gateway functionality +- Minor improvements to /admin +- Simplify how settings are loaded + +Version 5.17.0, June 6, 2023 +---------------------------- + +- Update Django from 3.2.17 -> 4.2.1 +- Fix bug in wake plan validation +- Create new users with the same language set as yourself by default + +Version 5.16.0, May 30, 2023 +---------------------------- + +- Add two-factor login for the admin-site +- Restore old links to installation guide and wake plan user guide + +Version 5.15.0, May 25, 2023 +---------------------------- + +- Improved display of image version in backend +- Link to different pdf files based on chosen language +- Add error message when attempting to check in with an unregistered machine +- English error message when attempting to register an already registered machine +- Translate text set via javascript + Version 5.14.1, May 8, 2023 --------------------------- diff --git a/README.rst b/README.rst old mode 100755 new mode 100644 index cedc5f99..15d4dc44 --- a/README.rst +++ b/README.rst @@ -1,12 +1,13 @@ -Introduction -============ +======================= +OS2borgerPC: Admin-Site +======================= This directory contains the OS2borgerPC Admin system, which is a remote administration system for Debian-based GNU/Linux-systems, especially Ubuntu systems. The system was originally developed for public libraries in Denmark and -is specifically designed to manage their OS2borgerPC audience audience +is specifically designed to manage their OS2borgerPC audience desktop PCs. By design, its functionality aims to be similar to that of Canonical's @@ -18,7 +19,17 @@ loggers between keyboard and computer). Read the documentation for this project in docs/ or at `Read The Docs `_. -The system was prepared by Magenta: See http://www.magenta.dk +The system was developed by Magenta Aps (https://www.magenta.dk) and is part of the +OS2borgerPC project. + +For more information about the OS2borgerPC project, please see the +official home page: + + https://os2.eu/produkt/os2borgerpc + +and the offical Github project: + + https://github.com/OS2borgerPC/ All code is made available under Version 3 of the GNU General Public License - see the LICENSE file for details. diff --git a/VERSION b/VERSION old mode 100755 new mode 100644 index bcce971f..09b254e9 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -5.14.1 +6.0.0 diff --git a/admin_site/COPYRIGHT b/admin_site/COPYRIGHT old mode 100755 new mode 100644 diff --git a/admin_site/INSTALL b/admin_site/INSTALL old mode 100755 new mode 100644 diff --git a/admin_site/README b/admin_site/README old mode 100755 new mode 100644 diff --git a/admin_site/__init__.py b/admin_site/__init__.py old mode 100755 new mode 100644 diff --git a/admin_site/account/__init__.py b/admin_site/account/__init__.py old mode 100755 new mode 100644 diff --git a/admin_site/account/admin.py b/admin_site/account/admin.py old mode 100755 new mode 100644 index 96111f1f..f3835f9a --- a/admin_site/account/admin.py +++ b/admin_site/account/admin.py @@ -24,13 +24,26 @@ def sites(self, obj): @admin.register(User) class MyUserAdmin(UserAdmin): inlines = [UserProfileInline] + list_display = ( + "username", + "email", + "last_login", + "sites", + "is_staff", + "is_active", + "user_profile", + ) + search_fields = ("username", "email") @transaction.atomic def save_model(self, request, obj, form, change): super().save_model(request, obj, form, change) - if not hasattr(obj, "bibos_profile"): + if not hasattr(obj, "user_profile"): UserProfile.objects.create(user=obj) + def sites(self, obj): + return list(obj.user_profile.sites.all()) + class SiteMembershipInline(admin.TabularInline): model = SiteMembership @@ -40,6 +53,9 @@ class SiteMembershipInline(admin.TabularInline): @admin.register(UserProfile) class MyUserProfileAdmin(admin.ModelAdmin): inlines = [SiteMembershipInline] - list_display = ("user",) + list_display = ("user", "user_sites", "language") list_filter = ("sites",) search_fields = ("user__username",) + + def user_sites(self, obj): + return list(obj.sites.all()) diff --git a/admin_site/account/migrations/0001_initial.py b/admin_site/account/migrations/0001_initial.py old mode 100755 new mode 100644 index c91bcfa0..3b379c7f --- a/admin_site/account/migrations/0001_initial.py +++ b/admin_site/account/migrations/0001_initial.py @@ -8,22 +8,54 @@ class Migration(migrations.Migration): - initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('system', '0005_auto_20190225_1620'), + ("system", "0005_auto_20190225_1620"), ] operations = [ migrations.CreateModel( - name='UserProfile', + name="UserProfile", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('type', models.IntegerField(choices=[(0, 'Super Admin'), (1, 'Site User'), (2, 'Site Admin')], default=1)), - ('site', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='system.Site')), - ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='bibos_profile', to=settings.AUTH_USER_MODEL)), + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "type", + models.IntegerField( + choices=[ + (0, "Super Admin"), + (1, "Site User"), + (2, "Site Admin"), + ], + default=1, + ), + ), + ( + "site", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="system.Site", + ), + ), + ( + "user", + models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, + related_name="bibos_profile", + to=settings.AUTH_USER_MODEL, + ), + ), ], ), ] diff --git a/admin_site/account/migrations/0002_auto_20210409_1139.py b/admin_site/account/migrations/0002_auto_20210409_1139.py old mode 100755 new mode 100644 index 05601e4f..d11af0b9 --- a/admin_site/account/migrations/0002_auto_20210409_1139.py +++ b/admin_site/account/migrations/0002_auto_20210409_1139.py @@ -5,29 +5,58 @@ class Migration(migrations.Migration): - dependencies = [ - ('system', '0008_auto_20201210_0950'), - ('account', '0001_initial'), + ("system", "0008_auto_20201210_0950"), + ("account", "0001_initial"), ] operations = [ migrations.CreateModel( - name='SiteMembership', + name="SiteMembership", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('site_user_type', models.IntegerField(choices=[(1, 'Site User'), (2, 'Site Admin')], default=1)), - ('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='system.site')), - ('user_profile', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='account.userprofile')), + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "site_user_type", + models.IntegerField( + choices=[(1, "Site User"), (2, "Site Admin")], default=1 + ), + ), + ( + "site", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="system.site" + ), + ), + ( + "user_profile", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to="account.userprofile", + ), + ), ], ), migrations.AddField( - model_name='userprofile', - name='sites', - field=models.ManyToManyField(related_name='user_profiles', through='account.SiteMembership', to='system.Site'), + model_name="userprofile", + name="sites", + field=models.ManyToManyField( + related_name="user_profiles", + through="account.SiteMembership", + to="system.Site", + ), ), migrations.AddConstraint( - model_name='sitemembership', - constraint=models.UniqueConstraint(fields=('site', 'user_profile'), name='unique_site_user_profile'), + model_name="sitemembership", + constraint=models.UniqueConstraint( + fields=("site", "user_profile"), name="unique_site_user_profile" + ), ), ] diff --git a/admin_site/account/migrations/0003_migrate_from_single_site_to_multiple_sites.py b/admin_site/account/migrations/0003_migrate_from_single_site_to_multiple_sites.py old mode 100755 new mode 100644 index f2045311..c91185da --- a/admin_site/account/migrations/0003_migrate_from_single_site_to_multiple_sites.py +++ b/admin_site/account/migrations/0003_migrate_from_single_site_to_multiple_sites.py @@ -4,33 +4,31 @@ SITE_USER = 1 SITE_ADMIN = 2 -def migrate_from_single_site_to_multiple_sites(apps, schema_editor): - UserProfile = apps.get_model("account", "UserProfile") - SiteMembership = apps.get_model("account", "SiteMembership") - - for user_profile in UserProfile.objects.all(): - if user_profile.type == SUPER_ADMIN: - user = user_profile.user - user.is_staff = True - user.is_admin = True - user.save() - - else: - if not user_profile.site: - continue - SiteMembership.objects.create( - user_profile=user_profile, - site=user_profile.site, - site_user_type=user_profile.type - ) - +def migrate_from_single_site_to_multiple_sites(apps, schema_editor): + UserProfile = apps.get_model("account", "UserProfile") + SiteMembership = apps.get_model("account", "SiteMembership") + + for user_profile in UserProfile.objects.all(): + if user_profile.type == SUPER_ADMIN: + user = user_profile.user + user.is_staff = True + user.is_admin = True + user.save() + + else: + if not user_profile.site: + continue + SiteMembership.objects.create( + user_profile=user_profile, + site=user_profile.site, + site_user_type=user_profile.type, + ) class Migration(migrations.Migration): - - dependencies = [('account', '0002_auto_20210409_1139')] + dependencies = [("account", "0002_auto_20210409_1139")] operations = [ - migrations.RunPython(migrate_from_single_site_to_multiple_sites), - ] \ No newline at end of file + migrations.RunPython(migrate_from_single_site_to_multiple_sites), + ] diff --git a/admin_site/account/migrations/0004_auto_20210409_1223.py b/admin_site/account/migrations/0004_auto_20210409_1223.py old mode 100755 new mode 100644 index f0079dc2..3f4418c7 --- a/admin_site/account/migrations/0004_auto_20210409_1223.py +++ b/admin_site/account/migrations/0004_auto_20210409_1223.py @@ -4,18 +4,17 @@ class Migration(migrations.Migration): - dependencies = [ - ('account', '0003_migrate_from_single_site_to_multiple_sites'), + ("account", "0003_migrate_from_single_site_to_multiple_sites"), ] operations = [ migrations.RemoveField( - model_name='userprofile', - name='site', + model_name="userprofile", + name="site", ), migrations.RemoveField( - model_name='userprofile', - name='type', + model_name="userprofile", + name="type", ), ] diff --git a/admin_site/account/migrations/0005_userprofile_language.py b/admin_site/account/migrations/0005_userprofile_language.py old mode 100755 new mode 100644 index eb9983a7..e4608c04 --- a/admin_site/account/migrations/0005_userprofile_language.py +++ b/admin_site/account/migrations/0005_userprofile_language.py @@ -4,15 +4,19 @@ class Migration(migrations.Migration): - dependencies = [ - ('account', '0004_auto_20210409_1223'), + ("account", "0004_auto_20210409_1223"), ] operations = [ migrations.AddField( - model_name='userprofile', - name='language', - field=models.CharField(choices=[('da', 'Dansk'), ('sv', 'Svenska'), ('en', 'English')], default='da', max_length=10, verbose_name='Language'), + model_name="userprofile", + name="language", + field=models.CharField( + choices=[("da", "Dansk"), ("sv", "Svenska"), ("en", "English")], + default="da", + max_length=10, + verbose_name="Language", + ), ), ] diff --git a/admin_site/account/migrations/0006_alter_userprofile_user.py b/admin_site/account/migrations/0006_alter_userprofile_user.py new file mode 100644 index 00000000..d397925a --- /dev/null +++ b/admin_site/account/migrations/0006_alter_userprofile_user.py @@ -0,0 +1,24 @@ +# Generated by Django 4.2.1 on 2023-10-18 12:37 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ("account", "0005_userprofile_language"), + ] + + operations = [ + migrations.AlterField( + model_name="userprofile", + name="user", + field=models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, + related_name="user_profile", + to=settings.AUTH_USER_MODEL, + ), + ), + ] diff --git a/admin_site/account/migrations/0007_userprofile_is_hidden.py b/admin_site/account/migrations/0007_userprofile_is_hidden.py new file mode 100644 index 00000000..044808bc --- /dev/null +++ b/admin_site/account/migrations/0007_userprofile_is_hidden.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.9 on 2024-03-06 15:06 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("account", "0006_alter_userprofile_user"), + ] + + operations = [ + migrations.AddField( + model_name="userprofile", + name="is_hidden", + field=models.BooleanField(default=False, verbose_name="hidden user"), + ), + ] diff --git a/admin_site/account/migrations/0008_alter_sitemembership_site_user_type.py b/admin_site/account/migrations/0008_alter_sitemembership_site_user_type.py new file mode 100644 index 00000000..3f8415ce --- /dev/null +++ b/admin_site/account/migrations/0008_alter_sitemembership_site_user_type.py @@ -0,0 +1,20 @@ +# Generated by Django 4.2.11 on 2024-05-29 14:40 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("account", "0007_userprofile_is_hidden"), + ] + + operations = [ + migrations.AlterField( + model_name="sitemembership", + name="site_user_type", + field=models.IntegerField( + choices=[(1, "Site User"), (2, "Site Admin"), (3, "Customer Admin")], + default=1, + ), + ), + ] diff --git a/admin_site/account/migrations/__init__.py b/admin_site/account/migrations/__init__.py old mode 100755 new mode 100644 diff --git a/admin_site/account/models.py b/admin_site/account/models.py old mode 100755 new mode 100644 index 9dd1e3a1..30e70c46 --- a/admin_site/account/models.py +++ b/admin_site/account/models.py @@ -1,16 +1,16 @@ from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.contrib.auth.models import User from system.models import Site class UserProfile(models.Model): - """BibOS Admin specific user profile.""" + """OS2borgerPC Admin specific user profile.""" # This is the user to which the profile belongs user = models.OneToOneField( - User, unique=True, related_name="bibos_profile", on_delete=models.CASCADE + User, unique=True, related_name="user_profile", on_delete=models.CASCADE ) sites = models.ManyToManyField( @@ -30,6 +30,10 @@ class UserProfile(models.Model): max_length=10, default=DANISH, ) + + is_hidden = models.BooleanField( + verbose_name=_("hidden user"), default=False, null=False + ) # TODO: Add more fields/user options as needed. # TODO: Make before_save integrity check that SITE_USER and # SITE_ADMIN users MUST be associated with a site. @@ -41,7 +45,12 @@ def __str__(self): class SiteMembership(models.Model): SITE_USER = 1 SITE_ADMIN = 2 - type_choices = ((SITE_USER, _("Site User")), (SITE_ADMIN, _("Site Admin"))) + CUSTOMER_ADMIN = 3 + type_choices = ( + (SITE_USER, _("Site User")), + (SITE_ADMIN, _("Site Admin")), + (CUSTOMER_ADMIN, _("Customer Admin")), + ) site_user_type = models.IntegerField(choices=type_choices, default=SITE_USER) diff --git a/admin_site/account/tests.py b/admin_site/account/tests.py old mode 100755 new mode 100644 diff --git a/admin_site/account/views.py b/admin_site/account/views.py old mode 100755 new mode 100644 diff --git a/admin_site/changelog/__init__.py b/admin_site/changelog/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/admin_site/changelog/admin.py b/admin_site/changelog/admin.py new file mode 100644 index 00000000..8c38f3f3 --- /dev/null +++ b/admin_site/changelog/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/admin_site/changelog/apps.py b/admin_site/changelog/apps.py new file mode 100644 index 00000000..fc3ca57b --- /dev/null +++ b/admin_site/changelog/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ChangelogConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "changelog" diff --git a/admin_site/changelog/forms.py b/admin_site/changelog/forms.py new file mode 100644 index 00000000..5b87d210 --- /dev/null +++ b/admin_site/changelog/forms.py @@ -0,0 +1,12 @@ +# TODO: This might actually be deleteable, because views doesn't use it it seems?! +from django import forms + +from changelog.models import ( + ChangelogComment, +) + + +class ChangelogCommentForm(forms.ModelForm): + class Meta: + model = ChangelogComment + fields = ["content"] diff --git a/admin_site/changelog/migrations/0001_initial.py b/admin_site/changelog/migrations/0001_initial.py new file mode 100644 index 00000000..609d3e9d --- /dev/null +++ b/admin_site/changelog/migrations/0001_initial.py @@ -0,0 +1,130 @@ +# Generated by Django 4.2.1 on 2023-08-24 16:19 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone +import markdownx.models + + +class Migration(migrations.Migration): + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name="Changelog", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("title", models.CharField(max_length=100, verbose_name="title")), + ( + "description", + models.TextField(max_length=240, verbose_name="description"), + ), + ("content", markdownx.models.MarkdownxField(verbose_name="content")), + ( + "created", + models.DateTimeField( + default=django.utils.timezone.now, verbose_name="created" + ), + ), + ( + "updated", + models.DateTimeField( + default=django.utils.timezone.now, verbose_name="updated" + ), + ), + ("author", models.CharField(max_length=255, verbose_name="author")), + ("version", models.CharField(max_length=255, verbose_name="version")), + ], + options={ + "ordering": ["-created"], + }, + ), + migrations.CreateModel( + name="ChangelogTag", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("name", models.CharField(max_length=255, verbose_name="name")), + ], + options={ + "ordering": ["name"], + }, + ), + migrations.CreateModel( + name="ChangelogComment", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("content", models.TextField(max_length=240, verbose_name="content")), + ( + "created", + models.DateTimeField(auto_now_add=True, verbose_name="created"), + ), + ( + "changelog", + models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="comments", + to="changelog.changelog", + ), + ), + ( + "parent_comment", + models.ForeignKey( + blank=True, + default=None, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="comment_children", + to="changelog.changelogcomment", + ), + ), + ( + "user", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="comments", + to=settings.AUTH_USER_MODEL, + ), + ), + ], + options={ + "ordering": ["created"], + }, + ), + migrations.AddField( + model_name="changelog", + name="tags", + field=models.ManyToManyField( + blank=True, related_name="changelogs", to="changelog.changelogtag" + ), + ), + ] diff --git a/admin_site/changelog/migrations/0002_remove_changelog_author_remove_changelog_version_and_more.py b/admin_site/changelog/migrations/0002_remove_changelog_author_remove_changelog_version_and_more.py new file mode 100644 index 00000000..402ba8b8 --- /dev/null +++ b/admin_site/changelog/migrations/0002_remove_changelog_author_remove_changelog_version_and_more.py @@ -0,0 +1,26 @@ +# Generated by Django 4.2.9 on 2024-04-12 14:30 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("changelog", "0001_initial"), + ] + + operations = [ + migrations.RemoveField( + model_name="changelog", + name="author", + ), + migrations.RemoveField( + model_name="changelog", + name="version", + ), + migrations.AddField( + model_name="changelog", + name="published", + field=models.BooleanField(default=True, verbose_name="published (visible)"), + ), + ] diff --git a/admin_site/changelog/migrations/__init__.py b/admin_site/changelog/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/admin_site/changelog/models.py b/admin_site/changelog/models.py new file mode 100644 index 00000000..cfde8e72 --- /dev/null +++ b/admin_site/changelog/models.py @@ -0,0 +1,69 @@ +from django.db import models + +from django.utils.translation import gettext_lazy as _ +from django.utils import timezone +from django.contrib.auth.models import User + +from markdownx.utils import markdownify +from markdownx.models import MarkdownxField + + +# A model to sort Changelog entries into categories +class ChangelogTag(models.Model): + name = models.CharField(verbose_name=_("name"), max_length=255) + + class Meta: + ordering = ["name"] + + def __str__(self): + return self.name + + +# A model that represents one changelog entry, used to showcase changes/new features to users +class Changelog(models.Model): + title = models.CharField(verbose_name=_("title"), max_length=100) + description = models.TextField(verbose_name=_("description"), max_length=240) + content = MarkdownxField(verbose_name=_("content")) + tags = models.ManyToManyField(ChangelogTag, related_name="changelogs", blank=True) + created = models.DateTimeField(verbose_name=_("created"), default=timezone.now) + updated = models.DateTimeField(verbose_name=_("updated"), default=timezone.now) + published = models.BooleanField(verbose_name=_("published (visible)"), default=True) + + def get_tags(self): + return self.tags.values("name", "pk") + + def render_content(self): + # This method returns the markdown text of the 'content' field as html code. + return markdownify(self.content) + + def __str__(self): + return self.title + + class Meta: + ordering = ["-created"] + + +class ChangelogComment(models.Model): + content = models.TextField(verbose_name=_("content"), max_length=240) + created = models.DateTimeField( + verbose_name=_("created"), editable=False, auto_now_add=True + ) + changelog = models.ForeignKey( + Changelog, related_name="comments", on_delete=models.CASCADE, null=True + ) + user = models.ForeignKey(User, related_name="comments", on_delete=models.CASCADE) + parent_comment = models.ForeignKey( + "self", + default=None, + null=True, + blank=True, + related_name="comment_children", + on_delete=models.CASCADE, + ) + + def get_user(self): + if self.user: + return User.objects.get(pk=self.user) + + class Meta: + ordering = ["created"] diff --git a/admin_site/templates/system/changelog/comments/form.html b/admin_site/changelog/templates/comments/form.html old mode 100755 new mode 100644 similarity index 100% rename from admin_site/templates/system/changelog/comments/form.html rename to admin_site/changelog/templates/comments/form.html diff --git a/admin_site/templates/system/changelog/comments/item.html b/admin_site/changelog/templates/comments/item.html old mode 100755 new mode 100644 similarity index 84% rename from admin_site/templates/system/changelog/comments/item.html rename to admin_site/changelog/templates/comments/item.html index 705f1ff4..87d03110 --- a/admin_site/templates/system/changelog/comments/item.html +++ b/admin_site/changelog/templates/comments/item.html @@ -15,17 +15,17 @@ {% endblocktranslate %} {% else %} - {% include 'system/changelog/comments/list.html' with comments=comment.comment_children.all %} + {% include 'comments/list.html' with comments=comment.comment_children.all %} {% endif %} {% endif %} {% if user.username %} {% endif %} - \ No newline at end of file + diff --git a/admin_site/templates/system/changelog/comments/list.html b/admin_site/changelog/templates/comments/list.html old mode 100755 new mode 100644 similarity index 62% rename from admin_site/templates/system/changelog/comments/list.html rename to admin_site/changelog/templates/comments/list.html index 0c929a09..8db81d42 --- a/admin_site/templates/system/changelog/comments/list.html +++ b/admin_site/changelog/templates/comments/list.html @@ -1,7 +1,7 @@
{% for comment in comments %} {% if comment.changelog.pk == entry.pk %} - {% include 'system/changelog/comments/item.html' with comment=comment %} + {% include 'comments/item.html' with comment=comment %} {% endif %} {% endfor %} -
\ No newline at end of file + diff --git a/admin_site/templates/system/changelog/item.html b/admin_site/changelog/templates/item.html old mode 100755 new mode 100644 similarity index 57% rename from admin_site/templates/system/changelog/item.html rename to admin_site/changelog/templates/item.html index d6104a6d..a84300aa --- a/admin_site/templates/system/changelog/item.html +++ b/admin_site/changelog/templates/item.html @@ -7,7 +7,9 @@

{{ entry.title }}

{{ entry.created }} -

{{ entry.render_content | safe }}

+
+

{{ entry.render_content | safe }}

+

@@ -22,30 +24,14 @@

{{ entry.title }}

{% endfor %}

-

- - {% translate "Related to version" %}
-
- - {{ entry.version }} - -

-

- - {% translate "Written by" %}
-
- - {{ entry.author }} - -

{% translate "Comments" %}

- {% include 'system/changelog/comments/form.html' with parent=None %} + {% include 'comments/form.html' with parent=None %} - {% include 'system/changelog/comments/list.html' with comments=comments %} + {% include 'comments/list.html' with comments=comments %}
diff --git a/admin_site/templates/system/changelog/list.html b/admin_site/changelog/templates/list.html old mode 100755 new mode 100644 similarity index 79% rename from admin_site/templates/system/changelog/list.html rename to admin_site/changelog/templates/list.html index d443420c..2f47909c --- a/admin_site/templates/system/changelog/list.html +++ b/admin_site/changelog/templates/list.html @@ -1,14 +1,9 @@ -{% extends site_extension %} +{% extends "sitebase.html" %} {% load i18n %} {% block header_title %} - -{% if site %} -{{site}}: {% translate "News" %} -{% else %} -OS2borgerPC: {% translate "News" %} -{% endif %} +{% translate "OS2borgerPC" %}: {% translate "News" %} {% endblock %} {% block stylesheets %} @@ -22,23 +17,17 @@ {% endblock %} -{% block globalnav %} - {% if global_view %} - - {% endif %} - {{ block.super }} +{% block subnav %} + + + {% endblock %} @@ -66,11 +55,7 @@

{% translate "Documentation" %}

- {% if global_view %} - {% translate "All" %} - {% else %} - {% translate "All" %} - {% endif %} + {% translate "All" %} {% for tag in tag_choices %} {{ tag.name }} {% endfor %} @@ -82,14 +67,12 @@

{% translate "Documentation" %}

-
-

{% if tag_filter %} - {% translate "Showing news in the catagory of" %} {{ tag_filter.name }} + {% translate "Showing news in the category of" %} {{ tag_filter.name }} {% else %} {% translate "Showing" %} {% translate "all" %} {% translate "news" %} {% endif %} @@ -101,10 +84,15 @@

{% for entry in entries %}
+ {% if not entry.published %} +

+ {% translate "Draft" %} +

+ {% endif %}
-

+

{{ entry.title }} -

+

{{ entry.created }}

@@ -133,7 +121,7 @@

{% translate "News categories" %}

- {% include "system/changelog/item.html" with entry=entry %} + {% include "item.html" with entry=entry %} {% endfor %} diff --git a/admin_site/changelog/tests.py b/admin_site/changelog/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/admin_site/changelog/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/admin_site/changelog/urls.py b/admin_site/changelog/urls.py new file mode 100644 index 00000000..f6dbe791 --- /dev/null +++ b/admin_site/changelog/urls.py @@ -0,0 +1,13 @@ +from django.urls import re_path + +from changelog.views import ( + ChangelogListView, +) + +urlpatterns = [ + re_path( + r"^$", + ChangelogListView.as_view(), + name="changelogs", + ), +] diff --git a/admin_site/changelog/views.py b/admin_site/changelog/views.py new file mode 100644 index 00000000..9b79d55c --- /dev/null +++ b/admin_site/changelog/views.py @@ -0,0 +1,112 @@ +from django.shortcuts import render + +from changelog.models import ( + Changelog, + ChangelogComment, + ChangelogTag, +) + +from django.core.paginator import Paginator +from django.views.generic import ListView, View +from django.db.models import Q +from django.shortcuts import get_object_or_404, redirect +from django.contrib.auth.models import User +from django.contrib.auth.decorators import login_required +from django.utils.decorators import method_decorator +from django.http import Http404 +from django.utils.translation import gettext_lazy as _ + + +# Mixin class to require login - copied from system app +class LoginRequiredMixin(View): + """Subclass in all views where login is required.""" + + @method_decorator(login_required) + def dispatch(self, *args, **kwargs): + return super(LoginRequiredMixin, self).dispatch(*args, **kwargs) + + +class ChangelogListView(ListView): + template_name = "list.html" + + def get_queryset(self, filter=None): + if filter: + changelogs = Changelog.objects.filter( + Q(title__icontains=filter) + | Q(content__icontains=filter) + | Q(description__icontains=filter) + ) + else: + changelogs = Changelog.objects.all() + if self.request.user.is_anonymous or not self.request.user.is_superuser: + changelogs = changelogs.filter(published=True) + return changelogs + + def get_paginated_queryset(self, queryset, page): + if not page: + page = 1 + + paginator = Paginator(queryset, 5) + page_obj = paginator.get_page(page) + + return page_obj + + def get_context_data(self, **kwargs): + context = super(ChangelogListView, self).get_context_data(**kwargs) + + context["tag_choices"] = ChangelogTag.objects.values("name", "pk") + + context["page"] = self.request.GET.get("page") + + # Get the search query (if any) and filter the queryset based on that + search_query = self.request.GET.get("search") + + if search_query: + queryset = self.get_queryset(search_query) + context["search_query"] = search_query + else: + queryset = self.get_queryset() + + # Get the tag filter (if any) and filter the queryset accordingly + context["tag_filter"] = self.request.GET.get("tag") + + if context["tag_filter"]: + try: + context["tag_filter"] = ChangelogTag.objects.get( + pk=context["tag_filter"] + ) + queryset = queryset.filter(tags=context["tag_filter"]) + except ChangelogTag.DoesNotExist: + raise Http404( + _("There is no news category with the following ID: %s") + % context["tag_filter"] + ) + + # Paginate the queryset and add it to the context + context["entries"] = self.get_paginated_queryset(queryset, context["page"]) + + # Add all comments that belong to the entries on the current page to the + # context + context["comments"] = ChangelogComment.objects.filter( + Q(changelog__in=context["entries"].object_list) & Q(parent_comment=None) + ).order_by("-created") + + return context + + def post(self, request, *args, **kwargs): + req = request.POST + + comment = ChangelogComment() + + comment.user = get_object_or_404(User, pk=req["user"]) + comment.changelog = get_object_or_404(Changelog, pk=req["changelog"]) + comment.content = req["content"] + + if req["parent_comment"] != "None": + comment.parent_comment = get_object_or_404( + ChangelogComment, pk=req["parent_comment"] + ) + + comment.save() + + return redirect("changelogs") diff --git a/admin_site/locale/da/LC_MESSAGES/django.mo b/admin_site/locale/da/LC_MESSAGES/django.mo deleted file mode 100755 index 33c012a7..00000000 Binary files a/admin_site/locale/da/LC_MESSAGES/django.mo and /dev/null differ diff --git a/admin_site/locale/da/LC_MESSAGES/django.po b/admin_site/locale/da/LC_MESSAGES/django.po old mode 100755 new mode 100644 index 14028870..82731630 --- a/admin_site/locale/da/LC_MESSAGES/django.po +++ b/admin_site/locale/da/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OS2borgerPC\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-04-18 13:26+0200\n" +"POT-Creation-Date: 2024-06-25 13:57+0200\n" "PO-Revision-Date: 2021-08-19 10:00+0200\n" "Last-Translator: Marcus Mogensen \n" "Language: da\n" @@ -15,523 +15,836 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: account/models.py:28 system/forms.py:132 +#: account/models.py system/forms.py templates/documentation/users/index.html msgid "Language" msgstr "Sprog" -#: account/models.py:44 +#: account/models.py +msgid "hidden user" +msgstr "skjult bruger" + +#: account/models.py templates/documentation/users/index.html msgid "Site User" msgstr "Site-bruger" -#: account/models.py:44 +#: account/models.py templates/documentation/users/index.html msgid "Site Admin" msgstr "Site-admin" -#: system/admin.py:133 templates/system/scripts/search_result.html:22 +#: account/models.py templates/documentation/users/index.html +msgid "Customer Admin" +msgstr "Kunde-admin" + +#: changelog/models.py system/models.py +msgid "name" +msgstr "navn" + +#: changelog/models.py +msgid "title" +msgstr "titel" + +#: changelog/models.py system/models.py +msgid "description" +msgstr "beskrivelse" + +#: changelog/models.py +msgid "content" +msgstr "indhold" + +#: changelog/models.py system/mixins.py system/models.py +msgid "created" +msgstr "oprettet" + +#: changelog/models.py +msgid "updated" +msgstr "opdateret" + +#: changelog/models.py +msgid "published (visible)" +msgstr "offentliggjort (synlig)" + +#: changelog/templates/comments/form.html +msgid "Answer to" +msgstr "Svar til" + +#: changelog/templates/comments/form.html +msgid "Write a comment" +msgstr "Skriv en kommentar" + +#: changelog/templates/comments/form.html +msgid "Add comment" +msgstr "Tilføj kommentar" + +#: changelog/templates/comments/form.html +#: templates/system/configs/templates.html +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +#: templates/system/pcgroups/confirm_delete.html +#: templates/system/pcgroups/policy_list/templates.html +#: templates/system/pcgroups/site_groups.html +#: templates/system/pcs/confirm_delete.html templates/system/pcs/form.html +#: templates/system/scripts/confirm_delete.html +#: templates/system/scripts/create.html templates/system/scripts/update.html +#: templates/system/security_events/site_security_events.html +#: templates/system/site_settings/site_settings.html +#: templates/system/sites/confirm_delete.html templates/system/sites/list.html +#: templates/system/users/confirm_delete.html templates/system/users/link.html +#: templates/system/users/update.html +#: templates/system/wake_plan/confirm_delete.html +#: templates/system/wake_plan/wake_change_events/confirm_delete.html +#: templates/system/wake_plan/wake_change_events/wake_change_event.html +#: templates/system/wake_plan/wake_plan.html +#: templates/two_factor/_wizard_actions.html +#: templates/two_factor/profile/disable.html +msgid "Cancel" +msgstr "Annuller" + +#: changelog/templates/comments/form.html +msgid "Please log in to add your comment" +msgstr "Log venligst ind for at kommentere" + +#: changelog/templates/comments/item.html +msgid "On the date" +msgstr "Den" + +#: changelog/templates/comments/item.html +msgid "answered" +msgstr "svarede" + +#: changelog/templates/comments/item.html +msgid "wrote" +msgstr "skrev" + +#: changelog/templates/comments/item.html +#, python-format +msgid "Show %(comment_comment_children_count)s answer(s)" +msgstr "Vis %(comment_comment_children_count)s svar" + +#: changelog/templates/comments/item.html +msgid "Answer" +msgstr "Svar" + +#: changelog/templates/item.html changelog/templates/list.html +msgid "News categories" +msgstr "Nyhedskategorier" + +#: changelog/templates/item.html +msgid "Comments" +msgstr "Kommentarer" + +#: changelog/templates/list.html system/views.py +#: templates/documentation/om_os2borgerpc_admin.html +#: templates/documentation/sites_overview/index.html +#: templates/system/site_status.html templates/system/sites/list.html +msgid "OS2borgerPC" +msgstr "OS2borgerPC" + +#: changelog/templates/list.html templates/site_with_navigation.html +msgid "News" +msgstr "Nyheder" + +#: changelog/templates/list.html +msgid "Back to previous page" +msgstr "Tilbage til forrige side" + +#: changelog/templates/list.html +msgid "Search..." +msgstr "Søg..." + +#: changelog/templates/list.html +msgid "All" +msgstr "Alle" + +#: changelog/templates/list.html +msgid "Showing news in the category of" +msgstr "Viser nyheder i kategorien" + +#: changelog/templates/list.html +msgid "Showing" +msgstr "Viser" + +#: changelog/templates/list.html +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +msgid "all" +msgstr "alle" + +#: changelog/templates/list.html +msgid "news" +msgstr "nyheder" + +#: changelog/templates/list.html +msgid "that matches the query" +msgstr "der matcher søgeordet" + +#: changelog/templates/list.html +msgid "Draft" +msgstr "Kladde" + +#: changelog/templates/list.html +msgid "Read more" +msgstr "Læs mere" + +#: changelog/templates/list.html +msgid "Show" +msgstr "Vis" + +#: changelog/templates/list.html +msgid "chat" +msgstr "chat" + +#: changelog/templates/list.html +msgid "Previous" +msgstr "Forrige" + +#: changelog/templates/list.html templates/system/scripts/run_step1.html +#: templates/two_factor/_wizard_actions.html +msgid "Next" +msgstr "Næste" + +#: changelog/views.py +#, python-format +msgid "There is no news category with the following ID: %s" +msgstr "Der findes ingen nyhedskategori med følgende ID: %s" + +#: system/admin.py templates/system/scripts/search_result.html msgid "Global" msgstr "Global" -#: system/admin.py:145 +#: system/admin.py msgid "Jobs per site" msgstr "Jobs per site" -#: system/admin.py:160 +#: system/admin.py msgid "Jobs per Site for the last year" msgstr "Jobs per site i det sidste år" -#: system/admin.py:233 +#: system/admin.py msgid "Number of computers" msgstr "Antal computere" -#: system/admin.py:234 +#: system/admin.py +msgid "Feature permissions" +msgstr "Feature-adgange" + +#: system/admin.py msgid "Number of KioskPC computers" msgstr "Antal KioskPC computere" -#: system/admin.py:235 +#: system/admin.py msgid "Number of BorgerPC computers" msgstr "Antal BorgerPC computere" -#: system/admin.py:271 +#: system/admin.py system/models.py +msgid "customers with access" +msgstr "kunder med adgang" + +#: system/admin.py msgid "Site" msgstr "Site" -#: system/forms.py:126 +#: system/forms.py system/models.py +msgid "Password for login API (e.g. Cicero)" +msgstr "Password til login API (f.eks. Cicero)" + +#: system/forms.py system/models.py +msgid "" +"Necessary for customers who wish to authenticate BorgerPC logins through an " +"API (e.g. Cicero)" +msgstr "" +"Nødvendigt for kunder der ønsker at autentificere login på BorgerPC gennem " +"et API (f.eks. Cicero)" + +#: system/forms.py system/models.py +msgid "API key for Easy!Appointments" +msgstr "API-nøgle til Easy!Appointments" + +#: system/forms.py system/models.py +msgid "" +"Necessary for customers who wish to require booking through Easy!Appointments" +msgstr "" +"Nødvendigt for kunder der ønsker at kræve booking gennem Easy!Appointments" + +#: system/forms.py system/models.py +msgid "API key for login API (e.g. Quria)" +msgstr "API-nøgle til login API (f.eks. Quria)" + +#: system/forms.py system/models.py +msgid "" +"Necessary for customers who wish to authenticate BorgerPC logins through an " +"API that requires an API key (e.g. Quria)" +msgstr "" +"Nødvendigt for kunder der ønsker at autentificere login på BorgerPC gennem " +"et API, der kræver en API-nøgle (f.eks. Quria)" + +#: system/forms.py +msgid "Select users to be added to this site" +msgstr "Vælg brugere som skal tilføjes til dette site" + +#: system/forms.py +msgid "Hold down Ctrl to select multiple users" +msgstr "Hold Ctrl nede for at vælge flere brugere" + +#: system/forms.py +msgid "Select the usertype that the users should be added with" +msgstr "Vælg den brugertype som brugerne skal tilføjes med" + +#: system/forms.py templates/documentation/users/index.html msgid "Usertype" msgstr "Brugertype" -#: system/forms.py:136 system/models.py:986 +#: system/forms.py system/models.py +#: templates/documentation/scripts/parameters.html +#: templates/documentation/users/index.html msgid "Password" msgstr "Adgangskode" -#: system/forms.py:142 +#: system/forms.py msgid "Password (again)" msgstr "Adgangskode (igen)" -#: system/forms.py:197 +#: system/forms.py msgid "Passwords must be identical." msgstr "De to adgangskoder skal være ens" -#: system/forms.py:204 +#: system/forms.py #, python-format msgid "A user named \"%s\" already exists." msgstr "En bruger med navnet \"%s\" eksisterer allerede." -#: system/mixins.py:9 system/models.py:134 system/models.py:573 -#: system/models.py:883 system/models.py:1253 system/models.py:1280 -msgid "created" -msgstr "oprettet" - -#: system/mixins.py:12 +#: system/mixins.py msgid "modified" msgstr "ændret" -#: system/mixins.py:19 +#: system/mixins.py msgid "created by user" msgstr "oprettet af bruger" -#: system/mixins.py:25 +#: system/mixins.py msgid "last modified by user" msgstr "sidst ændret af bruger" -#: system/models.py:25 +#: system/models.py msgid "status:New" msgstr "Ny" -#: system/models.py:26 +#: system/models.py msgid "status:Fail" msgstr "Fejlet" -#: system/models.py:27 -msgid "status:Update" -msgstr "Opdatering" +#. Translators: Related to security levels +#: system/models.py +msgid "Critical" +msgstr "Kritisk" + +#. Translators: Related to security levels +#: system/models.py +msgid "High" +msgstr "Høj" + +# SecurityProblem class +#. Translators: Related to security levels +#: system/models.py +msgid "Normal" +msgstr "Normal" -#: system/models.py:116 +#: system/models.py msgid "owner configuration" msgstr "ejer-konfiguration" -#: system/models.py:127 system/models.py:214 system/models.py:244 -#: system/models.py:290 system/models.py:444 system/models.py:558 -#: system/models.py:674 system/models.py:686 system/models.py:770 -#: system/models.py:989 system/models.py:1097 system/models.py:1238 -msgid "name" -msgstr "navn" +#: system/models.py +msgid "country name" +msgstr "landenavn" -#: system/models.py:128 system/models.py:215 system/models.py:560 -#: system/models.py:689 system/models.py:1098 -msgid "UID" -msgstr "UID" +#: system/models.py +msgid "customer name" +msgstr "kundenavn" -#: system/models.py:131 +#: system/models.py msgid "Paid for access until this date" msgstr "Betalt for adgang indtil denne dato" -#: system/models.py:145 +#: system/models.py +msgid "Is a test customer" +msgstr "Er en test kunde" + +#: system/models.py +msgid "UID" +msgstr "UID" + +#: system/models.py +msgid "This UID is used when registering a PC with the admin site." +msgstr "Dette UID bruges ifm. registrering på admin-portalen." + +#: system/models.py +msgid "ISIL/NCIP" +msgstr "ISIL/NCIP" + +#: system/models.py msgid "" "Necessary for customers who wish to integrate with standard library login" msgstr "Nødvendigt for kunder der ønsker at integrere standard bibliotekslogin" -#: system/models.py:150 +#: system/models.py +msgid "Username for login API (e.g. Cicero)" +msgstr "Brugernavn til login API (f.eks. Cicero)" + +#: system/models.py +msgid "URL domain (including subdomain) for Easy!Appointments" +msgstr "URL-domæne (inklusive subdomæne) for Easy!Appointments" + +#: system/models.py msgid "Login duration" msgstr "Login-tid" -#: system/models.py:151 +#: system/models.py msgid "Login duration when integrating with library login" msgstr "Hvor længe man kan bruge PC'en med bibliotekslogin" -#: system/models.py:157 +#: system/models.py msgid "Quarantine duration" msgstr "Karantæneperiode" -#: system/models.py:158 +#: system/models.py msgid "Quarantine period when integrating with library login" msgstr "Karantæneperiode, når den tilladte logintid er brugt" -#: system/models.py:219 -msgid "sites with access" -msgstr "sites med adgang" +#: system/models.py +msgid "Automatically rerun associated scripts when you update their arguments" +msgstr "" +"Genkør automatisk tilknyttede scripts når I opdaterer deres inputparametre" + +#: system/models.py +msgid "identifier" +msgstr "identifikator" + +#: system/models.py +msgid "Date of login" +msgstr "Dato for login" + +#: system/models.py +msgid "Time of login" +msgstr "Tidspunkt for login" -#: system/models.py:240 +#: system/models.py +msgid "Time of logout" +msgstr "Tidspunkt for logud" + +#: system/models.py msgid "event_type:Altered Hours" msgstr "Ændrede åbningstider" -#: system/models.py:241 +#: system/models.py msgid "event_type:Closed" msgstr "Lukkedage" -#: system/models.py:245 +#: system/models.py msgid "date start" msgstr "startdato" -#: system/models.py:246 +#: system/models.py msgid "time start" msgstr "tænd" -#: system/models.py:247 +#: system/models.py msgid "date end" msgstr "slutdato" -#: system/models.py:248 +#: system/models.py msgid "time end" msgstr "sluk" -#: system/models.py:251 +#: system/models.py msgid "type" msgstr "type" -#: system/models.py:281 +#: system/models.py msgid "sleep_state:Standby" msgstr "Standby" -#: system/models.py:282 +#: system/models.py msgid "sleep_state:Freeze" msgstr "Freeze" -#: system/models.py:283 +#: system/models.py msgid "sleep_state:Mem" msgstr "Mem" -#: system/models.py:284 +#: system/models.py msgid "sleep_state:Off" msgstr "Off" -#: system/models.py:291 +#: system/models.py msgid "enabled" msgstr "aktiv" -#: system/models.py:293 +#: system/models.py msgid "sleep state" msgstr "dvaletilstand" -#: system/models.py:299 +#: system/models.py msgid "monday on" msgstr "mandag tænd" -#: system/models.py:302 +#: system/models.py msgid "monday off" msgstr "mandag sluk" -#: system/models.py:304 +#: system/models.py msgid "monday open" msgstr "mandag tænd" -#: system/models.py:306 +#: system/models.py msgid "tuesday on" msgstr "tirsdag tænd" -#: system/models.py:309 +#: system/models.py msgid "tuesday off" msgstr "tirsdags luk" -#: system/models.py:311 +#: system/models.py msgid "tuesday open" msgstr "tirsdag tænd" -#: system/models.py:313 +#: system/models.py msgid "wednesday on" msgstr "onsdag tænd" -#: system/models.py:316 +#: system/models.py msgid "wednesday off" msgstr "onsdag sluk" -#: system/models.py:318 +#: system/models.py msgid "wednesday open" msgstr "onsdag tænd" -#: system/models.py:320 +#: system/models.py msgid "thursday on" msgstr "torsdag tænd" -#: system/models.py:323 +#: system/models.py msgid "thursday off" msgstr "torsdag sluk" -#: system/models.py:325 +#: system/models.py msgid "thursday open" msgstr "torsdag tænd" -#: system/models.py:327 +#: system/models.py msgid "friday on" msgstr "fredag tænd" -#: system/models.py:330 +#: system/models.py msgid "friday off" msgstr "fredag sluk" -#: system/models.py:332 +#: system/models.py msgid "friday open" msgstr "fredag tænd" -#: system/models.py:334 +#: system/models.py msgid "saturday on" msgstr "lørdag tænd" -#: system/models.py:337 +#: system/models.py msgid "saturday off" msgstr "lørdag sluk" -#: system/models.py:339 +#: system/models.py msgid "saturday open" msgstr "lørdag tænd" -#: system/models.py:341 +#: system/models.py msgid "sunday on" msgstr "søndag tænd" -#: system/models.py:344 +#: system/models.py msgid "sunday off" msgstr "søndag sluk" -#: system/models.py:346 +#: system/models.py msgid "sunday open" msgstr "søndag tænd" -#: system/models.py:353 +#: system/models.py msgid "wake change events" msgstr "undtagelser" -#: system/models.py:446 system/models.py:563 system/models.py:691 -#: system/models.py:1099 system/models.py:1250 -msgid "description" -msgstr "beskrivelse" +#: system/models.py +msgid "supervisors" +msgstr "ansvarspersoner" -#: system/models.py:557 +#: system/models.py msgid "MAC" msgstr "MAC" -#: system/models.py:568 +#: system/models.py templates/documentation/sites_overview/index.html msgid "activated" msgstr "aktiveret" -#: system/models.py:570 -msgid "update required" -msgstr "opdatering påkrævet" - -#: system/models.py:575 +#: system/models.py msgid "last seen" msgstr "seneste tjek-ind" -#: system/models.py:577 +#: system/models.py msgid "location" msgstr "placering" -#: system/models.py:699 +#: system/models.py msgid "executable code" msgstr "eksekverbar kode" -#: system/models.py:702 system/models.py:1108 +#: system/models.py templates/system/scripts/update.html msgid "security script" msgstr "sikkerhedsscript" -#: system/models.py:706 +#: system/models.py msgid "hidden script" msgstr "skjult script" -#: system/models.py:710 +#: system/models.py msgid "maintained by Magenta" msgstr "vedligeholdt af Magenta" -#: system/models.py:787 system/models.py:996 +#: system/models.py msgid "position" msgstr "position" -#: system/models.py:849 -msgid "jobstatus:New" +#. Translators: Related to job status +#: system/models.py +msgid "New" msgstr "Nyt" -#: system/models.py:850 -msgid "jobstatus:Submitted" +#. Translators: Related to job status +#: system/models.py +msgid "Submitted" msgstr "Afsendt" -#: system/models.py:851 -msgid "jobstatus:Running" -msgstr "Kører" - -#: system/models.py:852 -msgid "jobstatus:Failed" +#. Translators: Related to job status +#: system/models.py +msgid "Failed" msgstr "Fejlet" -#: system/models.py:853 -msgid "jobstatus:Done" +#. Translators: Related to job status +#: system/models.py +msgid "Done" msgstr "Udført" -#: system/models.py:854 -msgid "jobstatus:Resolved" +#. Translators: Related to job status +#: system/models.py +msgid "Restarted" msgstr "Genstartet" -#: system/models.py:880 +#: system/models.py msgid "log output" msgstr "log output" -#: system/models.py:885 +#: system/models.py msgid "started" msgstr "påbegyndt" -#: system/models.py:886 +#: system/models.py msgid "finished" msgstr "afsluttet" -#: system/models.py:939 +#: system/models.py #, python-brace-format msgid "Cannot change status from {0} to {1}" msgstr "Kan ikke ændre status fra {0} til {1}" -#: system/models.py:946 system/views.py:509 +#: system/models.py system/views.py #, python-format -msgid "Can only restart jobs with status %s" -msgstr "Kan kun genstarte jobs der har status %s" +msgid "Can only restart jobs that are Done or Failed %s" +msgstr "Kan kun genstarte jobs som er Udført eller Fejlet %s" -#: system/models.py:980 +#: system/models.py templates/documentation/scripts/parameters.html msgid "String" msgstr "Streng" -#: system/models.py:981 +#: system/models.py templates/documentation/scripts/parameters.html msgid "Integer" msgstr "Heltal" -#: system/models.py:982 -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:63 +#: system/models.py templates/documentation/scripts/parameters.html +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "Date" msgstr "Dato" -#: system/models.py:983 +#: system/models.py templates/documentation/scripts/parameters.html msgid "File" msgstr "Fil" -#: system/models.py:984 +#: system/models.py templates/documentation/scripts/parameters.html msgid "Boolean" msgstr "Afkrydsningsfelt" -#: system/models.py:985 +#: system/models.py templates/documentation/scripts/parameters.html msgid "Time" msgstr "Tid" -#: system/models.py:991 +#: system/models.py templates/documentation/scripts/parameters.html +msgid "Choices" +msgstr "Valgmuligheder" + +#: system/models.py msgid "value type" msgstr "værdi-type" -#: system/models.py:994 +#: system/models.py msgid "default value" msgstr "standardværdi" -#: system/models.py:997 +#: system/models.py msgid "mandatory" msgstr "påkrævet" -# SecurityProblem class -#: system/models.py:1080 -msgid "securitylevel:Normal" -msgstr "Normal" - -#: system/models.py:1081 -msgid "securitylevel:High" -msgstr "Høj" - -#: system/models.py:1082 -msgid "securitylevel:Critical" -msgstr "Kritisk" - # Konsistens ml. navn i sikkerhedsregel og sikkerhedshændelse -#: system/models.py:1101 +#: system/models.py msgid "level" msgstr "alvorlighedsgrad" -#: system/models.py:1115 +#: system/models.py msgid "alert groups" msgstr "overvågede grupper" -#: system/models.py:1121 +#: system/models.py msgid "alert users" msgstr "modtager(e) af e-mail-advarsel" -# SecurityEvent class -#: system/models.py:1149 -msgid "eventstatus:New" +#: system/models.py +msgid "monitor period start" +msgstr "overvågningsperiode-start" + +#: system/models.py +msgid "monitor period end" +msgstr "overvågningsperiode-slut" + +#: system/models.py +msgid "maximum offline period allowed, in minutes" +msgstr "maksimal tilladt offline-periode i minutter" + +#: system/models.py +msgid "How long a PC may be offline before an event is created" +msgstr "Hvor længe en PC må være offline, før der oprettes en hændelse" + +#. Translators: Related to event status +#: system/models.py +msgid "New " msgstr "Ny" -#: system/models.py:1150 -msgid "eventstatus:Assigned" +# SecurityEvent class +#. Translators: Related to event status +#: system/models.py +msgid "Assigned" msgstr "Tildelt" -#: system/models.py:1151 -msgid "eventstatus:Resolved" +#. Translators: Related to event status +#: system/models.py +msgid "Resolved" msgstr "Løst" -#: system/models.py:1167 +#: system/models.py msgid "occurred" msgstr "hændelsestidspunkt" -#: system/models.py:1169 +#: system/models.py msgid "reported" msgstr "modtagelsestidspunkt" -#: system/models.py:1176 +#: system/models.py msgid "assigned user" msgstr "håndteres af" -#: system/models.py:1249 -msgid "title" -msgstr "titel" +#: system/models.py +msgid "product" +msgstr "produkt" -#: system/models.py:1251 system/models.py:1278 -msgid "content" -msgstr "indhold" +#: system/models.py +msgid "key" +msgstr "nøgle" -#: system/models.py:1254 -msgid "updated" -msgstr "opdateret" +#: system/utils.py +#, python-format +msgid "Changes have been saved %s" +msgstr "Ændringerne er blevet gemt %s" + +#: system/views.py +msgid "The specified UID is unavailable. Please choose another." +msgstr "Det valgte UID er ikke tilgængeligt. Vælg venligst et andet." + +#: system/views.py +#, python-format +msgid "Site %s created" +msgstr "Site %s oprettet" -#: system/models.py:1255 -msgid "author" -msgstr "forfatter" +#: system/views.py +#, python-format +msgid "" +"The Site could not be created because the chosen UID %s was invalid or not " +"unique" +msgstr "" +"Sitet kunne ikke oprettes, fordi det valgte UID %s var ugyldigt eller ikke " +"unikt" -#: system/models.py:1258 -msgid "version" -msgstr "version" +#: system/views.py +#, python-format +msgid "Site %s deleted" +msgstr "Site %s slettet" -#: system/views.py:315 +#: system/views.py #, python-format msgid "Settings for %s updated" msgstr "Indstillinger for %s opdateret" -#: system/views.py:545 +#: system/views.py #, python-format msgid "The script %s is being rerun on the computer %s" msgstr "Scriptet %s bliver genkørt på computeren %s" -#: system/views.py:590 +#: system/views.py #, python-format msgid "You have no Script with the following ID: %s" msgstr "Du har intet script med ID %s" -#: system/views.py:697 +#: system/views.py msgid "Error: You must provide a name" msgstr "Fejl: Du skal angive et navn" -#: system/views.py:704 +#: system/views.py msgid "Error: You must provide a correct input parameter type" msgstr "Fejl: Du skal angive en korrekt input-parameter-type" -#: system/views.py:864 +#: system/views.py #, python-format msgid "Script %s updated" msgstr "Script %s opdateret" -#: system/views.py:961 system/views.py:983 +#: system/views.py msgid "You must specify at least one group or pc" msgstr "Du skal angive mindst en pc eller gruppe" -#: system/views.py:1109 +#: system/views.py #, python-format msgid "You have no computer with the following ID: %s" msgstr "Du har ingen computer med følgende ID: %s" -#: system/views.py:1181 +#: system/views.py +#, python-format +msgid "" +"Computer %s updated, but it could not be added to the group(s) %s because it " +"already belongs to the plan %s" +msgstr "" +"Computer %s opdateret, men den kunne ikke tilføjes til gruppe(rne) %s, da " +"den allerede er tilmeldt tidsplanen %s" + +#: system/views.py #, python-format msgid "Computer %s updated" msgstr "Computer %s opdateret" -#: system/views.py:1447 +#: system/views.py #, python-format msgid "" "PCWakePlan %s created, but the group(s) %s could not be added because the " @@ -542,7 +855,7 @@ msgstr "" "computer(ne) %s allerede er tilmeldt tidsplan(erne) %s, og undtagelse(rne) " "%s kunne ikke tilføjes grundet overlap med andre valgte undtagelser" -#: system/views.py:1462 +#: system/views.py #, python-format msgid "" "PCWakePlan %s created, but the group(s) %s could not be added because the " @@ -551,7 +864,7 @@ msgstr "" "Tænd/sluk tidsplan %s oprettet, men gruppe(rne) %s kunne ikke tilføjes, da " "computer(ne) %s allerede er tilmeldt tidsplan(erne) %s" -#: system/views.py:1475 +#: system/views.py #, python-format msgid "" "PCWakePlan %s created, but the WakeChangeEvents %s could not be added due to " @@ -560,17 +873,17 @@ msgstr "" "Tænd/sluk tidsplan %s oprettet, men undtagelse(rne) %s kunne ikke tilføjes " "grundet overlap med andre valgte undtagelser" -#: system/views.py:1485 +#: system/views.py #, python-format msgid "PCWakePlan %s created" msgstr "Tænd/sluk tidsplan %s oprettet" -#: system/views.py:1505 +#: system/views.py #, python-format msgid "You have no Wake Week Plan with the following ID: %s" msgstr "Du har ingen tidsplan med følgende ID: %s" -#: system/views.py:1630 +#: system/views.py #, python-format msgid "" "PCWakePlan %s updated, but the group(s) %s could not be added because the " @@ -581,7 +894,7 @@ msgstr "" "computer(ne) %s allerede er tilmeldt tidsplan(erne) %s, og undtagelse(rne) " "%s kunne ikke tilføjes grundet overlap med andre valgte undtagelser" -#: system/views.py:1645 +#: system/views.py #, python-format msgid "" "PCWakePlan %s updated, but the group(s) %s could not be added because the " @@ -590,7 +903,7 @@ msgstr "" "Tænd/sluk tidsplan %s opdateret, men gruppe(rne) %s kunne ikke tilføjes, da " "computer(ne) %s allerede er tilmeldt tidsplan(erne) %s" -#: system/views.py:1658 +#: system/views.py #, python-format msgid "" "PCWakePlan %s updated, but the WakeChangeEvents %s could not be added due to " @@ -599,53 +912,63 @@ msgstr "" "Tænd/sluk tidsplan %s opdateret, men undtagelse(rne) %s kunne ikke tilføjes " "grundet overlap med andre valgte undtagelser" -#: system/views.py:1669 +#: system/views.py #, python-format msgid "PCWakePlan %s updated" msgstr "Tænd/sluk tidsplan %s opdateret" -#: system/views.py:1766 +#: system/views.py #, python-format msgid "Wake Week Plan %s deleted" msgstr "Tænd/Sluk tidsplan %s slettet" -#: system/views.py:1888 +#: system/views.py #, python-format msgid "You have no Wake Change Event with the following ID: %s" msgstr "Du har ingen undtagelse med ID %s" -#: system/views.py:1925 +#: system/views.py #, python-format msgid "Wake Change Event %s updated" msgstr "Undtagelse %s opdateret" -#: system/views.py:1935 +#: system/views.py #, python-format msgid "The chosen dates would cause overlap with event %s in plan %s" msgstr "" "De valgte datoer ville medføre overlap med undtagelsen %s i tidsplanen %s" -#: system/views.py:1945 system/views.py:2001 +#: system/views.py #, python-format msgid "The end date cannot be before the start date %s" msgstr "Til-datoen kan ikke være før fra-datoen %s" -#: system/views.py:2143 +#: system/views.py +#, python-format +msgid "The user(s) %s have been added to the site %s " +msgstr "Bruger(ne) %s er blevet tilføjet til sitet %s " + +#: system/views.py #, python-format msgid "You have no user with the following ID: %s" msgstr "Du har ikke nogen Bruger med følgende ID: %s" -#: system/views.py:2208 +#: system/views.py #, python-format msgid "User %s updated" msgstr "Bruger %s opdateret" -#: system/views.py:2251 +#: system/views.py +#, python-format +msgid "User %s removed from the site %s" +msgstr "Bruger %s fjernet fra sitet %s" + +#: system/views.py #, python-format msgid "User %s deleted" msgstr "Bruger %s slettet" -#: system/views.py:2338 +#: system/views.py #, python-format msgid "" "You have no group with the following ID: %s. Try locating the group in the " @@ -654,7 +977,7 @@ msgstr "" "I har ingen gruppe med følgende ID:

%s


Prøv " "i stedet at finde gruppen fra gruppelisten." -#: system/views.py:2507 +#: system/views.py #, python-format msgid "" "Group %s updated, but the pc(s) %s could not be added because they already " @@ -663,596 +986,4151 @@ msgstr "" "Gruppe %s opdateret, men computer(ne) %s kunne ikke tilføjes, da de(n) " "allerede er tilmeldt tidsplan(erne) %s" -#: system/views.py:2519 +#: system/views.py #, python-format msgid "Group %s updated" msgstr "Gruppe %s opdateret" -#: system/views.py:2533 +#: system/views.py #, python-format msgid "No value was specified for the mandatory input %s of script %s" msgstr "Den obligatoriske parameterværdi %s for script %s mangler" -#: system/views.py:2605 +#: system/views.py #, python-format msgid "Group %s deleted" msgstr "Gruppe %s slettet" -#: system/views.py:2672 +#: system/views.py #, python-format msgid "You have no Security Problem with the following ID: %s" msgstr "Du har ikke nogen Sikkerhedsregel med følgende ID: %s" -#: system/views.py:2920 +#: system/views.py +#, python-format +msgid "You have no Event Rule Server with the following ID: %s" +msgstr "Du har ikke nogen offline-regel med følgende ID: %s" + +#: system/views.py msgid "The administration site" msgstr "Administrationssiden" -#: system/views.py:2921 +#: system/views.py templates/documentation/om_os2borgerpc_admin.html msgid "About" msgstr "Om" -#: system/views.py:2922 templates/site_with_navigation.html:31 -#: templates/system/jobs/site_jobs.html:37 -#: templates/system/jobs/site_jobs.html:162 templates/system/pcs/form.html:153 -#: templates/system/security_events/site_security_events.html:51 -#: templates/system/security_events/site_security_events.html:121 -#: templates/system/site_status.html:5 templates/system/site_status.html:23 +#: system/views.py templates/documentation/sites_overview/index.html +msgid "Sites overview" +msgstr "Sites-oversigt" + +#: system/views.py templates/documentation/status/index.html +#: templates/documentation/wake_plans/edit_settings.html +#: templates/site_with_navigation.html templates/system/jobs/site_jobs.html +#: templates/system/pcs/form.html +#: templates/system/security_events/site_security_events.html +#: templates/system/site_status.html msgid "Status" msgstr "Status" -#: system/views.py:2923 templates/site_with_navigation.html:75 -#: templates/system/jobs/site_jobs.html:83 -#: templates/system/pcgroups/confirm_delete.html:18 -#: templates/system/pcs/form.html:7 templates/system/pcs/site_pcs.html:6 -#: templates/system/pcs/site_pcs.html:16 templates/system/site_list.html:7 -#: templates/system/site_status.html:11 -#: templates/system/wake_plan/confirm_delete.html:16 -#: templates/system/wake_plan/wake_plan.html:33 +#: system/views.py templates/documentation/status/index.html +#: templates/documentation/users/index.html templates/site_with_navigation.html +#: templates/system/jobs/site_jobs.html +#: templates/system/pcgroups/confirm_delete.html templates/system/pcs/form.html +#: templates/system/pcs/site_pcs.html templates/system/sites/list.html +#: templates/system/wake_plan/confirm_delete.html +#: templates/system/wake_plan/wake_plan.html msgid "Computers" msgstr "Computere" -#: system/views.py:2924 templates/site_with_navigation.html:80 -#: templates/system/jobs/site_jobs.html:106 -#: templates/system/pcgroups/site_groups.html:7 -#: templates/system/security_problems/confirm_delete.html:23 -#: templates/system/wake_plan/confirm_delete.html:15 -#: templates/system/wake_plan/wake_plan.html:26 +#: system/views.py templates/documentation/groups/index.html +#: templates/documentation/users/index.html templates/site_with_navigation.html +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/jobs/site_jobs.html +#: templates/system/pcgroups/site_groups.html +#: templates/system/wake_plan/confirm_delete.html +#: templates/system/wake_plan/wake_plan.html msgid "Groups" msgstr "Grupper" -#: system/views.py:2925 +#: system/views.py templates/documentation/wake_plans/index.html +#: templates/site_with_navigation.html msgid "On/Off schedules" msgstr "Tænd/Sluk tidsplaner" -#: system/views.py:2926 templates/site_with_navigation.html:98 -#: templates/system/jobs/site_jobs.html:6 -#: templates/system/scripts/confirm_delete.html:21 +#: system/views.py templates/documentation/api.html +#: templates/site_with_navigation.html templates/system/jobs/site_jobs.html +#: templates/system/scripts/confirm_delete.html msgid "Jobs" msgstr "Jobs" -#: system/views.py:2927 templates/site_with_navigation.html:103 -#: templates/system/scripts/header.html:5 -#: templates/system/site_two_factor.html:52 +#: system/views.py templates/documentation/users/index.html +#: templates/site_with_navigation.html templates/system/scripts/header.html msgid "Scripts" msgstr "Scripts" -#: system/views.py:2928 templates/site_with_navigation.html:61 -#: templates/system/scripts/header.html:5 +#: system/views.py templates/site_with_navigation.html +#: templates/system/scripts/header.html msgid "Security Scripts" msgstr "Sikkerhedsscripts" -#: system/views.py:2929 templates/site_with_navigation.html:110 -#: templates/system/users/confirm_delete.html:5 -#: templates/system/users/create.html:5 templates/system/users/update.html:5 +#: system/views.py templates/documentation/notifications/index.html +msgid "Notifications and offline rules" +msgstr "Notifikationer og offline-regler" + +#: system/views.py templates/documentation/users/index.html +#: templates/site_with_navigation.html templates/system/users/link.html +#: templates/system/users/update.html msgid "Users" msgstr "Brugere" -#: system/views.py:2930 templates/site_with_navigation.html:186 -#: templates/system/pcgroups/site_groups.html:67 -#: templates/system/pcs/form.html:89 templates/system/site_settings.html:31 +#: system/views.py templates/documentation/api.html +#: templates/documentation/computers/index.html +#: templates/documentation/configuration/index.html +#: templates/documentation/groups/index.html +#: templates/site_with_navigation.html +#: templates/system/pcgroups/site_groups.html templates/system/pcs/form.html +#: templates/system/site_settings/site_settings.html msgid "Configurations" msgstr "Konfigurationer" -#: system/views.py:2931 -msgid "Setting up security surveillance (PDF)" -msgstr "Oprettelse af Sikkerhedsovervågning (PDF)" - -#: system/views.py:2932 +#: system/views.py templates/documentation/changelogs/index.html msgid "The News site" msgstr "Nyhedssiden" -#: system/views.py:2933 -msgid "OS2borgerPC" -msgstr "OS2BorgerPC" +#: system/views.py +msgid "Setting up security surveillance (PDF)" +msgstr "Oprettelse af Sikkerhedsovervågning (PDF)" -#: system/views.py:2934 +#: system/views.py msgid "Installation Guide (PDF)" msgstr "Installationsguide (PDF)" -#: system/views.py:2935 +#: system/views.py msgid "Old installation guide (PDF)" msgstr "Gammel installationsguide (PDF)" -#: system/views.py:2936 +#: system/views.py templates/documentation/sites_overview/index.html +#: templates/system/site_status.html templates/system/sites/list.html msgid "OS2borgerPC Kiosk" msgstr "OS2borgerPC Kiosk" -#: system/views.py:2937 +#: system/views.py msgid "Installation Guide" msgstr "Installationsguide" -#: system/views.py:2938 +#: system/views.py msgid "Updating Wi-Fi setup" msgstr "Opdatering af Wi-Fi opsætning" -#: system/views.py:2939 +#: system/views.py +msgid "Audit" +msgstr "Revision" + +#: system/views.py +msgid "FAQ (PDF)" +msgstr "Ofte stillede spørgsmål (PDF)" + +#: system/views.py templates/documentation/tech.html msgid "Technical Documentation" msgstr "Teknisk Dokumentation" -#: system/views.py:2940 +#: system/views.py msgid "OS2borgerPC Image" msgstr "OS2borgerPC Image" -#: system/views.py:2941 +#: system/views.py msgid "OS2borgerPC Admin Site" msgstr "OS2borgerPC Admin Site" -#: system/views.py:2942 +#: system/views.py msgid "OS2borgerPC Kiosk Image" msgstr "OS2borgerPC Kiosk Image" -#: system/views.py:2943 +#: system/views.py msgid "OS2borgerPC Client" msgstr "OS2borgerPC Client" -#: templates/403.html:5 templates/403.html:18 +#: templates/403.html msgid "Permission denied" msgstr "Forbudt" -#: templates/403.html:21 templates/404.html:20 templates/500.html:21 +#: templates/403.html templates/404.html templates/500.html msgid "Return to OS2borgerPC-admin" msgstr "Gå tilbage til OS2borgerPC-admin" -#: templates/403.html:28 +#: templates/403.html msgid "You do not have permission to access this webpage" msgstr "Du har ikke adgang til denne side" -#: templates/403.html:29 templates/404.html:38 templates/500.html:29 +#: templates/403.html templates/404.html templates/500.html msgid "Best regards" msgstr "Mvh." -#: templates/403.html:30 templates/404.html:39 templates/500.html:30 +#: templates/403.html templates/404.html templates/500.html msgid "The OS2BorgerPC team" msgstr "OS2BorgerPC-teamet" -#: templates/404.html:5 +#: templates/404.html msgid "The webpage could not be found" msgstr "Siden kunne ikke findes" -#: templates/404.html:27 +#: templates/404.html msgid "The webpage could unfortunately not be found." msgstr "Siden kunne desværre ikke findes" -#: templates/404.html:30 +#: templates/404.html msgid "The error message is:" msgstr "Fejlbeskeden er:" -#: templates/404.html:37 +#: templates/404.html msgid "If you believe that this is an error, you may contact us at" msgstr "Hvis I mener, der er tale om en fejl, kan I skrive til os på" -#: templates/500.html:5 templates/500.html:18 +#: templates/500.html msgid "Server error" msgstr "Serverfejl" -#: templates/500.html:28 +#: templates/500.html msgid "A server error has occurred, and we have been notified about the error." msgstr "Der er sket en serverfejl og vi er blevet notificeret om fejlen." -#: templates/base.html:7 +#: templates/base.html msgid "OS2borgerPC Administration" msgstr "OS2borgerPC Administration" -#: templates/base.html:41 templates/login.html:314 +#: templates/base.html templates/two_factor/_base.html msgid "" "It looks like you're using Internet Explorer. It won't work on this website." msgstr "" "Det ser ud som om, at du benytter Internet Explorer. Det vil ikke fungere på " "dette website." -#: templates/base.html:42 templates/login.html:315 +#: templates/base.html templates/two_factor/_base.html msgid "Try opening this website in Microsoft Edge" msgstr "Prøv at åbne denne side i Microsoft Edge" -#: templates/documentation/index.html:8 -msgid "OS2borgerPC documentation" -msgstr "OS2borgerPC dokumentation" +#: templates/documentation/api.html +msgid "API Key" +msgstr "API-nøgle" + +#: templates/documentation/api.html templates/site_with_navigation.html +#: templates/system/site_settings/api_keys/api_keys.html +msgid "API Keys" +msgstr "API-nøgler" + +#: templates/documentation/api.html +msgid "PC's" +msgstr "PC'er" + +#: templates/documentation/api.html +#: templates/documentation/security_scripts/__submenu__.html +#: templates/documentation/security_scripts/edit.html +#: templates/documentation/security_scripts/securityevents.html +#: templates/site_with_navigation.html +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/security_events/site_security_events.html +msgid "Events" +msgstr "Hændelser" + +#: templates/documentation/api.html +msgid "PC" +msgstr "PC" + +#: templates/documentation/api.html +msgid "Logins" +msgstr "Logins" + +#: templates/documentation/api.html +msgid "Generate an API key" +msgstr "Generér en API-nøgle" + +#: templates/documentation/api.html +msgid "OS2borgerPC has a REST API with the root URL at" +msgstr "OS2borgerPC har et REST API med root URL'en" + +#: templates/documentation/api.html +msgid "The documentation for this API is available at" +msgstr "Dokumentationen for dette API er tilgængelig på" + +#: templates/documentation/api.html +msgid "More info about this below." +msgstr "Mere info om dette herunder." + +#: templates/documentation/api.html +#, python-format +msgid "" +"In order to make requests to the API, you need to generate and use an " +"%(api_key)s. The process is described further down the page." +msgstr "" +"For at kunne lave forespørgsler til API'et skal du generere og bruge en " +"%(api_key)s. Denne proces beskrives længere nede på siden." -#: templates/documentation/index.html:22 -#: templates/site_with_navigation.html:119 -#: templates/system/changelog/list.html:34 -msgid "Documentation" -msgstr "Dokumentation" +#: templates/documentation/api.html +msgid "The API has endpoints for the following:" +msgstr "API'et har endpoints for følgende:" -#: templates/documentation/index.html:25 -msgid "Return to admin" -msgstr "Tilbage til admin" +#: templates/documentation/api.html +#, python-format +msgid "" +"which contains extended info about a %(pc)s, such as hostname and IP " +"addresses" +msgstr "" +"som indeholder yderligere info om en %(pc)s, såsom hostname og IP-adresser" -#: templates/login.html:9 -msgid "OS2borgerPC Administration Login" -msgstr "OS2borgerPC Administration Login" +#: templates/documentation/api.html +#, python-format +msgid "" +"which contains information about how many %(logins)s a single or all " +"computers have had on a given day" +msgstr "" +"som indeholder information omkring hvor mange %(logins)s en enkelt eller " +"flere PC'er har haft på en given dag" -#: templates/login.html:283 templates/login.html:286 -msgid "Log in" -msgstr "Log ind" +#: templates/documentation/api.html +msgid "HTTP header" +msgstr "HTTP header" -#: templates/login.html:292 +#: templates/documentation/api.html +#, python-format msgid "" -"OS2borgerPC is an open source product. You can download the source code and " -"documentation here:" +"Every request to the API needs to include an %(api_key)s as part of the " +"request. This %(api_key)s is sent as an %(header)s in the following format:" msgstr "" -"OS2borgerPC er en open source løsning. Du kan hente kildekoden og " -"dokumentationen her:" +"Alle forespørgsler til API'et skal inkludere en %(api_key)s som en del af " +"forespørgslen. Denne %(api_key)s sendes som en %(header)s i det følgende " +"format:" -#: templates/login.html:302 -msgid "Check updates for OS2borgerPC" -msgstr "Se opdateringer i OS2borgerPC" +#: templates/documentation/api.html +msgid "...without the" +msgstr "...uden" -#: templates/login.html:308 -msgid "Send a message to Magenta" -msgstr "Send en besked til Magenta" +#: templates/documentation/api.html +msgid "brackets." +msgstr "klammerne." -#: templates/logout.html:11 -msgid "You have been logged out" -msgstr "Du er nu logget ud" +#: templates/documentation/api.html +#, python-format +msgid "" +"An example request to the API, with an example %(api_key)s, looks like this, " +"using the CLI tool" +msgstr "" +"Her vises et eksempel på en forespørgsel til API'et med et eksempel på en " +"%(api_key)s og ved brug af CLI-værktøjet" -#: templates/logout.html:12 -msgid "Click here to log in again" -msgstr "Klik her for at logge ind igen" +#: templates/documentation/api.html +#, python-format +msgid "API authentication: %(api_keys)s" +msgstr "API autentificering: %(api_keys)s" -#: templates/site_with_navigation.html:23 templates/system/site_list.html:5 -#: templates/system/site_list.html:6 -msgid "Sites" -msgstr "Sites" +#: templates/documentation/api.html templates/site_with_navigation.html +#: templates/system/site_settings/site_settings.html +msgid "Site settings" +msgstr "Site-indstillinger" -#: templates/site_with_navigation.html:37 -#: templates/system/changelog/list.html:8 -#: templates/system/changelog/list.html:10 -#: templates/system/changelog/list.html:28 -msgid "News" -msgstr "Nyheder" +#: templates/documentation/api.html +msgid "" +"API-keys are used to allow a person or a program to retrieve data from your " +"Site." +msgstr "" +"API-nøgler bruges til at tillade en person eller et program at hente data " +"fra dit Site." -#: templates/site_with_navigation.html:41 -msgid "Security" -msgstr "Sikkerhed" +#: templates/documentation/api.html +#, python-format +msgid "" +"If you have access to multiple Sites, you'll need to make %(api_keys)s for " +"each of those Sites." +msgstr "" +"Hvis du har adgang til flere Sites, vil du være nødt til at lave " +"%(api_keys)s for hvert af disse Sites." -#: templates/site_with_navigation.html:46 -#: templates/system/security_events/site_security_events.html:6 -#: templates/system/security_problems/confirm_delete.html:17 -msgid "Security Events" -msgstr "Sikkerhedshændelser" +#: templates/documentation/api.html +#, python-format +msgid "" +"You can generate, edit or delete API keys by going to %(site_settings)s and " +"then clicking the link " +msgstr "" +"Du kan generere, rette og slette API-nøgler ved at gå til %(site_settings)s " +"og klikke på linket " -#: templates/site_with_navigation.html:55 -#: templates/system/security_problems/site_security_problems.html:7 -msgid "Security Rules" -msgstr "Sikkerhedsregler" +#: templates/documentation/api.html +#: templates/system/site_settings/site_settings.html +msgid "Manage API keys" +msgstr "Håndter API-nøgler" -#: templates/site_with_navigation.html:67 -#: templates/system/site_two_factor.html:4 -msgid "Two-factor authentication" -msgstr "Totrinsbekræftelse" +#: templates/documentation/api.html +msgid "On this page you can:" +msgstr "På denne side kan du:" -#: templates/site_with_navigation.html:71 -msgid "Organizing" -msgstr "Organisering" +#: templates/documentation/api.html +#, python-format +msgid "" +"Click \"Generate new %(api_key)s\" to generate and save a new %(api_key)s" +msgstr "" +"Klikke \"Generer ny %(api_key)s\" for at generere og gemme en ny %(api_key)s" -#: templates/site_with_navigation.html:85 -#: templates/system/wake_plan/wake_plan_base.html:6 -msgid "On/Off schedule" -msgstr "Tænd/Sluk tidsplan" +#: templates/documentation/api.html +#, python-format +msgid "" +"Write or change the comment about a given %(api_key)s. Fx. to specify who/" +"what is using the given key." +msgstr "" +"Skrive eller ændre kommentaren for en given %(api_key)s. Den kan fx bruges " +"til at angive hvem/hvad, der bruger den pågældende nøgle." + +#: templates/documentation/api.html +msgid "Changes are saved automatically after a few seconds." +msgstr "Ændringer gemmes automatisk efter et par sekunder." + +#: templates/documentation/api.html +#, python-format +msgid "Click \"Delete\" next to an %(api_key)s to delete and deactivate it." +msgstr "" +"Klikke \"Slet\" ved siden af en %(api_key)s for at slette og deaktivere den." + +#: templates/documentation/api.html +msgid "" +"A confirmation popup will appear to confirm whether you want to delete it or " +"not." +msgstr "" +"En bekræftelses-popup vil dukke op for at bekræfte, hvorvidt du ønsker at " +"slette API-nøglen." + +#: templates/documentation/api.html +msgid "API Documentation" +msgstr "API Dokumentation" + +#: templates/documentation/api.html +msgid "" +"The documentation has information about which endpoints are available, what " +"data is expected in the request, and what data is received in the response." +msgstr "" +"Dokumentationen indeholder information om hvilke endpoints der er " +"tilgængelige, hvilken data der forventes i forespørgslen, og hvilken data " +"der modtages i svaret." + +#: templates/documentation/api.html +msgid "" +"In order to visit and view the API documentation you have to be signed in to " +"the admin site." +msgstr "" +"Du skal være logget ind på admin-sitet for at kunne besøge og se API " +"Dokumentationen." + +#: templates/documentation/api.html +msgid "The documentation generally looks something like this:" +msgstr "Dokumentationen ser generelt således ud:" + +#: templates/documentation/api.html +msgid "" +"As per the image, below the red circle numbered \"1\" you can see each " +"endpoint. Each of these can be clicked to get more information about it." +msgstr "" +"Som vist i billedet kan hvert endpoint ses under den røde cirkel med " +"nummeret \"1\". Man kan klikke på hvert endpoint for at få mere information " +"om det." + +#: templates/documentation/api.html +msgid "" +"Below the red circle numbered \"2\", you can click to see information about " +"what format the returned data has." +msgstr "" +"Du kan klikke på mulighederne under den røde cirkel med nummeret \"2\" for " +"at se information om formatet på den returnerede data." + +#: templates/documentation/api.html +msgid "Authorize" +msgstr "Authorize" + +#: templates/documentation/api.html +#, python-format +msgid "" +"Next to the red circle numbered \"3\", you see the %(auth)s button. This " +"button can be used to test out the API directly from the documentation, as " +"soon as you have generated an API Key." +msgstr "" +"Ved siden af den røde cirkel med nummeret \"3\" kan du se knappen %(auth)s. " +"Denne knap kan bruges til at teste API'et direkte fra dokumentationssiden, " +"så længe du har genereret en API-nøgle." + +#: templates/documentation/api.html +msgid "Testing out the API directly from the documentation" +msgstr "Test af API'et direkte fra dokumentationen" + +#: templates/documentation/api.html +msgid "" +"On the API Documentation page, you can directly experiment with requests to " +"the API." +msgstr "" +"På API dokumentationssiden kan du eksperimentere med forespørgsler til " +"API'et." + +#: templates/documentation/api.html +msgid "This is how you do that:" +msgstr "Dette gøres således:" + +#: templates/documentation/api.html +#, python-format +msgid "" +"In order to make a request to the API, you must first %(gen_key)s on the page" +msgstr "" +"For at kunne lave forespørgsler til API'et skal du først %(gen_key)s på siden" + +#: templates/documentation/api.html +msgid "\"Copy\" the API key from the API Key page." +msgstr "\"Kopier\" API-nøglen fra API-nøglesiden." + +#: templates/documentation/api.html +#, python-format +msgid "" +"Click the %(auth)s button as seen in the screenshot above next to the circle " +"numbered \"3\"." +msgstr "" +"Klik på knappen %(auth)s, som vises i screenshot'et længere oppe ved siden " +"af cirklen med nummeret \"3\"." + +#: templates/documentation/api.html +#, python-format +msgid "" +"\"Paste\" in the API Key you copied in step 2 and click %(auth)s then \"Close" +"\"." +msgstr "" +"\"Indsæt\" den API-nøgle, som du kopierede i skridt 2 og klik %(auth)s og " +"derefter \"Close\"." + +#: templates/documentation/api.html +msgid "" +"Now click the API endpoint you wish to test with to expand it. Here we pick " +"PCs." +msgstr "" +"Klik nu på det API endpoint, som du ønsker at teste for at udvide fanen. Her " +"vælger vi PC'er." + +#: templates/documentation/api.html +msgid "Click the button called \"Try it out\"." +msgstr "Klik på knappen \"Try it out\"." + +#: templates/documentation/api.html +msgid "Click the button \"Execute\"." +msgstr "Klik på knappen \"Execute\"." + +#: templates/documentation/api.html +msgid "Now you'll see a response. It might be necessary to scroll down a bit." +msgstr "Du vil nu se et svar. Det kan være nødvendigt at scrolle lidt ned." + +#: templates/documentation/api.html +msgid "" +"If everything went well, you should see the status code 200 and the relevant " +"data returned." +msgstr "" +"Hvis alt gik godt, burde du få statuskoden 200 og den relevante data tilbage." + +#: templates/documentation/api.html +msgid "If not you'll get an error message." +msgstr "Hvis ikke vil du få en fejlbesked." + +#: templates/documentation/api.html +msgid "" +"The status code 204 means that no data was returned. This can happen if you " +"e.g. try to get a specific PC and enter an id that does not match any PC on " +"your site." +msgstr "" +"Statuskoden 204 betyder, at svaret ikke indeholdt noget data. Dette kan ske, " +"hvis du fx forsøger at hente information om en specifik PC og angiver et id, " +"som ikke matcher nogle af de PC'er, der hører til dit Site." + +#: templates/documentation/api.html +#, python-format +msgid "" +"The status code 401 \"Error: Unauthorized\" will be returned if you do not " +"use the %(auth)s button or if you enter an invalid API key." +msgstr "" +"Statuskoden 401 \"Error: Unauthorized\" vil blive returneret, hvis du ikke " +"bruger knappen %(auth)s, eller hvis du angiver en ugyldig API-nøgle." + +#: templates/documentation/changelogs/index.html +msgid "" +"The purpose of the news site is to display the content of new updates for " +"OS2borgerPC." +msgstr "" +"Nyhedssiden har til formål at samle og fremvise indholdet af nye " +"opdateringer i OS2borgerPC." + +#: templates/documentation/changelogs/index.html +msgid "On the site, it is possible to:" +msgstr "På siden er det muligt at:" + +#: templates/documentation/changelogs/index.html +msgid "View a list of posts with a short explanation" +msgstr "Se en liste over opslag, med en kort forklaring" + +#: templates/documentation/changelogs/index.html +msgid "Sort posts based on category" +msgstr "Sortere opslag efter kategori" + +#: templates/documentation/changelogs/index.html +msgid "Search for posts" +msgstr "Søge efter opslag" + +#: templates/documentation/changelogs/index.html +msgid "Read posts" +msgstr "Læse opslag" + +#: templates/documentation/changelogs/index.html +msgid "Comment on a post with one's admin-site user" +msgstr "" +"Kommentere på hvert opslag med den bruger man er registreret på adminsitet " +"som" + +#: templates/documentation/changelogs/index.html +msgid "List of posts" +msgstr "Liste af opslag" + +#: templates/documentation/changelogs/index.html +msgid "" +"When you enter the news site, you will be presented with a list of posts " +"sorted with the newest posts first." +msgstr "" +"Når man går ind på nyhedssiden vil man blive præsenteret med en liste af " +"opslag sorteret med de nyeste opslag først." + +#: templates/documentation/changelogs/index.html +msgid "" +"Each post on the list has a short summary of the content of the update along " +"with the date when the post was made." +msgstr "" +"Hvert opslag på listen har en kort opsummering af opdateringens indhold, " +"samt en dato for hvornår det er blevet slået op." + +#: templates/documentation/changelogs/index.html +msgid "Sorting posts" +msgstr "Sortering af opslag" + +#: templates/documentation/changelogs/index.html +msgid "" +"Each post has one or more categories that the list can be sorted by. This is " +"done by choosing the relevant category among the options presented at the " +"top of the page." +msgstr "" +"Hvert opslag har en eller flere kategorier som listen kan sorteres efter. " +"Dette gøres ved at vælge den relevante kategori ud fra de muligheder som " +"præsenteres i toppen af siden." + +#: templates/documentation/changelogs/index.html +msgid "Searching for posts" +msgstr "Søgning efter opslag" + +#: templates/documentation/changelogs/index.html +msgid "The search bar at the top can be used to search through the posts." +msgstr "Søgefeltet i toppen af siden kan bruges til at søge i opslagene." + +#: templates/documentation/changelogs/index.html +msgid "Detailed view of a post" +msgstr "Detaljeret visning af et opslag" + +#: templates/documentation/changelogs/index.html +msgid "" +"Each post can be expanded to show a more detailed explanation of the update." +msgstr "" +"Hvert opslag kan udvides hvilket viser en mere detaljeret forklaring af " +"opdateringen." + +#: templates/documentation/changelogs/index.html +msgid "Commenting on a post" +msgstr "Kommentarer på opslag" + +#: templates/documentation/changelogs/index.html +msgid "" +"If you are logged in to the admin-site, it is possible to add comments to a " +"post." +msgstr "" +"Såfremt man er logget ind på sitet, vil man kunne tilføje kommentarer på et " +"opslag." + +#: templates/documentation/changelogs/index.html +msgid "When you add a comment, your username will be shown above the comment." +msgstr "" +"Når man tilføjer en kommentar vil ens brugernavn fremgå over kommentaren." + +#: templates/documentation/changelogs/index.html +msgid "" +"Comments can also be answered by both Magenta's employees and other logged-" +"in users." +msgstr "" +"Kommentarer kan også blive besvaret både af Magentas ansatte samt alle " +"brugere tilmeldt et site." + +#: templates/documentation/computers/__submenu__.html +#: templates/documentation/groups/__submenu__.html +msgid "General editing" +msgstr "Generel redigering" + +#: templates/documentation/computers/__submenu__.html +#: templates/system/pcs/form.html +msgid "Job history" +msgstr "Jobhistorik" + +#: templates/documentation/computers/__submenu__.html +msgid "Activating" +msgstr "Aktivering" + +#: templates/documentation/computers/activating.html +msgid "The Admin system" +msgstr "Admin-systemet" + +#: templates/documentation/computers/activating.html +msgid "Activating a computer" +msgstr "Aktivering af Computer" + +#: templates/documentation/computers/activating.html +msgid "" +"Once you have installed OS2borgerPC on a computer and registered it with the " +"admin site, it will show up on the list of new computers under" +msgstr "" +"Når du har installeret OS2borgerPC på en computer og registreret den på " +"admin-sitet, vil den dukke op i listen over nye computere under" + +#: templates/documentation/computers/activating.html +msgid "" +"Before you can start working with the computer, it is necessary to activate " +"it." +msgstr "" +"Før du kan begynde at arbejde med computeren, er det nødvendigt at aktivere " +"den." + +#: templates/documentation/computers/activating.html +msgid "" +"This is done by clicking on the computer, checking the box \"Activated\" and " +"then clicking \"Save changes\". Afterward, the computer has been activated." +msgstr "" +"Det gør du ved at klikke på computeren og sætte et hak i fluebenet \"Aktiv\" " +"og klikke på \"Gem ændringer\". Derefter er computeren aktiveret." + +#: templates/documentation/computers/activating.html +msgid "" +"Except from the registration itself, the admin-site will always ignore all " +"requests from computers that have not been activated. This is partially a " +"practical measure (there is no reason to start updating a computer before " +"you know that it is ready) and partially a security measure." +msgstr "" +"Bortset fra selve tilmeldingen vil administrationssitet altid ignorere alle " +"henvendelser fra computere, der ikke er aktiveret. Dette er dels en praktisk " +"foranstaltning (der er ingen grund til at begynde at opdatere en computer, " +"før man ved, at den er parat), dels en sikkerhedsforanstaltning." + +#: templates/documentation/computers/activating.html +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +#: templates/system/pcgroups/confirm_delete.html +#: templates/system/pcgroups/site_groups.html +#: templates/system/pcs/confirm_delete.html +#: templates/system/scripts/confirm_delete.html +#: templates/system/site_two_factor_pc.html +#: templates/system/sites/confirm_delete.html +#: templates/system/wake_plan/confirm_delete.html +#: templates/system/wake_plan/wake_change_events/confirm_delete.html +#: templates/system/wake_plan/wake_plan.html +msgid "Note" +msgstr "Bemærk" + +#: templates/documentation/computers/activating.html +msgid "" +"One of the reasons that all computers must be activated manually is to " +"prevent foreign computers from connecting to your site without you or your " +"organization knowing. As such, you should only activate a computer if you " +"know that it is supposed to be there." +msgstr "" +"En af grundene til, at alle computere skal aktiveres manuelt, er at " +"forhindre fremmede computere i at \"koble sig på\" dit site uden dit eller " +"din organisations vidende. Du skal derfor kun aktivere en computer, hvis du " +"ved, at den skal være der." + +#: templates/documentation/computers/edit.html +msgid "Computers: Master data and groups" +msgstr "Computere: Stam-oplysninger og grupper" + +#: templates/documentation/computers/edit.html +msgid "" +"When you click on a computer, you will by default be shown the computer's " +"master data and any group affiliations. Here you can change the computer's " +"name and description and activate it if it has not been activated after the " +"installation. You can also add or remove group affiliations. You must click " +"the button \"Save changes\" before the changes take effect." +msgstr "" +"Når du klikker dig ind på en computer, vil du som standard få vist " +"computerens stamdata og gruppetilhørsforhold. Her kan du ændre computerens " +"navn og beskrivelse og aktivere den, hvis den ikke er blevet aktiveret efter " +"installation. Du kan også tilføje og fjerne grupper, som PC'en er " +"tilknyttet. Du skal klikke på knappen \"Gem ændringer\", før dine ændringer " +"træder i kræft." + +#: templates/documentation/computers/edit.html +msgid "" +"You add groups by clicking on \"Add computer to group\". If there are any " +"groups that the computer does not yet belong to, they will be shown in a " +"list. Click on the group(s) that you wish to add to select them and then " +"click on the check mark beneath the list to add the computer to the " +"group(s). You remove a group by clicking on the X to the right of the " +"group's name in the list of group affiliations. Remember that any changes " +"are not permanent until you've clicked on \"Save changes\" at the bottom of " +"the screen." +msgstr "" +"Du tilføjer grupper ved at klikke på \"Tilføj computer til gruppe\". Hvis " +"der findes grupper, som computeren endnu ikke er medlem, af vil de dukke op " +"i en liste. Klik på de grupper, som du ønsker at tilføje for at vælge dem og " +"klik derefter på fluebenet under listen for at tilføje computeren til " +"grupperne. Du fjerner en gruppe ved at klikke på det X, som vises til højre " +"for gruppens navn i listen over gruppetilhørsforhold. Husk at ændringerne " +"ikke bliver permanente, før du har klikket på \"Gem ændringer\" nederst i " +"skærmbilledet." + +#: templates/documentation/computers/edit.html +#: templates/documentation/groups/edit.html +msgid "Note that group membership can affect the computer's configuration." +msgstr "" +"Bemærk, at medlemskab af grupper kan have indflydelse på computerens " +"konfiguration." + +#: templates/documentation/computers/index.html +#: templates/site_with_navigation.html +msgid "Administrating computers" +msgstr "Administration af computere" + +#: templates/documentation/computers/index.html +msgid "" +"The administration page for a computer has three tabs with different " +"functions that are described helow. Click on a particular tab to open the " +"relevant function." +msgstr "" +"Administrationssiden for en Computer har tre harmonika-faneblade med " +"forskellige funktioner, som er beskrevet herunder. Klik på det enkelte " +"faneblad for at åbne den relevante funktion." + +#: templates/documentation/computers/index.html +msgid "" +"You can find documentation for the different parts by following these links:" +msgstr "" +"Du kan finde dokumentation for de forskellige dele ved at følge følgende " +"links:" + +#: templates/documentation/computers/index.html +#: templates/documentation/groups/index.html +msgid "Configurations are described on the page" +msgstr "Konfigurationer kan du læse nærmere om på siden" + +#: templates/documentation/computers/jobs.html +msgid "Job history for a computer" +msgstr "Jobhistorik for computer" + +#: templates/documentation/computers/jobs.html +msgid "" +"Here you can see the history of jobs associated with the computer. If you " +"click on the info icon to the right on the individual job, it will be " +"possible to see the log output from the job as well as rerun the job if it " +"has finished (mainly relevant if it failed)." +msgstr "" +"Her kan du se en historik over jobs tilknyttet computeren. Hvis du klikker " +"på info-ikonet til højre på det enkelte job får du mulighed for at se log-" +"output for jobbet samt for at køre jobbet igen, hvis det er afsluttet " +"(primært relevant hvis det fejlede)." + +#: templates/documentation/configuration/index.html +msgid "" +"Do not delete or edit configurations unless you know what you are doing!" +msgstr "" +"Slet eller rediger ikke konfigurationer, medmindre du er sikker på, hvad du " +"gør!" + +#: templates/documentation/configuration/index.html +msgid "" +"Configurations are functionality aimed primarily at technical " +"troubleshooting, system administrators and script developers and thus most " +"likely not relevant for most people." +msgstr "" +"Konfigurationer er funktionalitet henvendt primært til teknisk fejlfinding, " +"systemadministratorer og scriptudviklere, og derfor formentlig ikke relevant " +"for de fleste." + +#: templates/documentation/configuration/index.html +msgid "" +"Configurations are used to exchange information between the admin-site and " +"the registered computers in both directions." +msgstr "" +"Konfigurationer bruges til at udveksle information mellem admin-sitet og de " +"tilknyttede computere, i begge retninger." + +#: templates/documentation/configuration/index.html +msgid "" +"In other words, it is possible to use the admin-site to specify a value that " +"one or more computers will then receive and, similarly, a computer also " +"sends values to the admin-site." +msgstr "" +"Dvs. det er både muligt fra adminsitet at specificere en værdi som en eller " +"flere computere så vil modtage, og ligeledes sender en computer værdier til " +"adminsitet." + +#: templates/documentation/configuration/index.html +msgid "General examples of possible uses" +msgstr "Generelle eksempler på anvendelsesmuligheder" + +#: templates/documentation/configuration/index.html +msgid "" +"Among other things, the computer sends information about its hostname, its " +"IP addresses, the current kernel version and the last time it performed " +"automatic updates." +msgstr "" +"Computeren sender bl.a. information om dens hostname, dens IP-addresser, den " +"nuværende kernel-version og det sidste tidspunkt, hvor den foretog " +"automatiske opdateringer." + +#: templates/documentation/configuration/index.html +msgid "This information can sometimes be relevant for system administrators." +msgstr "Det kan i nogle tilfælde være relevant for systemadministratorer." + +#: templates/documentation/configuration/index.html +msgid "" +"The computer also sends information about whether it is running BorgerPC or " +"BorgerPC Kiosk along with the specific version." +msgstr "" +"Computeren sender ligeledes information om den kører BorgerPC eller BorgerPC " +"Kiosk, samt de specifikke versioner heraf." + +#: templates/documentation/configuration/index.html +msgid "This information can sometimes be relevant during troubleshooting." +msgstr "Det kan i nogle tilfælde være relevant at vide ift. fejlfinding." + +#: templates/documentation/configuration/index.html +msgid "" +"As part of the development of a script, one might wish to set the " +"configuration for the script via the admin-site, which allows the " +"configuration to be updated without rerunning the script, and also allows " +"the configuration to vary between groups and computers." +msgstr "" +"Man ønsker ifm. udviklingen af et script at sende konfiguration dertil via " +"adminsitet, som så kan opdateres uden genkørsel af scripts, eller som kan " +"variere ml. grupper eller computere." + +#: templates/documentation/configuration/index.html +msgid "This can sometimes be relevant to know for script developers." +msgstr "Det kan i nogle tilfælde være relevant at vide for scriptudviklere." + +#: templates/documentation/configuration/index.html +msgid "" +"The majority of configurations are controlled by the admin-site rather than " +"the individual computer. This means that if you change a value on an " +"individual computer, it will typically be changed back to the value listed " +"on the admin-site during the next check-in." +msgstr "" +"Langt de fleste konfigurationer styres af adminsitet fremfor på den enkelte " +"computer. Dvs. hvis du ændrer værdien på den enkelte computer, vil den " +"oftest blive ændret tilbage til hvad adminsitet siger ved næste tjek-ind." + +#: templates/documentation/configuration/index.html +msgid "Technical information for system administrators" +msgstr "Teknisk information til systemadministratorer" + +#: templates/documentation/configuration/index.html +msgid "Handling configurations" +msgstr "Håndtering af konfigurationer" + +#: templates/documentation/configuration/index.html +msgid "" +"Click the button \"Add configuration\" to add a new configuration key/value." +msgstr "" +"Klik på knappen \"Tilføj konfiguration\" for at tilføje en ny " +"konfigurationsnøgle/værdi." + +#: templates/documentation/configuration/index.html +#: templates/documentation/groups/scripts.html +#: templates/system/configs/item.html +#: templates/system/pcgroups/policy_list/item.html +#: templates/system/scripts/update.html +msgid "Edit" +msgstr "Redigér" + +#: templates/documentation/configuration/index.html +#: templates/system/configs/item.html +#: templates/system/event_rules/shared_navigation.html +#: templates/system/scripts/confirm_delete.html +#: templates/system/scripts/form.html templates/system/scripts/templates.html +#: templates/system/site_settings/api_keys/partials/list.html +msgid "Delete" +msgstr "Slet" + +#: templates/documentation/configuration/index.html +#, python-format +msgid "" +"In order to edit or delete a value, you must click on %(edit)s or %(delete)s " +"to the right of the individual key." +msgstr "" +"For at rette eller slette en værdi, skal du klikke på %(edit)s eller " +"%(delete)s ud for den enkelte nøgle." + +#: templates/documentation/configuration/index.html +msgid "Configurations at different levels" +msgstr "Konfigurationer på forskellige niveauer" + +#: templates/documentation/configuration/index.html +msgid "Configurations exist at three levels" +msgstr "Konfigurationer findes på tre niveauer" + +#: templates/documentation/configuration/index.html +msgid "Site configurations" +msgstr "Site-konfigurationer" + +#: templates/documentation/configuration/index.html +msgid "" +"These configuration parameters are applied to all computers that belong to " +"the chosen site." +msgstr "" +"Disse konfigurationsparametre gælder for alle computere, der er tilknyttet " +"det valgte site." + +#: templates/documentation/configuration/index.html +msgid "" +"The site configurations can be overwritten via adjusted configuration keys/" +"values on groups and individual computers." +msgstr "" +"Site-konfigurationerne kan overstyres via tilpassede konfigurationsnøgler/" +"værdier på grupper og på de enkelte computere." + +#: templates/documentation/configuration/index.html +msgid "Group configurations" +msgstr "Gruppe-konfigurationer" + +#: templates/documentation/configuration/index.html +msgid "unless" +msgstr "medmindre" + +#: templates/documentation/configuration/index.html +#, python-format +msgid "" +"Changes to the configurations for a group will affect all computers that " +"belong to that group %(unless)s that particular configuration key has been " +"specially adjusted for the individual computer." +msgstr "" +"Ændringer for konfigurationer på en gruppe vil påvirke alle computere der er " +"medlem af gruppen, %(unless)s den pågældende konfigurationsnøgle er blevet " +"special-tilpasset på den enkelte computer." + +#: templates/documentation/configuration/index.html +msgid "Computer configurations" +msgstr "Computer-konfigurationer" + +#: templates/documentation/configuration/index.html +msgid "" +"Configurations set at the computer level will always take precedence over " +"site configurations or configurations for groups that the computer belongs " +"to." +msgstr "" +"Konfigurationer angivet på en computer vil altid tage præcedens over site-" +"konfigurationer eller konfigurationer på grupper som computeren er medlem af." + +#: templates/documentation/configuration/index.html +msgid "The meaning of the built-in configurations" +msgstr "Betydningen af de indbyggede konfigurationer" + +#: templates/documentation/configuration/index.html +msgid "" +"All values without _ in front are controlled by the admin-site while values " +"with _ are controlled by the computer / the client." +msgstr "" +"Alle værdier uden _ foran bestemmes af adminsitet, mens værdier med _ " +"bestemmes af computeren / klienten." + +#: templates/documentation/configuration/index.html +#, python-format +msgid "" +"This means that if one were to change e.g. %(version)s on the computer, then " +"the value would be overwritten during the next check-in with the admin-site." +msgstr "" +"Det vil i praksis sige, at hvis man eks. ændrer %(version)s på computeren, " +"så vil den blive overskrevet efter næste tjek-ind med adminsitet." + +#: templates/documentation/configuration/index.html +#: templates/system/configs/templates.html templates/system/scripts/form.html +#: templates/system/site_status.html +#: templates/system/wake_plan/wake_change_events/wake_change_event.html +msgid "Name" +msgstr "Navn" + +#: templates/documentation/configuration/index.html +msgid "Meaning" +msgstr "Betydning" + +#: templates/documentation/configuration/index.html +#: templates/system/site_settings/api_keys/api_keys.html +msgid "Comment" +msgstr "Kommentar" + +#: templates/documentation/configuration/index.html +msgid "The version of the OS2borgerPC-client" +msgstr "Versionen på OS2borgerPC-klienten" + +#: templates/documentation/configuration/index.html +msgid "" +"The client is the particular software on the computer that communicates with " +"the admin-site" +msgstr "" +"Klienten er den software der kører på computeren, som er i kontakt med " +"adminsitet" + +#: templates/documentation/configuration/index.html +msgid "The name of the operating system" +msgstr "Navnet på operativsystemet" + +#: templates/documentation/configuration/index.html +msgid "The version of the operating system" +msgstr "Versionen af operativsystemet" + +#: templates/documentation/configuration/index.html +msgid "The IP addresses of the computer" +msgstr "Computerens IP-addresser" + +#: templates/documentation/configuration/index.html +msgid "The list is not sorted" +msgstr "Listen er ikke sorteret" + +#: templates/documentation/configuration/index.html +msgid "The version of the kernel" +msgstr "Versionen af computerens kernel" + +#: templates/documentation/configuration/index.html +msgid "The time when the computer last performed automatic updates" +msgstr "Det tidspunkt hvor computeren sidst foretog automatiske opdateringer" + +#: templates/documentation/configuration/index.html +msgid "If the value is empty, the computer failed to determine the time" +msgstr "Hvis værdien er tom, kunne computeren ikke afgøre tidspunktet" + +#: templates/documentation/configuration/index.html +msgid "The address of the server where the computer checks in" +msgstr "Adressen til serveren der tjekkes ind hos" + +#: templates/documentation/configuration/index.html +msgid "The computer's hostname" +msgstr "Computerens hostname" + +#: templates/documentation/configuration/index.html +msgid "Is currently only set during the registration" +msgstr "Sættes pt. kun ifm. registreringen" + +#: templates/documentation/configuration/index.html +msgid "How long the client waits for a job to finish in seconds" +msgstr "" +"Hvor længe klienten venter på færdiggørelsen af jobs, angivet i sekunder" + +#: templates/documentation/configuration/index.html +msgid "" +"If job_timeout is exceeded, the process is stopped. This is useful if " +"something is stuck, such as a process futilely waiting for input" +msgstr "" +"Hvis job_timeout løber ud, stoppes processen. Det er brugbart, hvis noget i " +"systemet hænger, såsom at pakkesystemet eller et script forgæves forsøger at " +"få input fra brugeren" + +#: templates/documentation/configuration/index.html +msgid "Indicates whether the computer is an OS2borgerPC or a OS2borgerPC Kiosk" +msgstr "" +"Identificerer om computeren er en OS2borgerPC eller en OS2borgerPC Kiosk" + +#: templates/documentation/configuration/index.html +msgid "The version of the OS2borgerPC-image that was installed" +msgstr "Versionen på det OS2borgerPC-image, som blev installeret" + +#: templates/documentation/configuration/index.html +msgid "Unless the computer is reinstalled, this number does not change" +msgstr "Medmindre computeren geninstalleres, vil dette tal ikke ændre sig" + +#: templates/documentation/configuration/index.html +msgid "The site that the computer belongs to" +msgstr "Hvilket site computeren er tilknyttet" + +#: templates/documentation/configuration/index.html +msgid "Technical information for script developers" +msgstr "Teknisk information til scriptudviklere" + +#: templates/documentation/configuration/index.html +msgid "How information is exchanged" +msgstr "Sådan udveksles information" + +#: templates/documentation/configuration/index.html +#: templates/system/jobs/site_jobs.html +#: templates/system/security_events/site_security_events.html +#: templates/system/wake_plan/wake_plan.html +msgid "Computer" +msgstr "Computer" + +#: templates/documentation/configuration/index.html +msgid "" +"You create a configuration value for a Site, a Group or a computer and it " +"will automatically be transferred to the relevant computer(s) during their " +"next check-in with the admin-site." +msgstr "" +"Du opretter på et Site, en Gruppe eller en Computer en konfigurationsværdi, " +"og den vil automatisk blive overført til de relevante computer(e), næste " +"gang de tjekker ind på admin-sitet." + +#: templates/documentation/configuration/index.html +msgid "From a terminal on the computer or a script, you can use these programs" +msgstr "" +"Fra en terminal på computeren, eller fra et script, kan du benytte disse " +"programmer" + +#: templates/documentation/configuration/index.html +msgid "Function" +msgstr "Funktionalitet" + +#: templates/documentation/configuration/index.html +msgid "Usage example" +msgstr "Brugseksempel" + +#: templates/documentation/configuration/index.html +msgid "Retrieves the value of a configuration value" +msgstr "Henter værdien af en konfigurationværdi" + +#: templates/documentation/configuration/index.html +msgid "Retrieves the UID of the site where the computer is registered." +msgstr "Får fat i UID'et på det site, som computeren er tilknyttet." + +#: templates/documentation/configuration/index.html +msgid "Sets the value of a configuration value" +msgstr "Sætter værdien af en konfigurationværdi" + +#: templates/documentation/configuration/index.html +msgid "citizen yes" +msgstr "borger ja" + +#: templates/documentation/configuration/index.html +msgid "" +"Creates a new configuration value with the name citizen and the value 'yes'" +msgstr "Opretter en ny konfiguration kaldet borger, og sætter den til 'ja'" + +#: templates/documentation/configuration/index.html +msgid "In practice, the above programs interact with the file" +msgstr "Ovenstående programmer interagerer i praksis med filen" + +#: templates/documentation/groups/__submenu__.html +#: templates/documentation/groups/scripts.html +#: templates/system/pcgroups/confirm_delete.html +#: templates/system/pcgroups/site_groups.html +#: templates/system/scripts/confirm_delete.html +msgid "Associated Scripts" +msgstr "Tilknyttede Scripts" + +#: templates/documentation/groups/edit.html +msgid "Editing groups: Master data, computers and supervisors" +msgstr "Gruppe-redigering: Stam-oplysninger, computere og ansvarspersoner" + +#: templates/documentation/groups/edit.html +msgid "" +"When you click on a group, you will by default be shown the group's master " +"data, any computers that belong to the group and any supervisors chosen for " +"the group. Here you can change the group's name and description as well as " +"add or remove computers or supervisors from the group. The changes will not " +"become permanent until you've clicked on the button \"Save changes\" at the " +"bottom of the screen." +msgstr "" +"Som standard når du klikker dig ind på en gruppe vil du få vist gruppens " +"stamdata, hvilke computere der er med i gruppen, og hvilke ansvarspersoner " +"der er valgt for gruppen. Her kan du ændre gruppens navn og beskrivelse, " +"samt tilføje eller fjerne computere og ansvarspersoner fra gruppen. " +"Ændringer foretaget på siden træder ikke i kræft før du klikker på \"Gem " +"ændringer\"-knappen i bunden af skærmbilledet." + +#: templates/documentation/groups/edit.html +msgid "Add/remove computers" +msgstr "Tilføj/fjern computere" + +#: templates/documentation/groups/edit.html +msgid "" +"A list of computers that belong to the group is shown on the right side of " +"the screen. You can edit the members of the group as described below." +msgstr "" +"Til højre i skærmbilledet vises en liste over computere, der er med i " +"gruppen. Du kan redigere medlemmerne af gruppen som beskrevet herunder." + +#: templates/documentation/groups/edit.html +msgid "Add a computer" +msgstr "Tilføj computer" + +#: templates/documentation/groups/edit.html +msgid "" +"You add computers by clicking on \"Add a computer to the group\". If there " +"are any computers that do not yet belong to the group, they will be shown in " +"a list. Click on the computer(s) that you wish to add to select them and " +"then click on the check mark beneath the list to add the computer(s) to the " +"group." +msgstr "" +"Du tilføjer computere ved at klikke på \"Tilføj en computer til gruppen\". " +"Hvis der findes computere, som endnu ikke er medlem af gruppen vil de blive " +"vist i en liste. Klik på de computere, som du ønsker at tilføje for at vælge " +"dem og klik derefter på fluebenet under listen for at tilføje computerne til " +"gruppen." + +#: templates/documentation/groups/edit.html +msgid "Remove a computer" +msgstr "Fjern computer" + +#: templates/documentation/groups/edit.html +msgid "" +"You remove a computer by clicking on the X to the right of the computer's " +"name in the list of computers that belong to the group." +msgstr "" +"For at fjerne en computer skal du klikke på X'et til højre for computerens " +"navn i listen over computere, der er med i gruppen." + +#: templates/documentation/groups/edit.html +msgid "" +"Remember that changes to the list of computers do not become permanent until " +"you've clicked on \"Save changes\" at the bottom of the screen." +msgstr "" +"Husk at ændringer til listen over computere ikke bliver permanente før du " +"har klikket på \"Gem ændringer\" nederst i skærmbilledet." + +#: templates/documentation/groups/edit.html +msgid "Add/remove supervisors" +msgstr "Tilføj/fjern ansvarspersoner" + +#: templates/documentation/groups/edit.html +msgid "" +"A list of supervisors for the group is shown on the right side of the " +"screen. You can edit the supervisors for the group as described below." +msgstr "" +"Til højre i skærmbilledet vises en liste over ansvarspersoner for gruppen. " +"Du kan redigere gruppens ansvarspersoner som beskrevet herunder." + +#: templates/documentation/groups/edit.html +msgid "Add a supervisor" +msgstr "Tilføj en ansvarsperson" + +#: templates/documentation/groups/edit.html +msgid "" +"You add supervisors by clicking on \"Add a supervisor to the group\". If " +"there are any users on your site that are not yet supervisors for the group, " +"they will be shown in a list. Click on the user(s) that you wish to make " +"supervisors to select them and then click on the check mark beneath the list " +"to make them supervisors for the group." +msgstr "" +"Du tilføjer ansvarspersoner ved at klikke på \"Tilføj en ansvarsperson for " +"gruppen\". Hvis der findes brugere på dit site, som endnu ikke er " +"ansvarspersoner for gruppen vil de blive vist i en liste. Klik på de brugere " +"som du ønsker at gøre til ansvarspersoner for at vælge dem og klik derefter " +"på fluebenet under listen for at gøre dem til ansvarspersoner for gruppen." + +#: templates/documentation/groups/edit.html +msgid "Remove a supervisor" +msgstr "Fjern en ansvarsperson" + +#: templates/documentation/groups/edit.html +msgid "" +"You remove a supervisor by clicking on the X to the right of the " +"supervisor's username in the list of supervisors for the group." +msgstr "" +"For at fjerne en ansvarsperson skal du klikke på X'et til højre for " +"ansvarspersonens brugernavn i listen over ansvarspersoner for gruppen." + +#: templates/documentation/groups/edit.html +msgid "" +"Remember that changes to the list of supervisors do not become permanent " +"until you've clicked on \"Save changes\" at the bottom of the screen." +msgstr "" +"Husk at ændringer til listen over ansvarspersoner ikke bliver permanente før " +"du har klikket på \"Gem ændringer\" nederst i skærmbilledet." + +#: templates/documentation/groups/edit.html +msgid "" +"If a group has one or more supervisors, those supervisors will receive any " +"email warnings or notifications related to the computers in the group " +"instead of the recipients set on the relevant security rules or offline " +"rules." +msgstr "" +"Hvis en Gruppe har en eller flere ansvarspersoner, så vil disse " +"ansvarspersoner modtage eventuelle email-advarsler eller notifikationer " +"relateret til computerne i gruppen i stedet for de modtagere, som er valgt " +"på de relevante sikkerhedsregler eller offline-regler." + +#: templates/documentation/groups/edit.html +msgid "Notice for users of On/Off schedules" +msgstr "Bemærkning til brugere af Tænd/Sluk tidsplaner" + +#: templates/documentation/groups/edit.html +msgid "" +"A computer can only be associated with a single schedule at a time. If the " +"group is associated with a schedule and you add one or more computers that " +"are associated with a different schedule via a different group, the chosen " +"computers will be rejected as part of the update of the group when you click " +"\"Save changes\". Valid computers will still be added. If one or more " +"computers are rejected, the webpage will inform you of this as well as the " +"reason." +msgstr "" +"En computer kan kun være knyttet til en tidsplan ad gangen. Hvis gruppen er " +"knyttet til en tidsplan, og du tilføjer en eller flere computere, som er " +"knyttet til en anden tidsplan via en anden gruppe, vil de valgte computere " +"blive afvist i forbindelse med opdateringen af gruppen, når du klikker på " +"\"Gem ændringer.\" Gyldige computere vil stadig blive tilføjet. Hvis en " +"eller flere computere afvises, vil siden oplyse om dette samt begrundelsen." + +#: templates/documentation/groups/index.html +msgid "" +"A OS2borgerPC-group is a collection of computers that share configuration " +"keys. A group can also be used to easily run a script on multiple computers." +msgstr "" +"En OS2borgerPC-gruppe er en samling af computere der deler " +"konfigurationsnøgler. En gruppe kan også bruges til at nemt at køre et " +"script på en samling af computere." + +#: templates/documentation/groups/index.html +msgid "" +"When you click on Groups in the left-hand menu, a list of groups for the " +"site you are on will be shown to the right of the left-hand menu. You can " +"click on the name of a particular group in order to edit that group." +msgstr "" +"Når man klikker på Grupper i venstremenuen vil man til højre for " +"venstremenuen få vist en liste af grupper for det site man er under. Man kan " +"klikke på navnet for den enkelte gruppe for at redigere gruppen." + +#: templates/documentation/groups/index.html +msgid "" +"The interface for editing the chosen group will be shown on the right side " +"of the screen. If no groups have been created for the site you are on, " +"information about how to create a group will be shown instead." +msgstr "" +"Til højre vises redigeringsinterfacet for den valgte gruppe. Hvis ikke der " +"er oprettet nogen grupper for det site man er under vises information " +"omkring hvordan man opretter en gruppe i stedet." + +#: templates/documentation/groups/index.html +msgid "When you click on a group, you will be able to edit the following" +msgstr "" +"Når man klikker ind på en gruppe får man mulighed for at redigere følgende" + +#: templates/documentation/groups/index.html +msgid "" +"If you wish to create a new group, you must click on \"Add new group\" above " +"the list of groups. This will open a modal where you must enter a name and " +"description for the group. When you click on \"Create group\", you will be " +"redirected to the editing interface for the newly created group where it " +"will be possible to add computers to the group." +msgstr "" +"Hvis man ønsker at oprette en ny gruppe skal man klikke på \"Tilføj ny gruppe" +"\" oven over listen med grupper. Dette vil bringe en dialog op hvor man skal " +"udfylde navn og beskrivelse for gruppen. Når man klikker på \"Opret gruppe\" " +"vil man blive viderestillet til redigeringssiden for den nyoprettede gruppe, " +"hvorfra det vil være muligt at tilføje computere til gruppen." + +#: templates/documentation/groups/scripts.html +#: templates/system/pcgroups/policy_list/list.html +#: templates/system/pcgroups/policy_list/templates.html +msgid "Add script" +msgstr "Tilføj script" + +#: templates/documentation/groups/scripts.html +#, python-format +msgid "" +"You have the option of assigning each group a number of associated scripts. " +"In order to change the associated scripts for a group, you must click on the " +"group and then click the tab %(asc)s. Select the input field %(addsc)s and " +"search for the script that you wish to assign to the group. Next, click on " +"the script and it will be added as an Associated Script." +msgstr "" +"Du har mulighed for at tildele hver gruppe en række Tilknyttede Scripts. For " +"at ændre de Tilknyttede Scripts for en gruppe skal du klikke dig ind på " +"gruppen og trykke på fanebladet %(asc)s. Tryk på input-feltet %(addsc)s og " +"søg efter det script, som du gerne vil tilknytte til gruppen. Klik derefter " +"på Scriptet og det vil blive tilføjet som Tilknyttet Script." + +#: templates/documentation/groups/scripts.html +msgid "" +"When a computer is added to a group, all Associated Scripts are " +"automatically run on that computer. When you add a new Associated Script, it " +"will automatically be run on all computers in the group. Editing the " +"parameters of an associated script will only cause it to be rerun on the " +"computers in the group if the relevant setting under Site settings has been " +"checked. Removing an Associated Script from a group will NOT remove the " +"effect of the script from the computers in the group." +msgstr "" +"Når en computer tilføjes til en gruppe bliver alle Tilknyttede Scripts " +"automatisk kørt på den computer. Når man tilknytter et nyt Script til en " +"gruppe, køres dette automatisk på gruppens computere. Redigering af " +"parametrene for et Tilknyttet Script medfører kun at scriptet genkøres på " +"alle computere i gruppen, hvis den relevante indstilling under Site-" +"indstillinger er blevet slået til. Hvis man fjerner et tilknyttet script fra " +"en gruppe, medfører det IKKE at scriptets effekt fjernes fra computerne i " +"gruppen." + +#: templates/documentation/groups/scripts.html +msgid "" +"Associated Scripts have a position that determines the order in which they " +"are run and they may have a number of input parameters that they are run " +"with." +msgstr "" +"Tilknyttede Scripts har en position, der angiver i hvilken rækkefølge, de " +"bliver kørt, og de kan have nogle inputparametre, som de køres med." + +#: templates/documentation/groups/scripts.html +msgid "A computer can be added to multiple groups." +msgstr "En computer kan sagtens tilmeldes flere grupper." + +#: templates/documentation/groups/scripts.html +msgid "" +"Example: There is one computer in the library and another in citizen service " +"that should have different homepages, but both be connected to the same " +"scanner. In this case, one computer can be added to the library group and " +"the other to the citizen service group while both are added to the group for " +"scanner computers." +msgstr "" +"Eksempel: Der står en computer på biblioteket og en anden i borgerservice, " +"som skal have forskellige startsider, men som begge har samme scanner sat " +"til. I så fald kan den ene computer være tilmeldt en gruppe for biblioteket " +"og den anden en gruppe for borgerservice, mens begge er tilmeldt en gruppe " +"for scanner-computere." + +#: templates/documentation/groups/scripts.html +msgid "" +"We recommend using Associated Scripts where possible as they make it simpler " +"to set up new computers in a department. All you need to do is to add the " +"new computers to the group, and then the relevant scripts will automatically " +"be run on them with the correct input parameters." +msgstr "" +"Vi anbefaler at bruge Tilknyttede Scripts hvor det er muligt, da det kan " +"gøre det lettere at sætte nye computere op på en afdeling. Alt man så skal " +"gøre er at tilmelde de nye computere til gruppen, og så køres de relevante " +"Scripts automatisk derpå med rette inputparametre." + +#: templates/documentation/groups/scripts.html +msgid "Final remarks" +msgstr "Bemærkninger" + +#: templates/documentation/groups/scripts.html +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +#: templates/system/pcgroups/site_groups.html templates/system/pcs/form.html +#: templates/system/scripts/update.html +#: templates/system/site_settings/site_settings.html +#: templates/system/users/link.html templates/system/users/update.html +#: templates/system/wake_plan/wake_change_events/wake_change_event.html +#: templates/system/wake_plan/wake_plan.html +msgid "Save changes" +msgstr "Gem ændringer" + +#: templates/documentation/groups/scripts.html +msgid "must" +msgstr "skal" + +#: templates/documentation/groups/scripts.html +#, python-format +msgid "" +"When a script is added to or removed from the list, the change won't be " +"saved until you've clicked %(save)s." +msgstr "" +"Når der tilføjes eller slettes et Script i listen, vil det først blive gemt, " +"efter tryk på %(save)s." + +#: templates/documentation/groups/scripts.html +#, python-format +msgid "" +"If the added script requires input parameters, these parameters are set by " +"clicking %(edit)s and this %(must)s be done before the changes can be saved. " +"I.e. a Script that requires input parameters cannot be assigned with empty " +"input parameters." +msgstr "" +"Hvis Scriptet du tilføjer benytter inputparametre, sættes værdierne for " +"disse ved at trykke på %(edit)s, og dette %(must)s gøres før ændringerne kan " +"gemmes. Dvs. et Script der benytter inputparametre kan ikke tilknyttes, med " +"tomme inputparametre." + +#: templates/documentation/groups/scripts.html +#, python-format +msgid "" +"You can change the input parameters for a script by clicking %(edit)s, " +"making the desired changes and then saving the changes. However, this will " +"only cause the script to be rerun on the computers in the group if the " +"relevant setting under Site settings has been checked." +msgstr "" +"Du kan ændre inputparametrene for et script ved at klikke på %(edit)s, " +"foretage de ønskede ændringer og så gemme ændringerne. Dette vil dog kun " +"medføre at scriptet genkøres på computerne i gruppen, hvis den relevante " +"indstilling under Site-indstillinger er slået til." + +#: templates/documentation/index.html +msgid "OS2borgerPC documentation" +msgstr "OS2borgerPC dokumentation" + +#: templates/documentation/index.html templates/site_with_navigation.html +#: templates/system/site_settings/api_keys/api_keys.html +msgid "Documentation" +msgstr "Dokumentation" + +#: templates/documentation/index.html +msgid "Return to admin" +msgstr "Tilbage til admin" + +#: templates/documentation/jobs/index.html +msgid "Job overview" +msgstr "Job-oversigt" + +#: templates/documentation/jobs/index.html +msgid "" +"The job overview provides an overview of the execution of jobs on " +"OS2borgerPC computers for the chosen site. On the left, one can choose " +"various filters that make the list more manageable, and on the right is " +"shown a list of jobs that match the chosen filters." +msgstr "" +"Job-oversigten giver et overblik over afviklingen af jobs på OS2borgerPC-" +"computere for det valgte site. Til venstre kan man vælge diverse filtre der " +"gør listen mere overskuelig og til højre vises en liste over jobs der " +"matcher de valgte filtre." + +#: templates/documentation/jobs/index.html templates/system/jobs/site_jobs.html +#: templates/system/security_events/site_security_events.html +msgid "Filters" +msgstr "Filtre" + +#: templates/documentation/jobs/index.html +msgid "" +"By clicking the checkboxes next to the different statuses, you can filter " +"the shown jobs based on their status. By default, all statuses except " +"\"restarted\" are checked." +msgstr "" +"Ved at klikke på afkrydsningsfelterne ud for de forskellige statuser kan du " +"filtrere de viste jobs ud fra deres status. Som standard er alle statuser på " +"nær \"Genstartet\" angivet." + +#: templates/documentation/jobs/index.html +msgid "" +"Below the checkboxes you can choose filters based on batches, computers and " +"groups. In order to use these filters, you must click on the desired " +"category and then select an element in the list that is displayed. The " +"chosen element will be highlighted in orange. It is only possible to select " +"one element per category. You can reset the filters to the default filters " +"by clicking \"Reset filters\" at the top of the list of filters." +msgstr "" +"Under afkrydsningsfelterne kan du vælge filtre ud fra batches, computere og " +"grupper. For at filtrere på disse skal du klikke på den kategori du vil " +"filtrere og efterfølgende klikke på et element i den liste, der bliver " +"foldet ud. Det valgte element vil blive markeret med orange. Det er kun " +"muligt at vælge et element i hver kategori. Du kan nulstille filtrene til " +"standardfiltrene ved at klikke på \"Nulstil filtre\" i toppen af listen med " +"filtre." + +#: templates/documentation/jobs/index.html +#: templates/documentation/scripts/running.html +msgid "The job list" +msgstr "Joblisten" + +#: templates/documentation/jobs/index.html +msgid "" +"The job list shows the script name, batch name, user who started the job, " +"creation time, starting time, stopping time, status and computer name for " +"every job that matches the chosen filters. The sorting can be changed by " +"clicking the titles above the table." +msgstr "" +"Joblisten viser Script-navn, batchnavn, brugeren som startede jobbet, " +"oprettelsestidspunkt, starttidspunkt, sluttidspunkt, status og computernavn " +"for hvert job der matcher de valgte filtrre. Man kan ændre sorteringen ved " +"at klikke på overskrifterne over tabellen." + +#: templates/documentation/jobs/index.html +msgid "" +"If you click on the small icon on the right of an entry in the list, you " +"will be shown the log output from that job. If the job has not yet been " +"executed, the log output will only contain the chosen input parameters. If " +"the job has finished, there will also be a button that you can press in " +"order to restart the job (mainly relevant if the job failed)." +msgstr "" +"Hvis man klikker på det lille ikon til højre på et job i listen, får man " +"vist log-outputtet for det job. Hvis jobbet endnu ikke er blevet afviklet, " +"indeholder log-outputtet kun de valgte inputparametre. Hvis jobbet er " +"afsluttet, vil der også være en knap, som man kan trykke på for at genstarte " +"jobbet (dette er primært relevant hvis jobbet fejlede)." + +#: templates/documentation/jobs/index.html +msgid "Jobs run by Magenta" +msgstr "Jobs kørt af Magenta" + +#: templates/documentation/jobs/index.html +msgid "" +"If the user for a job is listed as \"Magenta\", it means that the job was " +"started by the OS2borgerPC team at Magenta." +msgstr "" +"Hvis brugeren for et job er angivet som \"Magenta\", betyder det at jobbet " +"blev startet af OS2borgerPC-teamet hos Magenta." + +#: templates/documentation/jobs/index.html +msgid "This is used for e.g." +msgstr "Det bruges eksempelvis til" + +#: templates/documentation/jobs/index.html +msgid "Maintenance" +msgstr "Vedligeholdelse" + +#: templates/documentation/jobs/index.html +msgid "Updates" +msgstr "Opdateringer" + +#: templates/documentation/jobs/index.html +msgid "Troubleshooting and error correction" +msgstr "Fejlfinding og -retning" + +#: templates/documentation/jobs/index.html +msgid "Patching security issues (CVE's identified in Ubuntu)" +msgstr "Lapning af sikkerhedshuller (CVE'er identificeret i Ubuntu)" + +#: templates/documentation/notifications/index.html +msgid "" +"Email notifications regarding computers that have been offline for longer " +"than a selected period of time are generated by offline rules. If no offline " +"rules have been defined, no notifications will be sent." +msgstr "" +"Email-notifikationer om computere, som har været offline længere end en " +"valgt tidsperiode, bliver genereret af offline-regler. Hvis der ikke er " +"blevet defineret nogen offline-regler, vil der ikke blive sendt " +"notifikationer." + +#: templates/documentation/notifications/index.html +msgid "" +"When an offline rule detects that a PC has been offline for too long, the " +"system will also generate an event for that PC." +msgstr "" +"Når en offline-regel detekterer, at en PC har været offline for længe, vil " +"systemet også generere en hændelse relateret til den PC." + +#: templates/documentation/notifications/index.html +msgid "" +"The system will only check the defined offline rules every ten minutes. It " +"is thus possible for there to be a delay of up to ten minutes between a PC " +"exceeding the allowed offline period and a notification being sent. This was " +"necessary to limit the load on the admin-site." +msgstr "" +"Systemet tjekker kun de definerede offline-regler hvert tiende minut. Det er " +"således muligt at der vil være en forsinkelse på op til ti minutter mellem " +"at en PC overskrider den tilladte offline-periode og at en notifikation " +"bliver sendt. Dette var nødvendigt for at begrænse belastningen på admin-" +"sitet." + +#: templates/documentation/notifications/index.html +msgid "Creating or editing offline rules" +msgstr "Opret eller rediger offline-regler" + +#: templates/documentation/notifications/index.html +msgid "" +"The overview \"Monitoring Rules\" shows all the defined security rules and " +"offline rules that are monitored. You can edit an existing offline rule by " +"selecting it in the list. You can define a new offline rule by clicking on " +"\"Add new offline rule\" above the list. The interface for both operations " +"has the same form." +msgstr "" +"I oversigten \"Overvågningsregler\" vises alle definerede Sikkerhedsregler " +"og Offline-regler, som der holdes øje med. Du kan redigere en eksisterende " +"offline-regel ved at vælge den i listen. Du kan oprette en ny offline-regel " +"ved at klikke på \"Tilføj ny offline-regel\" oven over listen. Interfacet " +"for begge operationer har samme form." + +#: templates/documentation/notifications/index.html +msgid "An offline rule has the following parameters:" +msgstr "En offline-regel har følgende parametre:" + +#: templates/documentation/notifications/index.html +msgid "Name (mandatory): the name of the particular offline rule." +msgstr "Navn (påkrævet): Navnet på den pågældende offline-regel." + +#: templates/documentation/notifications/index.html +msgid "" +"Monitor period (mandatory): The period during which the rule is active. It " +"is recommended to choose this period such that you avoid receiving " +"notifications when computers are turned off for the night." +msgstr "" +"Overvågningsperiode (påkrævet): Den periode hvor reglen er aktiv. Det " +"anbefales at vælge denne periode således, at du undgår at modtage " +"notifikationer, når computerne bliver slukket om natten." + +#: templates/documentation/notifications/index.html +msgid "" +"Maximum offline period allowed, in minutes (mandatory): The maximum period " +"of time that a computer can be offline during the monitor period before " +"email notifications are sent. Cannot be less than 15 minutes." +msgstr "" +"Maksimal tilladt offline-periode, i minutter (påkrævet): Den maksimale " +"tidsperiode som en computer kan være offline under overvågningsperioden før " +"der sendes email-notifikationer. Kan ikke være under 15 minutter." + +#: templates/documentation/notifications/index.html +#: templates/documentation/security_scripts/securityproblems.html +msgid "Severity level (mandatory): Choose between Critical, High and Normal." +msgstr "Alvorlighedsgrad (påkrævet): Vælg mellem Kritisk, Høj og Normal." + +#: templates/documentation/notifications/index.html +msgid "Description (optional): A description of the particular offline rule." +msgstr "Beskrivelse (valgfri): En beskrivelse af den pågældende offline-regel." + +#: templates/documentation/notifications/index.html +msgid "" +"Monitored groups (optional): The groups define which computers the offline " +"rule applies to." +msgstr "" +"Overvågede grupper (valgfri): Grupperne definerer hvilke computere, den " +"aktuelle offline-regel er aktiv for." + +#: templates/documentation/notifications/index.html +msgid "" +"Recipient(s) of email warning (optional): The users that should receive " +"email notifications related to this offline rule. Note that if a monitored " +"PC belongs to one or more groups with supervisors, those supervisors will " +"receive any email notifications related to that PC instead of the recipients " +"set here." +msgstr "" +"Modtager(e) af email-advarsel (valgfri): Hvilke brugere der skal modtage " +"email-notifikationer relateret til denne offline-regel. Bemærk at hvis en " +"overvåget PC tilhører en eller flere grupper med ansvarspersoner, så vil " +"disse ansvarspersoner modtage eventuelle email-notifikationer relateret til " +"den PC i stedet for de modtagere, som er valgt her." + +#: templates/documentation/notifications/index.html +msgid "" +"Any changes made to an offline rule will not take effect until you have " +"clicked on \"Save changes\" at the bottom of the screen. Similarly, you must " +"click on \"Save changes\" to finish creating a new offline rule once you " +"have filled out the mandatory parameters. You can verify that the offline " +"rule has been created by checking if it appears in the list of monitored " +"rules." +msgstr "" +"Ændringer i en offline-regel vil ikke tage effekt, før du har klikket på " +"\"Gem ændringer\" i bunden af skærmbilledet. På lignende vis skal du klikke " +"på \"Gem ændringer\" for at færdiggøre oprettelsen af en ny offline-regel, " +"når du har udfyldt de påkrævede parametre. Du kan verificere, at offline-" +"reglen er blevet oprettet ved at tjekke om den står på listen over " +"overvågede regler." + +#: templates/documentation/om_os2borgerpc_admin.html +msgid "" +"OS2borgerPC enables you to remotely manage computers via the OS2borgerPC " +"administration interface. In the left-hand menu, you can find documentation " +"regarding the different parts of the system." +msgstr "" +"OS2borgerPC giver dig mulighed for at fjernadministre computere via " +"OS2borgerPC-administrationsinterfacet. I menuen til venstre kan du finde " +"dokumentation for de forskellige dele af systemet." + +#: templates/documentation/om_os2borgerpc_admin.html +msgid "OS2borgerPC was developed by" +msgstr "OS2borgerPC-Admin er udviklet af" + +#: templates/documentation/om_os2borgerpc_admin.html +msgid "in collaboration with the libraries in Aarhus and Silkeborg." +msgstr "i samarbejde med bibliotekerne i Aarhus og Silkeborg." + +#: templates/documentation/om_os2borgerpc_admin.html +#, python-format +msgid "" +"OS2borgerPC is 100%% Open Source and can be used and distributed in " +"accordance with the conditions in version 3 of the" +msgstr "" +"OS2borgerPC er 100%% open source og kan bruges og videregives i henhold til " +"betingelserne i version 3 af" + +#: templates/documentation/om_os2borgerpc_admin.html +msgid "This documention can be used and distributed in accordance with a" +msgstr "Denne dokumentation kan anvendes og videregives i henhold til en" + +#: templates/documentation/om_os2borgerpc_admin.html +msgid "" +"The source code for the newest accessible version of OS2borgerPC can always " +"be found on" +msgstr "" +"Kildekoden til den nyeste tilgængelige version af OS2borgerPC-Admin kan " +"altid findes på" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "Updating the Wi-Fi password on a OS2borgerPC Kiosk" +msgstr "Opdater kodeord på en OS2borgerPC Kiosk's Wi-Fi" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"We begin with a OS2borgerPC Kiosk, which has been started, where the browser " +"is shown and a keyboard has been connected." +msgstr "" +"Vi starter på en OS2borgerPC Kiosk som er startet op, hvor browseren vises, " +"og hvor der er sat et tastatur til." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "Here, you press" +msgstr "Herfra trykker du" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "You will then be shown a login prompt." +msgstr "Da vil du komme til en loginprompt." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"\"marcus-01-vm\", which is shown here, is the name of my OS2borgerPC Kiosk, " +"which will be different in your case." +msgstr "" +"\"marcus-01-vm\", der vises her, er navnet på min OS2borgerPC Kiosk, som vil " +"være anderledes for dig." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "Enter" +msgstr "Enter" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +#, python-format +msgid "" +"Write \"superuser\", press %(enter)s, write superuser's password and press " +"%(enter)s again." +msgstr "" +"Skriv \"superuser\", tryk %(enter)s, skriv superuser's kodeord og tryk " +"%(enter)s igen." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"Be aware that the entered password will not be shown in any way (e.g. stars " +"as characters)." +msgstr "" +"Vær opmærksom på at den indtastede kode ikke vil blive vist på nogen vis " +"(eks. stjerner som tegn)." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "You will then be shown a \"prompt\":" +msgstr "Da vil du komme til en \"prompt\":" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "At this prompt, you write:" +msgstr "På denne prompt skriver du:" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +#, python-format +msgid "press %(enter)s, write superuser's password and press %(enter)s again." +msgstr "tryk %(enter)s, skriv superuser's kodeord og tryk %(enter)s igen." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "You will then see the following screen." +msgstr "Dernæst vil du blive mødt af følgende skærm." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "Escape" +msgstr "Escape" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +#, python-format +msgid "" +"In this program, you use the arrow keys to navigate and %(enter)s to select " +"an option. %(escape)s can be used to go back." +msgstr "" +"I dette program navigerer du rundt med piletasterne, og bruger %(enter)s til " +"at trykke på en knap. %(escape)s kan bruges til at gå tilbage." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "Edit a connection" +msgstr "Edit a connection" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +#, python-format +msgid "" +"The default option is %(eac)s so you simply press %(enter)s, which brings " +"you here:" +msgstr "" +"Som udgangspunkt er %(eac)s valgt, så du trykker bare %(enter)s, hvilket " +"bringer dig hertil:" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"The view on this page will vary, but if you had previously configured a Wi-" +"Fi connection, it will be listed here." +msgstr "" +"På denne side vil det variere hvad du ser, men hvis du tidligere havde en Wi-" +"Fi-forbindelse sat op, vil den være angivet på listen." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +#, python-format +msgid "" +"Navigate to your Wi-Fi connection using the arrow keys and press %(enter)s. " +"If you are unsure, you can enter each Wi-Fi connection in turn in order to " +"determine the actual name of the connection (SSID)." +msgstr "" +"Gå ned til dit Wi-Fi-netværk med piletasterne, og tryk igen %(enter)s. Hvis " +"du er i tvivl, kan du gå ind på hvert Wi-Fi-netværk for at se hvad navnet på " +"netværket faktisk er (SSID)." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"You will then see the following screen. The contents of the fields will vary " +"from system to system." +msgstr "" +"Da vil du komme til følgende skærm. Hvad der står i felterne vil dog variere " +"fra system til system." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"Use the arrow keys to navigate to the password, delete it and write the new " +"password. Next, navigate to the bottom and press OK." +msgstr "" +"Brug piletasterne til at gå ned til kodeordet, slet det, og skriv det nye " +"kodeord ind. Gå derefter til bunden og tryk OK." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +#, python-format +msgid "" +"You will be returned to this screen - this time, press %(escape)s to go back " +"to the main menu." +msgstr "" +"Du vil være tilbage på denne skærm - denne gang trykker du %(escape)s for at " +"gå et niveau tilbage, for at komme til hovedmenuen." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "This time, choose" +msgstr "Denne gang vælger du" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "Deactivate" +msgstr "Deactivate" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "Activate" +msgstr "Activate" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +#, python-format +msgid "" +"Find your network on the list and if there is an option to %(deactivate)s, " +"do this via the arrow keys and %(enter)s. Next, choose %(activate)s." +msgstr "" +"Find dit netværk på listen, og hvis du ser muligheden for %(deactivate)s, " +"gør du først dét, via piletasterne og %(enter)s. Derefter vælger du " +"%(activate)s." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"The network will now be active, assuming that the configuration and password " +"were entered correctly." +msgstr "" +"Herefter vil netværket være aktiveret, hvis konfigurationen og koden var " +"indtastet korrekt." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "We are now finished with" +msgstr "Nu er vi færdige med" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +#, python-format +msgid "" +"Press %(escape)s - or alternatively use the arrow keys to choose \"Back\", " +"press %(enter)s, choose \"Quit\" and press %(enter)s until the program is " +"closed." +msgstr "" +"Tryk på %(escape)s - eller alternativt vælg først \"Back\" med piletasterne, " +"tryk %(enter)s, vælg \"Quit\" og tryk %(enter)s, indtil programmet er lukket." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "You will now be back in the terminal, which now looks like this:" +msgstr "Så vil du være tilbage i terminalen, som nu ser sådan her ud:" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"You can then check that the network connection is working, for instance via " +"the following command, which uses" +msgstr "" +"Herefter kan du tjekke at netværksforbindelsen virker, eks. via følgende " +"kommando, der bruger" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"If the computer is connected, you should see output similar to the above." +msgstr "Ved netforbindelse skulle du gerne se output som ovenover." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +#, python-format +msgid "" +"Write \"exit\" on the command line and press %(enter)s to log out - or press" +msgstr "" +"Skriv \"exit\" på kommandolinien og tryk %(enter)s for at logge ud - eller " +"tryk" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "You will then be back here:" +msgstr "Du vil så være tilbage hertil:" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"Press Ctrl-Alt-F1 to return to the browser - we are now back where we " +"started:" +msgstr "" +"Tryk nu Ctrl-Alt-F1 for at komme tilbage til browseren - så er vi tilbage " +"til start:" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "Done!" +msgstr "Færdig!" + +#: templates/documentation/scripts/__submenu__.html +#: templates/documentation/scripts/edit.html +msgid "Editing Scripts" +msgstr "Redigering af Scripts" + +#: templates/documentation/scripts/__submenu__.html +msgid "Editing arguments" +msgstr "Redigering af inputparametre" + +#: templates/documentation/scripts/__submenu__.html +#: templates/documentation/scripts/running.html +#: templates/site_with_navigation.html +msgid "Executing Scripts" +msgstr "Afvikling af Scripts" + +#: templates/documentation/scripts/edit.html +msgid "Note that only Magenta can edit global scripts." +msgstr "Bemærk at kun Magenta kan redigere globale scripts." + +#: templates/documentation/scripts/edit.html +msgid "" +"If you wish to edit a Script, you must click on \"Scripts\" in the left-hand " +"menu and then select the script in the list of scripts shown to the right of " +"the left-hand menu. Note that it may be necessary to swap between the tabs " +"\"Local scripts\" and \"Global scripts\" in order to find the script. You " +"can also search through the scripts by selecting the search field \"Find ..." +"\" and typing a search term. This will cause the list to display all scripts " +"whose names contain the search term." +msgstr "" +"For at redigere et Script skal du klikke på \"Scripts\" i venstremenuen og " +"efterfølgende vælge Scriptet i listen over Scripts til højre for " +"venstremenuen. Bemærk at det kan være nødvendigt at skifte mellem " +"fanebladenene \"Lokale scripts\" og \"Globale scripts\" for at finde " +"Scriptet. Du kan også søge igennem alle scripts ved at vælge søgefeltet " +"\"Find ...\" og indtaste en søgeterm. Dette vil få listen til at vise de " +"scripts, hvis navn indeholder søgetermen." + +#: templates/documentation/scripts/edit.html +msgid "" +"When you edit a script you can change its name and description. It is also " +"possible to upload a new version of the script by clicking on the tab \"Code" +"\" and then selecting a file to upload. Changes do not become permanent " +"until you've clicked on \"Save changes\" at the bottom of the screen." +msgstr "" +"Når du redigerer et Script har du mulighed for at ændre dets navn og " +"beskrivelse. Du kan også uploade en ny version af Scriptet ved at klikke på " +"fanebladet \"Kode\" og derefter vælge en fil at uploade. Ændringer du har " +"foretaget træder ikke i kraft, før du har klikket på \"Gem ændringer\" i " +"bunden af siden." + +#: templates/documentation/scripts/edit.html +msgid "In the last tab, you can" +msgstr "I sidste fane har du mulighed for at" + +#: templates/documentation/scripts/edit.html +msgid "adjust the arguments for the script" +msgstr "tilpasse inputparametre for Scriptet" + +#: templates/documentation/scripts/index.html +#: templates/site_with_navigation.html +msgid "Administrating Scripts" +msgstr "Administration af Scripts" + +#: templates/documentation/scripts/index.html +msgid "" +"When you click on \"Scripts\" in the left-hand menu, a list of scripts will " +"be shown to the right of the left-hand menu and the editing interface for " +"scripts will be shown to the right of this list." +msgstr "" +"Når man klikker på \"Scripts\" i venstremenuen, vil man til højre for " +"venstremenuen få vist en liste af Scripts, og til højre for denne liste vil " +"man få vist redigeringsinterfacet for Scripts." + +#: templates/documentation/scripts/index.html +msgid "" +"Scripts are for individual actions whereas security scripts monitor special " +"events." +msgstr "" +"Scripts er til enkeltstående handlinger, hvorimod Sikkerhedsscripts holder " +"øje med specielle hændelser." + +#: templates/documentation/scripts/index.html +msgid "" +"The list of scripts is divided in two parts that one can swap between by " +"clicking on the tabs \"Local scripts\" and \"Global scripts\" above the list." +msgstr "" +"Listen af Scripts er delt op i to dele som kan skiftes imellem ved at klikke " +"på fanebladene \"Lokale scripts\" og \"Globale scripts\" oven over listen." + +#: templates/documentation/scripts/index.html +msgid "" +"Local scripts are scripts that can only be used on the currently chosen site " +"while global scripts are scripts that can be used on all sites." +msgstr "" +"Lokale scripts dækker over Scripts, som kun kan bruges på det site man er " +"under, mens Globale scripts dækker over Scripts, der kan bruges på alle " +"sites." + +#: templates/documentation/scripts/index.html +msgid "You have the following options for every script" +msgstr "For hvert script har du mulighed for følgende" + +#: templates/documentation/scripts/index.html +msgid "" +"If you wish to add a new script, you must click on \"Add new Script\" above " +"the list of scripts. This will open a modal where you can fill out the name " +"and description and upload the script code. When you then click on \"Create " +"script\", the script will be created, and you will be redirected to the " +"editing interface for the newly created script where you can add arguments " +"for the script." +msgstr "" +"Hvis du ønsker at oprette et nyt script skal du klikke på \"Tilføj nyt Script" +"\" oven over listen med Scripts. Dette vil åbne en dialog hvor du kan " +"udfylde script navn, beskrivelse og uploade script-kode. Når du derefter " +"klikker på \"Opret Script\" vil scriptet blive oprettet, og du vil blive " +"viderestillet til redigeringssiden for det nyoprettede script, hvor du vil " +"have mulighed for at tilføje inputparametre til scriptet." + +#: templates/documentation/scripts/parameters.html +msgid "Editing Script arguments" +msgstr "Redigering af Script-inputparametre" + +#: templates/documentation/scripts/parameters.html +msgid "Note that only Magenta can edit the parameters of global scripts." +msgstr "" +"Bemærk at kun Magenta kan redigere inputparametrene for globale scripts." + +#: templates/documentation/scripts/parameters.html +msgid "" +"The script arguments make it possible to supply input parameters when a " +"script needs to be run. One can choose between these types of input " +"parameters:" +msgstr "" +"Script-inputparametre gør det muligt at angive inputparametre, når et script " +"skal køres. Der er disse typer inputparametre man kan vælge imellem:" + +#: templates/documentation/scripts/parameters.html +msgid "" +"Makes it possible to supply a text string such as a file path or a title." +msgstr "" +"Giver mulighed for at angive en tekst-streng, for eksempel en sti eller en " +"titel." + +#: templates/documentation/scripts/parameters.html +msgid "Makes it possible to supply a positive or negative integer" +msgstr "Giver mulighed for at angive et positivt eller negativt heltal" + +#: templates/documentation/scripts/parameters.html +msgid "Makes it possible to supply a date" +msgstr "Giver mulighed for at angive en dato" + +#: templates/documentation/scripts/parameters.html +msgid "" +"Makes it possible to upload a file that will be passed along when the script " +"is being executed. The script will receive the file parameter as a file path " +"pointing at the file in the local file system." +msgstr "" +"Giver mulighed for at uploade en fil, der vil blive sendt med, når scriptet " +"skal afvikles. Scriptet vil modtage Fil-parametre som en sti i det lokale " +"filsystem, der peger på filen." + +#: templates/documentation/scripts/parameters.html +msgid "" +"Makes it possible to supply a true/false value. The script will receive the " +"value as either the string \"True\" or the string \"False\"." +msgstr "" +"Giver mulighed for at angive en sand/falsk-værdi. Scriptet vil modtage " +"værdien som enten strengen \"True\" eller strengen \"False\"." + +#: templates/documentation/scripts/parameters.html +msgid "Makes it possible to supply a time of day" +msgstr "Giver mulighed for at angive et tidspunkt" + +#: templates/documentation/scripts/parameters.html +msgid "" +"Makes it possible to supply a password string. This type of parameter " +"functions like the regular string parameter except that the chosen password " +"will be hidden in the log output and all other places where the chosen input " +"parameters are displayed." +msgstr "" +"Giver mulighed for at angive en adgangskode. Denne type af inputparameter " +"fungerer ligesom streng-inputparametertypen bortset fra at den valgte " +"adgangskode vil være skjult i log-outputtet og alle andre steder hvor de " +"valgte inputparametre vises." + +#: templates/documentation/scripts/parameters.html +msgid "" +"Makes it possible to make a list of predefined choices. This type of " +"parameter is useful when you want to limit the possible values that can be " +"supplied as input. To make a list of choices, you make a comma separated " +"list of the values in the default value field. The choices will be displayed " +"in the same order as they are written, and if you add a comma at the end or " +"the start of the list, it will be displayed as an empty choice." +msgstr "" +"Giver mulighed for at lave en liste med foruddefinerede valgmuligheder. " +"Denne type parameter er nyttig, når du vil begrænse de mulige værdier, der " +"kan leveres som input. For at lave en liste over valg, laver du en " +"kommasepareret liste over værdierne i standardværdifeltet. Valgene vil blive " +"vist i samme rækkefølge, som de er skrevet, og hvis du tilføjer et komma i " +"slutningen eller starten af listen, vil det blive vist som et tomt valg." + +#: templates/documentation/scripts/parameters.html +#, python-format +msgid "" +"In order to add an argument to a script, you must click on the button \"Add " +"arguments\". This will add a new row to the list of arguments where you must " +"fill out the name and type for the argument. It is also possible to specify " +"a default value for the argument, which will be entered by default when " +"running the script or adding it as an associated script. Only arguments of " +"the types %(str)s, %(int)s, %(date)s, %(choices)s and %(time)s can have " +"default values. Lastly, an argument can be set as required or not. Required " +"parameters must be supplied when running the script whereas non-required " +"parameters can be left blank. Booleans and choices cannot be required. If " +"you wish to remove an argument, you must click on \"Remove\" to the right in " +"the list." +msgstr "" +"For at tilføje en input-parameter til et script skal man klikke på knappen " +"\"Tilføj parametre\". Dette vil tilføje en ny række i listen over " +"inputparametre, hvor man skal udfylde navn og type for inputparametren. Det " +"er også muligt at angive en standardværdi for inputparameteren, som " +"automatisk vil være angivet når man kører scriptet eller knytter det til en " +"gruppe. Kun parametre af typerne %(str)s, %(int)s, %(date)s, %(choices)s og " +"%(time)s kan have standardværdier. Endelig kan en inputparameter sættes som " +"påkrævet. Påkrævede parametre skal udfyldes, når man kører scriptet, mens " +"ikke-påkrævede parametre kan efterlades tomme. Afkrydsningsfelter og " +"valgmuligheder kan ikke være påkrævede. Hvis man ønsker at fjerne en " +"parameter, skal man klikke på \"Fjern\" til højre i listen." + +#: templates/documentation/scripts/parameters.html +msgid "" +"You must click on the button \"Save changes\" at the bottom of the script " +"editing interface before changes to script arguments are made permanent." +msgstr "" +"Man skal klikke på knappen \"Gem ændringer\" nederst på script-" +"redigeringssiden før ændringer foretaget til inputparametre træder i kraft." + +#: templates/documentation/scripts/running.html +msgid "" +"In order to run a script on a computer or a group of computers, you must " +"click on \"Scripts\" in the left-hand menu and choose the script you wish to " +"run. Note that it may be necessary to swap between the tabs \"Local scripts" +"\" and \"Global scripts\" in order to find the script. When you have located " +"the script you wish to run, you must click on the button \"Run script\"." +msgstr "" +"For at køre et script på en computer eller en gruppe af computere skal du " +"klikke på \"Scripts\" i venstremenuen og vælge det script du vil køre. " +"Bemærk at det kan være nødvendigt at skifte mellem fanerne \"Lokale scripts" +"\" og \"Globale scripts\" for at finde det script du leder efter. Når du har " +"valgt det script, du ønsker at køre, skal du klikke på knappen \"Kør script" +"\"." + +#: templates/documentation/scripts/running.html +msgid "" +"You will now be shown a modal where you will be asked to select the " +"computers and/or groups that should execute the script. Click on the " +"individual computer or group in order to select/deselect it. You can choose " +"any number of computers or groups. At the top are special checkboxes that " +"can be used to select/deselect all computers or groups. Choosing a group " +"will cause the script to be executed on all computers in that group. Click " +"\"Next\" once you have made your choices." +msgstr "" +"Der kommer nu en dialog, hvor du bliver bedt om at vælge de computere og/" +"eller grupper, som du ønsker at afvikle scriptet på. Klik på den enkelte " +"computer eller gruppe for at vælge/afvælge den. Du kan vælge så mange " +"computere eller grupper, som du ønsker. Øverst findes særlige " +"afkrydsningsfelter, som kan bruges til at vælge/afvælge alle computere eller " +"grupper. Valg af en gruppe vil medføre, at scriptet udføres på samtlige " +"computere der er med i gruppen. Klik på \"Næste\", når du har foretaget dine " +"valg." + +#: templates/documentation/scripts/running.html +msgid "" +"You will now be asked to enter input parameters for the script. If an input " +"parameter has a default value, it will be entered by default. The value can " +"be changed. Fill out the fields and press \"Run\" in order to start the " +"script execution. This will result in a job being created for every computer " +"that the script is to be executed on. You can click on the link in the last " +"section of the modal in order to jump to" +msgstr "" +"Du vil nu blive bedt om at udfylde inputparametre for scriptet. Hvis en " +"inputparameter har en standardværdi, vil denne være angivet på forhånd. " +"Værdien kan godt ændres. Udfyld felterne og klik på \"Kør\" for at starte " +"afviklingen af scriptet. Dette vil medføre, at der bliver oprettet et job " +"for hver computer du valgte at udføre scriptet på. Du kan klikke på linket i " +"den sidste side i dialogen for at gå til" + +#: templates/documentation/scripts/running.html +msgid "and track the execution of jobs on the individual computers." +msgstr "og følge med i afviklingen af jobs på de enkelte computere." + +#: templates/documentation/security_scripts/__submenu__.html +#: templates/documentation/security_scripts/edit.html +msgid "Editing Security Scripts" +msgstr "Redigering af Sikkerhedsscripts" + +#: templates/documentation/security_scripts/__submenu__.html +#: templates/documentation/security_scripts/securityproblems.html +#: templates/documentation/users/index.html +msgid "Security Rules" +msgstr "Sikkerhedsregler" + +#: templates/documentation/security_scripts/edit.html +msgid "Note that only Magenta can edit global security scripts." +msgstr "Bemærk at kun Magenta kan redigere globale sikkerhedsscripts." + +#: templates/documentation/security_scripts/edit.html +msgid "" +"If you wish to edit a Security Script, you must click on \"Security Scripts" +"\" in the left-hand menu and then select the security script in the list to " +"the right of the left-hand menu. Note that it may be necessary to swap " +"between the tabs \"Local scripts\" and \"Global scripts\" in order to find " +"the script. You can also search through the security scripts by selecting " +"the search field \"Find ...\" and typing a search term. This will cause the " +"list to display all security scripts whose names contain the search term." +msgstr "" +"For at redigere et Sikkerhedsscript skal du klikke på \"Sikkerhedsscripts\" " +"i venstremenuen og efterfølgende vælge Sikkerhedsscriptet i listen over " +"Sikkerhedsscripts til højre for venstremenuen. Bemærk at det kan være " +"nødvendigt at skifte mellem fanebladenene \"Lokale scripts\" og \"Globale " +"scripts\" for at finde Sikkerhedsscriptet. Du kan også søge igennem alle " +"Sikkerhedsscripts ved at vælge søgefeltet \"Find ...\" og indtaste en " +"søgeterm. Dette vil få listen til at vise de Sikkerhedsscripts, hvis navn " +"indeholder søgetermen." + +#: templates/documentation/security_scripts/edit.html +msgid "" +"When you edit a security script you can change its name and description. It " +"is also possible to upload a new version of the script by clicking on the " +"tab \"Code\" and then selecting a file to upload. Changes do not become " +"permanent until you've clicked on \"Save changes\" at the bottom of the " +"screen." +msgstr "" +"Når du redigerer et Sikkerhedsscript har du mulighed for at ændre dets navn " +"og beskrivelse. Du kan også uploade en ny version af Sikkerhedsscriptet ved " +"at klikke på fanebladet \"Kode\" og derefter vælge en fil at uploade. " +"Ændringer du har foretaget træder ikke i kraft, før du har klikket på \"Gem " +"ændringer\" i bunden af siden." + +#: templates/documentation/security_scripts/edit.html +msgid "Please note the following regarding security scripts" +msgstr "Ved Sikkerhedsscripts, skal du være opmærksom på følgende" + +#: templates/documentation/security_scripts/edit.html +msgid "A security script is a script that collects" +msgstr "Et Sikkerhedsscript er et script, som indsamler" + +#: templates/documentation/security_scripts/edit.html +msgid "" +"A security script does not have any input parameters, and it must follow a " +"specific format." +msgstr "" +"Et Sikkerhedscript tager ikke nogen inputparametre, og det skal følge et " +"bestemt format." + +#: templates/documentation/security_scripts/edit.html +msgid "" +"The structure of a security script will typically involve reading an amount " +"of data from a log file, searching the data for an event based on one or " +"more keywords and then saving the information in a specific format. A " +"security script can be a shell script or a python script." +msgstr "" +"Opbygningen af et Sikkerhedscript vil typisk være, at læse en mængde data " +"fra en log fil, søge i dataen efter en hændelse via et eller flere keywords, " +"og så herefter gemme oplysningerne i et bestemt format. Et Sikkerhedsscript " +"kan være et shellscript eller et pythonscript." + +#: templates/documentation/security_scripts/edit.html +msgid "" +"The format looks like this: \"event timestamp, security rule id, event " +"summary\"." +msgstr "" +"Formatet ser således ud: \"tidsstempel for hændelsen, Sikkerhedsreglens id, " +"hændelsesreferat\"." + +#: templates/documentation/security_scripts/edit.html +msgid "" +"The event timestamp is the time when the event took place. It is usually " +"obtained from the log file." +msgstr "" +"Tidsstemplet er det tidspunkt, hvor hændelsen fandt sted. Det fås normalt " +"fra log-filen." + +#: templates/documentation/security_scripts/edit.html +msgid "" +"The security rule id is a number found in the url for editing that specific " +"security rule. Your security script is used by a security rule and it is the " +"id of this rule that you need." +msgstr "" +"Sikkerhedsreglens id er et tal, som kan findes i url'en for den specifikke " +"sikkerhedsregel. Dit Sikkerhedsscript tilhører en sikkerhedsregel, og det er " +"dennes id du skal bruge." + +#: templates/documentation/security_scripts/edit.html +msgid "" +"The event summary can be something you define or a part of the collected " +"data." +msgstr "" +"Hændelsesreferatet kan enten være noget du definerer eller en bid af det " +"indsamlede data." + +#: templates/documentation/security_scripts/edit.html +msgid "" +"Deliver the format as an array to the module csv_writer by calling the " +"method write." +msgstr "" +"Aflever formatet som et array til modulet csv_writer ved at kalde metoden " +"write." + +#: templates/documentation/security_scripts/index.html +#: templates/site_with_navigation.html +msgid "Administrating security scripts" +msgstr "Administration af sikkerhedsscripts" + +#: templates/documentation/security_scripts/index.html +msgid "" +"When you click on \"Security Scripts\" in the left-hand menu, a list of " +"security scripts will be shown to the right of the left-hand menu and the " +"editing interface for security scripts will be shown to the right of this " +"list." +msgstr "" +"Når man klikker på \"Sikkerhedsscripts\" i venstremenuen, vil man til højre " +"for venstremenuen få vist en liste af Sikkerhedsscripts, og til højre for " +"denne liste vil man få vist redigeringsinterfacet for Sikkerhedsscripts." + +#: templates/documentation/security_scripts/index.html +msgid "" +"Security scripts monitor special events whereas Scripts are for individual " +"actions." +msgstr "" +"Sikkerhedsscripts holder øje med specielle hændelser, hvorimod Scripts er " +"til enkeltstående handlinger." + +#: templates/documentation/security_scripts/index.html +msgid "" +"The list of security scripts is divided in two parts that one can swap " +"between by clicking on the tabs \"Local scripts\" and \"Global scripts\" " +"above the list." +msgstr "" +"Listen af Sikkerhedsscripts er delt op i to dele som kan skiftes imellem ved " +"at klikke på fanebladene \"Lokale scripts\" og \"Globale scripts\" oven over " +"listen." + +#: templates/documentation/security_scripts/index.html +msgid "" +"Local scripts are security scripts that can only be used on the currently " +"chosen site while global scripts are security scripts that can be used on " +"all sites." +msgstr "" +"Lokale scripts dækker over Sikkerhedsscripts, som kun kan bruges på det site " +"man er under, mens Globale scripts dækker over Sikkerhedsscripts, der kan " +"bruges på alle sites." + +#: templates/documentation/security_scripts/index.html +msgid "You have the following options for every security script" +msgstr "For hvert Sikkerhedsscript har du mulighed for følgende" + +#: templates/documentation/security_scripts/index.html +msgid "" +"If you wish to add a new security script, you must click on \"Add new " +"Security Script\" above the list of security scripts. This will open a modal " +"where you can fill out the name and description and upload the script code. " +"When you then click on \"Create Security Script\", the script will be " +"created, and you will be redirected to the editing interface for the newly " +"created security script." +msgstr "" +"Hvis du ønsker at oprette et nyt Sikkerhedsscript skal du klikke på \"Tilføj " +"nyt Sikkerhedsscript\" oven over listen med Sikkerhedsscripts. Dette vil " +"åbne en dialog hvor du kan udfylde script-navn, beskrivelse og uploade " +"script-kode. Når du derefter klikker på \"Opret Sikkerhedsscript\" vil " +"Sikkerhedsscriptet blive oprettet, og du vil blive viderestillet til " +"redigeringssiden for det nyoprettede sikkerhedsscript." + +#: templates/documentation/security_scripts/securityevents.html +msgid "" +"This overview shows the individual events that have been triggered by the " +"system. In the left column, you can choose how you wish to filter the " +"overview, i.e. choose which events you wish to see. By default, you will be " +"shown all unresolved events with a severity level greater than normal. The " +"severity level is also shown in the overview." +msgstr "" +"Denne oversigt viser de individuelle hændelser, som er udløst af systemet. I " +"venstre kolonne kan du vælge hvordan oversigten filtreres, altså hvilke " +"hændelser du vil se. Standard er, at du ser alle ikke-løste hændelser med en " +"alvorlighedsgrad over normal. Af oversigten fremgår også hændelsernes " +"alvorlighedsgrad." + +#: templates/documentation/security_scripts/securityevents.html +msgid "" +"From the overview you can select and handle events. Handling an event allows " +"you to change its status and the assigned user as well as add or change a " +"note for the event. It is possible to handle multiple events simultaneously." +msgstr "" +"Fra oversigten kan du vælge og håndtere hændelser. Når du håndterer en " +"hændelse, kan du ændre dens status, og hvem der står, at den håndteres af " +"samt tilføje eller ændre en note for hændelsen. Det er muligt at håndtere " +"flere hændelser på en gang." + +#: templates/documentation/security_scripts/securityevents.html +msgid "" +"The possible statuses are new (the default), assigned and resolved. The " +"assigned user can be chosen from among all users on the site you are on. It " +"is possible for an event to have no assigned user." +msgstr "" +"De mulige statuser er ny (standard), tildelt og løst. Brugeren som der står, " +"at hændelsen håndteres af kan vælges blandt alle brugere på det site, man er " +"under. Det er muligt for en hændelse ikke at have nogen bruger angivet til " +"at håndtere den." + +#: templates/documentation/security_scripts/securityproblems.html +msgid "" +"The overview \"Monitoring Rules\" shows all the defined security rules and " +"offline rules that are monitored. You can define new security rules from the " +"overview by clicking on \"Add new security rule\" above the list of defined " +"rules. You can edit an existing security rule by selecting it in the list. " +"The interface for both operations has the same form." +msgstr "" +"I oversigten \"Overvågningsregler\" vises alle definerede Sikkerhedsregler " +"og Offline-regler, som der holdes øje med. Fra oversigten kan du oprette nye " +"Sikkerhedsregler ved at klikke på \"Tilføj ny sikkerhedsregel\" oven over " +"listen med definerede regler. Du kan redigere en eksisterende " +"sikkerhedsregel ved at vælge den i listen. Interfacet for begge operationer " +"har samme form." + +#: templates/documentation/security_scripts/securityproblems.html +msgid "A new security rule takes the following input" +msgstr "En ny Sikkerhedsregel tager følgende input" + +#: templates/documentation/security_scripts/securityproblems.html +msgid "Name (mandatory): the name of the particular security rule." +msgstr "Navn (påkrævet): Navnet på den pågældende sikkerhedsregel." + +#: templates/documentation/security_scripts/securityproblems.html +msgid "" +"Security Script (mandatory): The Security Script is executed every time the " +"computer checks in with the admin-site." +msgstr "" +"Sikkerhedsscript (påkrævet): Sikkerhedsscriptet afvikles hver gang en " +"computer tjekker ind på admin-sitet." + +#: templates/documentation/security_scripts/securityproblems.html +msgid "" +"Description (optional): A descriptive text that is included in the sent " +"email warnings." +msgstr "" +"Beskrivelse (valgfri): En beskrivende tekst, som indgår i de afsendte " +"advarsels-emails." + +#: templates/documentation/security_scripts/securityproblems.html +msgid "" +"Monitored groups (optional): The groups define which computers the security " +"rule applies to." +msgstr "" +"Overvågede grupper (valgfri): Grupperne definerer hvilke computere, den " +"aktuelle sikkerhedsregel er aktiv for." + +#: templates/documentation/security_scripts/securityproblems.html +msgid "" +"Recipient(s) of email warning (optional): The users that should receive an " +"email about any events related to the security rule. Note that if a " +"monitored PC belongs to one or more groups with supervisors, those " +"supervisors will receive any email warnings related to that PC instead of " +"the recipients set here." +msgstr "" +"Modtager(e) af email-advarsel (valgfri): Hvilke brugere der skal modtage en " +"email omkring hændelser relateret til denne sikkerhedsregel. Bemærk at hvis " +"en overvåget PC tilhører en eller flere grupper med ansvarspersoner, så vil " +"disse ansvarspersoner modtage eventuelle email-advarsler relateret til den " +"PC i stedet for de modtagere, som er valgt her." + +#: templates/documentation/sites_overview/index.html +msgid "" +"The sites overview shows all the sites that you have access to. A customer " +"admin has access to all sites for that customer while other users only have " +"access to the sites that they have been assigned to. Customer admins can " +"also delete or create sites from the sites overview." +msgstr "" +"Sites-oversigten viser alle de sites, som du har adgang til. En kunde-admin " +"har adgang til alle sites for den kunde, mens andre brugere kun har adgang " +"til de sites, som de er blevet tilføjet til. Kunde-admins kan også slette " +"eller oprette sites fra sites-oversigten." + +#: templates/documentation/sites_overview/index.html +msgid "" +"If you want more detailed information about creating, deleting and handling " +"multiple sites, we recommend reading our" +msgstr "" +"Hvis du ønsker mere detaljeret information omkring oprettelse, sletning og " +"håndtering af flere sites, anbefaler vi, at du læser vores" + +#: templates/documentation/sites_overview/index.html +msgid "Guide to creating and handling multiple sites" +msgstr "Guide til oprettelse og håndtering af flere sites" + +#: templates/documentation/sites_overview/index.html +msgid "Information about your sites" +msgstr "Information omkring dine sites" + +#: templates/documentation/sites_overview/index.html +msgid "" +"Some general information about the sites that you have access to is shown at " +"the top of the overview." +msgstr "" +"I toppen af oversigten vises der noget generel information om de sites, som " +"du har adgang til." -#: templates/site_with_navigation.html:90 templates/system/site_settings.html:6 -msgid "Site settings" -msgstr "Site-indstillinger" +#: templates/documentation/sites_overview/index.html +#: templates/documentation/users/index.html templates/site_with_navigation.html +#: templates/system/sites/list.html +msgid "Sites" +msgstr "Sites" + +#: templates/documentation/sites_overview/index.html +msgid "The total number of sites that you have access to" +msgstr "Samlet antal sites, som du har adgang til" + +#: templates/documentation/sites_overview/index.html +#: templates/system/sites/list.html +msgid "Computers total" +msgstr "Computere i alt" + +#: templates/documentation/sites_overview/index.html +msgid "" +"The total number of computers registered on the sites that you have access to" +msgstr "Samlet antal computere registreret på de sites, som du har adgang til" + +#: templates/documentation/sites_overview/index.html +msgid "" +"The total number of activated computers on the sites that you have access to" +msgstr "Samlet antal aktiverede computere på de sites, som du har adgang til" + +#: templates/documentation/sites_overview/index.html +#: templates/system/site_status.html templates/system/sites/list.html +msgid "Online" +msgstr "Online" + +#: templates/documentation/sites_overview/index.html +msgid "" +"The total number of online computers on the sites that you have access to" +msgstr "Samlet antal online computere på de sites, som du har adgang til" + +#: templates/documentation/sites_overview/index.html +msgid "" +"The total number of OS2borgerPC computers (not kiosk) on the sites that you " +"have access to" +msgstr "" +"Samlet antal OS2borgerPC computere (ikke kiosk) på de sites, som du har " +"adgang til" + +#: templates/documentation/sites_overview/index.html +msgid "" +"The total number of OS2borgerPC kiosk computers on the sites that you have " +"access to" +msgstr "" +"Samlet antal OS2borgerPC kiosk computere på de sites, som du har adgang til" + +#: templates/documentation/sites_overview/index.html +msgid "20.04, 22.04, 24.04, ..." +msgstr "20.04, 22.04, 24.04, ..." + +#: templates/documentation/sites_overview/index.html +msgid "" +"The total number of computers with each Ubuntu version on the sites that you " +"have access to" +msgstr "" +"Samlet antal computere med hver Ubuntu version på de sites, som du har " +"adgang til" + +#: templates/documentation/sites_overview/index.html +msgid "Deleting a site" +msgstr "Sletning af site" + +#: templates/documentation/sites_overview/index.html +msgid "REMINDER: Only customer admins can delete a site!" +msgstr "HUSK: Kun kunde-admins kan slette et site!" + +#: templates/documentation/sites_overview/index.html +msgid "" +"To start the process of deleting a site, click the dropdown symbol on the " +"right side of the button for that site, and then on \"Delete Site\". Note " +"that if 5 or more computers are registered with the site, the \"Delete Site" +"\" button will be inactive and deletion will not be possible. You will then " +"need to manually remove computers from the site for deletion to be possible. " +"The computers can be removed via the computers overview for that site. After " +"clicking on the \"Delete Site\" button, you will be redirected to a new page " +"that will inform you of the consequences of deleting the site. You must " +"check a checkbox indicating that you understand and accept the consequences " +"of deleting the site before you can click \"Confirm deletion\" to finalize " +"the deletion." +msgstr "" +"For at starte processen med at slette et site, skal du klikke på dropdown-" +"symbolet i højre side af knappen for det site og derefter på \"Slet site\". " +"Bemærk at hvis der er 5 eller flere computere registreret på sitet, vil " +"\"Slet site\"-knappen være inaktiv, og sletning vil ikke være muligt. Du vil " +"så være nødt til manuelt at fjerne computere fra sitet, før at sletning er " +"muligt. Computerne kan fjernes via computer-oversigten for det site. Når du " +"klikker på knappen \"Slet site\", vil du blive omdirigeret til en ny side, " +"som vil informere dig om konsekvenserne ved at slette sitet. Du skal sætte " +"hak i et afkrydsningsfelt, som indikerer, at du forstår og accepterer " +"konsekvenserne ved at slette sitet, før at du kan klikke \"Bekræft sletning" +"\" for at færdiggøre sletningen." + +#: templates/documentation/sites_overview/index.html +msgid "Creating a new site" +msgstr "Oprettelse af nyt site" + +#: templates/documentation/sites_overview/index.html +msgid "REMINDER: Only customer admins can create new sites!" +msgstr "HUSK: Kun kunde-admins kan oprette nye sites!" + +#: templates/documentation/sites_overview/index.html +msgid "" +"If you wish to create a new site, you must click on the \"Add new site\" " +"button, which is only visible to customer admins. This will open a modal " +"where you must enter a name and a unique UID for the site. Note that the UID " +"must be used when registering computers with the site. As such, we suggest " +"choosing values like \"organization\" or \"organization-location\" (without " +"quotes). The modal will indicate whether the chosen UID is unique. If the " +"chosen UID is not unique, the \"Create site\" button in the modal will be " +"inactive. When you click on \"Create site\", you will be returned to the " +"sites overview where it will be possible to select the new site." +msgstr "" +"Hvis du ønsker at oprette et nyt site, skal du klikke på knappen \"Tilføj " +"nyt site\", som kun er synlig for kunde-admins. Dette vil åbne en dialog, " +"hvor du skal angive et navn og et unikt UID for sitet. Bemærk at UID'et skal " +"bruges i forbindelse med registrering af computere på sitet. Vi foreslår " +"derfor værdier som \"organisation\" eller \"organisation-placering\" (uden " +"citationstegn). Dialogen vil indikere, hvorvidt det valgte UID er unikt. " +"Hvis det valgte UID ikke er unikt, vil \"Opret site\"-knappen i bunden af " +"dialogen være inaktiv. Når du klikker på \"Opret site\", vil du blive sendt " +"tilbage til sites-oversgiten, hvor det vil være muligt at vælge det nye site." + +#: templates/documentation/sites_overview/index.html +msgid "" +"Once you have created a new site, you can create new users for the site or " +"add existing users to the site via the \"Users\" section for that site. See " +"the documentation regarding \"Users\" for more information." +msgstr "" +"Når du har oprettet et nyt site, kan du oprette nye brugere for sitet eller " +"tilføje eksisterende brugere til sitet via sektionen \"Brugere\" for det " +"site. Se dokumentationen omkring \"Brugere\" for mere information." + +#: templates/documentation/status/index.html +msgid "" +"When you log in to the admin-site, you will be presented with the status " +"screen for the site that your OS2borgerPC user is associated with. If you " +"have access to multiple sites, you must first choose a site to access." +msgstr "" +"Når du logger ind på admin-sitet, bliver du præsenteret for status-billedet " +"for det site, som din OS2borgerPC-bruger er tilknyttet. Hvis du har adgang " +"til flere sites, skal du først vælge det site, du vil ind på." + +#: templates/documentation/status/index.html +msgid "" +"On this list, you will be shown information about all computers for the " +"site, sorted with new/inactive computers" +msgstr "" +"På denne liste vil du se info om alle computere for sitet, sorteret med nye/" +"inaktive computere" + +#: templates/documentation/status/index.html +msgid "waiting to be activated" +msgstr "der venter på at blive aktiverede" + +#: templates/documentation/status/index.html +msgid "at the top and otherwise by when they were last seen." +msgstr "øverst, og ellers efter hvornår, de senest er set." + +#: templates/documentation/status/index.html +msgid "" +"You can click on a particular computer to see mere information about it." +msgstr "Du kan klikke på den enkelte computer for at se nærmere info om den." + +#: templates/documentation/users/index.html templates/site_with_navigation.html +msgid "Administrating users" +msgstr "Administration af brugere" + +#: templates/documentation/users/index.html +msgid "" +"When you click on \"Users\" in the left-hand menu, you will be shown a list " +"of users to the right of the left-hand menu. The editing interface for the " +"chosen user will be shown to the right of the list. If no users exist for " +"the chosen site, you will be shown a form for creating users instead." +msgstr "" +"Når du klikker på \"Brugere\" i venstre-menuen får du vist en liste af " +"brugere til højre for venstremenuen. Til højre for listen vil blive vist " +"redigeringsinterfacet for den valgte bruger. Hvis ikke der findes nogen " +"brugere på det valgte site, vil interfacet til oprettelse af brugere blive " +"vist i stedet." + +#: templates/documentation/users/index.html +msgid "Editing" +msgstr "Redigering" + +#: templates/documentation/users/index.html +msgid "" +"If you wish to edit a user, you must click on that user in the list of " +"users. It will now be possible to change the user's username, password, " +"email address, usertype and language. Note that only users with the usertype " +"\"Site Admin\" or \"Customer Admin\" can change a user's usertype. " +"Furthermore, if your usertype is \"Site User\", you will only be able to " +"edit your own user. Users with the usertype \"Customer Admin\" can also only " +"be seen and edited by other \"Customer Admins\". The fields are explained " +"below:" +msgstr "" +"For at redigere en bruger skal du klikke på den pågældende bruger i listen " +"over brugere. Du har nu mulighed for at ændre brugerens brugernavn, " +"adgangskode, e-mail-adresse, brugertype og sprog. Bemærk at kun brugere med " +"brugertypen \"Site-admin\" eller \"Kunde-admin\" kan ændre en brugers " +"brugertype. Hvis din brugertype er \"Site-bruger\", vil du kun kunne " +"redigere din egen bruger. Brugere med brugertypen \"Kunde-admin\" kan også " +"kun ses og redigeres af andre \"Kunde-admins\". Felterne er forklaret " +"herunder:" + +#: templates/documentation/users/index.html +msgid "Username" +msgstr "Brugernavn" + +#: templates/documentation/users/index.html +msgid "" +"This is the username that the user must use when they log in to the admin-" +"site. It can be no more than 150 characters long and can only contain " +"numbers, letters and the special characters" +msgstr "" +"Dette er det brugernavn, som brugeren skal bruge, når de logger ind på admin-" +"sitet. Det kan maksimalt være 150 tegn og kun indeholde tal, bogstaver og " +"specialtegnene" + +#: templates/documentation/users/index.html +#: templates/documentation/wake_plans/index.html +msgid "and" +msgstr "og" + +#: templates/documentation/users/index.html +msgid "" +"Here you can change the user's password. To ensure that the password is " +"entered correctly, it must be entered twice. If the fields are left empty, " +"the password will remain unchanged. When creating a new user, it is " +"mandatory to specify a password." +msgstr "" +"Her kan man ændre brugerens adgangskode. For at sikre at adgangskoden " +"indtastes korrekt, skal den skrives to gange. Hvis ikke felterne udfyldes, " +"vil adgangskoden forblive uændret. Ved oprettelse af en ny bruger er det " +"påkrævet at angive en adgangskode." + +#: templates/documentation/users/index.html +msgid "Email address" +msgstr "E-mail-adresse" + +#: templates/documentation/users/index.html +msgid "Here you can enter the user's email address. It is optional." +msgstr "Her kan du angive brugerens e-mail-adresse. Det er valgfrit." + +#: templates/documentation/users/index.html +msgid "The options in this field depend on your own usertype" +msgstr "Valgmulighederne i dette felt afhænger af din egen brugertype" + +#: templates/documentation/users/index.html +msgid "Usertypes" +msgstr "Brugertyper" + +#: templates/documentation/users/index.html +#, python-format +msgid "Site Users are not allowed to edit %(ut)s." +msgstr "Site-brugere har ikke mulighed for at redigere %(ut)s." + +#: templates/documentation/users/index.html +#, python-format +msgid "The different %(ut)s are described further down." +msgstr "Se informationer om de forskellige %(ut)s længere nede." + +#: templates/documentation/users/index.html +msgid "The user's language setting." +msgstr "Brugerens sprog-indstilling." + +#: templates/documentation/users/index.html +msgid "" +"Changes do not take effect until you've clicked on the button \"Save changes" +"\" at the bottom of the page." +msgstr "" +"Ændringer træder ikke i kraft, før man klikker på knappen \"Gem ændringer\" " +"nederst på siden." + +#: templates/documentation/users/index.html templates/system/users/link.html +#: templates/system/users/update.html +msgid "Add existing users to this site" +msgstr "Tilføj eksisterende brugere til dette site" + +#: templates/documentation/users/index.html +msgid "" +"If you are a customer admin, and you wish to add an existing user to the " +"site, you must click on the button \"Add existing users to this site\" above " +"the list of users. This will open a form where you can select the user(s) " +"that you wish to add. It will only be possible to select users that do not " +"already have access to the site. You must hold down Ctrl to select more than " +"one user. When you have selected the desired user(s), you must choose the " +"usertype that they should be added with. This can be either Site User or " +"Site Admin. When you fill out the fields and then click \"Save changes\", " +"the selected user(s) will be added to the site with the selected usertype, " +"and you will be redirected to an empty form for adding more existing users " +"to the site. Only \"Customer Admins\" can add existing users to a site." +msgstr "" +"Hvis du er kunde-admin og ønsker at tilføje en eksisterende bruger til " +"sitet, skal du klikke på knappen \"Tilføj eksisterende brugere til dette site" +"\" over listen med brugere. Dette vil åbne et interface, hvor du kan vælge " +"de(n) bruger(e), som du ønsker at tilføje. Det vil kun være muligt at " +"tilføje brugere, som ikke allerede har adgang til sitet. Du skal holde Ctrl " +"nede for at vælge mere end en bruger. Når du har valgt de(n) ønskede " +"bruger(e), skal du vælge den brugertype, som de skal tilføjes med. Dette kan " +"være enten site-bruger eller site-admin. Ved klik på \"Gem ændringer\" vil " +"de(n) valgte bruger(e) blive tilføjet til sitet med den valgte brugertype, " +"og du vil blive omdirigeret til en tom udgave af interfacet til tilføjelse " +"af eksisterende brugere til sitet. Kun \"Kunde-admins\" kan tilføje " +"eksisterende brugere til et site." + +#: templates/documentation/users/index.html +msgid "Creating a new user" +msgstr "Oprettelse af ny bruger" + +#: templates/documentation/users/index.html +msgid "" +"If you wish to create a new user, you must click on the button \"Add new user" +"\" above the list of users. This will open the form for creating a new user, " +"which has the same fields as the interface for editing a user. When you fill " +"out the fields and click \"Save changes\", the user will be created, and you " +"will be redirected to the editing interface for the newly created user. Both " +"\"Site Admins\" and \"Customer Admins\" can create new users." +msgstr "" +"Hvis man vil oprette en ny bruger skal man klikke på knappen \"Tilføj ny " +"bruger\" over listen med brugere. Dette vil åbne interfacet for oprettelse " +"af nye brugere, hvor man kan udfylde de samme oplysninger som under " +"redigering af brugere. Ved klik på \"Gem ændringer\" vil brugeren blive " +"oprettet, og man vil blive viderestillet til redigeringssiden for den " +"nyoprettede bruger. Både \"Site-admins\" og \"Kunde-admins\" kan oprette nye " +"brugere." + +#: templates/documentation/users/index.html +msgid "Deleting a user" +msgstr "Sletning af bruger" + +#: templates/documentation/users/index.html +msgid "" +"If you wish to delete a user, you must select the user and then click on the " +"X to the right of the selected user in the list of users. You will then be " +"asked to confirm the deletion and if you do so, the user will be deleted. " +"Both \"Site Admins\" and \"Customer Admins\" can delete users. However, " +"users with the usertype \"Customer Admin\" cannot be deleted without first " +"changing them to a different usertype." +msgstr "" +"Hvis man ønsker at slette en bruger, skal man vælge brugeren og derefter " +"klikke på X'et til højre for den valgte bruger i listen over brugere. Man " +"vil efterfølgende blive bedt om at bekræfte sletningen, og hvis man gør det, " +"vil brugeren blive slettet. Både \"Site-admins\" og \"Kunde-admins\" kan " +"slette brugere. Brugere med brugertypen \"Kunde-admin\" kan dog ikke " +"slettes, medmindre man først ændrer dem til en anden brugertype." + +#: templates/documentation/users/index.html +msgid "Permissions for Usertypes" +msgstr "Rettigheder for Brugertyper" + +#: templates/documentation/users/index.html +msgid "" +"Note: Contact Magenta if a user on your site needs to be changed to a " +"usertype that none of your users have permission to choose." +msgstr "" +"Bemærk: Kontakt Magenta hvis en bruger på dit site skal ændres til en " +"brugertype, som ingen af jeres brugere har rettigheder til at vælge." + +#: templates/documentation/users/index.html +msgid "All permissions, except deleting Customer Admins" +msgstr "Alle rettigheder, bortset fra at slette Kunde-admins" + +#: templates/documentation/users/index.html +msgid "All permissions" +msgstr "Alle rettigheder" + +#: templates/documentation/users/index.html +msgid "" +"Can create, edit and delete users except Customer Admins. Cannot change a " +"user's usertype to Customer Admin. Cannot add existing users to a site." +msgstr "" +"Kan oprette, redigere og slette brugere bortset fra kunde-admins. Kan ikke " +"ændre en brugers brugertype til kunde-admin. Kan ikke tilføje eksisterende " +"brugere til et site." + +#: templates/documentation/users/index.html +msgid "Can edit site settings. Cannot create or delete sites." +msgstr "" +"Kan redigere site-indstilinger. Kan hverken oprette eller slette sites." + +#: templates/documentation/users/index.html +msgid "" +"Can edit their own user, except their usertype. Cannot create, delete or " +"edit other users." +msgstr "" +"Kan redigere egen bruger, bortset fra at ændre brugertype. Kan hverken " +"oprette, redigere eller slette andre brugere." + +#: templates/documentation/users/index.html +msgid "Can run, create and edit scripts. Cannot delete scripts." +msgstr "Kan køre, oprette og redigere scripts. Kan ikke slette dem." + +#: templates/documentation/users/index.html +msgid "Can create and edit security rules. Cannot delete security rules." +msgstr "Kan oprette og redigere sikkerhedsregler. Kan ikke slette dem." + +#: templates/documentation/wake_plans/__submenu__.html +msgid "Associated Groups" +msgstr "Tilknyttede Grupper" + +#: templates/documentation/wake_plans/__submenu__.html +#: templates/system/site_settings/site_settings.html +msgid "Settings" +msgstr "Indstillinger" + +#: templates/documentation/wake_plans/__submenu__.html +#: templates/documentation/wake_plans/edit_exceptions.html +msgid "Handle exceptions" +msgstr "Håndter undtagelser" + +#: templates/documentation/wake_plans/edit_exceptions.html +msgid "" +"On the page for handling schedule exceptions, a list of schedule exceptions " +"for the chosen site will be shown to the right of the left-hand menu. You " +"can click on the name of a particular exception in order to edit it." +msgstr "" +"På siden til håndtering af tidsplans-undtagelser vil man til højre for " +"venstremenuen få vist en liste af tidsplans-undtagelser for det site, man er " +"under. Man kan klikke på navnet for den enkelte undtagelse for at redigere " +"undtagelsen." + +#: templates/documentation/wake_plans/edit_exceptions.html +msgid "" +"There are two types of exceptions: altered opening hours and closed days. " +"The two types have different icons in the list of exceptions. An exception " +"with altered opening hours changes the on and off times for the chosen date " +"or period. The icon is an open door. An exception with closed days sets the " +"associated devices to be constantly off during the chosen date or period. " +"The icon is a closed door." +msgstr "" +"Der findes to typer af undtagelser: Ændrede åbningstider og lukkedage. De to " +"typer har forskellige ikoner i listen over undtagelser. En undtagelse med " +"ændrede åbningstider ændrer tænd- og sluk-tidspunkterne for den valgte dato " +"eller periode. Ikonet er en åben dør. En undtagelse med lukkedage sætter de " +"tilknyttede maskiner til at være konstant slukkede den valgte dato eller " +"periode. Ikonet er en lukket dør." + +#: templates/documentation/wake_plans/edit_exceptions.html +msgid "" +"The editing interface for the chosen exception is shown to the right. If no " +"exceptions have been created for the chosen site, the interface for creating " +"an exception with altered opening hours will be shown instead." +msgstr "" +"Til højre vises redigeringsinterfacet for den valgte undtagelse. Hvis ikke " +"der er oprettet nogen undtagelser for det site, man er under, vises " +"interfacet til oprettelse af en undtagelse med ændrede åbningstider." + +#: templates/documentation/wake_plans/edit_exceptions.html +msgid "" +"By default when you click on an exception, you will be shown the settings " +"for the exception. Here, you can change the name of the exception and the " +"period where it applies. A single date is chosen by choosing the same from " +"and to date. If the exception has the type altered opening hours, it will " +"also be possible to change the on and off time that applies during the " +"exception. Changes do not become permanent until you have clicked on \"Save " +"changes\" at the bottom of the screen." +msgstr "" +"Som standard når man klikker sig ind på en undtagelse, vil man få vist " +"undtagelsens indstillinger. Her kan man ændre undtagelsens navn og den " +"periode, hvor den er gældende. En enkelt dato vælges ved at vælge samme fra " +"og til dato. Hvis undtagelsen er af typen ændrede åbningstider, vil man også " +"kunne ændre tænd- og sluk-tidspunkterne, der er gældende for undtagelsen. " +"Ændringer foretaget på siden træder ikke i kraft, før du klikker på \"Gem " +"ændringer\"-knappen i bunden af skærmbilledet." + +#: templates/documentation/wake_plans/edit_exceptions.html +msgid "" +"Note that if you change the settings for an exception that is being used by " +"one or more schedules, those schedules will also be updated when you click " +"on \"Save changes.\"" +msgstr "" +"Bemærk at hvis man ændrer indstillingerne for en undtagelse, der benyttes af " +"en flere aktive tidsplaner, vil tidsplanerne også blive opdateret, når man " +"trykker på \"Gem ændringer.\"" + +#: templates/documentation/wake_plans/edit_exceptions.html +msgid "" +"If you wish to create a new exception, you must click on \"Add altered " +"opening hours\" or \"Add closed days\" at the top of the list of exceptions. " +"This opens an interface where you must enter the name and settings for the " +"chosen type of exception. When you click on \"Create\", you will be " +"redirected to the editing interface for the newly created exception, where " +"you can continue to edit the settings." +msgstr "" +"Hvis man ønsker at oprette en ny undtagelse, skal man klikke på \"Tilføj " +"ændrede åbningstider\" eller \"Tilføj lukning\" oven over listen med " +"tidsplaner. Dette åbner et interface, hvor man skal udfylde navn og " +"indstillinger for den valgte type undtagelse. Når man klikker på \"Opret\", " +"vil man blive viderestillet til redigeringssiden for den nyoprettede " +"undtagelse, hvor man kan fortsætte med at ændre i indstillingerne." + +#: templates/documentation/wake_plans/edit_groups.html +msgid "Editing schedules: Associated groups" +msgstr "Tidsplans-redigering: Tilknyttede grupper" + +#: templates/documentation/wake_plans/edit_groups.html +msgid "" +"The editing interface for a schedule shows a list of groups that are " +"included in the schedule on the right side of the screen. A schedule applies " +"to all computers in the groups that are associated with the schedule. A " +"schedule with no associated groups has no effect. You can edit the members " +"of the schedule as described below." +msgstr "" +"Redigeringsinterfacet for en tidsplan viser en liste over grupper, der er " +"med i tidsplanen til højre i skærmbilledet. En tidsplan er gældende for alle " +"computere i de grupper, som er tilknyttet tidsplanen. En tidsplan uden " +"tilknyttede grupper har ingen effekt. Du kan redigere medlemmerne af " +"tidsplanen som beskrevet herunder." + +#: templates/documentation/wake_plans/edit_groups.html +msgid "Add a group" +msgstr "Tilføj gruppe" + +#: templates/documentation/wake_plans/edit_groups.html +msgid "" +"You add groups by clicking on \"Add group to the schedule\". If there are " +"any groups that do not yet belong to the schedule, they will be shown in a " +"list. Click on the group(s) that you wish to add to select them and then " +"click on the check mark beneath the list to add the group(s) to the schedule." +msgstr "" +"Du tilføjer grupper ved at klikke på \"Tilføj gruppe til tidsplan\". Hvis " +"der findes grupper, som endnu ikke er medlem af tidsplanen, vil de blive " +"vist i en liste. Klik på de grupper, som du ønsker at tilføje for at vælge " +"dem og klik derefter på fluebenet under listen for at tilføje grupperne til " +"tidsplanen." + +#: templates/documentation/wake_plans/edit_groups.html +msgid "" +"Note that a given group/computer can only belong to a single schedule at a " +"time. If you add a group that already belongs to a different schedule, it " +"will be removed from the previous schedule." +msgstr "" +"Bemærk at en given gruppe/computer ikke kan være knyttet til mere end en " +"tidsplan ad gangen. Hvis du tilføjer en gruppe, som allerede er med i en " +"anden tidsplan, vil den blive fjernet fra den forrige tidsplan." + +#: templates/documentation/wake_plans/edit_groups.html +msgid "" +"If you attempt to add a group, which contains one or more computers that " +"already belong to a different schedule via a different group, the chosen " +"group will be rejected during the update of the schedule when you click " +"\"Save changes\". Valid groups will still be added. If one or more groups " +"are rejected, the page will inform you of this along with the reason." +msgstr "" +"Hvis du forsøger at tilføje en gruppe, som indeholder en eller flere " +"computere, der er knyttet til en anden tidsplan via en anden gruppe, vil den " +"valgte gruppe blive afvist i forbindelse med opdateringen af tidsplanen, når " +"der klikkes på \"Gem ændringer.\" Gyldige grupper vil stadig blive tilføjet. " +"Hvis en eller flere grupper afvises, vil siden oplyse om dette samt " +"begrundelsen." + +#: templates/documentation/wake_plans/edit_groups.html +msgid "Remove a group" +msgstr "Fjern gruppe" + +#: templates/documentation/wake_plans/edit_groups.html +msgid "" +"In order to remove a group, you must click on the X to the right of the " +"group in the list of associated groups." +msgstr "" +"For at fjerne en gruppe skal du klikke på X'et til højre for gruppens navn i " +"listen over grupper, der er knyttet til tidsplanen." + +#: templates/documentation/wake_plans/edit_groups.html +msgid "" +"Be aware that changes to the list of groups do not become permanent until " +"you have clicked on \"Save changes\" at the bottom of the screen." +msgstr "" +"Husk at ændringer til listen over grupper ikke bliver permanente, før du har " +"klikket på \"Gem ændringer\" nederst i skærmbilledet." + +#: templates/documentation/wake_plans/edit_groups.html +msgid "" +"Note that if you later add computers to a group that belongs to a schedule, " +"those computers will also be associated with the schedule. If the computers " +"that you attempt to add already belong to a different schedule via a " +"different group, they will be rejected during the update of the group when " +"you click \"Save changes\" on the group editing interface. Valid computers " +"will still be added. If one or more computers are rejected, the page will " +"inform you of this along with the reason." +msgstr "" +"Bemærk at hvis der senere tilføjes computere til en gruppe, som er medlem af " +"en tidsplan, vil disse computere også blive knyttet til tidsplanen. Hvis de " +"computere, som forsøges tilføjet, allerede er knyttet til en anden tidsplan " +"via en anden gruppe, vil de blive afvist i forbindelse med opdateringen af " +"gruppen, når der klikkes på \"Gem ændringer\" på " +"grupperedigeringsinterfacet. Gyldige computere vil stadig blive tilføjet. " +"Hvis en eller flere computere afvises, vil siden oplyse om dette samt " +"begrundelsen." + +#: templates/documentation/wake_plans/edit_settings.html +msgid "Editing schedules: Settings" +msgstr "Tidsplans-redigering: Indstillinger" + +#: templates/documentation/wake_plans/edit_settings.html +msgid "" +"The editing interface for a schedule shows the settings for the schedule on " +"the left side of the screen and a list of exceptions that are used by the " +"schedule on the right side of the screen." +msgstr "" +"Redigeringsinterfacet for en tidsplan viser tidsplanens indstillinger til " +"venstre i skærmbilledet, og en liste over undtagelser, der er knyttet til " +"tidsplanen til højre i skærmbilledet." + +#: templates/documentation/wake_plans/edit_settings.html +msgid "" +"A schedule can be active or inactive. It will only affect the associated " +"groups if it is active." +msgstr "" +"En tidsplan kan være aktiv eller inaktiv. Den har kun effekt på de indmeldte " +"grupper, hvis den er aktiv." + +#: templates/documentation/wake_plans/edit_settings.html +msgid "Sleep state" +msgstr "Dvaletilstand" + +#: templates/documentation/wake_plans/edit_settings.html +msgid "" +"The chosen sleep state determines the state that the members of the schedule " +"are placed in when they are turned off according to the schedule. In order " +"from least to greatest energy savings, the options are standby, freeze, mem " +"and off. We thus recommend using the sleep state off in order to achieve the " +"greatest energy savings, but not all hardware supports this sleep state. If " +"the sleep state off is used on a computer that does not support it, the " +"computer will not wake automatically. It will still be possible to turn it " +"on manually." +msgstr "" +"Den valgte dvaletilstand bestemmer, hvilken tilstand medlemmerne af " +"tidsplanen lukker ned i, når de slukker efter tidsplanen. I rækkefølge fra " +"mindste til største strømbesparing er mulighederne standby, freeze, mem og " +"off. Vi anbefaler derfor, at man anvender dvaletilstanden off for størst " +"mulig strømbesparing, men det er ikke alt hardware, der understøtter denne " +"dvaletilstand. Hvis dvaletilstanden off anvendes på en computer, der ikke " +"understøtter den, vil computeren ikke vågne igen. Den vil dog stadig kunne " +"tændes manuelt." + +#: templates/documentation/wake_plans/edit_settings.html +msgid "Settings: Week plan" +msgstr "Indstillinger: Ugeplan" + +#: templates/documentation/wake_plans/edit_settings.html +msgid "" +"In the week plan, one can choose on and off times for every day of the week, " +"or whether it should be off for the entirety of that particular day. The " +"settings in the week plan normally apply for each of those days of the week, " +"unless there exists an exception for that particular date." +msgstr "" +"I ugeplanen kan man vælge tænd- og sluk-tidspunkter for hver enkelt ugedag, " +"eller om der skal være slukket hele den pågældende dag. Indstillingerne i " +"ugeplanen er som udgangspunkt gældende for alle de pågældende ugedage, " +"medmindre der findes en undtagelse for den pågældende dato." + +#: templates/documentation/wake_plans/edit_settings.html +msgid "Settings: Exceptions" +msgstr "Indstillinger: Undtagelser" + +#: templates/documentation/wake_plans/edit_settings.html +msgid "" +"Below the header \"Exceptions: Closed days and altered opening hours\", one " +"can add or remove exceptions to the week plan for specific dates or periods. " +"If an exception for a given date exists, the settings for the exception will " +"be used instead of the week plan settings. An exception can be a change in " +"the on and off times or a constant shutdown for a specific date or period. " +"Exceptions are created, deleted and edited in the tab that opens when you " +"click \"Create closed days\", \"Create altered opening hours\" or \"Edit " +"exceptions\". The different buttons redirect to the part of the tab that is " +"related to their name." +msgstr "" +"Under punktet \"Undtagelser: Lukkedage og Ændrede åbningstider\" kan man " +"tilføje eller fjerne undtagelser til ugeplanen for specifikke datoer eller " +"perioder. Hvis der findes en undtagelse for en given dato, vil undtagelsens " +"indstillinger benyttes i stedet for ugeplanens indstillinger. En undtagelse " +"kan være en ændring i tænd- og sluk-tidspunkterne eller en konstant " +"nedlukning for en specifik dato eller periode. Undtagelser oprettes, slettes " +"og redigeres i den fane som åbnes, når man trykker på \"Opret lukkedage\", " +"\"Opret ændrede åbningstider\" eller \"Rediger undtagelser\". De forskellige " +"knapper går direkte til den del af fanen, som er relateret til deres navn." + +#: templates/documentation/wake_plans/edit_settings.html +msgid "Add exceptions" +msgstr "Tilføj undtagelser" + +#: templates/documentation/wake_plans/edit_settings.html +msgid "" +"You add exceptions by clicking on \"Add exception to schedule\". If there " +"are any exceptions that do not yet belong to the schedule, they will be " +"shown in a list. Click on the exception(s) that you wish to add to select " +"them and then click on the check mark beneath the list to add the " +"exception(s) to the schedule." +msgstr "" +"Du tilføjer undtagelser ved at klikke på \"Tilknyt undtagelse til tidsplan\"." +"Hvis der findes undtagelser, som endnu ikke er knyttet til tidsplanen, vil " +"de blive vist i en liste. Klik på de undtagelser, som du ønsker at tilføje " +"for at vælge dem og klik derefter på fluebenet under listen for at tilføje " +"undtagelserne til tidsplanen." + +#: templates/documentation/wake_plans/edit_settings.html +msgid "" +"If you attempt to add an exception that overlaps with one or more already " +"added exceptions, the chosen exception will be rejected during the update of " +"the schedule when you click \"Save changes\". Valid exceptions will still be " +"added. If one or more exceptions are rejected, the page will inform you of " +"this along with the reason." +msgstr "" +"Hvis du forsøger at tilføje en undtagelse, der overlapper med en eller flere " +"allerede tilknyttede undtagelser, vil den valgte undtagelse blive afvist i " +"forbindelse med opdateringen af tidsplanen, når der klikkes på \"Gem " +"ændringer\". Gyldige undtagelser vil stadig blive tilføjet. Hvis en eller " +"flere undtagelser afvises, vil siden oplyse om dette samt begrundelsen." + +#: templates/documentation/wake_plans/edit_settings.html +msgid "Remove exceptions" +msgstr "Fjern undtagelser" + +#: templates/documentation/wake_plans/edit_settings.html +msgid "" +"In order to remove an exception, you must click on the X to the right of the " +"exception in the list of exceptions." +msgstr "" +"For at fjerne en undtagelse skal du klikke på X'et til højre for " +"undtagelsens navn i listen over undtagelser, der er knyttet til tidsplanen." + +#: templates/documentation/wake_plans/edit_settings.html +msgid "" +"Be aware that changes to the settings including the list of exceptions do " +"not become permanent until you have clicked on \"Save changes\" at the " +"bottom of the screen." +msgstr "" +"Husk at ændringer i indstillingerne inklusive listen over undtagelser ikke " +"bliver permanente, før du har klikket på \"Gem ændringer\" nederst i " +"skærmbilledet." + +#: templates/documentation/wake_plans/index.html +msgid "Power saving functions" +msgstr "Strømbesparende funktioner" + +#: templates/documentation/wake_plans/index.html +msgid "" +"The power saving functions consist of a suspend script and on/off schedules. " +"These functions can only be accessed by the customers that pay for access. " +"The customers that helped fund the functions automatically have access. " +"Other customers can contact Magenta if they are interested." +msgstr "" +"De strømbesparende funktioner består af et dvale-script og tænd/sluk-" +"tidsplaner. Disse funktioner kan kun anvendes af de kunder, som har tilkøbt " +"sig adgang. Alle kunder, som var med til at finansiere funktionerne, har " +"automatisk adgang. Andre kunder kan kontakte Magenta, hvis de er " +"interesserede." + +#: templates/documentation/wake_plans/index.html +msgid "" +"The suspend script is only intended for use on OS2borgerPC while the on/off " +"schedules can be used on both OS2borgerPC and OS2borgerPC Kiosk. The suspend " +"script can be combined with on/off schedules." +msgstr "" +"Dvale-scriptet er kun beregnet til brug på OS2borgerPC, mens tænd/sluk-" +"tidsplaner kan anvendes på både OS2borgerPC og OS2borgerPC Kiosk. Dvale-" +"scriptet kan fint anvendes sammen med tænd/sluk-tidsplaner." + +#: templates/documentation/wake_plans/index.html +msgid "" +"If you are visiting this page for the first time, we recommend first reading " +"our" +msgstr "" +"Hvis det er første gang du besøger denne side, vil vi foreslå at starte med " +"at læse vores" + +#: templates/documentation/wake_plans/index.html +#: templates/system/wake_plan/wake_plan.html +msgid "User guide to power saving functions in OS2borgerPC" +msgstr "Brugerguide til strømsparefunktioner i OS2borgerPC" + +#: templates/documentation/wake_plans/index.html +msgid "The suspend script" +msgstr "Dvale-scriptet" + +#: templates/documentation/wake_plans/index.html +msgid "" +"The suspend script can be used to configure computers to automatically " +"suspend after a number of minutes of inactivity. A chosen warning is " +"displayed before the computer is suspended. The script takes five arguments: " +"whether to activate the function, the number of minutes of inactivity before " +"the warning is shown, the number of minutes of inactivity before the " +"computer suspends, the text in the warning and the text on the button in the " +"warning. If the last two text-related inputs are left empty, default texts " +"will be used. The script automatically logs out the user before the computer " +"suspends." +msgstr "" +"Dvale-scriptet kan bruges til at indstille computere til at gå i dvale efter " +"et antal minutters inaktivitet. Der vises en valgfri advarsel, inden " +"computeren går i dvale. Scriptet tager fem argumenter: hvorvidt funktionen " +"skal aktiveres, antal minutter med inaktivitet før advarslen vises, antal " +"minutter med inaktivitet før computeren går i dvale, teksten i advarslen og " +"teksten på knappen i advarslen. Hvis de to sidste tekst-relaterede input " +"ikke angives, benyttes standardtekster. Scriptet logger automatisk borgeren " +"ud, inden computeren går i dvale." + +#: templates/documentation/wake_plans/index.html +msgid "" +"The suspend script can also suspend the computer when it is inactive on the " +"login screen. However, this requires that script execution at login has been " +"enabled via the script" +msgstr "" +"Dvale-scriptet kan også sætte computeren i dvale, hvis den står inaktiv på " +"login-skærmen. Dette kræver dog, at scriptkørsel ved login er blevet slået " +"til via scriptet" + +#: templates/documentation/wake_plans/index.html +msgid "" +"Script execution at login is automatically enabled on image 5.0.0 and newer " +"images. The warning will not be shown on the login screen." +msgstr "" +"Scriptkørsel ved login er automatisk slået til på image 5.0.0 og nyere " +"images. Advarslen vises ikke på login-skærmen." + +#: templates/documentation/wake_plans/index.html +msgid "" +"Be aware that USB surveillance cannot be active while the computer is " +"suspended." +msgstr "" +"Bemærk at USB-overvågning ikke kan være aktiv, mens en computer er i dvale." + +#: templates/documentation/wake_plans/index.html +msgid "" +"An on/off schedule is a tool for planning and administrating on and off " +"times for computers in one or more groups." +msgstr "" +"En Tænd/Sluk tidsplan er et redskab til at planlægge og administrere tænd- " +"og sluk-tidspunkter for computerne i en eller flere grupper." + +#: templates/documentation/wake_plans/index.html +msgid "The use of On/Off schedules makes it unnecessary to use the scripts" +msgstr "Brugen af Tænd/Sluk tidsplaner overflødiggør scriptsene" + +#: templates/documentation/wake_plans/index.html +msgid "" +"When you click on \"On/Off schedule\" in the left-hand menu, a list of " +"schedules for the chosen site will be shown to the right of the left-hand " +"menu. You can click on a particular schedule in order to edit that schedule." +msgstr "" +"Når man klikker på \"Tænd/Sluk tidsplan\" i venstremenuen, vil man til højre " +"for venstremenuen få vist en liste af tidsplaner for det site, man er under. " +"Man kan klikke på navnet for den enkelte tidsplan for at redigere tidsplanen." + +#: templates/documentation/wake_plans/index.html +msgid "" +"The editing interface for the chosen schedule is shown on the right. If no " +"schedules have been created for the chosen site, the interface for creating " +"schedules will be shown instead." +msgstr "" +"Til højre vises redigeringsinterfacet for den valgte tidsplan. Hvis ikke der " +"er oprettet nogen tidsplaner for det site, man er under, vises interfacet " +"til oprettelse af tidsplaner." + +#: templates/documentation/wake_plans/index.html +msgid "" +"When you click on a schedule, you will by default be shown the schedule's " +"settings as well as the exceptions and groups that are associated with the " +"schedule. Here you can change the schedule's name, status, sleep state and " +"settings for the general week plan as well as add/remove groups or " +"exceptions from the schedule. Changes do not take effect until you've " +"clicked on the \"Save changes\"-button at the bottom of the screen." +msgstr "" +"Som standard når man klikker sig ind på en tidsplan, vil man få vist " +"tidsplanens indstillinger samt hvilke undtagelser og grupper, der er knyttet " +"til tidsplanen. Her kan man ændre tidsplanens navn, status, dvaletilstand og " +"indstillinger for den faste ugeplan, samt tilføje/fjerne grupper eller " +"undtagelser fra tidsplanen. Ændringer foretaget på siden træder ikke i " +"kraft, før man klikker på \"Gem ændringer\"-knappen i bunden af " +"skærmbilledet." + +#: templates/documentation/wake_plans/index.html +msgid "" +"If you click on \"Create closed days\", \"Create altered opening hours\" or " +"\"Edit exceptions\", you will be redirected to a new page where you can " +"create new exceptions and edit or delete existing exceptions. The two " +"\"Create\" buttons take you directly to an interface for that particular " +"type of exception while \"Edit exceptions\" opens the editing interface for " +"the first exception for the chosen site." +msgstr "" +"Hvis man trykker på \"Opret lukkedag\", \"Opret ændrede åbningstider\" eller " +"\"Rediger undtagelser\" omdirigeres man til en ny side, hvor man kan oprette " +"nye undtagelser og redigere eller slette eksisterende undtagelser. De to " +"\"Opret\" knapper går direkte til et interface for den pågældende type " +"undtagelse, mens \"Rediger undtagelser\" åbner redigeringssiden for den " +"første undtagelse for det site, man er under." + +#: templates/documentation/wake_plans/index.html +msgid "The different editing options are described more closely here:" +msgstr "" +"De forskellige redigeringsmuligheder beskrives nærmere under disse punkter:" + +#: templates/documentation/wake_plans/index.html +msgid "" +"If you wish to create a new schedule, you must click on \"Add new On/Off " +"schedule\" above the list of schedules. This opens an interface where you " +"must enter a name for the schedule and have the option of editing the " +"settings and adding exceptions or groups. When you click on \"Save changes" +"\", you will be redirected to the editing interface for the newly screated " +"schedule where you can continue to edit the settings and add exceptions or " +"groups. If the schedule status is set to \"Active\", it will also take " +"effect when you click on \"Save changes\"." +msgstr "" +"Hvis man ønsker at oprette en ny tidsplan, skal man klikke på \"Tilføj ny " +"tænd/sluk tidsplan\" oven over listen med tidsplaner. Dette åbner et " +"interface, hvor man skal udfylde navn for tidsplanen og har mulighed for at " +"redigere i indstillingerne, tilføje undtagelser eller indmelde grupper. Når " +"man klikker på \"Gem ændringer\", vil man blive viderestillet til " +"redigeringssiden for den nyoprettede tidsplan, hvor man kan fortsætte med at " +"ændre i indstillingerne, tilføje undtagelser eller indmelde grupper. Hvis " +"tidsplanen er sat til \"Aktiv\" vil den også tage effekt, når man klikker på " +"\"Gem ændringer\"." + +#: templates/documentation/wake_plans/index.html +msgid "Important information" +msgstr "Vigtige bemærkninger" + +#: templates/documentation/wake_plans/index.html +msgid "" +"A computer can only receive a new/updated schedule if it is on. If a " +"computer is added to a schedule or its schedule is changed while it is off, " +"it will only begin following the new/updated schedule once it has been on." +msgstr "" +"En computer kan kun modtage en ny/opdateret tidsplan, hvis den tændt. Hvis " +"en computer tilmeldes en tidsplan, eller dens tidsplan ændres, mens den er " +"slukket, vil den først begynde at følge den nye/opdaterede tidsplan, når den " +"har været tændt." + +#: templates/documentation/wake_plans/index.html +msgid "" +"If a computer is manually turned on after its off time or on a day where it " +"is set to be constantly off, it will not turn off automatically until the " +"off time for the next day. If no off time has been set for the next day, it " +"will turn off automatically 24 hours after it was turned on. If the computer " +"is turned off manually, it will turn on according to the schedule." +msgstr "" +"Hvis en computer manuelt tændes efter dens sluk-tidspunkt, eller på en dag " +"hvor den er sat til at være konstant slukket, vil den først slukke " +"automatisk på sluk-tidspunktet for næste dag. Hvis der ikke findes et sluk-" +"tidspunkt for næste dag, vil den automatisk slukke 24 timer efter den blev " +"tændt. Hvis computeren manuelt slukkes igen, vil den vågne efter tidsplanen." + +#: templates/documentation/wake_plans/index.html +msgid "UEFI/BIOS settings" +msgstr "Indstilling af UEFI/BIOS" + +#: templates/documentation/wake_plans/index.html +msgid "" +"If UEFI/BIOS has been set to turn on the computer at a specific time, and " +"the computer belongs to an active On/Off schedule, then the computer will " +"not turn on according to the on times in the schedule, but instead follow " +"the times set in the UEFI/BIOS. It will, however, turn off according to the " +"schedule. If you want the computer to follow the on times set in the " +"schedule then you must enter UEFI/BIOS and disable the UEFI/BIOS control of " +"on times. It is generally not possible to modify UEFI/BIOS from the OS so it " +"cannot be done via scripts." +msgstr "" +"Hvis UEFI/BIOS er indstillet til at vågne op på et bestemt tidspunkt, og " +"computeren tilhører en aktiv Tænd/Sluk Tidsplan, så vil computeren ikke " +"følge opstartstidspunkterne i tidsplanen, men i stedet de tidspunkter, der " +"står i UEFI/BIOS. Den vil dog stadig følge nedlukningstidspunkterne sat i " +"tidsplanen. Hvis computeren skal følge opstartstidspunkterne i tidsplanen, " +"skal man ind i UEFI/BIOS på computeren og slå dens styring af " +"opstartstidspunkt fra. Modificering af UEFI/BIOS er generelt ikke muligt at " +"gøre fra styresystemet, så derfor kan vi heller ikke gøre det via scripts." + +#: templates/documentation/wake_plans/index.html +msgid "" +"If the computers temporarily lose power while they are turned off according " +"to the schedule, they will still turn on according to the schedule. (So long " +"as the CMOS battery is still charged.) However, if the computers lose power " +"while they are on, they will not turn on automatically." +msgstr "" +"Hvis computerne midlertidigt mister strømmen, mens de er lukket ned efter " +"tidsplanen, vil de stadig vågne op ifølge tidsplanen. (Dvs. teknisk set så " +"længe der stadig er strøm på CMOS-batteriet.) Men hvis de mister strømmen, " +"mens de er tændt, så vil de ikke vågne op af sig selv." + +#: templates/documentation/wake_plans/index.html +msgid "" +"Some UEFI/BIOS systems include the option to set the computer to return to " +"its last state (or turn on) after a power failure. We recommend turning this " +"option on." +msgstr "" +"Nogle UEFI/BIOS'er har muligheden for at indstille, at computeren gendanner " +"dens seneste tilstand (eller tænder) bagefter, hvis den mistede strømmen. " +"Det vil vi derfor anbefale at slå til." + +#: templates/documentation/wake_plans/index.html +msgid "" +"The layout may differ depending on the UEFI/BIOS version, but here is an " +"example from a NUC: From the overview you choose \"Advanced\" and then " +"\"Power\":" +msgstr "" +"Afhængigt af UEFI/BIOS-version kan det se forskelligt ud, men her er et " +"eksempel fra en NUC: Fra oversigtssiden vælger du \"Advanced\" og dernæst " +"\"Power\":" + +#: templates/documentation/wake_plans/index.html +msgid "" +"Next, you edit the setting \"After Power Failure\" and set it to \"Last State" +"\" (recommended) or \"Power On\"." +msgstr "" +"Dernæst går du så ind og redigerer indstillingen \"After Power Failure\" og " +"sætter denne til \"Last State\" (anbefalet) eller \"Power On\"." + +#: templates/documentation/wake_plans/index.html +msgid "Frequently asked questions" +msgstr "Ofte stillede spørgsmål" + +#: templates/documentation/wake_plans/index.html +msgid "1. How do I add a single PC to a schedule?" +msgstr "1. Hvordan tilmelder jeg en enkelt-PC til en tidsplan?" + +#: templates/documentation/wake_plans/index.html +msgid "" +"On/Off schedules are designed to work with groups, so it is not possible to " +"directly add a single PC to a schedule. You can, however, always create a " +"group that only contains that one PC and then add that group to the schedule." +msgstr "" +"Tænd/sluk tidsplaner er designet til at fungere med grupper, og man kan " +"derfor ikke direkte tilmelde en enkelt-PC til en tidsplan. Man kan dog altid " +"oprette en gruppe, som kun indeholder denne ene PC, og tilmelde denne gruppe " +"til tidsplanen." + +#: templates/documentation/wake_plans/index.html +msgid "2. What happens if the computer experiences a power failure?" +msgstr "2. Hvad sker der, hvis computeren mister strøm?" + +#: templates/documentation/wake_plans/index.html +msgid "Check the second paragraph under \"UEFI/BIOS settings\" further up." +msgstr "Se punkt 2. under \"Indstilling af UEFI/BIOS\" længere oppe." + +#: templates/documentation/wake_plans/index.html +msgid "3. The computer turns on and off at the wrong times?" +msgstr "3. Computeren starter og lukker på de forkerte tidspunkter?" + +#: templates/documentation/wake_plans/index.html +msgid "" +"This could be due to incorrect time settings on the computer, which could be " +"caused by the computer being unable to perform time synchronization. Ubuntu " +"Linux - and many other operating systems - normally performs time " +"synchronization via the protocol NTP (Network Time Protocol). NTP runs on " +"port 123 via UDP, which we thus suggest allowing in your network " +"configuration. If you do not wish to allow this traffic on all domains, we " +"could develop a script that forces NTP to only check specific URL's." +msgstr "" +"Dette kan skyldes, at tiden på computeren er indstillet forkert, eksempelvis " +"fordi den ikke har mulighed for at tidssynkronisere. Normalt " +"tidssynkroniserer Ubuntu Linux - og flere andre styresystemer - via " +"protokollen NTP (Network Time Protocol). NTP kører på port 123 over UDP, som " +"vi derfor foreslår at åbne for i jeres netværksopsætning. Hvis I ikke ønsker " +"at åbne for trafikken på alle domæner, ville vi kunne se på at udvikle et " +"script, der låser NTP til kun at tjekke bestemte URL'er." + +#: templates/documentation/wake_plans/index.html +msgid "" +"4. The computer turns on at the wrong times, but turns off according to " +"schedule?" +msgstr "" +"4. Computeren starter på de forkerte tidspunkter, men lukker planmæssigt?" + +#: templates/documentation/wake_plans/index.html +msgid "" +"This could be due to the UEFI/BIOS settings. Check the first paragraph under " +"\"UEFI/BIOS settings\" further up." +msgstr "" +"Dette kan skyldes indstillingerne sat i UEFI/BIOS. Se punkt 1. under " +"\"Indstilling af UEFI/BIOS\" længere oppe." + +#: templates/logout.html +msgid "You have been logged out" +msgstr "Du er nu logget ud" + +#: templates/logout.html +msgid "Click here to log in again" +msgstr "Klik her for at logge ind igen" + +#: templates/site_with_navigation.html +msgid "Monitoring" +msgstr "Overvågning" + +#: templates/site_with_navigation.html +#: templates/system/event_rules/shared_navigation.html +msgid "Monitoring Rules" +msgstr "Overvågningsregler" + +#: templates/site_with_navigation.html +msgid "Organizing" +msgstr "Organisering" + +#: templates/site_with_navigation.html +msgid "2FA on Computers" +msgstr "2FA på Computere" -#: templates/site_with_navigation.html:94 +#: templates/site_with_navigation.html msgid "Scripting" msgstr "Scripting" -#: templates/site_with_navigation.html:107 -msgid "Users & versions" -msgstr "Brugere & versioner" +#: templates/site_with_navigation.html +msgid "Users & Images" +msgstr "Brugere & Images" -#: templates/site_with_navigation.html:115 -#: templates/system/site_image_versions.html:4 -#: templates/system/site_image_versions.html:48 -msgid "Versions" -msgstr "Versioner" - -#: templates/site_with_navigation.html:127 -msgid "Administrating security scripts" -msgstr "Administration af sikkerhedsscripts" +#: templates/site_with_navigation.html templates/system/site_images.html +msgid "Images" +msgstr "" -#: templates/site_with_navigation.html:131 +#: templates/site_with_navigation.html msgid "Security rule definition" msgstr "Definition af sikkerhedsregler" -#: templates/site_with_navigation.html:135 -msgid "Help regarding security events" -msgstr "Hjælp til sikkerhedshændelser" +#: templates/site_with_navigation.html +msgid "Offline rule definition" +msgstr "Definition af offline-regler" -#: templates/site_with_navigation.html:140 -msgid "Administrating computers" -msgstr "Administration af computere" +#: templates/site_with_navigation.html +msgid "Help regarding events" +msgstr "Hjælp til hændelser" -#: templates/site_with_navigation.html:145 +#: templates/site_with_navigation.html msgid "Administrating groups" msgstr "Administration af grupper" -#: templates/site_with_navigation.html:150 +#: templates/site_with_navigation.html msgid "Administrating on/off schedules" msgstr "Administration af tidsplaner" -#: templates/site_with_navigation.html:158 +#: templates/site_with_navigation.html msgid "Help regarding the job list" msgstr "Hjælp til joblisten" -#: templates/site_with_navigation.html:163 -msgid "Administrating users" -msgstr "Administration af brugere" - -#: templates/site_with_navigation.html:168 +#: templates/site_with_navigation.html msgid "Help regarding the news page" msgstr "Hjælp til nyhedssiden" -#: templates/site_with_navigation.html:175 -msgid "Administrating scripts" -msgstr "Administration af scripts" - -#: templates/site_with_navigation.html:179 -msgid "Executing scripts" -msgstr "Afvikling af scripts" - -#: templates/site_with_navigation.html:192 +#: templates/site_with_navigation.html msgid "Read the documentation ..." msgstr "Læs dokumentation ..." -#: templates/sitebase.html:12 +#: templates/sitebase.html msgid "Welcome" msgstr "Velkommen" -#: templates/sitebase.html:24 +#: templates/sitebase.html msgid "Log out" msgstr "Log ud" -#: templates/system/changelog/comments/form.html:8 -msgid "Answer to" -msgstr "Svar til" +#: templates/system/configs/list.html +#: templates/system/site_settings/api_keys/api_keys.html +msgid "Key" +msgstr "Nøgle" -#: templates/system/changelog/comments/form.html:8 -msgid "Write a comment" -msgstr "Skriv en kommentar" +#: templates/system/configs/list.html templates/system/configs/templates.html +msgid "Value" +msgstr "Værdi" -#: templates/system/changelog/comments/form.html:9 -msgid "Add comment" -msgstr "Tilføj kommentar" +#: templates/system/configs/list.html +#: templates/system/pcgroups/policy_list/list.html +#: templates/system/site_settings/api_keys/api_keys.html +msgid "Actions" +msgstr "Handlinger" -#: templates/system/changelog/comments/form.html:10 -#: templates/system/configs/form.html:16 -#: templates/system/configs/templates.html:40 -#: templates/system/pcgroups/confirm_delete.html:43 -#: templates/system/pcgroups/form.html:16 -#: templates/system/pcgroups/policy_list/templates.html:24 -#: templates/system/pcgroups/site_groups.html:144 -#: templates/system/pcgroups/site_groups.html:183 -#: templates/system/pcs/confirm_delete.html:25 -#: templates/system/pcs/form.html:131 templates/system/pcs/form.html:141 -#: templates/system/scripts/confirm_delete.html:64 -#: templates/system/scripts/create.html:39 -#: templates/system/scripts/create.html:41 -#: templates/system/scripts/update.html:79 -#: templates/system/scripts/update.html:126 -#: templates/system/security_events/site_security_events.html:101 -#: templates/system/security_problems/confirm_delete.html:49 -#: templates/system/security_problems/site_security_problems.html:112 -#: templates/system/security_problems/site_security_problems.html:157 -#: templates/system/site_settings.html:60 -#: templates/system/users/confirm_delete.html:20 -#: templates/system/users/create.html:17 templates/system/users/update.html:60 -#: templates/system/users/update.html:87 -#: templates/system/wake_plan/confirm_delete.html:31 -#: templates/system/wake_plan/wake_change_events/confirm_delete.html:29 -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:114 -#: templates/system/wake_plan/wake_plan.html:277 -msgid "Cancel" -msgstr "Annuller" +#: templates/system/configs/list.html +msgid "Add new configuration" +msgstr "Tilføj ny konfiguration" -#: templates/system/changelog/comments/form.html:14 -msgid "Please log in to add your comment" -msgstr "Log venligst ind for at kommentere" +#: templates/system/configs/list.html +msgid "Add configuration" +msgstr "Tilføj konfiguration" -#: templates/system/changelog/comments/item.html:4 -msgid "On the date" -msgstr "Den" +#: templates/system/configs/list.html +#: templates/system/pcgroups/policy_list/list.html +msgid "You must specify a" +msgstr "Du skal angive en" -#: templates/system/changelog/comments/item.html:4 -msgid "answered" -msgstr "svarede" +#: templates/system/configs/list.html +msgid "when inserting a configuration list" +msgstr "når der indsættes i en konfigurationsliste" -#: templates/system/changelog/comments/item.html:4 -msgid "wrote" -msgstr "skrev" +#: templates/system/configs/templates.html +msgid "Handle configuration" +msgstr "Håndter konfiguration" + +#: templates/system/configs/templates.html +#: templates/system/pcgroups/policy_list/templates.html +msgid "Save" +msgstr "Gem" + +#: templates/system/event_rules/event_rule_server_confirm_delete.html +msgid "Delete offline rule" +msgstr "Slet offline-regel" + +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/pcgroups/site_groups.html +msgid "Offline Rule" +msgstr "Offline-regel" -#: templates/system/changelog/comments/item.html:13 +#: templates/system/event_rules/event_rule_server_confirm_delete.html #, python-format -msgid "Show %(comment_comment_children_count)s answer(s)" -msgstr "Vis %(comment_comment_children_count)s svar" +msgid "" +"If a %(offline_rule)s is deleted, the related %(events)s will also be " +"deleted." +msgstr "" +"Hvis en %(offline_rule)s slettes, vil de relaterede %(events)s også blive " +"slettet." -#: templates/system/changelog/comments/item.html:26 -msgid "Answer" -msgstr "Svar" +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/event_rules/security_problem_confirm_delete.html +msgid "Email recipients" +msgstr "E-mail-modtagere" -#: templates/system/changelog/item.html:15 -#: templates/system/changelog/list.html:65 -#: templates/system/changelog/list.html:119 -msgid "News categories" -msgstr "Nyhedskategorier" +#: templates/system/event_rules/event_rule_server_confirm_delete.html +msgid "the Offline Rule" +msgstr "Offline-reglen" -#: templates/system/changelog/item.html:27 -msgid "Related to version" -msgstr "Relateret til version" +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#, python-format +msgid "" +"Associated %(groups)s and %(email_recipients)s will be removed from " +"%(the_offline_rule)s." +msgstr "" +"Tilknyttede %(groups)s og %(email_recipients)s vil blive fjernet fra " +"%(the_offline_rule)s." -#: templates/system/changelog/item.html:35 -msgid "Written by" -msgstr "Skrevet af" +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/event_rules/security_problem_confirm_delete.html +msgid "The Groups" +msgstr "Grupperne" -#: templates/system/changelog/item.html:45 -msgid "Comments" -msgstr "Kommentarer" +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/event_rules/security_problem_confirm_delete.html +msgid "the Email recipients" +msgstr "E-mail-modtagerne" -#: templates/system/changelog/list.html:31 -msgid "Back to login" -msgstr "Tilbage til login" +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/pcgroups/confirm_delete.html +msgid "NOT" +msgstr "IKKE" -#: templates/system/changelog/list.html:37 -msgid "Help for this news site" -msgstr "Hjælp til nyhedssiden" +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#, python-format +msgid "" +"%(the_groups)s and %(the_email_recipients)s themselves will %(NOT)s be " +"deleted." +msgstr "" +"Selve %(the_groups)s og %(the_email_recipients)s vil %(NOT)s blive slettet." + +#: templates/system/event_rules/event_rule_server_confirm_delete.html +msgid "Are you sure you wish to delete the Offline Rule" +msgstr "Er du sikker på, at du ønsker at slette Offline-reglen" + +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/pcgroups/confirm_delete.html +#: templates/system/pcs/confirm_delete.html +#: templates/system/scripts/confirm_delete.html +#: templates/system/sites/confirm_delete.html +#: templates/system/users/confirm_delete.html +#: templates/system/wake_plan/confirm_delete.html +#: templates/system/wake_plan/wake_change_events/confirm_delete.html +msgid "Confirm deletion" +msgstr "Bekræft sletning" -#: templates/system/changelog/list.html:57 -msgid "Search..." -msgstr "Søg..." +#: templates/system/event_rules/security_problem_confirm_delete.html +msgid "Delete security rule" +msgstr "Slet sikkerhedsregel" -#: templates/system/changelog/list.html:70 -#: templates/system/changelog/list.html:72 -msgid "All" -msgstr "Alle" +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/scripts/confirm_delete.html +msgid "Security Rule" +msgstr "Sikkerhedsregel" -#: templates/system/changelog/list.html:92 -msgid "Showing news in the catagory of" -msgstr "Viser nyheder i kategorien" +#: templates/system/event_rules/security_problem_confirm_delete.html +#, python-format +msgid "" +"If a %(security_rule)s is deleted, the related %(events)s will also be " +"deleted." +msgstr "" +"Hvis en %(security_rule)s slettes, vil de relaterede %(events)s også blive " +"slettet." -#: templates/system/changelog/list.html:94 -msgid "Showing" -msgstr "Viser" +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/scripts/confirm_delete.html +#: templates/system/scripts/create.html templates/system/scripts/update.html +msgid "Security Script" +msgstr "Sikkerhedsscript" -#: templates/system/changelog/list.html:94 -#: templates/system/security_problems/site_security_problems.html:70 -msgid "all" -msgstr "alle" +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/scripts/confirm_delete.html +msgid "the Security Rule" +msgstr "Sikkerhedsreglen" -#: templates/system/changelog/list.html:94 -msgid "news" -msgstr "nyheder" +#: templates/system/event_rules/security_problem_confirm_delete.html +#, python-format +msgid "" +"Associated %(groups)s, %(security_script)s and %(email_recipients)s will be " +"removed from %(the_security_rule)s." +msgstr "" +"Tilknyttede %(groups)s, %(security_script)s og %(email_recipients)s vil " +"blive fjernet fra %(the_security_rule)s." -#: templates/system/changelog/list.html:98 -msgid "that matches the query" -msgstr "der matcher søgeordet" +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/scripts/confirm_delete.html +msgid "the Security Script" +msgstr "Sikkerhedsscriptet" -#: templates/system/changelog/list.html:115 -msgid "Read more" -msgstr "Læs mere" +#: templates/system/event_rules/security_problem_confirm_delete.html +#, python-format +msgid "" +"%(the_groups)s, %(the_security_script)s and %(the_email_recipients)s " +"themselves will %(NOT)s be deleted." +msgstr "" +"Selve %(the_groups)s, %(the_security_script)s og %(the_email_recipients)s " +"vil %(NOT)s blive slettet." -#: templates/system/changelog/list.html:128 -msgid "Show" -msgstr "Vis" +#: templates/system/event_rules/security_problem_confirm_delete.html +msgid "Are you sure you wish to delete the Security Rule" +msgstr "Er du sikker på, du ønsker at slette Sikkerhedsreglen" -#: templates/system/changelog/list.html:129 -msgid "chat" -msgstr "chat" +#: templates/system/event_rules/shared_navigation.html +msgid "Add new security rule" +msgstr "Tilføj ny sikkerhedsregel" -#: templates/system/changelog/list.html:146 -#: templates/system/changelog/list.html:150 -msgid "Previous" -msgstr "Forrige" +#: templates/system/event_rules/shared_navigation.html +msgid "Add new offline rule" +msgstr "Tilføj ny offline-regel" -#: templates/system/changelog/list.html:180 -#: templates/system/changelog/list.html:184 -#: templates/system/scripts/run_step1.html:67 -msgid "Next" -msgstr "Næste" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +msgid "Add group to surveillance" +msgstr "Tilføj gruppe til overvågning" -#: templates/system/configs/form.html:7 -msgid "Edit arguments" -msgstr "Redigér parameter" - -#: templates/system/configs/form.html:15 -#: templates/system/pcgroups/site_groups.html:143 -#: templates/system/pcs/form.html:130 templates/system/pcs/form.html:140 -#: templates/system/scripts/update.html:77 -#: templates/system/security_problems/site_security_problems.html:111 -#: templates/system/site_settings.html:59 templates/system/users/update.html:56 -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:113 -#: templates/system/wake_plan/wake_plan.html:276 -msgid "Save changes" -msgstr "Gem ændringer" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +msgid "Remove monitored group" +msgstr "Fjern overvåget gruppe" -#: templates/system/configs/item.html:16 -#: templates/system/pcgroups/policy_list/item.html:79 -#: templates/system/scripts/update.html:47 -msgid "Edit" -msgstr "Redigér" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +msgid "Add email recipient" +msgstr "Tilføj e-mail-modtager" -#: templates/system/configs/item.html:19 -#: templates/system/scripts/confirm_delete.html:8 -#: templates/system/scripts/form.html:108 -msgid "Delete" -msgstr "Slet" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +msgid "Remove recipient" +msgstr "Fjern modtager" -#: templates/system/configs/list.html:7 -msgid "Key" -msgstr "Nøgle" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +#: templates/system/pcgroups/site_groups.html templates/system/pcs/form.html +#: templates/system/wake_plan/wake_plan.html +msgid "None chosen" +msgstr "Ingen valgt" -#: templates/system/configs/list.html:8 -#: templates/system/configs/templates.html:30 -msgid "Value" -msgstr "Værdi" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +#: templates/system/pcgroups/site_groups.html templates/system/pcs/form.html +msgid "Details about" +msgstr "Detaljer om" -#: templates/system/configs/list.html:9 -#: templates/system/pcgroups/policy_list/list.html:11 -msgid "Actions" -msgstr "Handlinger" +#: templates/system/event_rules/site_event_rules_server.html +msgid "New offline rule" +msgstr "Ny offline-regel" -#: templates/system/configs/list.html:19 -msgid "Add new configuration" -msgstr "Tilføj ny konfiguration" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +msgid "empty" +msgstr "tom" -#: templates/system/configs/list.html:22 -msgid "Add configuration" -msgstr "Tilføj konfiguration" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +#, python-format +msgid "" +"If the rule does not have a Group added, the rule will apply to %(all)s " +"Computers." +msgstr "" +"Hvis der ikke er nogen Gruppe tilknyttet Reglen, så vil Reglen gælde %(all)s " +"Computere." -#: templates/system/configs/list.html:31 -#: templates/system/pcgroups/policy_list/list.html:31 -msgid "You must specify a" -msgstr "Du skal angive en" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +#, python-format +msgid "" +"If you want to temporarily disable a rule, you can create an %(empty)s Group " +"(i.e. a Group with no Computers) and set this Group as the monitored Group." +msgstr "" +"Ønsker du midlertidigt at gøre en Regel inaktiv, kan du oprette en %(empty)s " +"Gruppe (dvs. en Gruppe uden Computere) og sætte denne Gruppe som den " +"overvågede Gruppe." -#: templates/system/configs/list.html:31 -msgid "when inserting a configuration list" -msgstr "når der indsættes i en konfigurationsliste" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +msgid "" +"If a PC is a member of a group with one or more supervisors, those " +"supervisors will receive any email warnings related to that PC instead of " +"the recipients set here." +msgstr "" +"Hvis en PC er medlem af en Gruppe med en eller flere ansvarspersoner, så vil " +"disse ansvarspersoner modtage eventuelle email-advarsler relateret til den " +"PC i stedet for de modtagere, som er valgt her." -#: templates/system/configs/templates.html:14 -msgid "Handle configuration" -msgstr "Håndter konfiguration" +#: templates/system/event_rules/site_event_rules_server.html +msgid "" +"The rule is only active during the monitor period. We recommend choosing the " +"period such that you avoid e.g. offline events when the PC has been shut " +"down for the night." +msgstr "" +"Reglen er kun aktiv under overvågningsperioden. Vi anbefaler at vælge " +"perioden således, at du undgår f.eks. offline-hændelser, når Computeren " +"slukkes om natten." -#: templates/system/configs/templates.html:26 -#: templates/system/scripts/form.html:104 templates/system/site_status.html:19 -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:49 -msgid "Name" -msgstr "Navn" +#: templates/system/event_rules/site_event_rules_server.html +msgid "Monitor period" +msgstr "Overvågningsperiode" -#: templates/system/configs/templates.html:39 -#: templates/system/pcgroups/policy_list/templates.html:23 -msgid "Save" -msgstr "Gem" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/wake_plan/wake_change_events/wake_change_event.html +msgid "From" +msgstr "Fra" + +#: templates/system/event_rules/site_event_rules_server.html +msgid "Until" +msgstr "Til" + +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +msgid "Monitored groups" +msgstr "Overvågede grupper" + +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +msgid "Recipient(s) of email warning" +msgstr "Modtager(e) af e-mail-advarsel" + +#: templates/system/event_rules/site_security_problems.html +msgid "New security rule" +msgstr "Ny sikkerhedsregel" -#: templates/system/jobs/info.html:10 templates/system/jobs/restart.html:6 +#: templates/system/jobs/info.html templates/system/jobs/restart.html msgid "Restart job" msgstr "Genstart job" -#: templates/system/jobs/info.html:17 +#: templates/system/jobs/info.html +msgid "Copy log to the clipboard" +msgstr "Kopier log til udklipsholderen" + +#: templates/system/jobs/info.html +msgid "Log copied!" +msgstr "Log kopieret!" + +#: templates/system/jobs/info.html msgid "Log output" msgstr "Log output" -#: templates/system/jobs/restart.html:12 +#: templates/system/jobs/restart.html #, python-format msgid "" "Are you sure you want to restart the execution of the script %(job_name)s on " @@ -1261,95 +5139,61 @@ msgstr "" "Er du sikker på, at du vil genstarte kørslen af scriptet %(job_name)s på " "computeren %(pc_name)s?" -#: templates/system/jobs/restart.html:18 +#: templates/system/jobs/restart.html msgid "Yes" msgstr "Ja" -#: templates/system/jobs/restart.html:20 +#: templates/system/jobs/restart.html msgid "No" msgstr "Nej" -#: templates/system/jobs/site_jobs.html:22 -#: templates/system/security_events/site_security_events.html:23 -msgid "Filters" -msgstr "Filtre" - -#: templates/system/jobs/site_jobs.html:23 -#: templates/system/security_events/site_security_events.html:25 +#: templates/system/jobs/site_jobs.html +#: templates/system/security_events/site_security_events.html msgid "Reset filters" msgstr "Nulstil filtre" -#: templates/system/jobs/site_jobs.html:60 +#: templates/system/jobs/site_jobs.html msgid "Batches" msgstr "Batches" -#: templates/system/jobs/site_jobs.html:157 -#: templates/system/pcgroups/policy_list/list.html:9 -#: templates/system/pcs/form.html:149 -#: templates/system/scripts/confirm_delete.html:12 -#: templates/system/scripts/create.html:19 -#: templates/system/scripts/create.html:37 -#: templates/system/scripts/update.html:18 -#: templates/system/scripts/update.html:51 -#: templates/system/scripts/update.html:118 -#: templates/system/scripts/update.html:125 +#: templates/system/jobs/site_jobs.html +#: templates/system/pcgroups/policy_list/list.html +#: templates/system/pcs/form.html templates/system/scripts/confirm_delete.html +#: templates/system/scripts/create.html templates/system/scripts/update.html msgid "Script" msgstr "Script" -#: templates/system/jobs/site_jobs.html:158 +#: templates/system/jobs/site_jobs.html msgid "User" msgstr "Bruger" -#: templates/system/jobs/site_jobs.html:159 templates/system/pcs/form.html:150 -#: templates/system/scripts/form.html:8 +#: templates/system/jobs/site_jobs.html templates/system/pcs/form.html +#: templates/system/scripts/update.html msgid "Created" msgstr "Oprettet" -#: templates/system/jobs/site_jobs.html:160 templates/system/pcs/form.html:151 +#: templates/system/jobs/site_jobs.html templates/system/pcs/form.html msgid "Started" msgstr "Startet" -#: templates/system/jobs/site_jobs.html:161 templates/system/pcs/form.html:152 +#: templates/system/jobs/site_jobs.html templates/system/pcs/form.html msgid "Finished" msgstr "Sluttet" -#: templates/system/jobs/site_jobs.html:163 -#: templates/system/wake_plan/wake_plan.html:39 -msgid "Computer" -msgstr "Computer" - -#: templates/system/jobs/site_jobs.html:176 -#: templates/system/security_events/site_security_events.html:128 +#: templates/system/jobs/site_jobs.html +#: templates/system/security_events/site_security_events.html msgid "Loading data..." msgstr "Henter data..." -#: templates/system/pcgroups/confirm_delete.html:9 +#: templates/system/pcgroups/confirm_delete.html msgid "Delete group: " msgstr "Slet gruppe" -#: templates/system/pcgroups/confirm_delete.html:15 -#: templates/system/pcgroups/site_groups.html:126 -#: templates/system/pcs/confirm_delete.html:12 -#: templates/system/scripts/confirm_delete.html:20 -#: templates/system/security_problems/confirm_delete.html:13 -#: templates/system/security_problems/site_security_problems.html:68 -#: templates/system/wake_plan/confirm_delete.html:12 -#: templates/system/wake_plan/wake_change_events/confirm_delete.html:12 -#: templates/system/wake_plan/wake_plan.html:19 -msgid "Note" -msgstr "Bemærk" - -#: templates/system/pcgroups/confirm_delete.html:19 -#: templates/system/pcgroups/site_groups.html:64 -#: templates/system/scripts/confirm_delete.html:24 -msgid "Associated Scripts" -msgstr "Tilknyttede Scripts" - -#: templates/system/pcgroups/confirm_delete.html:20 +#: templates/system/pcgroups/confirm_delete.html msgid "the Group" msgstr "Gruppen" -#: templates/system/pcgroups/confirm_delete.html:21 +#: templates/system/pcgroups/confirm_delete.html #, python-format msgid "" "Associated %(computers)s and %(asc_scripts)s will be removed from " @@ -1358,123 +5202,114 @@ msgstr "" "Tilknyttede %(computers)s og %(asc_scripts)s vil blive fjernet fra " "%(the_group)s." -#: templates/system/pcgroups/confirm_delete.html:26 +#: templates/system/pcgroups/confirm_delete.html msgid "The Computers" msgstr "Computerne" -#: templates/system/pcgroups/confirm_delete.html:27 +#: templates/system/pcgroups/confirm_delete.html msgid "the Scripts" msgstr "Scriptsene" -#: templates/system/pcgroups/confirm_delete.html:28 -#: templates/system/security_problems/confirm_delete.html:35 -msgid "NOT" -msgstr "IKKE" - -#: templates/system/pcgroups/confirm_delete.html:29 +#: templates/system/pcgroups/confirm_delete.html #, python-format msgid "%(the_computers)s and %(the_scripts)s will %(not)s be deleted." msgstr "%(the_computers)s og %(the_scripts)s vil %(not)s blive slettet." -#: templates/system/pcgroups/confirm_delete.html:36 +#: templates/system/pcgroups/confirm_delete.html msgid "Are you sure you want to delete the group " msgstr "Er du sikker på, at du ønsker at slette gruppen " -#: templates/system/pcgroups/confirm_delete.html:42 -#: templates/system/pcs/confirm_delete.html:24 -#: templates/system/scripts/confirm_delete.html:63 -#: templates/system/security_problems/confirm_delete.html:48 -#: templates/system/users/confirm_delete.html:19 -#: templates/system/wake_plan/confirm_delete.html:30 -#: templates/system/wake_plan/wake_change_events/confirm_delete.html:28 -msgid "Confirm deletion" -msgstr "Bekræft sletning" - -#: templates/system/pcgroups/form.html:7 -msgid "New group" -msgstr "Ny gruppe" - -#: templates/system/pcgroups/form.html:15 -#: templates/system/pcgroups/site_groups.html:182 -msgid "Create group" -msgstr "Opret gruppe" - -#: templates/system/pcgroups/policy_list/item.html:50 +#: templates/system/pcgroups/policy_list/item.html msgid "None selected" msgstr "Ingen valgt" -#: templates/system/pcgroups/policy_list/item.html:82 -#: templates/system/scripts/templates.html:28 +#: templates/system/pcgroups/policy_list/item.html msgid "Remove" msgstr "Fjern" -#: templates/system/pcgroups/policy_list/list.html:8 +#: templates/system/pcgroups/policy_list/list.html msgid "Position" msgstr "Position" -#: templates/system/pcgroups/policy_list/list.html:10 -#: templates/system/scripts/form.html:36 +#: templates/system/pcgroups/policy_list/list.html +#: templates/system/scripts/form.html msgid "Arguments" msgstr "Inputparametre" -#: templates/system/pcgroups/policy_list/list.html:23 -#: templates/system/pcgroups/policy_list/templates.html:34 -msgid "Add script" -msgstr "Tilføj script" - -#: templates/system/pcgroups/policy_list/list.html:31 +#: templates/system/pcgroups/policy_list/list.html msgid "when inserting a policy list" msgstr "når der indsættes i en liste af tilknyttede scripts" -#: templates/system/pcgroups/policy_list/templates.html:17 +#: templates/system/pcgroups/policy_list/templates.html msgid "Edit script" msgstr "Redigér script" -#: templates/system/pcgroups/policy_list/templates.html:30 +#: templates/system/pcgroups/policy_list/templates.html msgid "Add script to group" msgstr "Tilføj script til gruppe" -#: templates/system/pcgroups/site_groups.html:24 -#: templates/system/pcgroups/site_groups.html:174 +#: templates/system/pcgroups/site_groups.html msgid "Add new group" msgstr "Tilføj ny gruppe" -#: templates/system/pcgroups/site_groups.html:34 +#: templates/system/pcgroups/site_groups.html msgid "Delete group" msgstr "Slet gruppe" -#: templates/system/pcgroups/site_groups.html:47 -#: templates/system/pcs/form.html:43 -#: templates/system/security_problems/site_security_problems.html:52 -msgid "Details about" -msgstr "Detaljer om" - -#: templates/system/pcgroups/site_groups.html:61 -#: templates/system/pcs/form.html:83 templates/system/scripts/form.html:29 +#: templates/system/pcgroups/site_groups.html templates/system/pcs/form.html +#: templates/system/scripts/form.html msgid "Details" msgstr "Detaljer" -#: templates/system/pcgroups/site_groups.html:88 +#: templates/system/pcgroups/site_groups.html msgid "Computers in this group" msgstr "Computere i gruppen" -#: templates/system/pcgroups/site_groups.html:94 +#: templates/system/pcgroups/site_groups.html msgid "Add a computer to the group" msgstr "Tilføj en computer til gruppen" -#: templates/system/pcgroups/site_groups.html:95 +#: templates/system/pcgroups/site_groups.html msgid "Remove computer from the group" msgstr "Fjern computer fra gruppen" -#: templates/system/pcgroups/site_groups.html:101 -msgid "Associated Security Rules" -msgstr "Tilknyttede Sikkerhedsregler" +#: templates/system/pcgroups/site_groups.html +msgid "Add a supervisor for the group" +msgstr "Tilføj en ansvarsperson for gruppen" + +#: templates/system/pcgroups/site_groups.html +msgid "Remove a supervisor for the group" +msgstr "Fjern en ansvarsperson fra gruppen" + +#: templates/system/pcgroups/site_groups.html +msgid "Supervisors for the group" +msgstr "Ansvarspersoner for denne gruppe" -#: templates/system/pcgroups/site_groups.html:113 +#: templates/system/pcgroups/site_groups.html +msgid "" +"This is used to control who receives the e-mails for Events, ie. Security " +"Events or Offline Events. If one or more Supervisors are set for a given " +"Group, these people will receive the e-mails instead of those set in the " +"Monitoring Rule" +msgstr "" +"Dette bruges til at styre hvem der modtager e-mails for Hændelser - dvs. " +"Sikkerhedshændelser og Offlinehændelser. Hvis én eller flere Ansvarspersoner " +"er indstillet for en given Gruppe, så vil disse personer modtage e-mails i " +"stedet for de personer, der er sat som modtagere på Overvågningsreglen." + +#: templates/system/pcgroups/site_groups.html +msgid "Effective monitoring rules for the group" +msgstr "Gældende overvågningsregler for gruppen" + +#: templates/system/pcgroups/site_groups.html +msgid "Security Problem" +msgstr "Sikkerhedsregel" + +#: templates/system/pcgroups/site_groups.html msgid "Associated On/Off schedule" msgstr "Tilknyttet Tænd/sluk tidsplan" -#: templates/system/pcgroups/site_groups.html:128 +#: templates/system/pcgroups/site_groups.html msgid "" "If a script that takes arguments is added to the list, then these arguments " "are to be entered first by clicking \"Edit\", before you can click \"Save " @@ -1483,11 +5318,23 @@ msgstr "" "Tilføjes et nyt script til listen, der tager parametre, skal disse parametre " "sættes først, ved tryk på \"Rediger\", før man kan \"Gemme ændringerne\"" -#: templates/system/pcgroups/site_groups.html:129 -msgid "Editing the script arguments will not make the script run again" -msgstr "Redigering af inputparametre medfører ikke, at et script køres på ny" +#: templates/system/pcgroups/site_groups.html +msgid "" +"Editing the script arguments will make the script run again on all Computers " +"in the Group. This can be toggled off under Site settings" +msgstr "" +"Redigering af inputparametre medfører, at et script køres på ny på alle " +"Computere i Gruppen. Dette kan slås fra under Site-indstillinger" + +#: templates/system/pcgroups/site_groups.html +msgid "" +"Editing the script arguments will not make the script run again. This can be " +"changed under Site settings" +msgstr "" +"Redigering af inputparametre medfører ikke, at et script køres på ny. Dette " +"kan ændres under Site-indstillinger" -#: templates/system/pcgroups/site_groups.html:130 +#: templates/system/pcgroups/site_groups.html msgid "" "Computers already in the group only run newly added scripts, but Computers " "newly added to the Group run all the scripts on the list" @@ -1495,114 +5342,104 @@ msgstr "" "Eksisterende Computere i Gruppen kører kun ny-tilføjede scripts, mens ny-" "tilføjede Computere til Gruppen kører hele listen af scripts" -#: templates/system/pcs/confirm_delete.html:6 templates/system/pcs/form.html:30 +#: templates/system/pcgroups/site_groups.html +msgid "" +"Removing a script from the Group will NOT remove the effect of the script " +"from the Computers in the Group" +msgstr "" +"Hvis et script fjernes fra Gruppen, medfører det IKKE, at scriptets effekt " +"fjernes fra Computerne i Gruppen" + +#: templates/system/pcgroups/site_groups.html +msgid "No groups were found" +msgstr "Ingen grupper blev fundet" + +#: templates/system/pcgroups/site_groups.html +msgid "" +"Clik the 'Add new group' button in the menu to the left to create a group" +msgstr "" +"Klik på 'Tilføj ny gruppe' knappen i menuen til venstre for at oprette en " +"gruppe" + +#: templates/system/pcgroups/site_groups.html +msgid "Create group" +msgstr "Opret gruppe" + +#: templates/system/pcs/confirm_delete.html templates/system/pcs/form.html msgid "Delete computer" msgstr "Slet computer" -#: templates/system/pcs/confirm_delete.html:14 +#: templates/system/pcs/confirm_delete.html msgid "The computer's entire job history will also be deleted" msgstr "Hele computerens jobhistorik vil også blive slettet" -#: templates/system/pcs/confirm_delete.html:18 +#: templates/system/pcs/confirm_delete.html msgid "Are you sure you want to delete the computer" msgstr "Er du sikker på, at du ønsker at slette computeren" -#: templates/system/pcs/form.html:17 +#: templates/system/pcs/form.html msgid "There are no computers" msgstr "Der er ingen computere" -#: templates/system/pcs/form.html:27 templates/system/site_status.html:38 +#: templates/system/pcs/form.html templates/system/site_status.html msgid "Not activated" msgstr "Ikke aktiveret" -#: templates/system/pcs/form.html:45 -msgid "See events for this computer" -msgstr "Se hændelser for denne computer" - -#: templates/system/pcs/form.html:58 +#: templates/system/pcs/form.html msgid "Registered" msgstr "Registreret" -#: templates/system/pcs/form.html:61 +#: templates/system/pcs/form.html msgid "Last check-in" msgstr "Seneste tjek-ind" -#: templates/system/pcs/form.html:63 templates/system/pcs/form.html:71 -#: templates/system/site_status.html:52 +#: templates/system/pcs/form.html templates/system/site_status.html msgid "ago" msgstr "siden" -#: templates/system/pcs/form.html:65 templates/system/pcs/form.html:73 -#: templates/system/site_status.html:54 templates/system/site_status.html:61 +#: templates/system/pcs/form.html templates/system/site_status.html msgid "Never" msgstr "Aldrig" -#: templates/system/pcs/form.html:69 -msgid "Last security event received" -msgstr "Seneste sikkerhedshændelse modtaget" - -#: templates/system/pcs/form.html:86 -msgid "Job history" -msgstr "Jobhistorik" +#: templates/system/pcs/form.html +msgid "Last event received" +msgstr "Seneste hændelse modtaget" -#: templates/system/pcs/form.html:116 +#: templates/system/pcs/form.html msgid "Groups the computer is a member of" msgstr "Grupper computeren er medlem af" -#: templates/system/pcs/form.html:122 +#: templates/system/pcs/form.html msgid "Add computer to group" msgstr "Tilføj computer til gruppe" -#: templates/system/pcs/form.html:123 +#: templates/system/pcs/form.html msgid "Remove computer from group" msgstr "Fjern computer fra gruppe" -#: templates/system/pcs/site_pcs.html:17 -msgid "No computers were found" -msgstr "Der blev ikke fundet nogen computere" +#: templates/system/pcs/form.html +#: templates/system/security_events/site_security_events.html +msgid "Info" +msgstr "Info" -#: templates/system/scripts/confirm_delete.html:10 -#: templates/system/scripts/create.html:17 -#: templates/system/scripts/create.html:37 -#: templates/system/scripts/update.html:16 -#: templates/system/scripts/update.html:49 -#: templates/system/scripts/update.html:118 -#: templates/system/scripts/update.html:125 -#: templates/system/security_problems/confirm_delete.html:24 -msgid "Security Script" -msgstr "Sikkerhedsscript" +#: templates/system/pcs/site_pcs.html +msgid "No computers were found" +msgstr "Der blev ikke fundet nogen computere" -#: templates/system/scripts/confirm_delete.html:22 -#: templates/system/scripts/confirm_delete.html:55 +#: templates/system/scripts/confirm_delete.html msgid "the Script" msgstr "Scriptet" -#: templates/system/scripts/confirm_delete.html:23 +#: templates/system/scripts/confirm_delete.html msgid "Associated Script" msgstr "Tilknyttet Script" -#: templates/system/scripts/confirm_delete.html:25 -#: templates/system/scripts/confirm_delete.html:53 -#: templates/system/security_problems/confirm_delete.html:33 -msgid "the Security Script" -msgstr "Sikkerhedsscriptet" - -#: templates/system/scripts/confirm_delete.html:26 -#: templates/system/security_problems/confirm_delete.html:16 -msgid "Security Rule" -msgstr "Sikkerhedsregel" - -#: templates/system/scripts/confirm_delete.html:27 -#: templates/system/security_problems/confirm_delete.html:26 -msgid "the Security Rule" -msgstr "Sikkerhedsreglen" - -#: templates/system/scripts/confirm_delete.html:31 +#: templates/system/scripts/confirm_delete.html #, python-format msgid "Old %(jobs)s with %(the_script)s will be deleted." msgstr "Gamle %(jobs)s med %(the_script)s vil blive slettet." -#: templates/system/scripts/confirm_delete.html:36 +#: templates/system/scripts/confirm_delete.html #, python-format msgid "" "If %(the_script)s is set as an %(associated_script)s the list of the " @@ -1611,7 +5448,7 @@ msgstr "" "Hvis %(the_script)s er sat som %(associated_script)s vil listen af de " "%(associated_scripts)s blive opdateret med %(the_script)s fjernet." -#: templates/system/scripts/confirm_delete.html:42 +#: templates/system/scripts/confirm_delete.html #, python-format msgid "" "If %(the_security_script)s is used in a %(security_rule)s, then " @@ -1620,72 +5457,61 @@ msgstr "" "Hvis %(the_security_script)s bruges i en %(security_rule)s, vil " "%(the_security_rule)s også blive slettet." -#: templates/system/scripts/confirm_delete.html:51 +#: templates/system/scripts/confirm_delete.html msgid "Are you sure you want to delete" msgstr "Er du sikker på, at du ønsker at slette" -#: templates/system/scripts/create.html:15 -#: templates/system/scripts/create.html:37 -#: templates/system/scripts/update.html:125 -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:113 +#: templates/system/scripts/create.html templates/system/scripts/update.html +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "Create" msgstr "Opret" -#: templates/system/scripts/form.html:17 -msgid "Modified" -msgstr "Ændret" - -#: templates/system/scripts/form.html:32 templates/system/scripts/form.html:84 +#: templates/system/scripts/form.html msgid "Code" msgstr "Kode" -#: templates/system/scripts/form.html:105 +#: templates/system/scripts/form.html msgid "Type" msgstr "Type" -#: templates/system/scripts/form.html:106 +#: templates/system/scripts/form.html msgid "Default value" msgstr "Standardværdi" -#: templates/system/scripts/form.html:107 +#: templates/system/scripts/form.html msgid "Required" msgstr "Påkrævet" -#: templates/system/scripts/form.html:114 -#: templates/system/scripts/form.html:117 +#: templates/system/scripts/form.html msgid "Add arguments" msgstr "Tilføj parametre" -#: templates/system/scripts/navigation.html:7 +#: templates/system/scripts/navigation.html msgid "Local scripts" msgstr "Lokale scripts" -#: templates/system/scripts/navigation.html:10 +#: templates/system/scripts/navigation.html msgid "Global scripts" msgstr "Globale scripts" -#: templates/system/scripts/navigation.html:38 -#: templates/system/scripts/navigation.html:42 -#: templates/system/scripts/navigation.html:62 -#: templates/system/scripts/navigation.html:66 +#: templates/system/scripts/navigation.html msgid "Delete script" msgstr "Slet script" -#: templates/system/scripts/run_base.html:60 +#: templates/system/scripts/run_base.html msgid "Loading..." msgstr "Loading..." -#: templates/system/scripts/run_step1.html:6 -#: templates/system/scripts/run_step2.html:6 -#: templates/system/scripts/update.html:67 +#: templates/system/scripts/run_step1.html +#: templates/system/scripts/run_step2.html templates/system/scripts/update.html msgid "Run script" msgstr "Kør script" -#: templates/system/scripts/run_step1.html:7 +#: templates/system/scripts/run_step1.html msgid "Choose computer or groups" msgstr "Vælg computer eller grupper" -#: templates/system/scripts/run_step1.html:12 +#: templates/system/scripts/run_step1.html msgid "" "Note: Scripts can only be run on computers that have been activated and " "groups that have at least 1 associated computer." @@ -1693,333 +5519,286 @@ msgstr "" "Bemærk: Der kan kun køres scripts på computere, der er aktiverede, og på " "grupper, der har tilknyttet minimum 1 computer." -#: templates/system/scripts/run_step1.html:21 +#: templates/system/scripts/run_step1.html msgid "Choose all Computers" msgstr "Vælg alle Computere" -#: templates/system/scripts/run_step1.html:39 +#: templates/system/scripts/run_step1.html msgid "Choose all Groups" msgstr "Vælg alle Grupper" -#: templates/system/scripts/run_step2.html:7 +#: templates/system/scripts/run_step2.html msgid "Specify parameters" msgstr "Angiv parametre" -#: templates/system/scripts/run_step2.html:25 +#: templates/system/scripts/run_step2.html msgid "The script takes no parameters." msgstr "Dette script tager ingen parametre." -#: templates/system/scripts/run_step2.html:33 +#: templates/system/scripts/run_step2.html msgid "Run" msgstr "Kør" -#: templates/system/scripts/run_step3.html:6 +#: templates/system/scripts/run_step3.html msgid "Job started" msgstr "Job startet" -#: templates/system/scripts/run_step3.html:10 +#: templates/system/scripts/run_step3.html #, python-format msgid "" "Job based on script %(sname)s has been started on %(num_pcs)s computer(s)" msgstr "Job baseret på script %(sname)s er startet på %(num_pcs)s computer(e)" -#: templates/system/scripts/run_step3.html:13 +#: templates/system/scripts/run_step3.html msgid "You can follow the created jobs here" msgstr "Du kan følge de oprettede jobs her" -#: templates/system/scripts/run_step3.html:17 +#: templates/system/scripts/run_step3.html msgid "Close" msgstr "Luk" -#: templates/system/scripts/search_result.html:13 +#: templates/system/scripts/search_result.html msgid "Local" msgstr "Lokalt" -#: templates/system/scripts/update.html:14 -#: templates/system/scripts/update.html:118 +#: templates/system/scripts/update.html msgid "Add new" msgstr "Tilføj nyt" -#: templates/system/scripts/update.html:28 -#: templates/widgets/scriptsearch.html:27 +#: templates/system/scripts/update.html +msgid "script" +msgstr "script" + +#: templates/system/scripts/update.html +msgid "Find ..." +msgstr "Find ..." + +#: templates/system/scripts/update.html templates/widgets/scriptsearch.html msgid "Clear the filter" msgstr "Ryd filter" +#: templates/system/scripts/update.html +msgid "Modified" +msgstr "Ændret" + # Konsistens ml. navn i sikkerhedsregel og sikkerhedshændelse -#: templates/system/security_events/site_security_events.html:37 -#: templates/system/security_events/site_security_events.html:114 +#: templates/system/security_events/site_security_events.html msgid "Level" msgstr "Alvorlighedsgrad" -#: templates/system/security_events/site_security_events.html:93 -msgid "Edit Security Events" -msgstr "Rediger Sikkerhedshændelser" +#: templates/system/security_events/site_security_events.html +msgid "Edit Events" +msgstr "Rediger Hændelser" -#: templates/system/security_events/site_security_events.html:100 +#: templates/system/security_events/site_security_events.html msgid "Handle event" msgstr "Håndter hændelse" -#: templates/system/security_events/site_security_events.html:109 +#: templates/system/security_events/site_security_events.html msgid "Handle events" msgstr "Håndter hændelser" -#: templates/system/security_events/site_security_events.html:115 +#: templates/system/security_events/site_security_events.html msgid "Rule" msgstr "Regel" -#: templates/system/security_events/site_security_events.html:117 -msgid "Info" -msgstr "Info" - -#: templates/system/security_events/site_security_events.html:118 -msgid "Device" -msgstr "Maskine" - -#: templates/system/security_events/site_security_events.html:119 +#: templates/system/security_events/site_security_events.html msgid "Incident time" msgstr "Hændelsestidspunkt" -#: templates/system/security_events/site_security_events.html:120 +#: templates/system/security_events/site_security_events.html msgid "Time of receipt" msgstr "Modtagelsestidspunkt" -#: templates/system/security_events/site_security_events.html:122 +#: templates/system/security_events/site_security_events.html msgid "Handled by" msgstr "Håndteres af" -#: templates/system/security_problems/confirm_delete.html:7 -#: templates/system/security_problems/site_security_problems.html:32 -msgid "Delete security rule" -msgstr "Slet sikkerhedsregel" - -#: templates/system/security_problems/confirm_delete.html:18 -#, python-format -msgid "" -"If a %(security_rule)s is deleted, the related %(security_events)s will also " -"be deleted." -msgstr "" -"Hvis en %(security_rule)s slettes, vil de relaterede %(security_events)s " -"også blive slettet." - -#: templates/system/security_problems/confirm_delete.html:25 -msgid "Email recipients" -msgstr "E-mail-modtagere" - -#: templates/system/security_problems/confirm_delete.html:27 -#, python-format -msgid "" -"Associated %(groups)s, %(security_script)s and %(email_recipients)s will be " -"removed from %(the_security_rule)s." -msgstr "" -"Tilknyttede %(groups)s, %(security_script)s og %(email_recipients)s vil " -"blive fjernet fra %(the_security_rule)s." - -#: templates/system/security_problems/confirm_delete.html:32 -msgid "The Groups" -msgstr "Grupperne" - -#: templates/system/security_problems/confirm_delete.html:34 -msgid "the Email recipients" -msgstr "E-mail-modtagerne" - -#: templates/system/security_problems/confirm_delete.html:36 -#, python-format -msgid "" -"%(the_groups)s, %(the_security_script)s and %(the_email_recipients)s " -"themselves will %(NOT)s be deleted." -msgstr "" -"Selve %(the_groups)s, %(the_security_script)s og %(the_email_recipients)s " -"vil %(NOT)s blive slettet." - -#: templates/system/security_problems/confirm_delete.html:42 -msgid "Are you sure you wish to delete the Security Rule" -msgstr "Er du sikker på, du ønsker at slette Sikkerhedsreglen" - -#: templates/system/security_problems/site_security_problems.html:19 -#: templates/system/security_problems/site_security_problems.html:126 -msgid "Define new security rule" -msgstr "Definér ny sikkerhedsregel" - -#: templates/system/security_problems/site_security_problems.html:44 -msgid "Add group to surveillance" -msgstr "Tilføj gruppe til overvågning" - -#: templates/system/security_problems/site_security_problems.html:45 -msgid "Remove monitored group" -msgstr "Fjern overvåget gruppe" - -#: templates/system/security_problems/site_security_problems.html:46 -msgid "Add email recipient" -msgstr "Tilføj e-mail-modtager" - -#: templates/system/security_problems/site_security_problems.html:47 -msgid "Remove recipient" -msgstr "Fjern modtager" - -#: templates/system/security_problems/site_security_problems.html:71 -msgid "empty" -msgstr "tom" - -#: templates/system/security_problems/site_security_problems.html:72 -#, python-format -msgid "" -"If the Security Rule does not have a Group added, the rule will apply to " -"%(all)s Computers." -msgstr "" -"Hvis der ikke er nogen Gruppe tilknyttet Sikkerhedsreglen, så vil reglen " -"gælde %(all)s Computere." - -#: templates/system/security_problems/site_security_problems.html:75 -#, python-format -msgid "" -"If you want to temporarily disable a rule, you can create an %(empty)s Group " -"(i.e. a Group with no Computers) and set this Group as the monitored Group." -msgstr "" -"Ønsker du midlertidigt at gøre en Regel inaktiv, kan du oprette en %(empty)s " -"Gruppe (dvs. en Gruppe uden Computere) og sætte denne Gruppe som den " -"overvågede Gruppe." - -#: templates/system/security_problems/site_security_problems.html:98 -#: templates/system/security_problems/site_security_problems.html:145 -msgid "Monitored groups" -msgstr "Overvågede grupper" - -#: templates/system/security_problems/site_security_problems.html:102 -#: templates/system/security_problems/site_security_problems.html:149 -msgid "Recipient(s) of email warning" -msgstr "Modtager(e) af e-mail-advarsel" - -#: templates/system/security_problems/site_security_problems.html:156 -msgid "Create security rule" -msgstr "Opret sikkerhedsregel" - -#: templates/system/site_image_versions.html:27 +#: templates/system/site_images.html msgid "Newest version of" msgstr "Nyeste udgave af" -#: templates/system/site_image_versions.html:29 -#: templates/system/site_image_versions.html:62 +#: templates/system/site_images.html msgid "Version" msgstr "Version" -#: templates/system/site_image_versions.html:31 -#: templates/system/site_image_versions.html:63 +#: templates/system/site_images.html msgid "Release date" msgstr "Release-dato" -#: templates/system/site_image_versions.html:33 -#: templates/system/site_image_versions.html:64 +#: templates/system/site_images.html msgid "Operating system" msgstr "Operativsystem" -#: templates/system/site_image_versions.html:35 -#: templates/system/site_image_versions.html:65 +#: templates/system/site_images.html msgid "Release notes" msgstr "Udgivelsesnoter" -#: templates/system/site_image_versions.html:44 -#: templates/system/site_image_versions.html:66 -#: templates/system/site_image_versions.html:87 -msgid "Download" -msgstr "Download" +#: templates/system/site_images.html +msgid "Download standard image" +msgstr "Download standard-image" + +#: templates/system/site_images.html +msgid "Download multi language image" +msgstr "Download flersprogs-image" -#: templates/system/site_image_versions.html:49 -msgid "No versions were found" -msgstr "Ingen versioner fundet" +#: templates/system/site_images.html +msgid "No images were found" +msgstr "Der blev ikke fundet nogen images" -#: templates/system/site_image_versions.html:56 +#: templates/system/site_images.html msgid "Earlier versions" msgstr "Tidligere versioner" -#: templates/system/site_image_versions.html:98 -msgid "NO ACCESS" -msgstr "INGEN ADGANG" +#: templates/system/site_images.html +msgid "Download" +msgstr "Download" -#: templates/system/site_image_versions.html:100 -msgid "" -"Your organization has no service agreement with a OS2borgerPC provider so no " -"versions are shown." -msgstr "" -"Din organisation har ikke nogen serviceaftale med en OS2borgerpc leverandør, " -"og derfor vises ingen versioner." +#: templates/system/site_settings/api_keys/api_keys.html +msgid "API Keys for" +msgstr "API-nøgler for" -#: templates/system/site_image_versions.html:102 -msgid "Please contact a OS2borgerPC provider to learn more." -msgstr "Kontakt venligst OS2borgerPC leverandør for at høre mere." +#: templates/system/site_settings/api_keys/api_keys.html +msgid "These API keys are used to access our API. See our" +msgstr "Disse API-nøgler bruges til at tilgå vores API. Se vores" -#: templates/system/site_list.html:5 -msgid "Administrate" -msgstr "Administrér" +#: templates/system/site_settings/api_keys/api_keys.html +msgid "for more info." +msgstr "for mere info." + +#: templates/system/site_settings/api_keys/api_keys.html +msgid "You can additionally visit the API's own docs at" +msgstr "Derudover kan du besøge API'ets egne docs på" + +#: templates/system/site_settings/api_keys/api_keys.html +msgid "as long as you are signed in to the admin site." +msgstr "så længe du er logget ind på admin-sitet." -#: templates/system/site_settings.html:22 +#: templates/system/site_settings/api_keys/api_keys.html +msgid "Generate new API Key" +msgstr "Generer ny API-nøgle" + +#: templates/system/site_settings/api_keys/partials/list.html +msgid "API Key copied!" +msgstr "API-nøgle kopieret!" + +#: templates/system/site_settings/api_keys/partials/list.html +msgid "Are you sure you want to delete the following API Key?:" +msgstr "Er du sikker på, at du ønsker at slette følgende API-nøgle?:" + +#: templates/system/site_settings/api_keys/partials/list.html +msgid "There are currently no API keys" +msgstr "På nuværende tidspunkt er der ingen API-nøgler" + +#: templates/system/site_settings/site_settings.html msgid "Settings for" msgstr "Indstillinger for" -#: templates/system/site_settings.html:28 -msgid "Settings" -msgstr "Indstillinger" +#: templates/system/site_status.html +msgid "computers" +msgstr "computere" + +#: templates/system/site_status.html templates/system/sites/list.html +msgid "Total number of" +msgstr "Totalt antal" + +#: templates/system/site_status.html templates/system/sites/list.html +msgid "Total number of BorgerPC's" +msgstr "Totalt antal BorgerPC'er" -#: templates/system/site_status.html:12 +#: templates/system/site_status.html templates/system/sites/list.html +msgid "Total number of Kiosk PC's" +msgstr "Totalt antal Kiosk PC'er" + +#: templates/system/site_status.html templates/system/sites/list.html msgid "Activated:" msgstr "Aktiverede:" -#: templates/system/site_status.html:14 -msgid "Online:" -msgstr "Online:" - -#: templates/system/site_status.html:20 templates/system/site_status.html:36 +#: templates/system/site_status.html msgid "Activated" msgstr "Aktiveret" -#: templates/system/site_status.html:21 +#: templates/system/site_status.html msgid "Description" msgstr "Beskrivelse" -#: templates/system/site_status.html:22 +#: templates/system/site_status.html msgid "Location" msgstr "Placering" -#: templates/system/site_status.html:24 +#: templates/system/site_status.html msgid "Latest check-in" msgstr "Seneste tjek-ind" -#: templates/system/site_status.html:25 -msgid "Latest security event received" -msgstr "Seneste sikkerhedshændelse modtaget" - -#: templates/system/site_status.html:44 -msgid "Online" -msgstr "Online" +#: templates/system/site_status.html +msgid "Latest event received" +msgstr "Seneste hændelse modtaget" -#: templates/system/site_status.html:46 +#: templates/system/site_status.html msgid "Offline" msgstr "Offline" -#: templates/system/site_two_factor.html:21 -msgid "Activate: Two-factor authentication for superuser" -msgstr "Aktivér: Totrinsbekræftelse for superuser" +#: templates/system/site_two_factor_pc.html +msgid "" +"Enable two-factor authentication for superuser login on OS2borgerPC and " +"OS2borgerPC Kiosk" +msgstr "" +"Aktiver totrinsbekræftelse for superuser-login på OS2borgerPC og OS2borgerPC " +"Kiosk" + +#: templates/system/site_two_factor_pc.html +msgid "" +"This section is related to setting up two-factor authentication for " +"superuser on an OS2borgerPC or OS2borgerPC Kiosk computer." +msgstr "" +"Denne sektion er relateret til opsætning af totrinsbekræftelse for superuser " +"på en OS2borgerPC eller OS2borgerPC Kiosk-maskine." + +#: templates/system/site_two_factor_pc.html +msgid "" +"Two-factor authentication on your admin-site profile is administered from " +"the Users-section." +msgstr "" +"Totrinsbekræftelse på din admin-site profil administreres fra sektionen " +"Brugere." -#: templates/system/site_two_factor.html:26 +#: templates/system/site_two_factor_pc.html msgid "Create security key and QR" msgstr "Opret sikkerhedsnøgle og QR" -#: templates/system/site_two_factor.html:28 +#: templates/system/site_two_factor_pc.html msgid "Generate security key and QR" msgstr "Generér sikkerhedsnøgle og QR" -#: templates/system/site_two_factor.html:30 +#: templates/system/site_two_factor_pc.html msgid "Security key:" msgstr "Sikkerhedsnøgle:" -#: templates/system/site_two_factor.html:36 +#: templates/system/site_two_factor_pc.html +msgid "Security Key copied!" +msgstr "Sikkerhedsnøgle kopieret!" + +#: templates/system/site_two_factor_pc.html msgid "Scan the QR code from step 1 with your authenticator app" msgstr "Scan QR-koden fra trin 1 med din authenticator app" -#: templates/system/site_two_factor.html:37 +#: templates/system/site_two_factor_pc.html msgid "Some examples of authenticator apps are:" msgstr "Som authenticator app kan eksempelvis bruges:" -#: templates/system/site_two_factor.html:49 +#: templates/system/site_two_factor_pc.html +msgid "App" +msgstr "App" + +#: templates/system/site_two_factor_pc.html +msgid "Platform" +msgstr "Platform" + +#: templates/system/site_two_factor_pc.html +msgid "Open Source" +msgstr "Open Source" + +#: templates/system/site_two_factor_pc.html msgid "" "Copy the security key from step 1 and run the two-factor script with it as " "input" @@ -2027,41 +5806,136 @@ msgstr "" "Kopier sikkerhedsnøglen fra trin 1 og kør totrinsscriptet med den som " "inputparameter" -#: templates/system/site_two_factor.html:51 -#, python-format -msgid "You can find the script \"%(name)s\" under the menu item " -msgstr "Du kan finde scriptet \"%(name)s\" under menupunktet " +#: templates/system/site_two_factor_pc.html +msgid "Click on" +msgstr "Klik på" + +#: templates/system/site_two_factor_pc.html +msgid "Two-factor authentication for superuser" +msgstr "Totrinsbekræftelse for superuser" + +#: templates/system/site_two_factor_pc.html +msgid "to go to the script" +msgstr "for at gå til scriptet" + +#: templates/system/sites/confirm_delete.html +#: templates/system/sites/display.html +msgid "Delete Site" +msgstr "Slet Site" + +#: templates/system/sites/confirm_delete.html +msgid "" +"All Computers, Groups, Jobs, Monitoring Rules, On/Off schedules, schedule " +"exceptions, associated scripts and local (security) Scripts on the Site will " +"also be deleted." +msgstr "" +"Alle Computere, Grupper, Jobs, Overvågningsregler, Tænd/Sluk tidsplaner, " +"undtagelser fra tidsplaner, tilknyttede scripts og lokale scripts eller " +"sikkerhedsscripts på Sitet vil også blive slettet." + +#: templates/system/sites/confirm_delete.html +msgid "" +"Any Users that only have access to this Site will also be deleted. Users " +"that also have access to other Sites will not be deleted." +msgstr "" +"Alle Brugere, som kun har adgang til dette Site, vil også blive slettet. " +"Brugere, som også har adgang til andre Sites, vil ikke blive slettet." + +#: templates/system/sites/confirm_delete.html +msgid "It will NOT be possible to restore any of the deleted data later." +msgstr "Det vil IKKE være muligt at genskabe den slettede data senere." + +#: templates/system/sites/confirm_delete.html +msgid "Are you sure you want to delete the Site" +msgstr "Er du sikker på, at du vil slette Sitet" + +#: templates/system/sites/confirm_delete.html +msgid "I understand and accept the consequences of deleting the Site" +msgstr "Jeg forstår og accepterer konsekvenserne af at slette Sitet" + +#: templates/system/sites/display.html +msgid "Delete site" +msgstr "Slet site" + +#: templates/system/sites/display.html +msgid "" +"This Site has 5 or more registered Computers and therefore can't be deleted" +msgstr "" +"Dette Site har 5 eller flere registrerede Computere og kan derfor ikke " +"slettes" + +#: templates/system/sites/list.html +msgid "Administrate" +msgstr "Administrér" + +#: templates/system/sites/list.html +msgid "Admin site version" +msgstr "Adminsite-version" + +#: templates/system/sites/list.html +msgid "Add new site" +msgstr "Tilføj nyt site" + +#: templates/system/sites/list.html +msgid "" +"Must be unique. Valid characters are a-z (lower-case only), 0-9 and dashes, " +"and the length must be between 2-40 characters. We suggest values like " +"'organisation' or 'organisation-location' (without quotes)." +msgstr "" +"Skal være unikt. Gyldige tegn er a-z (kun små bogstaver), 0-9 og " +"bindestreger, og længden skal være mellem 2-40 tegn. Vi foreslår værdier som " +"'organisation' eller 'organisation-lokation' (uden citationstegn)" -#: templates/system/users/confirm_delete.html:11 -#: templates/system/users/update.html:28 +#: templates/system/sites/list.html +msgid "Create site" +msgstr "Opret site" + +#: templates/system/users/confirm_delete.html +#: templates/system/users/update.html msgid "Delete user" msgstr "Slet bruger" -#: templates/system/users/confirm_delete.html:16 +#: templates/system/users/confirm_delete.html +msgid "Are you sure you want to remove this user from the site " +msgstr "Er du sikker på, at du vil fjerne denne bruger fra sitet " + +#: templates/system/users/confirm_delete.html msgid "Are you sure you want to delete the user" msgstr "Er du sikker på, at du vil slette brugeren" -#: templates/system/users/create.html:10 -msgid "Create new user" -msgstr "Tilføj ny bruger" - -#: templates/system/users/create.html:16 templates/system/users/update.html:85 -msgid "Create user" -msgstr "Opret bruger" - -#: templates/system/users/form.html:26 +#: templates/system/users/form.html msgid "Show Password" msgstr "Vis Password" -#: templates/system/users/update.html:15 templates/system/users/update.html:78 +#: templates/system/users/form.html +msgid "Set up two-factor authentication" +msgstr "Opsæt totrinsbekræftelse" + +#: templates/system/users/form.html +msgid "Generate backup tokens" +msgstr "Generér backupkoder" + +#: templates/system/users/form.html +msgid "Deactivate two-factor authentication" +msgstr "Deaktivér totrinsbekræftelse" + +#: templates/system/users/link.html templates/system/users/update.html msgid "Add new user" msgstr "Tilføj ny bruger" -#: templates/system/users/update.html:42 +#: templates/system/users/link.html +msgid "Add existing users from your other sites to the site " +msgstr "Tilføj eksisterende brugere fra jeres andre sites til sitet " + +#: templates/system/users/update.html msgid "Profile:" msgstr "Profil:" -#: templates/system/users/update.html:46 +#: templates/system/users/update.html +msgid "Create new user" +msgstr "Tilføj ny bruger" + +#: templates/system/users/update.html msgid "" "Site users are not authorized to edit other users. Ask a site admin or " "Magenta for help." @@ -2069,16 +5943,16 @@ msgstr "" "Site-brugere har ikke adgang til at ændre andre brugere. Bed en site-admin " "eller Magenta om hjælp." -#: templates/system/wake_plan/confirm_delete.html:6 -#: templates/system/wake_plan/wake_plan_base.html:34 +#: templates/system/wake_plan/confirm_delete.html +#: templates/system/wake_plan/wake_plan_base.html msgid "Delete on/off schedule" msgstr "Slet tænd/sluk tidsplan" -#: templates/system/wake_plan/confirm_delete.html:14 +#: templates/system/wake_plan/confirm_delete.html msgid "The schedule" msgstr "Tidsplanen" -#: templates/system/wake_plan/confirm_delete.html:17 +#: templates/system/wake_plan/confirm_delete.html #, python-format msgid "" "Deleting %(the_schedule)s will remove all %(groups)s and the associated " @@ -2088,20 +5962,20 @@ msgstr "" "%(computers)s ud af den, og de vil ikke længere slukke eller tænde " "automatisk." -#: templates/system/wake_plan/confirm_delete.html:24 +#: templates/system/wake_plan/confirm_delete.html msgid "Are you sure you wish to delete the On/Off schedule" msgstr "Er du sikker på, at du ønsker at slette Tænd/Sluk tidsplanen" -#: templates/system/wake_plan/wake_change_events/confirm_delete.html:6 -#: templates/system/wake_plan/wake_change_events/wake_change_event_base.html:41 +#: templates/system/wake_plan/wake_change_events/confirm_delete.html +#: templates/system/wake_plan/wake_change_events/wake_change_event_base.html msgid "Delete exception" msgstr "Slet undtagelse" -#: templates/system/wake_plan/wake_change_events/confirm_delete.html:14 +#: templates/system/wake_plan/wake_change_events/confirm_delete.html msgid "the Exception" msgstr "Undtagelsen" -#: templates/system/wake_plan/wake_change_events/confirm_delete.html:15 +#: templates/system/wake_plan/wake_change_events/confirm_delete.html #, python-format msgid "" "If %(the_exception)s is deleted, it will be removed from all schedules and " @@ -2112,27 +5986,27 @@ msgstr "" "og alle Computere tilmeldt til planerne vil få opdateret deres tidsplan med " "denne undtagelse fjernet." -#: templates/system/wake_plan/wake_change_events/confirm_delete.html:22 +#: templates/system/wake_plan/wake_change_events/confirm_delete.html msgid "Are you sure you wish to delete the Exception" msgstr "Er du sikker på, at du ønsker at slette Undtagelsen" -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:10 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "Altered opening hours" msgstr "Ændrede åbningstider" -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:12 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "Closed days" msgstr "Lukkedage" -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:14 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "New exception" msgstr "Ny undtagelse" -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:21 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "Return to schedule" msgstr "Tilbage til tidsplan" -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:30 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "" "Here you can create exceptions from the recurring week plan and these " "exceptions have precedence" @@ -2140,7 +6014,7 @@ msgstr "" "Herinde kan du oprette undtagelser til den faste tidsplan, og disse " "undtagelser tager præcedens." -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:34 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "" "\"Altered opening hours\" means that for the selected days, the computer " "will turn on and off at the times selected for the exception rather than " @@ -2150,7 +6024,7 @@ msgstr "" "slukker på de, for undtagelsen, valgte tidspunkter, fremfor de tidspunkter, " "der står i den faste ugeplan." -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:36 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "" "\"Closed days\" means that the computer will not turn on automatically " "during the selected days." @@ -2158,39 +6032,35 @@ msgstr "" "\"Lukkedage\" betyder at computeren slet ikke tænder automatisk den eller de " "dage." -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:56 -msgid "From" -msgstr "Fra" - -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:58 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "To" msgstr "Til" -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:72 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "Point in time" msgstr "Tidspunkt" -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:96 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "On/Off schedules that use this exception" msgstr "Tænd/Sluk tidsplaner der anvender denne undtagelse" -#: templates/system/wake_plan/wake_change_events/wake_change_event_base.html:6 +#: templates/system/wake_plan/wake_change_events/wake_change_event_base.html msgid "On/Off schedule: Exceptions" msgstr "Tænd/Sluk tidsplan: Undtagelser" -#: templates/system/wake_plan/wake_change_events/wake_change_event_base.html:19 +#: templates/system/wake_plan/wake_change_events/wake_change_event_base.html msgid "Add altered opening hours" msgstr "Tilføj ændrede åbningstider" -#: templates/system/wake_plan/wake_change_events/wake_change_event_base.html:25 +#: templates/system/wake_plan/wake_change_events/wake_change_event_base.html msgid "Add closed days" msgstr "Tilføj lukkedage" -#: templates/system/wake_plan/wake_plan.html:9 +#: templates/system/wake_plan/wake_plan.html msgid "New on/off schedule" msgstr "Ny tænd/sluk tidsplan" -#: templates/system/wake_plan/wake_plan.html:22 +#: templates/system/wake_plan/wake_plan.html msgid "" "If you are unfamiliar with the functionality of on/off schedules, we " "recommend first reading our" @@ -2198,15 +6068,11 @@ msgstr "" "Hvis du er ubekendt med Tænd/Sluk tidsplan-funktionaliteten, vil vi foreslå " "at starte med at læse vores" -#: templates/system/wake_plan/wake_plan.html:23 -msgid "User guide to power saving functions in OS2borgerPC" -msgstr "Brugerguide til strømsparefunktioner i OS2borgerPC" - -#: templates/system/wake_plan/wake_plan.html:27 +#: templates/system/wake_plan/wake_plan.html msgid "Group" msgstr "Gruppe" -#: templates/system/wake_plan/wake_plan.html:28 +#: templates/system/wake_plan/wake_plan.html #, python-format msgid "" "Schedules must have %(groups)s added before they take effect, and a " @@ -2215,7 +6081,7 @@ msgstr "" "Tidsplaner skal have %(groups)s tilknyttet, før de tager effekt, og en " "%(group)s kan kun være tilmeldt én tidsplan." -#: templates/system/wake_plan/wake_plan.html:34 +#: templates/system/wake_plan/wake_plan.html #, python-format msgid "" "A schedule applies to all the %(computers)s in the %(groups)s that have been " @@ -2224,28 +6090,28 @@ msgstr "" "En tidsplan er gældende for alle %(computers)s i de %(groups)s, som er " "tilmeldt tidsplanen." -#: templates/system/wake_plan/wake_plan.html:40 +#: templates/system/wake_plan/wake_plan.html #, python-format msgid "A %(computer)s can only receive a new or updated schedule if it is on." msgstr "" "En %(computer)s kan kun modtage en ny eller opdateret tidsplan, hvis den er " "tændt" -#: templates/system/wake_plan/wake_plan.html:45 +#: templates/system/wake_plan/wake_plan.html msgid "the individual Computers" msgstr "de individuelle Computere" -#: templates/system/wake_plan/wake_plan.html:46 +#: templates/system/wake_plan/wake_plan.html #, python-format msgid "The schedule uses the time settings on %(the_individual_computers)s." msgstr "" "Tidsplanen anvender tidsindstillingerne på %(the_individual_computers)s." -#: templates/system/wake_plan/wake_plan.html:51 +#: templates/system/wake_plan/wake_plan.html msgid "the Computers" msgstr "Computerne" -#: templates/system/wake_plan/wake_plan.html:52 +#: templates/system/wake_plan/wake_plan.html #, python-format msgid "" "Whether some of %(the_computers)s should also enter sleep mode when inactive " @@ -2254,24 +6120,24 @@ msgstr "" "Om nogle af %(the_computers)s også skal gå i dvale ved inaktivitet styres " "ikke herfra, men i stedet ved at køre" -#: templates/system/wake_plan/wake_plan.html:55 +#: templates/system/wake_plan/wake_plan.html msgid "the suspend script." -msgstr "Dvale-scriptet" +msgstr "Dvale-scriptet." -#: templates/system/wake_plan/wake_plan.html:67 +#: templates/system/wake_plan/wake_plan.html msgid "Schedule status" msgstr "Tidsplan status" -#: templates/system/wake_plan/wake_plan.html:70 +#: templates/system/wake_plan/wake_plan.html msgid "Active" msgstr "Aktiv" -#: templates/system/wake_plan/wake_plan.html:70 -#: templates/system/wake_plan/wake_plan_base.html:30 +#: templates/system/wake_plan/wake_plan.html +#: templates/system/wake_plan/wake_plan_base.html msgid "Inactive" msgstr "Inaktiv" -#: templates/system/wake_plan/wake_plan.html:77 +#: templates/system/wake_plan/wake_plan.html msgid "" "Some sleep states save more power than others, but some hardware does not " "support the most power saving states. We recommend starting with \"Off" @@ -2283,63 +6149,63 @@ msgstr "" "med \"Off\" (den mest strømbesparende), og hvis det ikke virker så prøv dem " "i rækkefølgen: mem, freeze, standby" -#: templates/system/wake_plan/wake_plan.html:82 +#: templates/system/wake_plan/wake_plan.html msgid "Week plan" msgstr "Ugeplan" -#: templates/system/wake_plan/wake_plan.html:83 +#: templates/system/wake_plan/wake_plan.html msgid "Configure on and off for the recurring week plan" msgstr "Konfigurer tænd og sluk for den faste ugeplan" -#: templates/system/wake_plan/wake_plan.html:90 +#: templates/system/wake_plan/wake_plan.html msgid "On at" msgstr "Tænd" -#: templates/system/wake_plan/wake_plan.html:92 +#: templates/system/wake_plan/wake_plan.html msgid "Off at" msgstr "Sluk" -#: templates/system/wake_plan/wake_plan.html:98 +#: templates/system/wake_plan/wake_plan.html msgid "On" msgstr "Tændt" -#: templates/system/wake_plan/wake_plan.html:99 +#: templates/system/wake_plan/wake_plan.html msgid "Off" msgstr "Slukket" -#: templates/system/wake_plan/wake_plan.html:100 +#: templates/system/wake_plan/wake_plan.html msgid "Monday" msgstr "Mandag" -#: templates/system/wake_plan/wake_plan.html:118 +#: templates/system/wake_plan/wake_plan.html msgid "Tuesday" msgstr "Tirsdag" -#: templates/system/wake_plan/wake_plan.html:136 +#: templates/system/wake_plan/wake_plan.html msgid "Wednesday" msgstr "Onsdag" -#: templates/system/wake_plan/wake_plan.html:154 +#: templates/system/wake_plan/wake_plan.html msgid "Thursday" msgstr "Torsdag" -#: templates/system/wake_plan/wake_plan.html:172 +#: templates/system/wake_plan/wake_plan.html msgid "Friday" msgstr "Fredag" -#: templates/system/wake_plan/wake_plan.html:190 +#: templates/system/wake_plan/wake_plan.html msgid "Saturday" msgstr "Lørdag" -#: templates/system/wake_plan/wake_plan.html:208 +#: templates/system/wake_plan/wake_plan.html msgid "Sunday" msgstr "Søndag" -#: templates/system/wake_plan/wake_plan.html:230 +#: templates/system/wake_plan/wake_plan.html msgid "Exceptions: Closed days and altered opening hours" msgstr "Undtagelser: Lukkedage og Ændrede åbningstider" -#: templates/system/wake_plan/wake_plan.html:231 +#: templates/system/wake_plan/wake_plan.html msgid "" "Plan and create upcoming closed days and altered opening hours from the " "recurring week plan" @@ -2347,47 +6213,256 @@ msgstr "" "Planlæg og opret kommende lukkedage og ændrede åbningstider fra den faste " "ugentlige tidsplan" -#: templates/system/wake_plan/wake_plan.html:235 +#: templates/system/wake_plan/wake_plan.html msgid "Create closed days" msgstr "Opret lukkedage" -#: templates/system/wake_plan/wake_plan.html:236 +#: templates/system/wake_plan/wake_plan.html msgid "Create altered opening hours" msgstr "Opret ændrede åbningstider" -#: templates/system/wake_plan/wake_plan.html:237 +#: templates/system/wake_plan/wake_plan.html msgid "Edit exceptions" msgstr "Rediger undtagelser" -#: templates/system/wake_plan/wake_plan.html:249 +#: templates/system/wake_plan/wake_plan.html msgid "Add exception to schedule" msgstr "Tilknyt undtagelse til tidsplan" -#: templates/system/wake_plan/wake_plan.html:250 +#: templates/system/wake_plan/wake_plan.html msgid "Remove exception from schedule" msgstr "Fjern undtagelse fra tidsplan" -#: templates/system/wake_plan/wake_plan.html:255 +#: templates/system/wake_plan/wake_plan.html msgid "Groups that follow the schedule" msgstr "Grupper der følger tidsplanen" -#: templates/system/wake_plan/wake_plan.html:267 +#: templates/system/wake_plan/wake_plan.html msgid "Add group to schedule" msgstr "Tilknyt gruppe til tidsplan" -#: templates/system/wake_plan/wake_plan.html:268 +#: templates/system/wake_plan/wake_plan.html msgid "Remove group from schedule" msgstr "Fjern gruppe fra tidsplan" -#: templates/system/wake_plan/wake_plan.html:280 +#: templates/system/wake_plan/wake_plan.html msgid "Duplicate schedule" msgstr "Duplikér tidsplan" -#: templates/system/wake_plan/wake_plan_base.html:19 +#: templates/system/wake_plan/wake_plan_base.html +msgid "On/Off schedule" +msgstr "Tænd/Sluk tidsplan" + +#: templates/system/wake_plan/wake_plan_base.html msgid "Add new On/Off schedule" msgstr "Tilføj ny tænd/sluk tidsplan" -#: templates/widgets/picklist.html:165 templates/widgets/scriptsearch.html:147 -#: templates/widgets/wake_plan_picklist.html:199 +#: templates/two_factor/_base.html +msgid "OS2borgerPC Administration Login" +msgstr "OS2borgerPC Administration Login" + +#: templates/two_factor/_base.html +msgid "" +"OS2borgerPC is an open source product. You can download the source code and " +"documentation here:" +msgstr "" +"OS2borgerPC er en open source løsning. Du kan hente kildekoden og " +"dokumentationen her:" + +#: templates/two_factor/_base.html +msgid "Check updates for OS2borgerPC" +msgstr "Se opdateringer i OS2borgerPC" + +#: templates/two_factor/_base.html +msgid "Send a message to Magenta" +msgstr "Send en besked til Magenta" + +#: templates/two_factor/core/backup_tokens.html +#: templates/two_factor/core/setup.html +#: templates/two_factor/core/setup_complete.html +#: templates/two_factor/profile/disable.html +msgid "Two-factor authentication for admin-site login" +msgstr "Totrinsbekræftelse for admin-site login" + +#: templates/two_factor/core/backup_tokens.html +msgid "Backup Tokens" +msgstr "Backupkoder" + +#: templates/two_factor/core/backup_tokens.html +msgid "" +"Backup tokens can be used when your authenticator app isn't available.
" +"The backup tokens below can be used for login verification.
If you've " +"used up all your backup tokens, you can generate a new set of backup tokens." +"
Only the backup tokens shown below will be valid." +msgstr "" +"Backupkoder kan bruges, når din authenticator app ikke er tilgængelig.
" +"Backupkoderne herunder kan bruges til login-bekræftelse.
Hvis du har " +"brugt alle dine backupkoder, kan du generere et nyt sæt af backupkoder.
" +"Kun de backupkoder som vises herunder er gyldige." + +#: templates/two_factor/core/backup_tokens.html +msgid "" +"Print these tokens and keep them somewhere safe
or save them in e.g. " +"Bitwarden." +msgstr "" +"Print disse koder ud og opbevar dem sikkert
eller gem dem i f.eks. " +"Bitwarden." + +#: templates/two_factor/core/backup_tokens.html +msgid "You don't have any backup tokens yet." +msgstr "Du har ingen backupkoder endnu." + +#: templates/two_factor/core/backup_tokens.html +#: templates/two_factor/core/setup_complete.html +msgid "Back to user profile" +msgstr "Tilbage til brugerprofil" + +#: templates/two_factor/core/backup_tokens.html +msgid "Generate Tokens" +msgstr "Generér koder" + +#: templates/two_factor/core/login.html +msgid "Log in" +msgstr "Log ind" + +#: templates/two_factor/core/login.html +msgid "Please enter the token generated by your authenticator app." +msgstr "Indtast venligst koden fra din authenticator app." + +#: templates/two_factor/core/login.html +msgid "" +"Use this form for entering backup tokens for logging in. These tokens have " +"been generated for you to print and keep safe. Please enter one of these " +"backup tokens to login to your account." +msgstr "" +"Brug denne form til at indtaste backupkoder for at logge ind. Disse koder er " +"blevet generéret, så du kan opbevare dem sikkert. Indtast venligst en af " +"dine backupkoder for at logge ind." + +#: templates/two_factor/core/login.html +msgid "Back" +msgstr "Tilbage" + +#: templates/two_factor/core/login.html +msgid "As a last resort, you can use a" +msgstr "Som en sidste udvej, kan du bruge en" + +#: templates/two_factor/core/login.html +msgid "backup token" +msgstr "backupkode" + +#: templates/two_factor/core/setup.html +#: templates/two_factor/core/setup_complete.html +msgid "Enable Two-Factor Authentication for" +msgstr "Aktivér Totrinsbekræftelse for" + +#: templates/two_factor/core/setup.html +msgid "" +"You are about to take your account security to the next level. Follow the " +"steps in this wizard to enable two-factor authentication." +msgstr "" +"Du er ved at forøge sikkerheden på din brugerkonto. Følg skridtene i denne " +"wizard for at aktivere totrinsbekræftelse." + +#: templates/two_factor/core/setup.html +msgid "Please select which authentication method you would like to use." +msgstr "" + +#: templates/two_factor/core/setup.html +msgid "" +"To start using an authenticator app, please use your smartphone to scan the " +"QR code below. For example, use FreeOTP Authenticator." +msgstr "" +"Brug venligst din authenticator app til at skanne QR koden herunder. Du kan " +"f.eks. bruge FreeOTP Authenticator." + +#: templates/two_factor/core/setup.html +msgid "" +"Alternatively, you can use the following secret to set up TOTP in your " +"authenticator manually." +msgstr "" +"Alternativt kan du bruge følgende secret til manuelt at indstille TOTP i din " +"authenticator app." + +#: templates/two_factor/core/setup.html +msgid "TOTP Secret:" +msgstr "TOTP Secret:" + +#: templates/two_factor/core/setup.html +msgid "Then, enter the token generated by the app." +msgstr "Indtast derefter den kode, som din app har generéret." + +#: templates/two_factor/core/setup.html +msgid "" +"Please enter the phone number you wish to receive the text messages on. This " +"number will be validated in the next step." +msgstr "" + +#: templates/two_factor/core/setup.html +msgid "" +"Please enter the phone number you wish to be called on. This number will be " +"validated in the next step." +msgstr "" + +#: templates/two_factor/core/setup.html +msgid "We are calling your phone right now, please enter the digits you hear." +msgstr "" + +#: templates/two_factor/core/setup.html +msgid "We sent you a text message, please enter the tokens we sent." +msgstr "" + +#: templates/two_factor/core/setup.html +msgid "" +"We've encountered an issue with the selected authentication method. Please " +"go back and verify that you entered your information correctly, try again, " +"or use a different authentication method instead. If the issue persists, " +"contact Magenta." +msgstr "" +"Vi er stødt ind i et problem med den valgte metode. Gå venligst tilbage og " +"verificer at du indtastede din information korrekt, prøv igen, eller brug en " +"anden metode. Hvis problemet fortsætter så kontakt Magenta." + +#: templates/two_factor/core/setup.html +msgid "" +"To identify and verify your YubiKey, please insert a token in the field " +"below. Your YubiKey will be linked to your account." +msgstr "" + +#: templates/two_factor/core/setup_complete.html +msgid "Congratulations, you've successfully enabled two-factor authentication." +msgstr "Tillykke, du har nu aktiveret totrinsbekræftelse." + +#: templates/two_factor/core/setup_complete.html +msgid "" +"However, it might happen that you don't have access to your primary token " +"device. To enable account recovery, add a phone number." +msgstr "" + +#: templates/two_factor/core/setup_complete.html +msgid "Add Phone Number" +msgstr "" + +#: templates/two_factor/profile/disable.html +msgid "Disable Two-factor Authentication for" +msgstr "Deaktivér Totrinsbekræftelse for" + +#: templates/two_factor/profile/disable.html +msgid "" +"You are about to disable two-factor authentication. This weakens your " +"account security, are you sure?" +msgstr "" +"Du er ved at deaktivere totrinsbekræftelse. Dette svækker sikkerheden på din " +"brugerkonto. Er du sikker?" + +#: templates/two_factor/profile/disable.html +msgid "Disable" +msgstr "Deaktivér" + +#: templates/widgets/picklist.html +msgid "No options" +msgstr "Ingen muligheder" + +#: templates/widgets/picklist.html templates/widgets/scriptsearch.html msgid "Data is missing" msgstr "Data mangler" diff --git a/admin_site/locale/da/LC_MESSAGES/djangojs.po b/admin_site/locale/da/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..d427e2f0 --- /dev/null +++ b/admin_site/locale/da/LC_MESSAGES/djangojs.po @@ -0,0 +1,70 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-01-09 16:25+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: static/js/jobs_list.js +msgid "No user" +msgstr "Ingen bruger" + +#: static/js/jobs_list.js static/js/security_events_list.js +msgid "Previous" +msgstr "Forrige" + +#: static/js/jobs_list.js static/js/security_events_list.js +msgid "Next" +msgstr "Næste" + +#: static/js/security_events_list.js +msgid "Note set during handling:" +msgstr "Note sat under håndtering:" + +#: static/js/security_events_list.js +msgid "Info about the event" +msgstr "Info om hændelsen" + +#: static/js/security_events_list.js +msgid "Log-output from the event:" +msgstr "Log-output fra hændelsen:" + +#: static/js/security_events_list.js +msgid "Handle" +msgstr "Håndter" + +#: static/js/security_events_list.js +msgid "out of" +msgstr "ud af" + +#: static/js/security_events_list.js +msgid "events" +msgstr "hændelser" + +#: static/js/wake_plan.js +msgid "On" +msgstr "Tændt" + +#: static/js/wake_plan.js +msgid "Off" +msgstr "Slukket" + +#: static/js/wake_plan.js +msgid "Active" +msgstr "Aktiv" + +#: static/js/wake_plan.js +msgid "Inactive" +msgstr "Inaktiv" diff --git a/admin_site/locale/sv/LC_MESSAGES/django.mo b/admin_site/locale/sv/LC_MESSAGES/django.mo deleted file mode 100755 index ffa5abaf..00000000 Binary files a/admin_site/locale/sv/LC_MESSAGES/django.mo and /dev/null differ diff --git a/admin_site/locale/sv/LC_MESSAGES/django.po b/admin_site/locale/sv/LC_MESSAGES/django.po old mode 100755 new mode 100644 index 2f503c8b..61e0c6eb --- a/admin_site/locale/sv/LC_MESSAGES/django.po +++ b/admin_site/locale/sv/LC_MESSAGES/django.po @@ -7,533 +7,845 @@ msgid "" msgstr "" "Project-Id-Version: OS2borgerPC\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-04-18 13:26+0200\n" +"POT-Creation-Date: 2024-06-25 13:57+0200\n" "PO-Revision-Date: 2023-04-14 10:00+0200\n" "Last-Translator: Andreas Poulsen \n" -"Language-Team: LANGUAGE \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: account/models.py:28 system/forms.py:132 +#: account/models.py system/forms.py templates/documentation/users/index.html msgid "Language" msgstr "Språk" -#: account/models.py:44 +#: account/models.py +msgid "hidden user" +msgstr "dolt användare" + +#: account/models.py templates/documentation/users/index.html msgid "Site User" msgstr "Site användare" -#: account/models.py:44 +#: account/models.py templates/documentation/users/index.html msgid "Site Admin" msgstr "Site-admin" -#: system/admin.py:133 templates/system/scripts/search_result.html:22 +#: account/models.py templates/documentation/users/index.html +msgid "Customer Admin" +msgstr "Kunde-admin" + +#: changelog/models.py system/models.py +msgid "name" +msgstr "namn" + +#: changelog/models.py +msgid "title" +msgstr "titel" + +#: changelog/models.py system/models.py +msgid "description" +msgstr "beskrivning" + +#: changelog/models.py +msgid "content" +msgstr "innehåll" + +#: changelog/models.py system/mixins.py system/models.py +msgid "created" +msgstr "skapad" + +#: changelog/models.py +msgid "updated" +msgstr "uppdaterat" + +#: changelog/models.py +msgid "published (visible)" +msgstr "publicerad (synlig)" + +#: changelog/templates/comments/form.html +msgid "Answer to" +msgstr "Svar till" + +#: changelog/templates/comments/form.html +msgid "Write a comment" +msgstr "Skriv en kommentar" + +#: changelog/templates/comments/form.html +msgid "Add comment" +msgstr "Lägg till en kommentar" + +#: changelog/templates/comments/form.html +#: templates/system/configs/templates.html +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +#: templates/system/pcgroups/confirm_delete.html +#: templates/system/pcgroups/policy_list/templates.html +#: templates/system/pcgroups/site_groups.html +#: templates/system/pcs/confirm_delete.html templates/system/pcs/form.html +#: templates/system/scripts/confirm_delete.html +#: templates/system/scripts/create.html templates/system/scripts/update.html +#: templates/system/security_events/site_security_events.html +#: templates/system/site_settings/site_settings.html +#: templates/system/sites/confirm_delete.html templates/system/sites/list.html +#: templates/system/users/confirm_delete.html templates/system/users/link.html +#: templates/system/users/update.html +#: templates/system/wake_plan/confirm_delete.html +#: templates/system/wake_plan/wake_change_events/confirm_delete.html +#: templates/system/wake_plan/wake_change_events/wake_change_event.html +#: templates/system/wake_plan/wake_plan.html +#: templates/two_factor/_wizard_actions.html +#: templates/two_factor/profile/disable.html +msgid "Cancel" +msgstr "Avbryt" + +#: changelog/templates/comments/form.html +msgid "Please log in to add your comment" +msgstr "Logga in för att kommentera" + +#: changelog/templates/comments/item.html +msgid "On the date" +msgstr "Den" + +#: changelog/templates/comments/item.html +msgid "answered" +msgstr "svarade" + +#: changelog/templates/comments/item.html +msgid "wrote" +msgstr "skrev" + +#: changelog/templates/comments/item.html +#, python-format +msgid "Show %(comment_comment_children_count)s answer(s)" +msgstr "Visa %(comment_comment_children_count)s svar" + +#: changelog/templates/comments/item.html +msgid "Answer" +msgstr "Svar" + +#: changelog/templates/item.html changelog/templates/list.html +msgid "News categories" +msgstr "Nyhetskategorier" + +#: changelog/templates/item.html +msgid "Comments" +msgstr "Kommentarer" + +#: changelog/templates/list.html system/views.py +#: templates/documentation/om_os2borgerpc_admin.html +#: templates/documentation/sites_overview/index.html +#: templates/system/site_status.html templates/system/sites/list.html +msgid "OS2borgerPC" +msgstr "Sambruk MedborgarPC" + +#: changelog/templates/list.html templates/site_with_navigation.html +msgid "News" +msgstr "Nyheter" + +#: changelog/templates/list.html +msgid "Back to previous page" +msgstr "Tillbaka till föregående sida" + +#: changelog/templates/list.html +msgid "Search..." +msgstr "Sök på..." + +#: changelog/templates/list.html +msgid "All" +msgstr "Alla" + +#: changelog/templates/list.html +msgid "Showing news in the category of" +msgstr "Visar nyheter i kategorin" + +#: changelog/templates/list.html +msgid "Showing" +msgstr "Visar" + +#: changelog/templates/list.html +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +msgid "all" +msgstr "alla" + +#: changelog/templates/list.html +msgid "news" +msgstr "nyheter" + +#: changelog/templates/list.html +msgid "that matches the query" +msgstr "som matchar sökordet" + +#: changelog/templates/list.html +msgid "Draft" +msgstr "Förslag" + +#: changelog/templates/list.html +msgid "Read more" +msgstr "Läs mer" + +#: changelog/templates/list.html +msgid "Show" +msgstr "Visa" + +#: changelog/templates/list.html +msgid "chat" +msgstr "chat" + +#: changelog/templates/list.html +msgid "Previous" +msgstr "Föregående" + +#: changelog/templates/list.html templates/system/scripts/run_step1.html +#: templates/two_factor/_wizard_actions.html +msgid "Next" +msgstr "Nästa" + +#: changelog/views.py +#, python-format +msgid "There is no news category with the following ID: %s" +msgstr "Det finns ingen nyhetskategori med följande ID: %s" + +#: system/admin.py templates/system/scripts/search_result.html msgid "Global" msgstr "Global" -#: system/admin.py:145 +#: system/admin.py msgid "Jobs per site" msgstr "Jobb per site" -#: system/admin.py:160 +#: system/admin.py msgid "Jobs per Site for the last year" msgstr " Jobb per Site under det senaste året" -#: system/admin.py:233 +#: system/admin.py msgid "Number of computers" msgstr "Antal datorer" -#: system/admin.py:234 +#: system/admin.py +msgid "Feature permissions" +msgstr "Funktionsåtkomster" + +#: system/admin.py msgid "Number of KioskPC computers" msgstr "Antal KioskPC-datorer" -#: system/admin.py:235 +#: system/admin.py msgid "Number of BorgerPC computers" msgstr "Antal MedborgarPC-datorer" -#: system/admin.py:271 +#: system/admin.py system/models.py +msgid "customers with access" +msgstr "kunder med tillträde" + +#: system/admin.py msgid "Site" msgstr "Site" -#: system/forms.py:126 +#: system/forms.py system/models.py +msgid "Password for login API (e.g. Cicero)" +msgstr "Lösenord för inloggnings-API (t.ex. Cicero)" + +#: system/forms.py system/models.py +msgid "" +"Necessary for customers who wish to authenticate BorgerPC logins through an " +"API (e.g. Cicero)" +msgstr "" +"Nödvändigt för kunder som vill autentisera MedborgarPC-inloggningar via ett " +"API (t.ex. Cicero)" + +#: system/forms.py system/models.py +msgid "API key for Easy!Appointments" +msgstr "API-nyckel för Easy!Appointments" + +#: system/forms.py system/models.py +msgid "" +"Necessary for customers who wish to require booking through Easy!Appointments" +msgstr "Nödvändigt för kunder som vill begära bokning via Easy!Appointments" + +#: system/forms.py system/models.py +msgid "API key for login API (e.g. Quria)" +msgstr "API-nyckel för inloggnings-API (t.ex. Quria)" + +#: system/forms.py system/models.py +msgid "" +"Necessary for customers who wish to authenticate BorgerPC logins through an " +"API that requires an API key (e.g. Quria)" +msgstr "" +"Nödvändigt för kunder som vill autentisera MedborgarPC-inloggningar via ett " +"API som kräver en API-nyckel (t.ex. Quria)" + +#: system/forms.py +msgid "Select users to be added to this site" +msgstr "Välj användare som ska läggas till på detta site" + +#: system/forms.py +msgid "Hold down Ctrl to select multiple users" +msgstr "Håll ned Ctrl för att välja flera användare" + +#: system/forms.py +msgid "Select the usertype that the users should be added with" +msgstr "Välj den användartyp som användarna ska läggas till med" + +#: system/forms.py templates/documentation/users/index.html msgid "Usertype" msgstr "Typ av användare" -#: system/forms.py:136 system/models.py:986 +#: system/forms.py system/models.py +#: templates/documentation/scripts/parameters.html +#: templates/documentation/users/index.html msgid "Password" msgstr "Lösenord" -#: system/forms.py:142 +#: system/forms.py msgid "Password (again)" msgstr "Lösenord (igen)" -#: system/forms.py:197 +#: system/forms.py msgid "Passwords must be identical." msgstr "De två lösenorden måste vara desamma" -#: system/forms.py:204 +#: system/forms.py #, python-format msgid "A user named \"%s\" already exists." msgstr "En användare med namnet \"%s\" finns redan." -#: system/mixins.py:9 system/models.py:134 system/models.py:573 -#: system/models.py:883 system/models.py:1253 system/models.py:1280 -msgid "created" -msgstr "skapad" - -#: system/mixins.py:12 +#: system/mixins.py msgid "modified" msgstr "modifierad" -#: system/mixins.py:19 +#: system/mixins.py msgid "created by user" msgstr "skapad av användaren" -#: system/mixins.py:25 +#: system/mixins.py msgid "last modified by user" msgstr "Senast ändrad av användaren" -#: system/models.py:25 +#: system/models.py msgid "status:New" msgstr "Ny" -#: system/models.py:26 +#: system/models.py msgid "status:Fail" msgstr "Fejlet" -#: system/models.py:27 -msgid "status:Update" -msgstr "Uppdatera" +#. Translators: Related to security levels +#: system/models.py +msgid "Critical" +msgstr "Kritisk" + +#. Translators: Related to security levels +#: system/models.py +msgid "High" +msgstr "Hög" + +# SecurityProblem class +#. Translators: Related to security levels +#: system/models.py +msgid "Normal" +msgstr "Normal" -#: system/models.py:116 +#: system/models.py msgid "owner configuration" msgstr "ägarkonfiguration" -#: system/models.py:127 system/models.py:214 system/models.py:244 -#: system/models.py:290 system/models.py:444 system/models.py:558 -#: system/models.py:674 system/models.py:686 system/models.py:770 -#: system/models.py:989 system/models.py:1097 system/models.py:1238 -msgid "name" -msgstr "namn" +#: system/models.py +msgid "country name" +msgstr "lands namn" -#: system/models.py:128 system/models.py:215 system/models.py:560 -#: system/models.py:689 system/models.py:1098 -msgid "UID" -msgstr "UID" +#: system/models.py +msgid "customer name" +msgstr "kundnamn" -#: system/models.py:131 +#: system/models.py msgid "Paid for access until this date" msgstr "Betalat för tillträde fram till detta datum" -#: system/models.py:145 +#: system/models.py +msgid "Is a test customer" +msgstr "Är en test kund" + +#: system/models.py +msgid "UID" +msgstr "UID" + +#: system/models.py +msgid "This UID is used when registering a PC with the admin site." +msgstr "Detta UID används när du registrerar en PC med adminsidan." + +#: system/models.py +msgid "ISIL/NCIP" +msgstr "ISIL/NCIP" + +#: system/models.py msgid "" "Necessary for customers who wish to integrate with standard library login" msgstr "" "Nödvändigt för kunder som vill integrera inloggning till standardbibliotek" -#: system/models.py:150 +#: system/models.py +msgid "Username for login API (e.g. Cicero)" +msgstr "Användarnamn för inloggnings-API (t.ex. Cicero)" + +#: system/models.py +msgid "URL domain (including subdomain) for Easy!Appointments" +msgstr "URL-domän (inklusive underdomän) för Easy!Appointments" + +#: system/models.py msgid "Login duration" msgstr "Login-tid" -#: system/models.py:151 +#: system/models.py msgid "Login duration when integrating with library login" msgstr "Hur länge man kan använda datorn med en biblioteks inloggning" -#: system/models.py:157 +#: system/models.py msgid "Quarantine duration" msgstr "Karantänperiod" -#: system/models.py:158 +#: system/models.py msgid "Quarantine period when integrating with library login" msgstr "Karantänperiod, när den godkända inloggningstiden används." -#: system/models.py:219 -msgid "sites with access" -msgstr "sites med tillträde" +#: system/models.py +msgid "Automatically rerun associated scripts when you update their arguments" +msgstr "" +"Kör automatiskt associerade skript igen när du uppdaterar deras " +"inputparametrar" + +#: system/models.py +msgid "identifier" +msgstr "identifierare" + +#: system/models.py +msgid "Date of login" +msgstr "Inloggningsdatum" + +#: system/models.py +msgid "Time of login" +msgstr "Tid för inloggning" + +#: system/models.py +msgid "Time of logout" +msgstr "Tid för utloggning" -#: system/models.py:240 +#: system/models.py msgid "event_type:Altered Hours" msgstr "Ändrade öppettider" -#: system/models.py:241 +#: system/models.py msgid "event_type:Closed" msgstr "Stängningsdagar" -#: system/models.py:245 +#: system/models.py msgid "date start" msgstr "startdatum" -#: system/models.py:246 +#: system/models.py msgid "time start" msgstr "slå på" -#: system/models.py:247 +#: system/models.py msgid "date end" msgstr "slutdatum" -#: system/models.py:248 +#: system/models.py msgid "time end" msgstr "slå av" -#: system/models.py:251 +#: system/models.py msgid "type" msgstr "typ" -#: system/models.py:281 +#: system/models.py msgid "sleep_state:Standby" -msgstr "Låsläge Vila" +msgstr "Standby" -#: system/models.py:282 +#: system/models.py msgid "sleep_state:Freeze" -msgstr "Låsläge fryst" +msgstr "Freeze" -#: system/models.py:283 +#: system/models.py msgid "sleep_state:Mem" -msgstr "Låsläge Mem" +msgstr "Mem" -#: system/models.py:284 +#: system/models.py msgid "sleep_state:Off" msgstr "Off" -#: system/models.py:291 +#: system/models.py msgid "enabled" msgstr "aktiv" -#: system/models.py:293 +#: system/models.py msgid "sleep state" msgstr "viloläge" -#: system/models.py:299 +#: system/models.py msgid "monday on" msgstr "måndag på" -#: system/models.py:302 +#: system/models.py msgid "monday off" msgstr "måndag av" -#: system/models.py:304 +#: system/models.py msgid "monday open" msgstr "måndag öppen" -#: system/models.py:306 +#: system/models.py msgid "tuesday on" msgstr "tisdag på" -#: system/models.py:309 +#: system/models.py msgid "tuesday off" msgstr "tisdag av" -#: system/models.py:311 +#: system/models.py msgid "tuesday open" msgstr "tisdag öppen" -#: system/models.py:313 +#: system/models.py msgid "wednesday on" msgstr "onsdag på" -#: system/models.py:316 +#: system/models.py msgid "wednesday off" msgstr "onsdag av" -#: system/models.py:318 +#: system/models.py msgid "wednesday open" msgstr "onsdag öppen" -#: system/models.py:320 +#: system/models.py msgid "thursday on" msgstr "torsdag på" -#: system/models.py:323 +#: system/models.py msgid "thursday off" msgstr "torsdag av" -#: system/models.py:325 +#: system/models.py msgid "thursday open" msgstr "torsdag på" -#: system/models.py:327 +#: system/models.py msgid "friday on" msgstr "fredag på" -#: system/models.py:330 +#: system/models.py msgid "friday off" msgstr "fredag av" -#: system/models.py:332 +#: system/models.py msgid "friday open" msgstr "fredag på" -#: system/models.py:334 +#: system/models.py msgid "saturday on" msgstr "Lördag på" -#: system/models.py:337 +#: system/models.py msgid "saturday off" msgstr "Lördag av" -#: system/models.py:339 +#: system/models.py msgid "saturday open" msgstr "Lördag på" -#: system/models.py:341 +#: system/models.py msgid "sunday on" msgstr "Söndag på" -#: system/models.py:344 +#: system/models.py msgid "sunday off" msgstr "Söndag av" -#: system/models.py:346 +#: system/models.py msgid "sunday open" msgstr "Söndag på" -#: system/models.py:353 +#: system/models.py msgid "wake change events" msgstr "undantag" -#: system/models.py:446 system/models.py:563 system/models.py:691 -#: system/models.py:1099 system/models.py:1250 -msgid "description" -msgstr "beskrivning" +#: system/models.py +msgid "supervisors" +msgstr "ansvariga personer" -#: system/models.py:557 +#: system/models.py msgid "MAC" msgstr "MAC" -#: system/models.py:568 +#: system/models.py templates/documentation/sites_overview/index.html msgid "activated" msgstr "aktiverad" -#: system/models.py:570 -msgid "update required" -msgstr "Uppdatering krävs." - -#: system/models.py:575 +#: system/models.py msgid "last seen" msgstr "senaste incheckning" -#: system/models.py:577 +#: system/models.py msgid "location" msgstr "placering" -#: system/models.py:699 +#: system/models.py msgid "executable code" msgstr "körbar kod" -#: system/models.py:702 system/models.py:1108 +#: system/models.py templates/system/scripts/update.html msgid "security script" msgstr "säkerhetsskript" -#: system/models.py:706 +#: system/models.py msgid "hidden script" msgstr "dolt skript" -#: system/models.py:710 +#: system/models.py msgid "maintained by Magenta" msgstr "underhålls av Magenta" -#: system/models.py:787 system/models.py:996 +#: system/models.py msgid "position" msgstr "position" -#: system/models.py:849 -msgid "jobstatus:New" +#. Translators: Related to job status +#: system/models.py +msgid "New" msgstr "Nytt" -#: system/models.py:850 -msgid "jobstatus:Submitted" +#. Translators: Related to job status +#: system/models.py +msgid "Submitted" msgstr "Avsänd" -#: system/models.py:851 -msgid "jobstatus:Running" -msgstr "Körs" - -#: system/models.py:852 -msgid "jobstatus:Failed" +#. Translators: Related to job status +#: system/models.py +msgid "Failed" msgstr "Misslyckad" -#: system/models.py:853 -msgid "jobstatus:Done" +#. Translators: Related to job status +#: system/models.py +msgid "Done" msgstr "Utförd" -#: system/models.py:854 -msgid "jobstatus:Resolved" +#. Translators: Related to job status +#: system/models.py +msgid "Restarted" msgstr "Omstartad" -#: system/models.py:880 +#: system/models.py msgid "log output" msgstr "log output" -#: system/models.py:885 +#: system/models.py msgid "started" msgstr "påbörjad" -#: system/models.py:886 +#: system/models.py msgid "finished" msgstr "Slutförd" -#: system/models.py:939 +#: system/models.py #, python-brace-format msgid "Cannot change status from {0} to {1}" msgstr "Kan inte ändra status från {0} til {1}" -#: system/models.py:946 system/views.py:509 +#: system/models.py system/views.py #, python-format -msgid "Can only restart jobs with status %s" -msgstr "Kan endast starta om jobb som har status %s" +msgid "Can only restart jobs that are Done or Failed %s" +msgstr "Kan endast starta om jobb som er Utförd eller Misslyckad %s" -#: system/models.py:980 +#: system/models.py templates/documentation/scripts/parameters.html msgid "String" msgstr "Sträng" -#: system/models.py:981 +#: system/models.py templates/documentation/scripts/parameters.html msgid "Integer" msgstr "Heltal" -#: system/models.py:982 -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:63 +#: system/models.py templates/documentation/scripts/parameters.html +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "Date" msgstr "Datum" -#: system/models.py:983 +#: system/models.py templates/documentation/scripts/parameters.html msgid "File" msgstr "Fil" -#: system/models.py:984 +#: system/models.py templates/documentation/scripts/parameters.html msgid "Boolean" msgstr "Kryssruta" -#: system/models.py:985 +#: system/models.py templates/documentation/scripts/parameters.html msgid "Time" msgstr "Tid" -#: system/models.py:991 +#: system/models.py templates/documentation/scripts/parameters.html +msgid "Choices" +msgstr "Valmöjligheter" + +#: system/models.py msgid "value type" msgstr "värde-typ" -#: system/models.py:994 +#: system/models.py msgid "default value" msgstr "standardvärde" -#: system/models.py:997 +#: system/models.py msgid "mandatory" msgstr "krävs" -# SecurityProblem class -#: system/models.py:1080 -msgid "securitylevel:Normal" -msgstr "Normal" - -#: system/models.py:1081 -msgid "securitylevel:High" -msgstr "Hög" - -#: system/models.py:1082 -msgid "securitylevel:Critical" -msgstr "Kritisk" - # Konsistens ml. navn i sikkerhedsregel og sikkerhedshændelse -#: system/models.py:1101 +#: system/models.py msgid "level" msgstr "svårighetsgrad" -#: system/models.py:1115 +#: system/models.py msgid "alert groups" msgstr "övervakad gruppr" -#: system/models.py:1121 +#: system/models.py msgid "alert users" msgstr "Mottagare av e-postvarningen." -# SecurityEvent class -#: system/models.py:1149 -msgid "eventstatus:New" +#: system/models.py +msgid "monitor period start" +msgstr "övervakningsperioden börjar" + +#: system/models.py +msgid "monitor period end" +msgstr "övervakningsperiodens slut" + +#: system/models.py +msgid "maximum offline period allowed, in minutes" +msgstr "högsta tillåtna offlineperiod i minuter" + +#: system/models.py +msgid "How long a PC may be offline before an event is created" +msgstr "Hur länge en dator måste vara offline innan en incident skapas" + +#. Translators: Related to event status +#: system/models.py +msgid "New " msgstr "Ny" -#: system/models.py:1150 -msgid "eventstatus:Assigned" +# SecurityEvent class +#. Translators: Related to event status +#: system/models.py +msgid "Assigned" msgstr "Tilldelad" -#: system/models.py:1151 -msgid "eventstatus:Resolved" +#. Translators: Related to event status +#: system/models.py +msgid "Resolved" msgstr "Löst" -#: system/models.py:1167 +#: system/models.py msgid "occurred" msgstr "händelsetidpunkt" -#: system/models.py:1169 +#: system/models.py msgid "reported" msgstr "rapporterat" -#: system/models.py:1176 +#: system/models.py msgid "assigned user" msgstr "hanteras av" -#: system/models.py:1249 -msgid "title" -msgstr "titel" +#: system/models.py +msgid "product" +msgstr "produkt" -#: system/models.py:1251 system/models.py:1278 -msgid "content" -msgstr "innehåll" +#: system/models.py +msgid "key" +msgstr "Nyckel" -#: system/models.py:1254 -msgid "updated" -msgstr "uppdaterat" +#: system/utils.py +#, python-format +msgid "Changes have been saved %s" +msgstr "Ändringar har sparats %s" + +#: system/views.py +msgid "The specified UID is unavailable. Please choose another." +msgstr "Det angivna UID är inte tillgängligt. Välj en annan." + +#: system/views.py +#, python-format +msgid "Site %s created" +msgstr "Site %s skapad" -#: system/models.py:1255 -msgid "author" -msgstr "författare" +#: system/views.py +#, python-format +msgid "" +"The Site could not be created because the chosen UID %s was invalid or not " +"unique" +msgstr "" +"Sitet kunde inte skapas eftersom det valda UID %s var ogiltigt eller inte " +"unikt" -#: system/models.py:1258 -msgid "version" -msgstr "version" +#: system/views.py +#, python-format +msgid "Site %s deleted" +msgstr "Site %s raderad" -#: system/views.py:315 +#: system/views.py #, python-format msgid "Settings for %s updated" msgstr "Inställningar för %s uppdaterat" -#: system/views.py:545 +#: system/views.py #, python-format msgid "The script %s is being rerun on the computer %s" msgstr "Skriptet %s körs på datorn %s" -#: system/views.py:590 +#: system/views.py #, python-format msgid "You have no Script with the following ID: %s" msgstr "Du har inget skript med ID %s" -#: system/views.py:697 +#: system/views.py msgid "Error: You must provide a name" msgstr "Fejl: Du ska ange ett namn" -#: system/views.py:704 +#: system/views.py msgid "Error: You must provide a correct input parameter type" -msgstr "Fejl: Du måste ange en korrekt typ av inmatningsparameter." +msgstr "Fejl: Du måste ange en korrekt typ av indataparameter." -#: system/views.py:864 +#: system/views.py #, python-format msgid "Script %s updated" msgstr "Skript %s updaterat" -#: system/views.py:961 system/views.py:983 +#: system/views.py msgid "You must specify at least one group or pc" msgstr "Du måste ange minst en dator eller grupp" -#: system/views.py:1109 +#: system/views.py #, python-format msgid "You have no computer with the following ID: %s" msgstr "Du har ingen dator med följande ID: %s" -#: system/views.py:1181 +#: system/views.py +#, python-format +msgid "" +"Computer %s updated, but it could not be added to the group(s) %s because it " +"already belongs to the plan %s" +msgstr "" +"Datorn %s uppdaterad, men den kunde inte läggas till i gruppen/grupperna %s " +"eftersom den redan tillhör tidtabellen %s" + +#: system/views.py #, python-format msgid "Computer %s updated" msgstr "Dator %s uppdaterad" -#: system/views.py:1447 +#: system/views.py #, python-format msgid "" "PCWakePlan %s created, but the group(s) %s could not be added because the " @@ -545,7 +857,7 @@ msgstr "" "tidtabellerna%s, och undantag(en) %s kunde inte läggas till på grund av " "överlappning med andra utvalda undantag." -#: system/views.py:1462 +#: system/views.py #, python-format msgid "" "PCWakePlan %s created, but the group(s) %s could not be added because the " @@ -555,7 +867,7 @@ msgstr "" "inte läggas till somdator(er) %s är redan inskrivna i tidtabellen/" "tidtabellerna %s" -#: system/views.py:1475 +#: system/views.py #, python-format msgid "" "PCWakePlan %s created, but the WakeChangeEvents %s could not be added due to " @@ -564,17 +876,17 @@ msgstr "" "På-/Av-schema %s har skapats, men undantaget/undantagen %s har inte kunnat " "läggas till. grundet overlap med andre valgte undtagelser" -#: system/views.py:1485 +#: system/views.py #, python-format msgid "PCWakePlan %s created" msgstr "Schema för på- och avstängning %s har skapats" -#: system/views.py:1505 +#: system/views.py #, python-format msgid "You have no Wake Week Plan with the following ID: %s" msgstr "Du har ingen tidtabell med följande ID: %s" -#: system/views.py:1630 +#: system/views.py #, python-format msgid "" "PCWakePlan %s updated, but the group(s) %s could not be added because the " @@ -586,7 +898,7 @@ msgstr "" "och undantaget/undantagen %s kunde inte läggas till på grund av överlappning " "med andra valda undantag" -#: system/views.py:1645 +#: system/views.py #, python-format msgid "" "PCWakePlan %s updated, but the group(s) %s could not be added because the " @@ -595,7 +907,7 @@ msgstr "" "Tänd- och släckschema %s uppdaterat, men grupp(er) %s kunde inte läggas till " "eftersom dator(er) %s är redan inskrivna i schema(n) %s" -#: system/views.py:1658 +#: system/views.py #, python-format msgid "" "PCWakePlan %s updated, but the WakeChangeEvents %s could not be added due to " @@ -604,52 +916,62 @@ msgstr "" "Tidtabell för på- och avstängning %s uppdaterad, men undantag %s kunde inte " "läggas till på grund av överlappning med andra utvalda undantag" -#: system/views.py:1669 +#: system/views.py #, python-format msgid "PCWakePlan %s updated" msgstr "Uppdatering av schemat för på- och avstängning %s" -#: system/views.py:1766 +#: system/views.py #, python-format msgid "Wake Week Plan %s deleted" msgstr "Tänd/släck schema %s borttagen" -#: system/views.py:1888 +#: system/views.py #, python-format msgid "You have no Wake Change Event with the following ID: %s" msgstr "Du har inget undantag med ID %s" -#: system/views.py:1925 +#: system/views.py #, python-format msgid "Wake Change Event %s updated" msgstr "Undantag %s uppdaterat" -#: system/views.py:1935 +#: system/views.py #, python-format msgid "The chosen dates would cause overlap with event %s in plan %s" msgstr "De valda datumen skulle överlappa med undantaget %s i schemat %s" -#: system/views.py:1945 system/views.py:2001 +#: system/views.py #, python-format msgid "The end date cannot be before the start date %s" msgstr "Datumet Till får inte vara före datumet Från %s" -#: system/views.py:2143 +#: system/views.py +#, python-format +msgid "The user(s) %s have been added to the site %s " +msgstr "Användarna %s har lagts till på sitet %s" + +#: system/views.py #, python-format msgid "You have no user with the following ID: %s" msgstr "Du har ingen användare med följande ID: %s" -#: system/views.py:2208 +#: system/views.py #, python-format msgid "User %s updated" msgstr "Användare %s uppdaterad" -#: system/views.py:2251 +#: system/views.py +#, python-format +msgid "User %s removed from the site %s" +msgstr "Användaren %s togs bort från sitet %s" + +#: system/views.py #, python-format msgid "User %s deleted" msgstr "Användaren %s raderad" -#: system/views.py:2338 +#: system/views.py #, python-format msgid "" "You have no group with the following ID: %s. Try locating the group in the " @@ -658,7 +980,7 @@ msgstr "" "Du har ingen grupp med följande ID:

%s


" "Försök istället att hitta gruppen från grupplistan." -#: system/views.py:2507 +#: system/views.py #, python-format msgid "" "Group %s updated, but the pc(s) %s could not be added because they already " @@ -667,597 +989,4141 @@ msgstr "" "Grupp %s uppdaterad, men dator(er) %s kunde inte läggas till eftersom de är " "redan inskriven i tidtabellen/tidtabellerna %s" -#: system/views.py:2519 +#: system/views.py #, python-format msgid "Group %s updated" msgstr "Grupp %s uppdaterad" -#: system/views.py:2533 +#: system/views.py #, python-format msgid "No value was specified for the mandatory input %s of script %s" msgstr "Det obligatoriska parametervärdet %s för skriptet %s saknas." -#: system/views.py:2605 +#: system/views.py #, python-format msgid "Group %s deleted" msgstr "Grupp %s borttagen" -#: system/views.py:2672 +#: system/views.py #, python-format msgid "You have no Security Problem with the following ID: %s" msgstr "Du har ingen säkerhetsregel med följande ID: %s" -#: system/views.py:2920 +#: system/views.py +#, python-format +msgid "You have no Event Rule Server with the following ID: %s" +msgstr "Du har ingen offline-regel med följande ID: %s" + +#: system/views.py msgid "The administration site" msgstr "Administrationssidan" -#: system/views.py:2921 +#: system/views.py templates/documentation/om_os2borgerpc_admin.html msgid "About" msgstr "Om" -#: system/views.py:2922 templates/site_with_navigation.html:31 -#: templates/system/jobs/site_jobs.html:37 -#: templates/system/jobs/site_jobs.html:162 templates/system/pcs/form.html:153 -#: templates/system/security_events/site_security_events.html:51 -#: templates/system/security_events/site_security_events.html:121 -#: templates/system/site_status.html:5 templates/system/site_status.html:23 +#: system/views.py templates/documentation/sites_overview/index.html +msgid "Sites overview" +msgstr "Sites-översikt" + +#: system/views.py templates/documentation/status/index.html +#: templates/documentation/wake_plans/edit_settings.html +#: templates/site_with_navigation.html templates/system/jobs/site_jobs.html +#: templates/system/pcs/form.html +#: templates/system/security_events/site_security_events.html +#: templates/system/site_status.html msgid "Status" msgstr "Status" -#: system/views.py:2923 templates/site_with_navigation.html:75 -#: templates/system/jobs/site_jobs.html:83 -#: templates/system/pcgroups/confirm_delete.html:18 -#: templates/system/pcs/form.html:7 templates/system/pcs/site_pcs.html:6 -#: templates/system/pcs/site_pcs.html:16 templates/system/site_list.html:7 -#: templates/system/site_status.html:11 -#: templates/system/wake_plan/confirm_delete.html:16 -#: templates/system/wake_plan/wake_plan.html:33 +#: system/views.py templates/documentation/status/index.html +#: templates/documentation/users/index.html templates/site_with_navigation.html +#: templates/system/jobs/site_jobs.html +#: templates/system/pcgroups/confirm_delete.html templates/system/pcs/form.html +#: templates/system/pcs/site_pcs.html templates/system/sites/list.html +#: templates/system/wake_plan/confirm_delete.html +#: templates/system/wake_plan/wake_plan.html msgid "Computers" msgstr "Datorer" -#: system/views.py:2924 templates/site_with_navigation.html:80 -#: templates/system/jobs/site_jobs.html:106 -#: templates/system/pcgroups/site_groups.html:7 -#: templates/system/security_problems/confirm_delete.html:23 -#: templates/system/wake_plan/confirm_delete.html:15 -#: templates/system/wake_plan/wake_plan.html:26 +#: system/views.py templates/documentation/groups/index.html +#: templates/documentation/users/index.html templates/site_with_navigation.html +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/jobs/site_jobs.html +#: templates/system/pcgroups/site_groups.html +#: templates/system/wake_plan/confirm_delete.html +#: templates/system/wake_plan/wake_plan.html msgid "Groups" msgstr "Grupper" -#: system/views.py:2925 +#: system/views.py templates/documentation/wake_plans/index.html +#: templates/site_with_navigation.html msgid "On/Off schedules" msgstr "Schema för på- och avstängning" -#: system/views.py:2926 templates/site_with_navigation.html:98 -#: templates/system/jobs/site_jobs.html:6 -#: templates/system/scripts/confirm_delete.html:21 +#: system/views.py templates/documentation/api.html +#: templates/site_with_navigation.html templates/system/jobs/site_jobs.html +#: templates/system/scripts/confirm_delete.html msgid "Jobs" msgstr "Jobs" -#: system/views.py:2927 templates/site_with_navigation.html:103 -#: templates/system/scripts/header.html:5 -#: templates/system/site_two_factor.html:52 +#: system/views.py templates/documentation/users/index.html +#: templates/site_with_navigation.html templates/system/scripts/header.html msgid "Scripts" msgstr "Skript" -#: system/views.py:2928 templates/site_with_navigation.html:61 -#: templates/system/scripts/header.html:5 +#: system/views.py templates/site_with_navigation.html +#: templates/system/scripts/header.html msgid "Security Scripts" msgstr "Skript för säkerhet" -#: system/views.py:2929 templates/site_with_navigation.html:110 -#: templates/system/users/confirm_delete.html:5 -#: templates/system/users/create.html:5 templates/system/users/update.html:5 +#: system/views.py templates/documentation/notifications/index.html +msgid "Notifications and offline rules" +msgstr "Aviseringar och offline-regler" + +#: system/views.py templates/documentation/users/index.html +#: templates/site_with_navigation.html templates/system/users/link.html +#: templates/system/users/update.html msgid "Users" msgstr "Användare" -#: system/views.py:2930 templates/site_with_navigation.html:186 -#: templates/system/pcgroups/site_groups.html:67 -#: templates/system/pcs/form.html:89 templates/system/site_settings.html:31 +#: system/views.py templates/documentation/api.html +#: templates/documentation/computers/index.html +#: templates/documentation/configuration/index.html +#: templates/documentation/groups/index.html +#: templates/site_with_navigation.html +#: templates/system/pcgroups/site_groups.html templates/system/pcs/form.html +#: templates/system/site_settings/site_settings.html msgid "Configurations" msgstr "Konfigurationer" -#: system/views.py:2931 -msgid "Setting up security surveillance (PDF)" -msgstr "Skapande av säkerhetsövervakning (PDF)" - -#: system/views.py:2932 +#: system/views.py templates/documentation/changelogs/index.html msgid "The News site" msgstr "Nyhetssidan" -#: system/views.py:2933 -msgid "OS2borgerPC" -msgstr "Sambruk MedbogarPC" +#: system/views.py +msgid "Setting up security surveillance (PDF)" +msgstr "Skapande av säkerhetsövervakning (PDF)" -#: system/views.py:2934 +#: system/views.py msgid "Installation Guide (PDF)" msgstr "Installationsguide (PDF)" -#: system/views.py:2935 +#: system/views.py msgid "Old installation guide (PDF)" msgstr "Gammal installationsguide (PDF)" -#: system/views.py:2936 +#: system/views.py templates/documentation/sites_overview/index.html +#: templates/system/site_status.html templates/system/sites/list.html msgid "OS2borgerPC Kiosk" msgstr "Sambruk MedborgarPC Kiosk" -#: system/views.py:2937 +#: system/views.py msgid "Installation Guide" msgstr "Installationsguide" -#: system/views.py:2938 +#: system/views.py msgid "Updating Wi-Fi setup" msgstr "Uppdaterar Wi-Fi inställningar" -#: system/views.py:2939 +#: system/views.py +msgid "Audit" +msgstr "Revision" + +#: system/views.py +msgid "FAQ (PDF)" +msgstr "Vanliga frågor (PDF)" + +#: system/views.py templates/documentation/tech.html msgid "Technical Documentation" msgstr "Teknisk Dokumentation" -#: system/views.py:2940 +#: system/views.py msgid "OS2borgerPC Image" msgstr "Sambruk MedborgarPC Image" -#: system/views.py:2941 +#: system/views.py msgid "OS2borgerPC Admin Site" msgstr "Sambruk MedborgarPC Admin Site" -#: system/views.py:2942 +#: system/views.py msgid "OS2borgerPC Kiosk Image" msgstr "Sambruk MedborgarPC Kiosk Image" -#: system/views.py:2943 +#: system/views.py msgid "OS2borgerPC Client" msgstr "Sambruk MedborgarPC Client" -#: templates/403.html:5 templates/403.html:18 +#: templates/403.html msgid "Permission denied" msgstr "Rättigheter förbjudna" -#: templates/403.html:21 templates/404.html:20 templates/500.html:21 +#: templates/403.html templates/404.html templates/500.html msgid "Return to OS2borgerPC-admin" msgstr "Gå tillbaka till Sambruk MedborgarPC-admin" -#: templates/403.html:28 +#: templates/403.html msgid "You do not have permission to access this webpage" msgstr "Du har inte tillgång till den här sidan" -#: templates/403.html:29 templates/404.html:38 templates/500.html:29 +#: templates/403.html templates/404.html templates/500.html msgid "Best regards" msgstr "Mvh." -#: templates/403.html:30 templates/404.html:39 templates/500.html:30 +#: templates/403.html templates/404.html templates/500.html msgid "The OS2BorgerPC team" msgstr "Sambruk MedbogarPC teamet" -#: templates/404.html:5 +#: templates/404.html msgid "The webpage could not be found" msgstr "Sidan kunde inte hittas" -#: templates/404.html:27 +#: templates/404.html msgid "The webpage could unfortunately not be found." msgstr "Sidan kunde tyvärr inte hittas" -#: templates/404.html:30 +#: templates/404.html msgid "The error message is:" msgstr "Felmeddelandet är följande:" -#: templates/404.html:37 +#: templates/404.html msgid "If you believe that this is an error, you may contact us at" msgstr "" "Om du tror att det finns ett fel kan du skriva till oss på följande adress" -#: templates/500.html:5 templates/500.html:18 +#: templates/500.html msgid "Server error" msgstr "Serverfel" -#: templates/500.html:28 +#: templates/500.html msgid "A server error has occurred, and we have been notified about the error." msgstr "Ett serverfel har inträffat och vi har informerats om felet." -#: templates/base.html:7 +#: templates/base.html msgid "OS2borgerPC Administration" msgstr "Sambruk MedborgarPC Administration" -#: templates/base.html:41 templates/login.html:314 +#: templates/base.html templates/two_factor/_base.html msgid "" "It looks like you're using Internet Explorer. It won't work on this website." msgstr "" "Det verkar som om du använder Internet Explorer. Det fungerar inte på denna " "webbplats." -#: templates/base.html:42 templates/login.html:315 +#: templates/base.html templates/two_factor/_base.html msgid "Try opening this website in Microsoft Edge" msgstr "Försök att öppna den här sidan i Microsoft Edge" -#: templates/documentation/index.html:8 -msgid "OS2borgerPC documentation" -msgstr "Sambruk MedborgarPC dokumentation" +#: templates/documentation/api.html +msgid "API Key" +msgstr "API-nyckel" + +#: templates/documentation/api.html templates/site_with_navigation.html +#: templates/system/site_settings/api_keys/api_keys.html +msgid "API Keys" +msgstr "API-nycklar" + +#: templates/documentation/api.html +msgid "PC's" +msgstr "PC:er" + +#: templates/documentation/api.html +#: templates/documentation/security_scripts/__submenu__.html +#: templates/documentation/security_scripts/edit.html +#: templates/documentation/security_scripts/securityevents.html +#: templates/site_with_navigation.html +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/security_events/site_security_events.html +msgid "Events" +msgstr "Incidenter" + +#: templates/documentation/api.html +msgid "PC" +msgstr "PC" + +#: templates/documentation/api.html +msgid "Logins" +msgstr "Inloggningar" + +#: templates/documentation/api.html +msgid "Generate an API key" +msgstr "Generera en API-nyckel" + +#: templates/documentation/api.html +msgid "OS2borgerPC has a REST API with the root URL at" +msgstr "Sambruk MedborgarPC har ett REST API med rot-URL:n på" + +#: templates/documentation/api.html +msgid "The documentation for this API is available at" +msgstr "Dokumentationen för detta API finns på" + +#: templates/documentation/api.html +msgid "More info about this below." +msgstr "Mer info om detta nedan" + +#: templates/documentation/api.html +#, python-format +msgid "" +"In order to make requests to the API, you need to generate and use an " +"%(api_key)s. The process is described further down the page." +msgstr "" +"För att göra förfrågningar till API:t måste du generera och använda en " +"%(api_key)s. Processen beskrivs längre ner på sidan." -#: templates/documentation/index.html:22 -#: templates/site_with_navigation.html:119 -#: templates/system/changelog/list.html:34 -msgid "Documentation" -msgstr "Dokumentation" +#: templates/documentation/api.html +msgid "The API has endpoints for the following:" +msgstr "Api:n har slutpunkter för följande" -#: templates/documentation/index.html:25 -msgid "Return to admin" -msgstr "Tillbaka til admin" +#: templates/documentation/api.html +#, python-format +msgid "" +"which contains extended info about a %(pc)s, such as hostname and IP " +"addresses" +msgstr "" +"som innehåller utökad information om en %(pc)s, såsom värdnamn och IP-" +"adresser" -#: templates/login.html:9 -msgid "OS2borgerPC Administration Login" -msgstr "Sambruk MedborgarPC Administration Inloggning" +#: templates/documentation/api.html +#, python-format +msgid "" +"which contains information about how many %(logins)s a single or all " +"computers have had on a given day" +msgstr "" +"som innehåller information om hur många %(logins)s en enda eller alla " +"datorer har haft en viss dag" -#: templates/login.html:283 templates/login.html:286 -msgid "Log in" -msgstr "Logga in" +#: templates/documentation/api.html +msgid "HTTP header" +msgstr "HTTP header" -#: templates/login.html:292 +#: templates/documentation/api.html +#, python-format msgid "" -"OS2borgerPC is an open source product. You can download the source code and " -"documentation here:" +"Every request to the API needs to include an %(api_key)s as part of the " +"request. This %(api_key)s is sent as an %(header)s in the following format:" msgstr "" -"Sambruk MedborgarPC är en lösning med öppen källkod. Du kan ladda ner " -"källkoden och dokumentationen här:" +"Varje begäran till API:et måste inkludera en %(api_key)s som en del av " +"begäran. Denna %(api_key)s skickas som en %(header)s i följande format:" -#: templates/login.html:302 -msgid "Check updates for OS2borgerPC" -msgstr "Se uppdateringar i Sambruk MedborgarPC" +#: templates/documentation/api.html +msgid "...without the" +msgstr "...utan" -#: templates/login.html:308 -msgid "Send a message to Magenta" -msgstr "Skicka ett meddelande till Magenta" +#: templates/documentation/api.html +msgid "brackets." +msgstr "fästena" -#: templates/logout.html:11 -msgid "You have been logged out" -msgstr "Du är nu utloggad" +#: templates/documentation/api.html +#, python-format +msgid "" +"An example request to the API, with an example %(api_key)s, looks like this, " +"using the CLI tool" +msgstr "" +"En exempelförfrågan till API:t, med ett exempel %(api_key)s, ser ut så här, " +"med hjälp av CLI-verktyget" -#: templates/logout.html:12 -msgid "Click here to log in again" -msgstr "Klicka här för att logga in igen" +#: templates/documentation/api.html +#, python-format +msgid "API authentication: %(api_keys)s" +msgstr "API-autentisering %(api_keys)s" -#: templates/site_with_navigation.html:23 templates/system/site_list.html:5 -#: templates/system/site_list.html:6 -msgid "Sites" -msgstr "Sites" +#: templates/documentation/api.html templates/site_with_navigation.html +#: templates/system/site_settings/site_settings.html +msgid "Site settings" +msgstr "Inställningar för Site" -#: templates/site_with_navigation.html:37 -#: templates/system/changelog/list.html:8 -#: templates/system/changelog/list.html:10 -#: templates/system/changelog/list.html:28 -msgid "News" -msgstr "Nyheter" +#: templates/documentation/api.html +msgid "" +"API-keys are used to allow a person or a program to retrieve data from your " +"Site." +msgstr "" +"API-nycklar används för att tillåta en person eller ett program att hämta " +"data från din Site." -#: templates/site_with_navigation.html:41 -msgid "Security" -msgstr "Säkerhet" +#: templates/documentation/api.html +#, python-format +msgid "" +"If you have access to multiple Sites, you'll need to make %(api_keys)s for " +"each of those Sites." +msgstr "" +"Om du har tillgång till flera Sites måste du skapa %(api_keys)s för var och " +"en av dessa Sites." -#: templates/site_with_navigation.html:46 -#: templates/system/security_events/site_security_events.html:6 -#: templates/system/security_problems/confirm_delete.html:17 -msgid "Security Events" -msgstr "Säkerhetsincidenter" +#: templates/documentation/api.html +#, python-format +msgid "" +"You can generate, edit or delete API keys by going to %(site_settings)s and " +"then clicking the link " +msgstr "" +"Du kan generera, redigera eller ta bort API-nycklar genom att gå till " +"%(site_settings)s och sedan klicka på länken " -#: templates/site_with_navigation.html:55 -#: templates/system/security_problems/site_security_problems.html:7 -msgid "Security Rules" -msgstr "Säkerhetsregler" +#: templates/documentation/api.html +#: templates/system/site_settings/site_settings.html +msgid "Manage API keys" +msgstr "Hantera API-nycklar" -#: templates/site_with_navigation.html:67 -#: templates/system/site_two_factor.html:4 -msgid "Two-factor authentication" -msgstr "Verifiering i två steg" +#: templates/documentation/api.html +msgid "On this page you can:" +msgstr "På den här sidan kan du:" -#: templates/site_with_navigation.html:71 -msgid "Organizing" -msgstr "Organisering" +#: templates/documentation/api.html +#, python-format +msgid "" +"Click \"Generate new %(api_key)s\" to generate and save a new %(api_key)s" +msgstr "" +"Klicka på \"Generera nya %(api_key)s\" för att generera och spara en ny " +"%(api_key)s" -#: templates/site_with_navigation.html:85 -#: templates/system/wake_plan/wake_plan_base.html:6 -msgid "On/Off schedule" -msgstr "Schema för på- och avstängning" +#: templates/documentation/api.html +#, python-format +msgid "" +"Write or change the comment about a given %(api_key)s. Fx. to specify who/" +"what is using the given key." +msgstr "" +"Skriv eller ändra kommentaren om en given %(api_key)s. Fx. att ange vem/vad " +"använder den givna nyckeln." + +#: templates/documentation/api.html +msgid "Changes are saved automatically after a few seconds." +msgstr "Ändringar sparas automatiskt efter några sekunder." + +#: templates/documentation/api.html +#, python-format +msgid "Click \"Delete\" next to an %(api_key)s to delete and deactivate it." +msgstr "" +"Klicka på \"Ta bort\" bredvid en %(api_key)s för att ta bort och inaktivera " +"den." + +#: templates/documentation/api.html +msgid "" +"A confirmation popup will appear to confirm whether you want to delete it or " +"not." +msgstr "" +"En bekräftelse popup visas för att bekräfta om du vill ta bort den eller " +"inte." + +#: templates/documentation/api.html +msgid "API Documentation" +msgstr "API Dokumentation" + +#: templates/documentation/api.html +msgid "" +"The documentation has information about which endpoints are available, what " +"data is expected in the request, and what data is received in the response." +msgstr "" +"Dokumentationen har information om vilka endpoints som finns tillgängliga, " +"vilka data som förväntas i förfrågan och vilka data som tas emot i svaret." + +#: templates/documentation/api.html +msgid "" +"In order to visit and view the API documentation you have to be signed in to " +"the admin site." +msgstr "" +"För att besöka och se API-dokumentationen måste du vara inloggad på " +"adminsidan." + +#: templates/documentation/api.html +msgid "The documentation generally looks something like this:" +msgstr "Dokumentationen ser generellt ut ungefär så här:" + +#: templates/documentation/api.html +msgid "" +"As per the image, below the red circle numbered \"1\" you can see each " +"endpoint. Each of these can be clicked to get more information about it." +msgstr "" +"Enligt bilden, under den röda cirkeln numrerad \"1\" kan du se varje " +"slutpunkt. Var och en av dessa kan klickas för att få mer information om den." + +#: templates/documentation/api.html +msgid "" +"Below the red circle numbered \"2\", you can click to see information about " +"what format the returned data has." +msgstr "" +"Under den röda cirkeln numrerad \"2\", kan du klicka för att se information " +"om vilket format de returnerade data har." + +#: templates/documentation/api.html +msgid "Authorize" +msgstr "Authorize" + +#: templates/documentation/api.html +#, python-format +msgid "" +"Next to the red circle numbered \"3\", you see the %(auth)s button. This " +"button can be used to test out the API directly from the documentation, as " +"soon as you have generated an API Key." +msgstr "" +"Bredvid den röda cirkeln numrerad \"3\", ser du knappen %(auth)s. Den här " +"knappen kan användas för att testa API:t direkt från dokumentationen, så " +"snart du har genererat en API-nyckel." + +#: templates/documentation/api.html +msgid "Testing out the API directly from the documentation" +msgstr "Testa API direkt från dokumentationen" + +#: templates/documentation/api.html +msgid "" +"On the API Documentation page, you can directly experiment with requests to " +"the API." +msgstr "" +"På API-dokumentationssidan kan du experimentera direkt med förfrågningar " +"till API:t." + +#: templates/documentation/api.html +msgid "This is how you do that:" +msgstr "Så här gör du:" + +#: templates/documentation/api.html +#, python-format +msgid "" +"In order to make a request to the API, you must first %(gen_key)s on the page" +msgstr "För att göra en begäran till API:t måste du först %(gen_key)s på sidan" + +#: templates/documentation/api.html +msgid "\"Copy\" the API key from the API Key page." +msgstr "\"Kopiera\" API-nyckeln från API-nyckelsidan." + +#: templates/documentation/api.html +#, python-format +msgid "" +"Click the %(auth)s button as seen in the screenshot above next to the circle " +"numbered \"3\"." +msgstr "" +"Klicka på %(auth)s-knappen som visas i skärmdumpen ovan bredvid cirkeln " +"numrerad \"3\"." + +#: templates/documentation/api.html +#, python-format +msgid "" +"\"Paste\" in the API Key you copied in step 2 and click %(auth)s then \"Close" +"\"." +msgstr "" +"\"Klistra in\" API-nyckeln som du kopierade i steg 2 och klicka på %(auth)s " +"och sedan \"Stäng\"." + +#: templates/documentation/api.html +msgid "" +"Now click the API endpoint you wish to test with to expand it. Here we pick " +"PCs." +msgstr "" +"Klicka nu på API-slutpunkten du vill testa med för att expandera den. Här " +"väljer vi datorer." + +#: templates/documentation/api.html +msgid "Click the button called \"Try it out\"." +msgstr "Klicka på knappen som heter \"Try it out\"." + +#: templates/documentation/api.html +msgid "Click the button \"Execute\"." +msgstr "Klicka på knappen \"Execute\"." + +#: templates/documentation/api.html +msgid "Now you'll see a response. It might be necessary to scroll down a bit." +msgstr "" +"Nu kommer du att se ett svar. Det kan vara nödvändigt att scrolla ner lite." + +#: templates/documentation/api.html +msgid "" +"If everything went well, you should see the status code 200 and the relevant " +"data returned." +msgstr "" +"Om allt gick bra bör du se statuskoden 200 och relevant data returneras." + +#: templates/documentation/api.html +msgid "If not you'll get an error message." +msgstr "Om inte får du ett felmeddelande." + +#: templates/documentation/api.html +msgid "" +"The status code 204 means that no data was returned. This can happen if you " +"e.g. try to get a specific PC and enter an id that does not match any PC on " +"your site." +msgstr "" +"Statuskoden 204 betyder att ingen data returnerades. Detta kan hända om du t." +"ex. försök att skaffa en specifik dator och ange ett id som inte matchar " +"någon dator på din Site." + +#: templates/documentation/api.html +#, python-format +msgid "" +"The status code 401 \"Error: Unauthorized\" will be returned if you do not " +"use the %(auth)s button or if you enter an invalid API key." +msgstr "" +"Statuskoden 401 \"Error: Unauthorized\" kommer att returneras om du inte " +"använder knappen %(auth)s eller om du anger en ogiltig API-nyckel." + +#: templates/documentation/changelogs/index.html +msgid "" +"The purpose of the news site is to display the content of new updates for " +"OS2borgerPC." +msgstr "" +"Syftet med nyhetssidan är att samla in och presentera innehållet i nya " +"uppdateringar i Sambruk MedborgarPC." + +#: templates/documentation/changelogs/index.html +msgid "On the site, it is possible to:" +msgstr "På sidan är det möjligt att:" + +#: templates/documentation/changelogs/index.html +msgid "View a list of posts with a short explanation" +msgstr "Se en lista över inlägg, med en kort förklaring" + +#: templates/documentation/changelogs/index.html +msgid "Sort posts based on category" +msgstr "Sortera inlägg efter kategori" + +#: templates/documentation/changelogs/index.html +msgid "Search for posts" +msgstr "Sök efter inlägg" + +#: templates/documentation/changelogs/index.html +msgid "Read posts" +msgstr "Läs inlägget" + +#: templates/documentation/changelogs/index.html +msgid "Comment on a post with one's admin-site user" +msgstr "" +"Kommentera varje inlägg med den användare du är registrerad på adminsidan som" + +#: templates/documentation/changelogs/index.html +msgid "List of posts" +msgstr "Lista över inlägg" + +#: templates/documentation/changelogs/index.html +msgid "" +"When you enter the news site, you will be presented with a list of posts " +"sorted with the newest posts first." +msgstr "" +"När du går till nyhetssidan kommer du att visas en lista med inlägg " +"sorterade med de senaste inläggen först." + +#: templates/documentation/changelogs/index.html +msgid "" +"Each post on the list has a short summary of the content of the update along " +"with the date when the post was made." +msgstr "" +"Varje inlägg på listan har en kort sammanfattning av uppdateringens " +"innehåll, samt ett datum när den publicerades." + +#: templates/documentation/changelogs/index.html +msgid "Sorting posts" +msgstr "Sortering av inlägg" + +#: templates/documentation/changelogs/index.html +msgid "" +"Each post has one or more categories that the list can be sorted by. This is " +"done by choosing the relevant category among the options presented at the " +"top of the page." +msgstr "" +"Varje inlägg har en eller flera kategorier som listan kan sorteras efter. " +"Detta görs genom att välja relevant kategori från alternativen som visas " +"högst upp på sidan." + +#: templates/documentation/changelogs/index.html +msgid "Searching for posts" +msgstr "Sök efter inlägg" + +#: templates/documentation/changelogs/index.html +msgid "The search bar at the top can be used to search through the posts." +msgstr "Sökfältet högst upp på sidan kan användas för att söka i inläggen." + +#: templates/documentation/changelogs/index.html +msgid "Detailed view of a post" +msgstr "Detaljerad visning av ett inlägg" + +#: templates/documentation/changelogs/index.html +msgid "" +"Each post can be expanded to show a more detailed explanation of the update." +msgstr "" +"Varje inlägg är expanderbart och visar en mer detaljerad förklaring av " +"uppdateringen." + +#: templates/documentation/changelogs/index.html +msgid "Commenting on a post" +msgstr "Kommentarer på inlägg" + +#: templates/documentation/changelogs/index.html +msgid "" +"If you are logged in to the admin-site, it is possible to add comments to a " +"post." +msgstr "" +"Om du är inloggad på adminsidan kommer du att kunna lägga till kommentarer " +"till ett inlägg." + +#: templates/documentation/changelogs/index.html +msgid "When you add a comment, your username will be shown above the comment." +msgstr "" +"När du lägger till en kommentar kommer ditt användarnamn att visas ovanför " +"kommentaren." + +#: templates/documentation/changelogs/index.html +msgid "" +"Comments can also be answered by both Magenta's employees and other logged-" +"in users." +msgstr "" +"Kommentarer kan också besvaras av både Magentas anställda och alla användare " +"som är registrerade på en site." + +#: templates/documentation/computers/__submenu__.html +#: templates/documentation/groups/__submenu__.html +msgid "General editing" +msgstr "Allmän redigering" + +#: templates/documentation/computers/__submenu__.html +#: templates/system/pcs/form.html +msgid "Job history" +msgstr "Jobbhistorik" + +#: templates/documentation/computers/__submenu__.html +msgid "Activating" +msgstr "Aktivering" + +#: templates/documentation/computers/activating.html +msgid "The Admin system" +msgstr "Admin-systemet" + +#: templates/documentation/computers/activating.html +msgid "Activating a computer" +msgstr "Aktivering av datorer" + +#: templates/documentation/computers/activating.html +msgid "" +"Once you have installed OS2borgerPC on a computer and registered it with the " +"admin site, it will show up on the list of new computers under" +msgstr "" +"När du har installerat Sambruk MedborgarPC på en dator, kommer den att visas " +"i listan över nya datorer under" + +#: templates/documentation/computers/activating.html +msgid "" +"Before you can start working with the computer, it is necessary to activate " +"it." +msgstr "" +"Innan du kan börja arbeta med datorn är det nödvändigt att aktivera den." + +#: templates/documentation/computers/activating.html +msgid "" +"This is done by clicking on the computer, checking the box \"Activated\" and " +"then clicking \"Save changes\". Afterward, the computer has been activated." +msgstr "" +"För att göra detta, klicka på din dator och markera kryssrutan \"Aktiv\" och " +"klicka på \"Spara ändringar\". Datorn aktiveras då." + +#: templates/documentation/computers/activating.html +msgid "" +"Except from the registration itself, the admin-site will always ignore all " +"requests from computers that have not been activated. This is partially a " +"practical measure (there is no reason to start updating a computer before " +"you know that it is ready) and partially a security measure." +msgstr "" +"Förutom själva registreringen kommer adminsidan alltid att ignorera alla " +"uppmaningar från datorer som inte är aktiverade. Detta är delvis en praktisk " +"mäta (det finns ingen anledning att börja uppdatera en dator innan du vet " +"att den är klar), delvis en försiktighetsåtgärd." + +#: templates/documentation/computers/activating.html +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +#: templates/system/pcgroups/confirm_delete.html +#: templates/system/pcgroups/site_groups.html +#: templates/system/pcs/confirm_delete.html +#: templates/system/scripts/confirm_delete.html +#: templates/system/site_two_factor_pc.html +#: templates/system/sites/confirm_delete.html +#: templates/system/wake_plan/confirm_delete.html +#: templates/system/wake_plan/wake_change_events/confirm_delete.html +#: templates/system/wake_plan/wake_plan.html +msgid "Note" +msgstr "Obs" + +#: templates/documentation/computers/activating.html +msgid "" +"One of the reasons that all computers must be activated manually is to " +"prevent foreign computers from connecting to your site without you or your " +"organization knowing. As such, you should only activate a computer if you " +"know that it is supposed to be there." +msgstr "" +"En av anledningarna till att alla datorer måste aktiveras manuellt, är att " +"förhindra att externa datorer \"ansluter\" till ditt site utan din eller din " +"organisations kunnig. Därför bör du bara aktivera en dator om du vet att den " +"borde vara där." + +#: templates/documentation/computers/edit.html +msgid "Computers: Master data and groups" +msgstr "Datorer: Huvudinformation och grupper" + +#: templates/documentation/computers/edit.html +msgid "" +"When you click on a computer, you will by default be shown the computer's " +"master data and any group affiliations. Here you can change the computer's " +"name and description and activate it if it has not been activated after the " +"installation. You can also add or remove group affiliations. You must click " +"the button \"Save changes\" before the changes take effect." +msgstr "" +"När du klickar på en dator visas du som standard datormasterdata och " +"grupptillhörighet. Här kan du ändra datorns namn och beskrivning och " +"aktivera det om det inte är det aktiverats efter installationen. Du kan " +"också lägga till och ta bort grupper, som datorn är associerad med. Du måste " +"klicka på knappen \"Spara ändringar\" innan ändringarna träder i kraft." + +#: templates/documentation/computers/edit.html +msgid "" +"You add groups by clicking on \"Add computer to group\". If there are any " +"groups that the computer does not yet belong to, they will be shown in a " +"list. Click on the group(s) that you wish to add to select them and then " +"click on the check mark beneath the list to add the computer to the " +"group(s). You remove a group by clicking on the X to the right of the " +"group's name in the list of group affiliations. Remember that any changes " +"are not permanent until you've clicked on \"Save changes\" at the bottom of " +"the screen." +msgstr "" +"Du lägger till grupper genom at klicka på \"Lägg till dator i gruppen\". Om " +"det finns grupper som datorn ännu inte är medlem i så visas de i en lista. " +"Klicka på grupperna du vill lägga till för att välja dem och klicka sedan på " +"bockmarkeringen under listan för att lägga till datorn i grupperna. Du tar " +"bort en grupp genom att klicka på X:et till höger om gruppens namn i listan " +"över grupptillhörigheter. Tänk på att ändringarna inte blir permanenta " +"förrän du har klickat på \"Spara ändringar\" längst ner på skärmen." + +#: templates/documentation/computers/edit.html +#: templates/documentation/groups/edit.html +msgid "Note that group membership can affect the computer's configuration." +msgstr "Observera att gruppmedlemskap kan påverka datorns konfiguration." + +#: templates/documentation/computers/index.html +#: templates/site_with_navigation.html +msgid "Administrating computers" +msgstr "Administration av datorer" + +#: templates/documentation/computers/index.html +msgid "" +"The administration page for a computer has three tabs with different " +"functions that are described helow. Click on a particular tab to open the " +"relevant function." +msgstr "" +"Administrationssidan för en dator har tre flikar med olika funktioner som " +"beskrivs nedan. Klicka på den enskilda fliken för att öppna lämplig funktion." + +#: templates/documentation/computers/index.html +msgid "" +"You can find documentation for the different parts by following these links:" +msgstr "" +"Du hittar dokumentation för de olika delarna genom att följa följande länkar:" + +#: templates/documentation/computers/index.html +#: templates/documentation/groups/index.html +msgid "Configurations are described on the page" +msgstr "Du kan läsa mer om konfigurationer på sidan" + +#: templates/documentation/computers/jobs.html +msgid "Job history for a computer" +msgstr "Jobbhistorik for datorer" + +#: templates/documentation/computers/jobs.html +msgid "" +"Here you can see the history of jobs associated with the computer. If you " +"click on the info icon to the right on the individual job, it will be " +"possible to see the log output from the job as well as rerun the job if it " +"has finished (mainly relevant if it failed)." +msgstr "" +"Här kan du se en historik över jobb som är associerade med datorn. Om du " +"klickar på informationsikonen på höger sida av det enskilda jobbet har du " +"möjlighet att se loggutdata för jobbet samt att köra jobbet igen om det är " +"avslutat (främst relevant om det misslyckades)." + +#: templates/documentation/configuration/index.html +msgid "" +"Do not delete or edit configurations unless you know what you are doing!" +msgstr "" +"Ta inte bort eller redigera konfigurationer om du inte är säker på vad du " +"gör!" + +#: templates/documentation/configuration/index.html +msgid "" +"Configurations are functionality aimed primarily at technical " +"troubleshooting, system administrators and script developers and thus most " +"likely not relevant for most people." +msgstr "" +"Konfigurationer är funktioner som främst är avsedda för teknisk felsökning, " +"systemadministratörer och skriptutvecklare, och därför förmodligen inte " +"relevanta för de flesta." + +#: templates/documentation/configuration/index.html +msgid "" +"Configurations are used to exchange information between the admin-site and " +"the registered computers in both directions." +msgstr "" +"Konfigurationer används för att utbyta information mellan adminsidan och de " +"associerade datorerna, i båda retninger." + +#: templates/documentation/configuration/index.html +msgid "" +"In other words, it is possible to use the admin-site to specify a value that " +"one or more computers will then receive and, similarly, a computer also " +"sends values to the admin-site." +msgstr "" +"Det vill säga det är både möjligt från adminsidan att ange ett värde som en " +"eller flera datorer sedan kommer att få, och skickar också ett datorvärde " +"till adminsidan." + +#: templates/documentation/configuration/index.html +msgid "General examples of possible uses" +msgstr "Allmänna exempel på tillämpningar" + +#: templates/documentation/configuration/index.html +msgid "" +"Among other things, the computer sends information about its hostname, its " +"IP addresses, the current kernel version and the last time it performed " +"automatic updates." +msgstr "" +"Datorn skickar bland annat information om sitt värdnamn, sina IP-adresser, " +"den aktuella kernel-version och senaste gången den gjorde automatiska " +"uppdateringar." + +#: templates/documentation/configuration/index.html +msgid "This information can sometimes be relevant for system administrators." +msgstr "Detta kan vara relevant för systemadministratörer i vissa fall." + +#: templates/documentation/configuration/index.html +msgid "" +"The computer also sends information about whether it is running BorgerPC or " +"BorgerPC Kiosk along with the specific version." +msgstr "" +"Datorn skickar också information om att den kör MedBorgarPC eller " +"MedBorgarPC Kiosk, och dess specifika versioner." + +#: templates/documentation/configuration/index.html +msgid "This information can sometimes be relevant during troubleshooting." +msgstr "I vissa fall kan det vara relevant att veta i samband med felsökning." + +#: templates/documentation/configuration/index.html +msgid "" +"As part of the development of a script, one might wish to set the " +"configuration for the script via the admin-site, which allows the " +"configuration to be updated without rerunning the script, and also allows " +"the configuration to vary between groups and computers." +msgstr "" +"I samband med utvecklingen av ett skript vill man skicka konfigurationen dit " +"via adminsidan, som sedan kan uppdateras utan att köra om skript eller som " +"kan variera mellan grupper eller datorer." + +#: templates/documentation/configuration/index.html +msgid "This can sometimes be relevant to know for script developers." +msgstr "" +"I vissa fall kan detta vara relevant för skriptutvecklare att känna till." + +#: templates/documentation/configuration/index.html +msgid "" +"The majority of configurations are controlled by the admin-site rather than " +"the individual computer. This means that if you change a value on an " +"individual computer, it will typically be changed back to the value listed " +"on the admin-site during the next check-in." +msgstr "" +"De allra flesta konfigurationer styrs av adminsidan snarare än på den " +"enskilda datorn. Det vill säga, om du ändrar värdet på den enskilda datorn, " +"kommer det oftast att ändras tillbaka till vad adminsidan säger av nästa " +"incheckning." + +#: templates/documentation/configuration/index.html +msgid "Technical information for system administrators" +msgstr "Teknisk information för systemadministratörer" + +#: templates/documentation/configuration/index.html +msgid "Handling configurations" +msgstr "Hantera konfigurationer" + +#: templates/documentation/configuration/index.html +msgid "" +"Click the button \"Add configuration\" to add a new configuration key/value." +msgstr "" +"Klicka på knappen \"Lägg till konfiguration\" för att lägga till en ny " +"konfigurationsnyckel/værdi." + +#: templates/documentation/configuration/index.html +#: templates/documentation/groups/scripts.html +#: templates/system/configs/item.html +#: templates/system/pcgroups/policy_list/item.html +#: templates/system/scripts/update.html +msgid "Edit" +msgstr "Redigera" + +#: templates/documentation/configuration/index.html +#: templates/system/configs/item.html +#: templates/system/event_rules/shared_navigation.html +#: templates/system/scripts/confirm_delete.html +#: templates/system/scripts/form.html templates/system/scripts/templates.html +#: templates/system/site_settings/api_keys/partials/list.html +msgid "Delete" +msgstr "Ta bort" + +#: templates/documentation/configuration/index.html +#, python-format +msgid "" +"In order to edit or delete a value, you must click on %(edit)s or %(delete)s " +"to the right of the individual key." +msgstr "" +"Om du vill korrigera eller ta bort ett värde klickar du på %(edit)s eller " +"%(delete)s bredvid varje nyckel." + +#: templates/documentation/configuration/index.html +msgid "Configurations at different levels" +msgstr "Konfigurationer på olika nivåer" + +#: templates/documentation/configuration/index.html +msgid "Configurations exist at three levels" +msgstr "Konfigurationer finns i tre nivåer" + +#: templates/documentation/configuration/index.html +msgid "Site configurations" +msgstr "Site-konfigurationer" + +#: templates/documentation/configuration/index.html +msgid "" +"These configuration parameters are applied to all computers that belong to " +"the chosen site." +msgstr "" +"Dessa konfigurationsparametrar gäller för alla datorer som är associerade " +"med den valda site." + +#: templates/documentation/configuration/index.html +msgid "" +"The site configurations can be overwritten via adjusted configuration keys/" +"values on groups and individual computers." +msgstr "" +"Site-konfigurationer kan åsidosättas via anpassade konfigurationsnycklar/" +"värden på grupper och på enskilda datorer." + +#: templates/documentation/configuration/index.html +msgid "Group configurations" +msgstr "Gruppkonfigurationer" + +#: templates/documentation/configuration/index.html +msgid "unless" +msgstr "om inte" + +#: templates/documentation/configuration/index.html +#, python-format +msgid "" +"Changes to the configurations for a group will affect all computers that " +"belong to that group %(unless)s that particular configuration key has been " +"specially adjusted for the individual computer." +msgstr "" +"Ändringar av konfigurationer på en grupp kommer att påverka alla datorer som " +"är medlemmar i gruppen, %(unless)s den aktuella konfigurationsnyckeln har " +"specialanpassats på den enskilda datorn." + +#: templates/documentation/configuration/index.html +msgid "Computer configurations" +msgstr "Dator-konfigurationer" + +#: templates/documentation/configuration/index.html +msgid "" +"Configurations set at the computer level will always take precedence over " +"site configurations or configurations for groups that the computer belongs " +"to." +msgstr "" +"Konfigurationer som anges på en dator har alltid företräde framför site-" +"konfigurationer eller konfigurationer för grupper som datorn är medlem i." + +#: templates/documentation/configuration/index.html +msgid "The meaning of the built-in configurations" +msgstr "Vikten av de inbyggda konfigurationerna" + +#: templates/documentation/configuration/index.html +msgid "" +"All values without _ in front are controlled by the admin-site while values " +"with _ are controlled by the computer / the client." +msgstr "" +"Alla värden utan _ framför bestäms av adminsidan, medan värden med _ bestäms " +"av datorn/klienten." + +#: templates/documentation/configuration/index.html +#, python-format +msgid "" +"This means that if one were to change e.g. %(version)s on the computer, then " +"the value would be overwritten during the next check-in with the admin-site." +msgstr "" +"I praktiken innebär det att om man skulle ändra t.ex. %(version)s på datorn, " +"då kommer det att skrivas över efter nästa incheckning med adminsidan." + +#: templates/documentation/configuration/index.html +#: templates/system/configs/templates.html templates/system/scripts/form.html +#: templates/system/site_status.html +#: templates/system/wake_plan/wake_change_events/wake_change_event.html +msgid "Name" +msgstr "Namn" + +#: templates/documentation/configuration/index.html +msgid "Meaning" +msgstr "Betydelse" + +#: templates/documentation/configuration/index.html +#: templates/system/site_settings/api_keys/api_keys.html +msgid "Comment" +msgstr "Kommentar" + +#: templates/documentation/configuration/index.html +msgid "The version of the OS2borgerPC-client" +msgstr "Versionen på OS2BorgerPC-klienten" + +#: templates/documentation/configuration/index.html +msgid "" +"The client is the particular software on the computer that communicates with " +"the admin-site" +msgstr "" +"Klienten är den programvara som körs på datorn som är i kontakt med " +"adminsidan" + +#: templates/documentation/configuration/index.html +msgid "The name of the operating system" +msgstr "Namnet på operativsystemet" + +#: templates/documentation/configuration/index.html +msgid "The version of the operating system" +msgstr "Versionen av operativsystemet" + +#: templates/documentation/configuration/index.html +msgid "The IP addresses of the computer" +msgstr "Datorns IP-adresser" + +#: templates/documentation/configuration/index.html +msgid "The list is not sorted" +msgstr "Listen är inte sorterad" + +#: templates/documentation/configuration/index.html +msgid "The version of the kernel" +msgstr "Versionen av kernel" + +#: templates/documentation/configuration/index.html +msgid "The time when the computer last performed automatic updates" +msgstr "Tiden då datorn senast utförde automatiska uppdateringar" + +#: templates/documentation/configuration/index.html +msgid "If the value is empty, the computer failed to determine the time" +msgstr "Om värdet är tomt, kunde inte datorn fastställa tiden" + +#: templates/documentation/configuration/index.html +msgid "The address of the server where the computer checks in" +msgstr "Adressen till servern som checkas in med" + +#: templates/documentation/configuration/index.html +msgid "The computer's hostname" +msgstr "Datorns hostname" + +#: templates/documentation/configuration/index.html +msgid "Is currently only set during the registration" +msgstr "Är för närvarande endast inställt under registreringen" + +#: templates/documentation/configuration/index.html +msgid "How long the client waits for a job to finish in seconds" +msgstr "Hur länge klienten väntar på slutförandet av jobb, anges i sekunder" + +#: templates/documentation/configuration/index.html +msgid "" +"If job_timeout is exceeded, the process is stopped. This is useful if " +"something is stuck, such as a process futilely waiting for input" +msgstr "" +"Om job_timeout tar slut stoppas processen. Det är användbart om något i " +"systemet hänger, såsom förpackningssystemet eller ett skript som förgäves " +"försöker få input från användaren" + +#: templates/documentation/configuration/index.html +msgid "Indicates whether the computer is an OS2borgerPC or a OS2borgerPC Kiosk" +msgstr "" +"Identifierar om datorn är en Sambruk MedborgarPC eller en Sambruk " +"MedborgarPC Kiosk" + +#: templates/documentation/configuration/index.html +msgid "The version of the OS2borgerPC-image that was installed" +msgstr "Den version av Sambruk MedborgarPC-imaget som installerades" + +#: templates/documentation/configuration/index.html +msgid "Unless the computer is reinstalled, this number does not change" +msgstr "Om inte datorn installeras om ändras inte detta nummer" + +#: templates/documentation/configuration/index.html +msgid "The site that the computer belongs to" +msgstr "Vilken site datorn är ansluten till" + +#: templates/documentation/configuration/index.html +msgid "Technical information for script developers" +msgstr "Teknisk information för skriptutvecklare" + +#: templates/documentation/configuration/index.html +msgid "How information is exchanged" +msgstr "Såhär utvecklas information" + +#: templates/documentation/configuration/index.html +#: templates/system/jobs/site_jobs.html +#: templates/system/security_events/site_security_events.html +#: templates/system/wake_plan/wake_plan.html +msgid "Computer" +msgstr "Dator" + +#: templates/documentation/configuration/index.html +msgid "" +"You create a configuration value for a Site, a Group or a computer and it " +"will automatically be transferred to the relevant computer(s) during their " +"next check-in with the admin-site." +msgstr "" +"Du skapar ett konfigurationsvärde på en site, grupp eller dator, och det " +"kommer automatiskt att överföras till den eller de relevanta datorerna nästa " +"gång de checkar in på adminsidan." + +#: templates/documentation/configuration/index.html +msgid "From a terminal on the computer or a script, you can use these programs" +msgstr "" +"Från en terminal på din dator eller från ett skript kan du använda dessa " +"program" + +#: templates/documentation/configuration/index.html +msgid "Function" +msgstr "Funktionalitet" + +#: templates/documentation/configuration/index.html +msgid "Usage example" +msgstr "Användningsexempel" + +#: templates/documentation/configuration/index.html +msgid "Retrieves the value of a configuration value" +msgstr "Hämtar värdet för ett konfigurationsvärde" + +#: templates/documentation/configuration/index.html +msgid "Retrieves the UID of the site where the computer is registered." +msgstr "Får UID för site som datorn är associerad med." + +#: templates/documentation/configuration/index.html +msgid "Sets the value of a configuration value" +msgstr "Anger värdet för ett konfigurationsvärde" + +#: templates/documentation/configuration/index.html +msgid "citizen yes" +msgstr "medborgare ja" + +#: templates/documentation/configuration/index.html +msgid "" +"Creates a new configuration value with the name citizen and the value 'yes'" +msgstr "" +"Skapar en ny konfiguration med namnet medborgare och ställer in den på 'ja'" + +#: templates/documentation/configuration/index.html +msgid "In practice, the above programs interact with the file" +msgstr "Ovanstående program interagerar med filen i praktiken" + +#: templates/documentation/groups/__submenu__.html +#: templates/documentation/groups/scripts.html +#: templates/system/pcgroups/confirm_delete.html +#: templates/system/pcgroups/site_groups.html +#: templates/system/scripts/confirm_delete.html +msgid "Associated Scripts" +msgstr "Associerade skript" + +#: templates/documentation/groups/edit.html +msgid "Editing groups: Master data, computers and supervisors" +msgstr "Gruppredigering: Huvudinformation, datorer och ansvariga personer" + +#: templates/documentation/groups/edit.html +msgid "" +"When you click on a group, you will by default be shown the group's master " +"data, any computers that belong to the group and any supervisors chosen for " +"the group. Here you can change the group's name and description as well as " +"add or remove computers or supervisors from the group. The changes will not " +"become permanent until you've clicked on the button \"Save changes\" at the " +"bottom of the screen." +msgstr "" +"När du klickar på en grupp visas som standard gruppens masterdata, vilka " +"datorer som ingår i gruppen och vilka ansvariga personer som valts för " +"gruppen. Här kan du ändra gruppnamn och beskrivning samt lägga till eller ta " +"bort datorer och ansvariga personer från gruppen. Ändringar träder inte i " +"kraft förrän du klicka på knappen \"Spara ändringar\" längst ner på skärmen." + +#: templates/documentation/groups/edit.html +msgid "Add/remove computers" +msgstr "Lägg till/ta bort datorer" + +#: templates/documentation/groups/edit.html +msgid "" +"A list of computers that belong to the group is shown on the right side of " +"the screen. You can edit the members of the group as described below." +msgstr "" +"På höger sida av skärmen ser du en lista över datorer som ingår i gruppen. " +"Du kan redigera medlemmarna i gruppen enligt beskrivningen nedan." + +#: templates/documentation/groups/edit.html +msgid "Add a computer" +msgstr "Lägg till dator" + +#: templates/documentation/groups/edit.html +msgid "" +"You add computers by clicking on \"Add a computer to the group\". If there " +"are any computers that do not yet belong to the group, they will be shown in " +"a list. Click on the computer(s) that you wish to add to select them and " +"then click on the check mark beneath the list to add the computer(s) to the " +"group." +msgstr "" +"Du lägger till datorer genom att klicka på \"Lägg till en dator til gruppen" +"\". Om det finns några datorer som ännu inte tillhör gruppen kommer de att " +"visas i en lista. Klicka på de datorer du vill lägga till för att välja dem " +"och klicka sedan på bockmarkeringen under listan för att lägga till " +"datorerna i gruppen." + +#: templates/documentation/groups/edit.html +msgid "Remove a computer" +msgstr "Ta bort datorn" + +#: templates/documentation/groups/edit.html +msgid "" +"You remove a computer by clicking on the X to the right of the computer's " +"name in the list of computers that belong to the group." +msgstr "" +"Du tar bort en dator genom att klicka på X:et till höger om datorns namn i " +"listan över datorer som tillhör gruppen." + +#: templates/documentation/groups/edit.html +msgid "" +"Remember that changes to the list of computers do not become permanent until " +"you've clicked on \"Save changes\" at the bottom of the screen." +msgstr "" +"Kom ihåg att ändringar i listan över datorer inte blir permanenta förrän du " +"klickade på \"Spara ändringar\" längst ner på skärmen." + +#: templates/documentation/groups/edit.html +msgid "Add/remove supervisors" +msgstr "Lägg till/ta bort ansvariga personer" + +#: templates/documentation/groups/edit.html +msgid "" +"A list of supervisors for the group is shown on the right side of the " +"screen. You can edit the supervisors for the group as described below." +msgstr "" +"På höger sida av skärmen ser du en lista över ansvariga personer för " +"gruppen. Du kan redigera de ansvariga personer för gruppen enligt " +"beskrivningen nedan." + +#: templates/documentation/groups/edit.html +msgid "Add a supervisor" +msgstr "Lägg till en ansvarig person" + +#: templates/documentation/groups/edit.html +msgid "" +"You add supervisors by clicking on \"Add a supervisor to the group\". If " +"there are any users on your site that are not yet supervisors for the group, " +"they will be shown in a list. Click on the user(s) that you wish to make " +"supervisors to select them and then click on the check mark beneath the list " +"to make them supervisors for the group." +msgstr "" +"Du lägger till ansvariga personer genom att klicka på \"Lägga till en " +"ansvarig person för gruppen\". Om det finns några användare på din site som " +"ännu inte är ansvariga personer för gruppen, kommer de att visas i en lista. " +"Klicka på de användare som du vill göra till ansvariga personer för att " +"välja dem och klicka sedan på bockmarkeringen under listan för att göra dem " +"till ansvariga personer för gruppen." + +#: templates/documentation/groups/edit.html +msgid "Remove a supervisor" +msgstr "Ta bort en ansvarig person" + +#: templates/documentation/groups/edit.html +msgid "" +"You remove a supervisor by clicking on the X to the right of the " +"supervisor's username in the list of supervisors for the group." +msgstr "" +"Du tar bort en ansvarig person genom att klicka på X:et till höger om " +"personens användarnamn i listan över ansvariga personer för gruppen." + +#: templates/documentation/groups/edit.html +msgid "" +"Remember that changes to the list of supervisors do not become permanent " +"until you've clicked on \"Save changes\" at the bottom of the screen." +msgstr "" +"Kom ihåg att ändringar i listan över ansvariga personer inte blir permanenta " +"förrän du klickade på \"Spara ändringar\" längst ner på skärmen." + +#: templates/documentation/groups/edit.html +msgid "" +"If a group has one or more supervisors, those supervisors will receive any " +"email warnings or notifications related to the computers in the group " +"instead of the recipients set on the relevant security rules or offline " +"rules." +msgstr "" +"Om en grupp har en eller flera ansvariga personer, kommer dessa ansvariga " +"personer att få alla e-postvarningar eller aviseringar relaterade til " +"datorerna i gruppen istället för mottagarna som anges i relevanta " +"säkerhetsregler eller offline-regler." + +#: templates/documentation/groups/edit.html +msgid "Notice for users of On/Off schedules" +msgstr "Meddelande till användare av schema för på- och avstängning" + +#: templates/documentation/groups/edit.html +msgid "" +"A computer can only be associated with a single schedule at a time. If the " +"group is associated with a schedule and you add one or more computers that " +"are associated with a different schedule via a different group, the chosen " +"computers will be rejected as part of the update of the group when you click " +"\"Save changes\". Valid computers will still be added. If one or more " +"computers are rejected, the webpage will inform you of this as well as the " +"reason." +msgstr "" +"En dator kan bara associeras till ett schema åt gången. Om gruppen är länkad " +"till ett schema och du lägger till en eller flera datorer som är länkade " +"till ett annat schema via en annan grupp, kommer de valda datorerna att " +"avvisas vid uppdatering av gruppen när du klickar på \"Spara ändringar\". " +"Giltiga datorer kommer fortfarande att läggas till. Om en eller flera " +"datorer avvisas kommer sajten att informera om detta och orsaken." + +#: templates/documentation/groups/index.html +msgid "" +"A OS2borgerPC-group is a collection of computers that share configuration " +"keys. A group can also be used to easily run a script on multiple computers." +msgstr "" +"En Sambruk MedborgarPC-grupp är en samling datorer som delar " +"konfigurationsnycklar. En grupp kan också användas för att enkelt köra ett " +"skript på en samling datorer." + +#: templates/documentation/groups/index.html +msgid "" +"When you click on Groups in the left-hand menu, a list of groups for the " +"site you are on will be shown to the right of the left-hand menu. You can " +"click on the name of a particular group in order to edit that group." +msgstr "" +"När du klickar på Grupper i menyn till vänster kommer en lista med grupper " +"för sitet du befinner dig under att visas till höger om vänstermenyn. Du kan " +"klicka på namnet på den enskilda gruppen för att redigera gruppen." + +#: templates/documentation/groups/index.html +msgid "" +"The interface for editing the chosen group will be shown on the right side " +"of the screen. If no groups have been created for the site you are on, " +"information about how to create a group will be shown instead." +msgstr "" +"Till höger visas redigeringsgränssnittet för den valda gruppen. Om inga " +"grupper har skapats för det site du är på, visas information om hur du " +"skapar en grupp istället." + +#: templates/documentation/groups/index.html +msgid "When you click on a group, you will be able to edit the following" +msgstr "När du klickar på en grupp får du möjlighet att redigera följande" + +#: templates/documentation/groups/index.html +msgid "" +"If you wish to create a new group, you must click on \"Add new group\" above " +"the list of groups. This will open a modal where you must enter a name and " +"description for the group. When you click on \"Create group\", you will be " +"redirected to the editing interface for the newly created group where it " +"will be possible to add computers to the group." +msgstr "" +"Om du vill skapa en ny grupp, klicka på \"Lägg till ny grupp\" ovanför " +"listan med grupper. Detta kommer att få upp en dialogruta där du måste fylla " +"i namn och beskrivning för gruppen. När du klickar på \"Skapa en grupp\" så " +"kommer du vidare till redigeringssidan för den nyskapade gruppen, varifrån " +"det kommer att vara möjligt att lägga till datorer i gruppen." + +#: templates/documentation/groups/scripts.html +#: templates/system/pcgroups/policy_list/list.html +#: templates/system/pcgroups/policy_list/templates.html +msgid "Add script" +msgstr "Lägg till skript" + +#: templates/documentation/groups/scripts.html +#, python-format +msgid "" +"You have the option of assigning each group a number of associated scripts. " +"In order to change the associated scripts for a group, you must click on the " +"group and then click the tab %(asc)s. Select the input field %(addsc)s and " +"search for the script that you wish to assign to the group. Next, click on " +"the script and it will be added as an Associated Script." +msgstr "" +"Du har möjlighet att tilldela en serie associerade skript till varje grupp. " +"För att ändra de associerade skripten för en grupp måste du klicka på " +"gruppen och sedan klicka på fliken %(asc)s. Välj inmatningsfältet %(addsc)s " +"och sök efter skriptet du vill associera med gruppen. Klicka sedan på " +"skriptet så läggs det till som associerat skript." + +#: templates/documentation/groups/scripts.html +msgid "" +"When a computer is added to a group, all Associated Scripts are " +"automatically run on that computer. When you add a new Associated Script, it " +"will automatically be run on all computers in the group. Editing the " +"parameters of an associated script will only cause it to be rerun on the " +"computers in the group if the relevant setting under Site settings has been " +"checked. Removing an Associated Script from a group will NOT remove the " +"effect of the script from the computers in the group." +msgstr "" +"När en dator läggs till i en grupp körs alla associerade skript automatiskt. " +"När du tilldelar ett nytt skript till en grupp körs det automatiskt på " +"gruppens datorer. Att redigera parametrarna för ett associerat skript kommer " +"bara att göra att det körs om på datorerna i gruppen om den relevanta " +"inställningen under Inställningar för Site har markerats. Att ta bort ett " +"associerat skript från en grupp tar INTE bort effekten av skriptet från " +"datorerna i gruppen." + +#: templates/documentation/groups/scripts.html +msgid "" +"Associated Scripts have a position that determines the order in which they " +"are run and they may have a number of input parameters that they are run " +"with." +msgstr "" +"Associerade Skript har en position som anger i vilken ordning de körs, och " +"de kan ha vissa indataparametrar som de körs med." + +#: templates/documentation/groups/scripts.html +msgid "A computer can be added to multiple groups." +msgstr "En dator kan enkelt anslutas av flera grupper." + +#: templates/documentation/groups/scripts.html +msgid "" +"Example: There is one computer in the library and another in citizen service " +"that should have different homepages, but both be connected to the same " +"scanner. In this case, one computer can be added to the library group and " +"the other to the citizen service group while both are added to the group for " +"scanner computers." +msgstr "" +"Exempel: Det finns en dator i biblioteket och en annan i Medborgarservice, " +"som måste ha olika hemsidor, men båda har samma skanner inkopplad. Då kan en " +"dator läggas till i biblioteksgruppen och den andra till " +"medborgarservicegruppen medan båda läggs till gruppen för skannerdatorer." + +#: templates/documentation/groups/scripts.html +msgid "" +"We recommend using Associated Scripts where possible as they make it simpler " +"to set up new computers in a department. All you need to do is to add the " +"new computers to the group, and then the relevant scripts will automatically " +"be run on them with the correct input parameters." +msgstr "" +"Vi rekommenderar att du använder Associerade Script när det är möjligt, " +"eftersom det kan göra det lättare att ställa in nya datorer upp på en " +"avdelning. Allt du behöver göra är att lägga till de nya datorerna i " +"gruppen, och sedan körs de relevanta skripten automatiskt på dem med " +"korrekta indataparametrar." + +#: templates/documentation/groups/scripts.html +msgid "Final remarks" +msgstr "Anteckningar" + +#: templates/documentation/groups/scripts.html +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +#: templates/system/pcgroups/site_groups.html templates/system/pcs/form.html +#: templates/system/scripts/update.html +#: templates/system/site_settings/site_settings.html +#: templates/system/users/link.html templates/system/users/update.html +#: templates/system/wake_plan/wake_change_events/wake_change_event.html +#: templates/system/wake_plan/wake_plan.html +msgid "Save changes" +msgstr "Spara ändringar" + +#: templates/documentation/groups/scripts.html +msgid "must" +msgstr "ska" + +#: templates/documentation/groups/scripts.html +#, python-format +msgid "" +"When a script is added to or removed from the list, the change won't be " +"saved until you've clicked %(save)s." +msgstr "" +"När ett skript läggs till eller tas bort från listan sparas det bara efter " +"att ha tryckt på %(save)s." + +#: templates/documentation/groups/scripts.html +#, python-format +msgid "" +"If the added script requires input parameters, these parameters are set by " +"clicking %(edit)s and this %(must)s be done before the changes can be saved. " +"I.e. a Script that requires input parameters cannot be assigned with empty " +"input parameters." +msgstr "" +"Om skriptet du lägger till använder indataparametrar anger du värdena för " +"dessa genom att trycka på %(edit)s, och detta %(must)s göras innan " +"ändringarna kan sparas. Det innebär att ett skript som använder " +"indataparametrar inte kan mappas med tomma indataparametrar." + +#: templates/documentation/groups/scripts.html +#, python-format +msgid "" +"You can change the input parameters for a script by clicking %(edit)s, " +"making the desired changes and then saving the changes. However, this will " +"only cause the script to be rerun on the computers in the group if the " +"relevant setting under Site settings has been checked." +msgstr "" +"Du kan ändra indataparametrarna för ett skript genom att klicka på %(edit)s, " +"göra önskade ändringar och sedan spara ändringarna. Detta gör dock bara att " +"skriptet körs om på datorerna i gruppen om den relevanta inställningen under " +"Inställningar för Site har markerats." + +#: templates/documentation/index.html +msgid "OS2borgerPC documentation" +msgstr "Sambruk MedborgarPC dokumentation" + +#: templates/documentation/index.html templates/site_with_navigation.html +#: templates/system/site_settings/api_keys/api_keys.html +msgid "Documentation" +msgstr "Dokumentation" + +#: templates/documentation/index.html +msgid "Return to admin" +msgstr "Tillbaka til admin" + +#: templates/documentation/jobs/index.html +msgid "Job overview" +msgstr "Översikt över jobb" + +#: templates/documentation/jobs/index.html +msgid "" +"The job overview provides an overview of the execution of jobs on " +"OS2borgerPC computers for the chosen site. On the left, one can choose " +"various filters that make the list more manageable, and on the right is " +"shown a list of jobs that match the chosen filters." +msgstr "" +"Jobböversikten ger en översikt över avvecklingen av jobb på Sambruk " +"MedborgarPC-datorer för det valda site. Till vänster kan du välja diverse " +"filter som gör listan mer hanterbar, och till höger finns en lista över jobb " +"som matchar de valda filtren." + +#: templates/documentation/jobs/index.html templates/system/jobs/site_jobs.html +#: templates/system/security_events/site_security_events.html +msgid "Filters" +msgstr "Filter" + +#: templates/documentation/jobs/index.html +msgid "" +"By clicking the checkboxes next to the different statuses, you can filter " +"the shown jobs based on their status. By default, all statuses except " +"\"restarted\" are checked." +msgstr "" +"Genom att klicka på kryssrutorna bredvid de olika statusarna kan du filtrera " +"de jobb som visas baserat på deras status. Som standard är alla statusar " +"förutom \"Omstartad\" listade." + +#: templates/documentation/jobs/index.html +msgid "" +"Below the checkboxes you can choose filters based on batches, computers and " +"groups. In order to use these filters, you must click on the desired " +"category and then select an element in the list that is displayed. The " +"chosen element will be highlighted in orange. It is only possible to select " +"one element per category. You can reset the filters to the default filters " +"by clicking \"Reset filters\" at the top of the list of filters." +msgstr "" +"Under kryssrutorna kan du välja filter baserat på partier, datorer och " +"grupper. För att filtrera på dessa, klicka på den kategori du vill ha och " +"klicka sedan på ett objekt i listan som ska övik. Det valda objektet " +"markeras med orange. Det är bara möjligt att välja en objekt i varje " +"kategori. Du kan återställa filtren till standardfiltren genom att klicka på " +"\"Återställ filter\" högst upp i listan med filter." + +#: templates/documentation/jobs/index.html +#: templates/documentation/scripts/running.html +msgid "The job list" +msgstr "Jobblistan" + +#: templates/documentation/jobs/index.html +msgid "" +"The job list shows the script name, batch name, user who started the job, " +"creation time, starting time, stopping time, status and computer name for " +"every job that matches the chosen filters. The sorting can be changed by " +"clicking the titles above the table." +msgstr "" +"Jobblistan visar skriptnamn, batchnamn, användaren som startade jobbet, " +"skapandetid, starttid, sluttid, status och datornamn för varje jobb som " +"matchar de valda filtren. Man kan ändra sorteringen genom att klicka på " +"rubrikerna ovanför tabellen." + +#: templates/documentation/jobs/index.html +msgid "" +"If you click on the small icon on the right of an entry in the list, you " +"will be shown the log output from that job. If the job has not yet been " +"executed, the log output will only contain the chosen input parameters. If " +"the job has finished, there will also be a button that you can press in " +"order to restart the job (mainly relevant if the job failed)." +msgstr "" +"Om du klickar på den lilla ikonen till höger om en post i listan kommer du " +"att se loggutdata från det jobbet. Om jobbet ännu inte har utförts kommer " +"loggutgången endast att innehålla de valda indataparametrar. Om jobbet har " +"avslutats kommer det också att finnas en knapp som du kan trycka på för att " +"starta om jobbet (främst relevant om jobbet misslyckades)." + +#: templates/documentation/jobs/index.html +msgid "Jobs run by Magenta" +msgstr "Jobs drevet af Magenta" + +#: templates/documentation/jobs/index.html +msgid "" +"If the user for a job is listed as \"Magenta\", it means that the job was " +"started by the OS2borgerPC team at Magenta." +msgstr "" +"Om användaren för ett jobb är listad som \"Magenta\" betyder det att jobbet " +"startades av Sambruk MedborgarPC-teamet på Magenta." + +#: templates/documentation/jobs/index.html +msgid "This is used for e.g." +msgstr "Den används till exempel för" + +#: templates/documentation/jobs/index.html +msgid "Maintenance" +msgstr "Underhåll" + +#: templates/documentation/jobs/index.html +msgid "Updates" +msgstr "Uppdateringar" + +#: templates/documentation/jobs/index.html +msgid "Troubleshooting and error correction" +msgstr "Felsökning och rättning" + +#: templates/documentation/jobs/index.html +msgid "Patching security issues (CVE's identified in Ubuntu)" +msgstr "Lappa säkerhetshål (CVE'er identificeret i Ubuntu)" + +#: templates/documentation/notifications/index.html +msgid "" +"Email notifications regarding computers that have been offline for longer " +"than a selected period of time are generated by offline rules. If no offline " +"rules have been defined, no notifications will be sent." +msgstr "" +"E-postmeddelanden om datorer som har varit offline längre än en vald " +"tidsperiod genereras av offline-regler. Om inga offlineregler har " +"definierats kommer inga meddelanden att skickas." + +#: templates/documentation/notifications/index.html +msgid "" +"When an offline rule detects that a PC has been offline for too long, the " +"system will also generate an event for that PC." +msgstr "" +"När en offline-regel upptäcker att en dator har varit offline för länge, " +"kommer systemet också att generera en händelse för den datorn." + +#: templates/documentation/notifications/index.html +msgid "" +"The system will only check the defined offline rules every ten minutes. It " +"is thus possible for there to be a delay of up to ten minutes between a PC " +"exceeding the allowed offline period and a notification being sent. This was " +"necessary to limit the load on the admin-site." +msgstr "" +"Systemet kontrollerar endast de definierade offlinereglerna var tionde " +"minut. Det är alltså möjligt att det uppstår en fördröjning på upp till tio " +"minuter mellan att en PC överskrider den tillåtna offlineperioden och att " +"ett meddelande skickas. Detta var nödvändigt för att begränsa belastningen " +"på adminsidan." + +#: templates/documentation/notifications/index.html +msgid "Creating or editing offline rules" +msgstr "Skapa eller redigera offline-regler" + +#: templates/documentation/notifications/index.html +msgid "" +"The overview \"Monitoring Rules\" shows all the defined security rules and " +"offline rules that are monitored. You can edit an existing offline rule by " +"selecting it in the list. You can define a new offline rule by clicking on " +"\"Add new offline rule\" above the list. The interface for both operations " +"has the same form." +msgstr "" +"Översikten \"Övervakningsregler\" visar alla definierade säkerhetsregler och " +"offline-regler som övervakas. Du kan redigera en befintlig offline-regel " +"genom att välja den i listan. Du kan definiera en ny offlineregel genom att " +"klicka på \"Lägg till ny offline-regel\" ovanför listan. Gränssnittet för " +"båda operationerna har samma form." + +#: templates/documentation/notifications/index.html +msgid "An offline rule has the following parameters:" +msgstr "En offline-regel har följande parametrar:" + +#: templates/documentation/notifications/index.html +msgid "Name (mandatory): the name of the particular offline rule." +msgstr "Namn (obligatoriskt): namnet på den särskilda offlineregeln." + +#: templates/documentation/notifications/index.html +msgid "" +"Monitor period (mandatory): The period during which the rule is active. It " +"is recommended to choose this period such that you avoid receiving " +"notifications when computers are turned off for the night." +msgstr "" +"Övervakningsperiod (obligatorisk): Den period under vilken regeln är aktiv. " +"Det rekommenderas att välja denna period så att du undviker att få " +"aviseringar när datorer är avstängda för natten." + +#: templates/documentation/notifications/index.html +msgid "" +"Maximum offline period allowed, in minutes (mandatory): The maximum period " +"of time that a computer can be offline during the monitor period before " +"email notifications are sent. Cannot be less than 15 minutes." +msgstr "" +"Högsta tillåtna offlineperiod i minuter (obligatorisk): Den maximala " +"tidsperiod som en dator kan vara offline under övervakningsperioden innan e-" +"postmeddelanden skickas. Kan inte vara mindre än 15 minuter." + +#: templates/documentation/notifications/index.html +#: templates/documentation/security_scripts/securityproblems.html +msgid "Severity level (mandatory): Choose between Critical, High and Normal." +msgstr "Allvarlighetsgrad (obligatorisk): Välj mellan Kritisk, Hög och Normal." + +#: templates/documentation/notifications/index.html +msgid "Description (optional): A description of the particular offline rule." +msgstr "" +"Beskrivning (valfritt): En beskrivning av den särskilda offline-regeln." + +#: templates/documentation/notifications/index.html +msgid "" +"Monitored groups (optional): The groups define which computers the offline " +"rule applies to." +msgstr "" +"Övervakade grupper (frivillig): Grupperna definierar vilka datorer den " +"aktuella offline-regeln är aktiv för." + +#: templates/documentation/notifications/index.html +msgid "" +"Recipient(s) of email warning (optional): The users that should receive " +"email notifications related to this offline rule. Note that if a monitored " +"PC belongs to one or more groups with supervisors, those supervisors will " +"receive any email notifications related to that PC instead of the recipients " +"set here." +msgstr "" +"Mottagare av e-postavisering (frivillig): Vilka användare som ska få e-" +"postaviseringar relaterade till denna offline-regel. Observera att om en " +"övervakad dator tillhör en eller flera grupper med ansvariga personer, då " +"kommer dessa ansvariga personer att få alla e-postaviseringar relaterade " +"till det PC istället för de mottagare som valts här." + +#: templates/documentation/notifications/index.html +msgid "" +"Any changes made to an offline rule will not take effect until you have " +"clicked on \"Save changes\" at the bottom of the screen. Similarly, you must " +"click on \"Save changes\" to finish creating a new offline rule once you " +"have filled out the mandatory parameters. You can verify that the offline " +"rule has been created by checking if it appears in the list of monitored " +"rules." +msgstr "" +"Eventuella ändringar som görs i en offlineregel kommer inte att träda i " +"kraft förrän du har klickat på \"Spara ändringar\" längst ned på skärmen. På " +"samma sätt måste du klicka på \"Spara ändringar\" för att slutföra att skapa " +"en ny offline-regel när du har fyllt i de obligatoriska parametrarna. Du kan " +"verifiera att offlineregeln har skapats genom att kontrollera om den visas i " +"listan över övervakade regler." + +#: templates/documentation/om_os2borgerpc_admin.html +msgid "" +"OS2borgerPC enables you to remotely manage computers via the OS2borgerPC " +"administration interface. In the left-hand menu, you can find documentation " +"regarding the different parts of the system." +msgstr "" +"Sambruk MedborgarPC låter dig fjärrhantera datorer via Sambruk MedborgarPC " +"administrationsgränssnitt. I menyn till vänster hittar du dokumentation av " +"systemets olika delar." + +#: templates/documentation/om_os2borgerpc_admin.html +msgid "OS2borgerPC was developed by" +msgstr "Sambruk MedborgarPC-Admin är utvecklat av" + +#: templates/documentation/om_os2borgerpc_admin.html +msgid "in collaboration with the libraries in Aarhus and Silkeborg." +msgstr "i samarbete med biblioteken i Århus och Silkeborg." + +#: templates/documentation/om_os2borgerpc_admin.html +#, python-format +msgid "" +"OS2borgerPC is 100%% Open Source and can be used and distributed in " +"accordance with the conditions in version 3 of the" +msgstr "" +"Sambruk MedborgarPC är 100%% öppen källkod och kan användas och avslöjas " +"enligt villkor i version 3 af" + +#: templates/documentation/om_os2borgerpc_admin.html +msgid "This documention can be used and distributed in accordance with a" +msgstr "Denna dokumentation får användas och lämnas ut i enlighet med en" + +#: templates/documentation/om_os2borgerpc_admin.html +msgid "" +"The source code for the newest accessible version of OS2borgerPC can always " +"be found on" +msgstr "" +"Källkoden för den senaste tillgängliga versionen av Sambruk MedborgarPC-" +"Admin/OS2borgerPC kan alltid hittas på" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "Updating the Wi-Fi password on a OS2borgerPC Kiosk" +msgstr "Uppdatera lösenord på en Sambruk MedborgarPC Kiosk's Wi-Fi" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"We begin with a OS2borgerPC Kiosk, which has been started, where the browser " +"is shown and a keyboard has been connected." +msgstr "" +"Vi börjar på en Sambruk MedborgarPC Kiosk som har startat, där webbläsaren " +"visas och där ett tangentbord är inställt." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "Here, you press" +msgstr "Härifrån trycker du på" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "You will then be shown a login prompt." +msgstr "Du kommer då till en inloggningsfråga." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"\"marcus-01-vm\", which is shown here, is the name of my OS2borgerPC Kiosk, " +"which will be different in your case." +msgstr "" +"\"marcus-01-vm\", som visas här är namnet på min Sambruk MedborgarPC Kiosk " +"som kommer att vara annorlunda för dig." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "Enter" +msgstr "Enter" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +#, python-format +msgid "" +"Write \"superuser\", press %(enter)s, write superuser's password and press " +"%(enter)s again." +msgstr "" +"Skriva \"superuser\", tryck %(enter)s, skriv superuser's lösenord och tryck " +"på %(enter)s igen." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"Be aware that the entered password will not be shown in any way (e.g. stars " +"as characters)." +msgstr "" +"Tänk på att det angivna lösenordet inte kommer att visas på något sätt (t." +"ex. stjärnor som tecken)." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "You will then be shown a \"prompt\":" +msgstr "Då kommer du till en \"prompt\":" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "At this prompt, you write:" +msgstr "Vid denna prompt skriver du:" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +#, python-format +msgid "press %(enter)s, write superuser's password and press %(enter)s again." +msgstr "" +"tryck på %(enter)s, ange superuser's lösenord och tryck på %(enter)s igen:" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "You will then see the following screen." +msgstr "Därefter hälsas du av följande skärm." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "Escape" +msgstr "Escape" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +#, python-format +msgid "" +"In this program, you use the arrow keys to navigate and %(enter)s to select " +"an option. %(escape)s can be used to go back." +msgstr "" +"I det här programmet navigerar du runt med piltangenterna och använder " +"%(enter)s för att trycka på en knapp. %(escape)s kan användas för att gå " +"tillbaka." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "Edit a connection" +msgstr "Edit a connection" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +#, python-format +msgid "" +"The default option is %(eac)s so you simply press %(enter)s, which brings " +"you here:" +msgstr "" +"Som standard är %(eac)s valt, så du trycker bara på %(enter)s, som tar dig " +"hit:" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"The view on this page will vary, but if you had previously configured a Wi-" +"Fi connection, it will be listed here." +msgstr "" +"På den här sidan varierar det vad du ser, men om du tidigare hade en Wi-Fi-" +"anslutning inställd kommer den att listas här." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +#, python-format +msgid "" +"Navigate to your Wi-Fi connection using the arrow keys and press %(enter)s. " +"If you are unsure, you can enter each Wi-Fi connection in turn in order to " +"determine the actual name of the connection (SSID)." +msgstr "" +"Gå ner till ditt Wi-Fi-nätverk med piltangenterna och tryck %(enter)s. Om du " +"är osäker kan du gå in i var och en av dem, för att se vad namnet på " +"nätverket faktiskt är (SSID)." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"You will then see the following screen. The contents of the fields will vary " +"from system to system." +msgstr "" +"Då kommer du till följande skärm. Vad som skrivs i rutorna varierar dock " +"från system till system." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"Use the arrow keys to navigate to the password, delete it and write the new " +"password. Next, navigate to the bottom and press OK." +msgstr "" +"Använd piltangenterna för att gå ner till lösenordet, ta bort det och skriva " +"in det nya lösenordet. Gå sedan till botten och tryck OK." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +#, python-format +msgid "" +"You will be returned to this screen - this time, press %(escape)s to go back " +"to the main menu." +msgstr "" +"Du kommer tillbaka på den här skärmen - den här gången trycker du på " +"%(escape)s för att gå tillbaka en nivå, för att komma till huvudmenyn." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "This time, choose" +msgstr "Den här gången väljer du istället" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "Deactivate" +msgstr "Deactivate" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "Activate" +msgstr "Activate" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +#, python-format +msgid "" +"Find your network on the list and if there is an option to %(deactivate)s, " +"do this via the arrow keys and %(enter)s. Next, choose %(activate)s." +msgstr "" +"Hitta ditt nätverk i listan och om du ser alternativet %(deactivate)s, gör " +"det först, via piltangenterna och %(enter)s. Välj sedan %(activate)s." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"The network will now be active, assuming that the configuration and password " +"were entered correctly." +msgstr "" +"Därefter aktiveras nätverket om konfigurationen och koden har angetts " +"korrekt." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "We are now finished with" +msgstr "Nu är vi klara med" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +#, python-format +msgid "" +"Press %(escape)s - or alternatively use the arrow keys to choose \"Back\", " +"press %(enter)s, choose \"Quit\" and press %(enter)s until the program is " +"closed." +msgstr "" +"Tryck på %(escape)s - eller alternativt välj först \"Back\" med " +"piltangenterna, tryck %(enter)s, välj \"Quit\" och tryck %(enter)s, tills " +"programmet är stängt." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "You will now be back in the terminal, which now looks like this:" +msgstr "Då kommer du tillbaka i terminalen, som nu ser ut så här:" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"You can then check that the network connection is working, for instance via " +"the following command, which uses" +msgstr "" +"Då kan du kontrollera att nätverksanslutningen fungerar, t.ex. via följande " +"kommando, som använder" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"If the computer is connected, you should see output similar to the above." +msgstr "När du är ansluten till nätverket bör du se utdata enligt ovan." + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +#, python-format +msgid "" +"Write \"exit\" on the command line and press %(enter)s to log out - or press" +msgstr "" +"Skriv \"exit\" på kommandolinien och tryck %(enter)s för att logga ut - " +"eller tryck" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "You will then be back here:" +msgstr "Du kommer då tillbaka hit:" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "" +"Press Ctrl-Alt-F1 to return to the browser - we are now back where we " +"started:" +msgstr "" +"Tryck nu Ctrl-Alt-F1 för att gå tillbaka till webbläsaren - då är vi " +"tillbaka vid start:" + +#: templates/documentation/os2borgerpc_kiosk_wifi_guide.html +msgid "Done!" +msgstr "Klar!" + +#: templates/documentation/scripts/__submenu__.html +#: templates/documentation/scripts/edit.html +msgid "Editing Scripts" +msgstr "Redigering av Skript" + +#: templates/documentation/scripts/__submenu__.html +msgid "Editing arguments" +msgstr "Redigering av indataparametrar" + +#: templates/documentation/scripts/__submenu__.html +#: templates/documentation/scripts/running.html +#: templates/site_with_navigation.html +msgid "Executing Scripts" +msgstr "Exekvering av Skript" + +#: templates/documentation/scripts/edit.html +msgid "Note that only Magenta can edit global scripts." +msgstr "Observera att endast Magenta kan redigera globala skript." + +#: templates/documentation/scripts/edit.html +msgid "" +"If you wish to edit a Script, you must click on \"Scripts\" in the left-hand " +"menu and then select the script in the list of scripts shown to the right of " +"the left-hand menu. Note that it may be necessary to swap between the tabs " +"\"Local scripts\" and \"Global scripts\" in order to find the script. You " +"can also search through the scripts by selecting the search field \"Find ..." +"\" and typing a search term. This will cause the list to display all scripts " +"whose names contain the search term." +msgstr "" +"För att redigera ett skript, klicka på \"Skript\" i den vänstra menyn och " +"välj sedan skriptet i listan över skript till höger om vänster meny. " +"Observera att du kan behöva växla mellan flikarna \"Lokala skript\" och " +"\"Globala skript\" för att hitta skriptet. Du kan också söka igenom skripten " +"genom att välja sökfältet \"Hitta ...\" och skriv en sökterm. Detta gör att " +"listan visar alla skript vars namn innehåller söktermen." + +#: templates/documentation/scripts/edit.html +msgid "" +"When you edit a script you can change its name and description. It is also " +"possible to upload a new version of the script by clicking on the tab \"Code" +"\" and then selecting a file to upload. Changes do not become permanent " +"until you've clicked on \"Save changes\" at the bottom of the screen." +msgstr "" +"När du redigerar ett skript har du möjlighet att ändra dess namn och " +"beskrivning. Du kan också ladda upp en ny version av skriptet genom att " +"klicka på fliken \"Kod\" och välj sedan en fil att ladda upp. Ändringar du " +"har gjort träda inte i kraft förrän du har klickat på \"Spara ändringar\" " +"längst ner i sedan." + +#: templates/documentation/scripts/edit.html +msgid "In the last tab, you can" +msgstr "På den sista fliken har du möjlighet att" + +#: templates/documentation/scripts/edit.html +msgid "adjust the arguments for the script" +msgstr "anpassa inputparametrar för Scriptet" + +#: templates/documentation/scripts/index.html +#: templates/site_with_navigation.html +msgid "Administrating Scripts" +msgstr "Administration av Skript" + +#: templates/documentation/scripts/index.html +msgid "" +"When you click on \"Scripts\" in the left-hand menu, a list of scripts will " +"be shown to the right of the left-hand menu and the editing interface for " +"scripts will be shown to the right of this list." +msgstr "" +"När du klickar på \"Skript\" i vänstermenyn kommer en lista med skript att " +"visas till höger om vänstermenyn och redigeringsgränssnittet för skript " +"visas till höger om denna lista." + +#: templates/documentation/scripts/index.html +msgid "" +"Scripts are for individual actions whereas security scripts monitor special " +"events." +msgstr "" +"Skript är för fristående åtgärder, medan säkerhetsskript håller utkik efter " +"speciella händelser." + +#: templates/documentation/scripts/index.html +msgid "" +"The list of scripts is divided in two parts that one can swap between by " +"clicking on the tabs \"Local scripts\" and \"Global scripts\" above the list." +msgstr "" +"Listan över skript är uppdelad i två delar, som kan växlas mellan av klicka " +"på flikarna \"Lokala skript\" och \"Globala skript\" ovanför listan." + +#: templates/documentation/scripts/index.html +msgid "" +"Local scripts are scripts that can only be used on the currently chosen site " +"while global scripts are scripts that can be used on all sites." +msgstr "" +"Lokala skript täcker skript som bara kan användas på den site du är under " +"medan globala skript omfattar skript som kan användas på vem som helst site." + +#: templates/documentation/scripts/index.html +msgid "You have the following options for every script" +msgstr "För varje skript kan du välja följande" + +#: templates/documentation/scripts/index.html +msgid "" +"If you wish to add a new script, you must click on \"Add new Script\" above " +"the list of scripts. This will open a modal where you can fill out the name " +"and description and upload the script code. When you then click on \"Create " +"script\", the script will be created, and you will be redirected to the " +"editing interface for the newly created script where you can add arguments " +"for the script." +msgstr "" +"Om du vill skapa ett nytt skript klickar du på \"Lägg till nya Skript\" " +"ovanför listan över skript. Detta öppnar en dialogruta där du kan fyll i " +"skriptnamn, beskrivning och ladda upp skriptkod. När du sedan klickar på " +"\"Skapa Skript\" kommer skriptet att skapas och du omdirigeras till " +"redigeringsgränssnittet för det nyskapade skriptet där du kan lägga till " +"indataparametrar för skriptet." + +#: templates/documentation/scripts/parameters.html +msgid "Editing Script arguments" +msgstr "Redigering av Skript-indataparametrar" + +#: templates/documentation/scripts/parameters.html +msgid "Note that only Magenta can edit the parameters of global scripts." +msgstr "" +"Observera att endast Magenta kan redigera parametrarna för globala skript." + +#: templates/documentation/scripts/parameters.html +msgid "" +"The script arguments make it possible to supply input parameters when a " +"script needs to be run. One can choose between these types of input " +"parameters:" +msgstr "" +"Med skript-indataparametrar kan du ange indataparametrar när ett skript " +"behöver springa. Det finns dessa typer av indataparametrar att välja mellan:" + +#: templates/documentation/scripts/parameters.html +msgid "" +"Makes it possible to supply a text string such as a file path or a title." +msgstr "" +"Gör att du kan ange en textsträng, till exempel en sökväg eller en titel." + +#: templates/documentation/scripts/parameters.html +msgid "Makes it possible to supply a positive or negative integer" +msgstr "Ger möjlighet att ange ett positivt eller negativt heltal" + +#: templates/documentation/scripts/parameters.html +msgid "Makes it possible to supply a date" +msgstr "Ger möjlighet att ange datum" + +#: templates/documentation/scripts/parameters.html +msgid "" +"Makes it possible to upload a file that will be passed along when the script " +"is being executed. The script will receive the file parameter as a file path " +"pointing at the file in the local file system." +msgstr "" +"Ger möjlighet att ladda upp en fil som skickas med när skriptet måste köras. " +"Skriptet tar emot filparametrar som en sökväg i det lokala filsystemet som " +"pekar på filen." + +#: templates/documentation/scripts/parameters.html +msgid "" +"Makes it possible to supply a true/false value. The script will receive the " +"value as either the string \"True\" or the string \"False\"." +msgstr "" +"Gör det möjligt att ange ett sant/falskt värde. Skriptet kommer att få " +"värdet som antingen strängen \"True\" eller strängen \"False\"." + +#: templates/documentation/scripts/parameters.html +msgid "Makes it possible to supply a time of day" +msgstr "Ger möjlighet att ange tid" + +#: templates/documentation/scripts/parameters.html +msgid "" +"Makes it possible to supply a password string. This type of parameter " +"functions like the regular string parameter except that the chosen password " +"will be hidden in the log output and all other places where the chosen input " +"parameters are displayed." +msgstr "" +"Gör det möjligt att ange ett lösenord. Denna typ av parameter fungerar som " +"den vanliga strängparametern förutom att det valda lösenordet kommer att " +"döljas i loggutgången och alla andra platser där de valda " +"ingångsparametrarna visas." + +#: templates/documentation/scripts/parameters.html +msgid "" +"Makes it possible to make a list of predefined choices. This type of " +"parameter is useful when you want to limit the possible values that can be " +"supplied as input. To make a list of choices, you make a comma separated " +"list of the values in the default value field. The choices will be displayed " +"in the same order as they are written, and if you add a comma at the end or " +"the start of the list, it will be displayed as an empty choice." +msgstr "" +"Gör det möjligt att göra en lista med fördefinierade valmöjligheter. Denna " +"typ av parameter är användbar när du vill begränsa de möjliga värden som kan " +"matas in som indata. För att göra en lista med valmöjligheter, gör du en " +"kommaseparerad lista över värdena i standardvärdefältet. Valen kommer att " +"visas i samma ordning som de är skrivna, och om du lägger till ett " +"kommatecken i slutet eller början av listan kommer det att visas som ett " +"tomt val." + +#: templates/documentation/scripts/parameters.html +#, python-format +msgid "" +"In order to add an argument to a script, you must click on the button \"Add " +"arguments\". This will add a new row to the list of arguments where you must " +"fill out the name and type for the argument. It is also possible to specify " +"a default value for the argument, which will be entered by default when " +"running the script or adding it as an associated script. Only arguments of " +"the types %(str)s, %(int)s, %(date)s, %(choices)s and %(time)s can have " +"default values. Lastly, an argument can be set as required or not. Required " +"parameters must be supplied when running the script whereas non-required " +"parameters can be left blank. Booleans and choices cannot be required. If " +"you wish to remove an argument, you must click on \"Remove\" to the right in " +"the list." +msgstr "" +"Om du vill lägga till en indataparameter i ett skript klickar du på ikonen " +"\"Lägg till parametrar\". Detta lägger till en ny rad i listan över " +"ingångsparametrar, var du ska fylla i namn och typ av inmatningsparameter. " +"Det är också möjligt att ange ett standardvärde för argumentet, som kommer " +"att anges som standard när skriptet körs eller läggs till som ett associerat " +"skript. Endast argument av typerna %(str)s, %(int)s, %(date)s, %(choices)s " +"och %(time)s kan ha standardvärden. Slutligen kan ett argument anges som " +"krävs. Krävda parametrar måste anges när skriptet körs medan icke-krävda " +"parametrar kan lämnas tomma. Kryssrutor och valmöjligheter kan inte krävas. " +"Om man vill ta bort en parameter, klicka på \"Ta bort\" till höger i listan." + +#: templates/documentation/scripts/parameters.html +msgid "" +"You must click on the button \"Save changes\" at the bottom of the script " +"editing interface before changes to script arguments are made permanent." +msgstr "" +"Man måste klicka på knappen \"Spara ändringar\" längst ner på " +"skriptredigeringssidan innan ändringar som görs i indataparametrar träder i " +"kraft." + +#: templates/documentation/scripts/running.html +msgid "" +"In order to run a script on a computer or a group of computers, you must " +"click on \"Scripts\" in the left-hand menu and choose the script you wish to " +"run. Note that it may be necessary to swap between the tabs \"Local scripts" +"\" and \"Global scripts\" in order to find the script. When you have located " +"the script you wish to run, you must click on the button \"Run script\"." +msgstr "" +"Om du vill köra ett skript på en dator eller grupp av datorer måste du " +"klicka på \"Skript\" i den vänstra menyn och välj det skript du vill köra. " +"Observera att du kan behöva växla mellan flikarna \"Lokala skript\" och " +"\"Globala skript\" för att hitta det skript du letar efter. När du har " +"markerat det skript du vill köra, klicka på \"Kör skript\"." + +#: templates/documentation/scripts/running.html +msgid "" +"You will now be shown a modal where you will be asked to select the " +"computers and/or groups that should execute the script. Click on the " +"individual computer or group in order to select/deselect it. You can choose " +"any number of computers or groups. At the top are special checkboxes that " +"can be used to select/deselect all computers or groups. Choosing a group " +"will cause the script to be executed on all computers in that group. Click " +"\"Next\" once you have made your choices." +msgstr "" +"Det kommer nu att finnas en dialogruta som ber dig välja dessa datorer och/" +"eller grupper som du vill köra skriptet på. Klicka på individen dator eller " +"grupp för att markera/avmarkera den. Du kan välja så många datorer eller " +"grupper som du vill. Överst finns speciella kryssrutor som kan användas för " +"att välja/avmarkera alla datorer eller grupper. Om du väljer en grupp kommer " +"skriptet att köras på alla datorer i den gruppen. Klik på \"Nästa\", när du " +"har gjort dina val." + +#: templates/documentation/scripts/running.html +msgid "" +"You will now be asked to enter input parameters for the script. If an input " +"parameter has a default value, it will be entered by default. The value can " +"be changed. Fill out the fields and press \"Run\" in order to start the " +"script execution. This will result in a job being created for every computer " +"that the script is to be executed on. You can click on the link in the last " +"section of the modal in order to jump to" +msgstr "" +"Du uppmanas nu att fylla i indataparametrar för skriptet. Om en " +"indataparameter har ett standardvärde, kommer den att anges som standard. " +"Värdet kan ändras. Fyll i fälten och klicka på \"Kör\" för att börja köra " +"skriptet. Detta kommer att innebära, att ett jobb kommer att skapas för " +"varje dator du väljer att utföra skriptas på. Du kan klicka på länken på den " +"sista sidan i dialogrutan för att gå till" + +#: templates/documentation/scripts/running.html +msgid "and track the execution of jobs on the individual computers." +msgstr "och följ med vid avveckling av jobb på enskilda datorer." + +#: templates/documentation/security_scripts/__submenu__.html +#: templates/documentation/security_scripts/edit.html +msgid "Editing Security Scripts" +msgstr "Redigering av Säkerhetsskript" + +#: templates/documentation/security_scripts/__submenu__.html +#: templates/documentation/security_scripts/securityproblems.html +#: templates/documentation/users/index.html +msgid "Security Rules" +msgstr "Säkerhetsregler" + +#: templates/documentation/security_scripts/edit.html +msgid "Note that only Magenta can edit global security scripts." +msgstr "Observera att endast Magenta kan redigera globala säkerhetsskript." + +#: templates/documentation/security_scripts/edit.html +msgid "" +"If you wish to edit a Security Script, you must click on \"Security Scripts" +"\" in the left-hand menu and then select the security script in the list to " +"the right of the left-hand menu. Note that it may be necessary to swap " +"between the tabs \"Local scripts\" and \"Global scripts\" in order to find " +"the script. You can also search through the security scripts by selecting " +"the search field \"Find ...\" and typing a search term. This will cause the " +"list to display all security scripts whose names contain the search term." +msgstr "" +"För att redigera ett Säkerhetsskript, klicka på \"Säkerhetsskript\" i den " +"vänstra menyn och välj sedan Säkerhetsskriptet i listan över Säkerhetsskript " +"till höger om vänster meny. Observera att du kan behöva växla mellan " +"flikarna \"Lokala skript\" och \"Globala skript\" för att hitta skriptet. Du " +"kan också söka igenom Säkerhetsskripten genom att välja sökfältet \"Hitta ..." +"\" och skriv en sökterm. Detta gör att listan visar alla Säkerhetsskript " +"vars namn innehåller söktermen." + +#: templates/documentation/security_scripts/edit.html +msgid "" +"When you edit a security script you can change its name and description. It " +"is also possible to upload a new version of the script by clicking on the " +"tab \"Code\" and then selecting a file to upload. Changes do not become " +"permanent until you've clicked on \"Save changes\" at the bottom of the " +"screen." +msgstr "" +"När du redigerar ett Säkerhetsskript har du möjlighet att ändra dess namn " +"och beskrivning. Du kan också ladda upp en ny version av Säkerhetsskriptet " +"genom att klicka på fliken \"Kod\" och välj sedan en fil att ladda upp. " +"Ändringar du har gjort träda inte i kraft förrän du har klickat på \"Spara " +"ändringar\" längst ner i sedan." + +#: templates/documentation/security_scripts/edit.html +msgid "Please note the following regarding security scripts" +msgstr "Tänk på följande för säkerhetsskript:" + +#: templates/documentation/security_scripts/edit.html +msgid "A security script is a script that collects" +msgstr "Ett säkerhetsskript är ett skript som samlar in" + +#: templates/documentation/security_scripts/edit.html +msgid "" +"A security script does not have any input parameters, and it must follow a " +"specific format." +msgstr "" +"Ett säkerhetsskript tar inga indataparametrar, och det måste följa ett visst " +"format." + +#: templates/documentation/security_scripts/edit.html +msgid "" +"The structure of a security script will typically involve reading an amount " +"of data from a log file, searching the data for an event based on one or " +"more keywords and then saving the information in a specific format. A " +"security script can be a shell script or a python script." +msgstr "" +"Strukturen för ett säkerhetsskript kommer vanligtvis att vara att läsa en " +"mängd data från en loggfil, söka efter en händelse via ett eller flera " +"nyckelord och sedan spara informationen i ett specifikt format. Ett " +"säkerhetsskript kan vara ett shellskript eller ett pythonskript." + +#: templates/documentation/security_scripts/edit.html +msgid "" +"The format looks like this: \"event timestamp, security rule id, event " +"summary\"." +msgstr "" +"Formatet ser ut så här: \"händelsens tidsstämpel, säkerhetsregel-ID, " +"händelsesammanfattning\"." + +#: templates/documentation/security_scripts/edit.html +msgid "" +"The event timestamp is the time when the event took place. It is usually " +"obtained from the log file." +msgstr "" +"Händelsens tidsstämpel är den tidpunkt då händelsen ägde rum. Den hämtas " +"vanligtvis från loggfilen." + +#: templates/documentation/security_scripts/edit.html +msgid "" +"The security rule id is a number found in the url for editing that specific " +"security rule. Your security script is used by a security rule and it is the " +"id of this rule that you need." +msgstr "" +"Säkerhetsregel-id är ett nummer som finns i url:en för att redigera den " +"specifika säkerhetsregeln. Ditt säkerhetsskript tillhör en säkerhetsregel " +"och det är dess ID du behöver." + +#: templates/documentation/security_scripts/edit.html +msgid "" +"The event summary can be something you define or a part of the collected " +"data." +msgstr "" +"Händelsesammanfattningen kan vara något du definierar eller en del av " +"insamlad data." + +#: templates/documentation/security_scripts/edit.html +msgid "" +"Deliver the format as an array to the module csv_writer by calling the " +"method write." +msgstr "" +"Skicka formatet som en matris till modulen csv_writer genom att anropa write-" +"metoden." + +#: templates/documentation/security_scripts/index.html +#: templates/site_with_navigation.html +msgid "Administrating security scripts" +msgstr "Administration av säkerhetsskript" + +#: templates/documentation/security_scripts/index.html +msgid "" +"When you click on \"Security Scripts\" in the left-hand menu, a list of " +"security scripts will be shown to the right of the left-hand menu and the " +"editing interface for security scripts will be shown to the right of this " +"list." +msgstr "" +"När du klickar på \"Säkerhetsskript\" i vänstermenyn kommer en lista med " +"Säkerhetsskript att visas till höger om vänstermenyn och " +"redigeringsgränssnittet för Säkerhetsskript visas till höger om denna lista." + +#: templates/documentation/security_scripts/index.html +msgid "" +"Security scripts monitor special events whereas Scripts are for individual " +"actions." +msgstr "" +"Säkerhetsskript övervakar speciella händelser, medan skript är för " +"fristående åtgärder." + +#: templates/documentation/security_scripts/index.html +msgid "" +"The list of security scripts is divided in two parts that one can swap " +"between by clicking on the tabs \"Local scripts\" and \"Global scripts\" " +"above the list." +msgstr "" +"Listan över Säkerhetsskript är uppdelad i två delar, som kan växlas mellan " +"av klicka på flikarna \"Lokala skript\" och \"Globala skript\" ovanför " +"listan." + +#: templates/documentation/security_scripts/index.html +msgid "" +"Local scripts are security scripts that can only be used on the currently " +"chosen site while global scripts are security scripts that can be used on " +"all sites." +msgstr "" +"Lokala skript täcker Säkerhetsskript som bara kan användas på den site du är " +"under medan globala skript omfattar Säkerhetsskript som kan användas på vem " +"som helst site." + +#: templates/documentation/security_scripts/index.html +msgid "You have the following options for every security script" +msgstr "För varje säkerhetsskript kan du välja mellan följande" + +#: templates/documentation/security_scripts/index.html +msgid "" +"If you wish to add a new security script, you must click on \"Add new " +"Security Script\" above the list of security scripts. This will open a modal " +"where you can fill out the name and description and upload the script code. " +"When you then click on \"Create Security Script\", the script will be " +"created, and you will be redirected to the editing interface for the newly " +"created security script." +msgstr "" +"Om du vill skapa ett nytt skript klickar du på \"Lägg till nya " +"Säkerhetsskript\" ovanför listan över Säkerhetsskript. Detta öppnar en " +"dialogruta där du kan fyll i skriptnamn, beskrivning och ladda upp " +"skriptkod. När du sedan klickar på \"Skapa Säkerhetsskript\" kommer skriptet " +"att skapas och du omdirigeras till redigeringsgränssnittet för det nyskapade " +"Säkerhetsskriptet." + +#: templates/documentation/security_scripts/securityevents.html +msgid "" +"This overview shows the individual events that have been triggered by the " +"system. In the left column, you can choose how you wish to filter the " +"overview, i.e. choose which events you wish to see. By default, you will be " +"shown all unresolved events with a severity level greater than normal. The " +"severity level is also shown in the overview." +msgstr "" +"Den här sammanfattningen visar de enskilda händelser som utlöses av " +"systemet. I vänsterspalten kan du välja hur översikten filtreras, det vill " +"säga vilka händelser du vill se. Som standard ser du alla olösta incidenter " +"med en svårighetsgrad över normal. Översikten visar också " +"allvarlighetsgraden för incidenterna." + +#: templates/documentation/security_scripts/securityevents.html +msgid "" +"From the overview you can select and handle events. Handling an event allows " +"you to change its status and the assigned user as well as add or change a " +"note for the event. It is possible to handle multiple events simultaneously." +msgstr "" +"Från översikten kan du välja och hantera incidenter. Genom att hantera en " +"incident kan du ändra dess status och den tilldelade användaren samt lägga " +"till eller ändra en anteckning för incidenten. Det är möjligt att hantera " +"flera incidenter samtidigt." + +#: templates/documentation/security_scripts/securityevents.html +msgid "" +"The possible statuses are new (the default), assigned and resolved. The " +"assigned user can be chosen from among all users on the site you are on. It " +"is possible for an event to have no assigned user." +msgstr "" +"De möjliga statusarna är nya (standard), tilldelade och lösta. Den " +"tilldelade användaren kan väljas bland alla användare på det site du är på. " +"Det är möjligt för en incident att inte ha någon tilldelad användare." + +#: templates/documentation/security_scripts/securityproblems.html +msgid "" +"The overview \"Monitoring Rules\" shows all the defined security rules and " +"offline rules that are monitored. You can define new security rules from the " +"overview by clicking on \"Add new security rule\" above the list of defined " +"rules. You can edit an existing security rule by selecting it in the list. " +"The interface for both operations has the same form." +msgstr "" +"Översikten \"Övervakningsregler\" visar alla definierade säkerhetsregler och " +"offline-regler som övervakas. Från översikten kan skapas nya säkerhetsregler " +"genom att klicka på \"Lägg till ny säkerhetsregel\" ovanför listan med " +"definierade regler. Du kan redigera en befintlig säkerhetsregel genom att " +"välja den i listan. Gränssnittet för båda operationerna har samma form." + +#: templates/documentation/security_scripts/securityproblems.html +msgid "A new security rule takes the following input" +msgstr "En ny säkerhetsregel tar följande indata" + +#: templates/documentation/security_scripts/securityproblems.html +msgid "Name (mandatory): the name of the particular security rule." +msgstr "Namn (obligatorisk): Namnet på säkerhetsregeln i fråga." + +#: templates/documentation/security_scripts/securityproblems.html +msgid "" +"Security Script (mandatory): The Security Script is executed every time the " +"computer checks in with the admin-site." +msgstr "" +"Säkerhetsskript (obligatorisk): Säkerhetsskriptet körs varje gång en dator " +"checkar in på adminsidan." + +#: templates/documentation/security_scripts/securityproblems.html +msgid "" +"Description (optional): A descriptive text that is included in the sent " +"email warnings." +msgstr "" +"Beskrivning (frivillig): Beskrivande text som ingår i de skickade " +"varningsmeddelandena." + +#: templates/documentation/security_scripts/securityproblems.html +msgid "" +"Monitored groups (optional): The groups define which computers the security " +"rule applies to." +msgstr "" +"Övervakade grupper (frivillig): Grupperna definierar vilka datorer den " +"aktuella säkerhetsregeln är aktiv för." + +#: templates/documentation/security_scripts/securityproblems.html +msgid "" +"Recipient(s) of email warning (optional): The users that should receive an " +"email about any events related to the security rule. Note that if a " +"monitored PC belongs to one or more groups with supervisors, those " +"supervisors will receive any email warnings related to that PC instead of " +"the recipients set here." +msgstr "" +"Mottagare av e-postavisering (frivillig): Vilka användare som ska få ett e-" +"postmeddelande om incidenter relaterade till denna säkerhetsregel. Observera " +"att om en övervakad dator tillhör en eller flera grupper med ansvariga " +"personer, då kommer dessa ansvariga personer att få alla e-postvarningar " +"relaterade till det PC istället för de mottagare som valts här." + +#: templates/documentation/sites_overview/index.html +msgid "" +"The sites overview shows all the sites that you have access to. A customer " +"admin has access to all sites for that customer while other users only have " +"access to the sites that they have been assigned to. Customer admins can " +"also delete or create sites from the sites overview." +msgstr "" +"Sites-översikten visar alla sites som du har tillgång till. En kunde-admin " +"har åtkomst till alla sites för den kunden medan andra användare bara har " +"åtkomst till de sites som de har tilldelats. Kunde-admins kan också ta bort " +"eller skapa sites från sites-översikten." + +#: templates/documentation/sites_overview/index.html +msgid "" +"If you want more detailed information about creating, deleting and handling " +"multiple sites, we recommend reading our" +msgstr "" +"Om du vill ha mer detaljerad information om att skapa, ta bort och hantera " +"flera sites rekommenderar vi att du läser vår" + +#: templates/documentation/sites_overview/index.html +msgid "Guide to creating and handling multiple sites" +msgstr "Guide för att skapa och hantera flera sites" + +#: templates/documentation/sites_overview/index.html +msgid "Information about your sites" +msgstr "Information om dina sites" + +#: templates/documentation/sites_overview/index.html +msgid "" +"Some general information about the sites that you have access to is shown at " +"the top of the overview." +msgstr "" +"Viss allmän information om de sites som du har tillgång till visas högst upp " +"i översikten." + +#: templates/documentation/sites_overview/index.html +#: templates/documentation/users/index.html templates/site_with_navigation.html +#: templates/system/sites/list.html +msgid "Sites" +msgstr "Sites" + +#: templates/documentation/sites_overview/index.html +msgid "The total number of sites that you have access to" +msgstr "Ditt totala antal sites som du har tillgång till" + +#: templates/documentation/sites_overview/index.html +#: templates/system/sites/list.html +msgid "Computers total" +msgstr "Datorer totalt" + +#: templates/documentation/sites_overview/index.html +msgid "" +"The total number of computers registered on the sites that you have access to" +msgstr "" +"Det totala antalet datorer registrerade på de sites som du har tillgång till" + +#: templates/documentation/sites_overview/index.html +msgid "" +"The total number of activated computers on the sites that you have access to" +msgstr "" +"Det totala antalet aktiverade datorer på de sites som du har tillgång till" + +#: templates/documentation/sites_overview/index.html +#: templates/system/site_status.html templates/system/sites/list.html +msgid "Online" +msgstr "Online" + +#: templates/documentation/sites_overview/index.html +msgid "" +"The total number of online computers on the sites that you have access to" +msgstr "Det totala antalet online datorer på de sites som du har tillgång till" + +#: templates/documentation/sites_overview/index.html +msgid "" +"The total number of OS2borgerPC computers (not kiosk) on the sites that you " +"have access to" +msgstr "" +"Det totala antalet MedborgarPC-datorer (ej kiosk) på de sites som du har " +"tillgång till" + +#: templates/documentation/sites_overview/index.html +msgid "" +"The total number of OS2borgerPC kiosk computers on the sites that you have " +"access to" +msgstr "" +"Det totala antalet MedborgarPC-datorer (ej kiosk) på de sites som du har " +"tillgång till" + +#: templates/documentation/sites_overview/index.html +msgid "20.04, 22.04, 24.04, ..." +msgstr "20.04, 22.04, 24.04, ..." + +#: templates/documentation/sites_overview/index.html +msgid "" +"The total number of computers with each Ubuntu version on the sites that you " +"have access to" +msgstr "" +"Det totala antalet datorer med varje Ubuntu-version på de sites som du har " +"tillgång till" + +#: templates/documentation/sites_overview/index.html +msgid "Deleting a site" +msgstr "Ta bort ett site" + +#: templates/documentation/sites_overview/index.html +msgid "REMINDER: Only customer admins can delete a site!" +msgstr "PÅMINNELSE: Endast kunde-admins kan ta bort ett site!" + +#: templates/documentation/sites_overview/index.html +msgid "" +"To start the process of deleting a site, click the dropdown symbol on the " +"right side of the button for that site, and then on \"Delete Site\". Note " +"that if 5 or more computers are registered with the site, the \"Delete Site" +"\" button will be inactive and deletion will not be possible. You will then " +"need to manually remove computers from the site for deletion to be possible. " +"The computers can be removed via the computers overview for that site. After " +"clicking on the \"Delete Site\" button, you will be redirected to a new page " +"that will inform you of the consequences of deleting the site. You must " +"check a checkbox indicating that you understand and accept the consequences " +"of deleting the site before you can click \"Confirm deletion\" to finalize " +"the deletion." +msgstr "" +"För att starta processen att ta bort ett site, klicka på rullgardinssymbolen " +"till höger om knappen för det site och sedan på \"Ta bort site\". Observera " +"att om 5 eller fler datorer är registrerade på sitet kommer knappen \"Ta " +"bort site\" att vara inaktiv och radering kommer inte att vara möjlig. Du " +"måste då manuellt ta bort datorer från sitet för att radering ska vara " +"möjlig. Datorerna kan tas bort via datoröversikten för den sidan. Efter att " +"ha klickat på knappen \"Ta bort site\" kommer du att omdirigeras till en ny " +"sida som kommer att informera dig om konsekvenserna av att ta bort sitet. Du " +"måste markera en kryssruta som anger att du förstår och accepterar " +"konsekvenserna av att ta bort sitet innan du kan klicka på \"Bekräfta " +"radering\" för att slutföra borttagningen." + +#: templates/documentation/sites_overview/index.html +msgid "Creating a new site" +msgstr "Skapa ett nyt site" + +#: templates/documentation/sites_overview/index.html +msgid "REMINDER: Only customer admins can create new sites!" +msgstr "PÅMINNELSE: Endast kunde-admins kan skapa nya sites!" + +#: templates/documentation/sites_overview/index.html +msgid "" +"If you wish to create a new site, you must click on the \"Add new site\" " +"button, which is only visible to customer admins. This will open a modal " +"where you must enter a name and a unique UID for the site. Note that the UID " +"must be used when registering computers with the site. As such, we suggest " +"choosing values like \"organization\" or \"organization-location\" (without " +"quotes). The modal will indicate whether the chosen UID is unique. If the " +"chosen UID is not unique, the \"Create site\" button in the modal will be " +"inactive. When you click on \"Create site\", you will be returned to the " +"sites overview where it will be possible to select the new site." +msgstr "" +"Om du vill skapa ett nyt site måste du klicka på knappen \"Lägg till ny site" +"\", som endast är synlig för kunde-admins. Detta öppnar en modal där du " +"måste ange ett namn och ett unikt UID för sitet. Observera att UID måste " +"användas när du registrerar datorer på sitet. Vi föreslår därför att du " +"väljer värden som \"organisation\" eller \"organisation-plats\" (utan " +"citattecken). Modalen kommer att indikera om det valda UID är unikt. Om det " +"valda UID:t inte är unikt kommer knappen \"Skapa site\" i modalen att vara " +"inaktiv. När du klickar på \"Skapa site\" kommer du tillbaka till sites-" +"översikten där det kommer att vara möjligt att välja det nya site." + +#: templates/documentation/sites_overview/index.html +msgid "" +"Once you have created a new site, you can create new users for the site or " +"add existing users to the site via the \"Users\" section for that site. See " +"the documentation regarding \"Users\" for more information." +msgstr "" +"När du har skapat ett nyt site kan du skapa nya användare för sitet eller " +"lägga till befintliga användare till sitet via avsnittet \"Användare\" för " +"det site. Se dokumentationen om \"Användare\" för mer information." + +#: templates/documentation/status/index.html +msgid "" +"When you log in to the admin-site, you will be presented with the status " +"screen for the site that your OS2borgerPC user is associated with. If you " +"have access to multiple sites, you must first choose a site to access." +msgstr "" +"När du loggar in på adminsidan kommer du att presenteras med statusbilden " +"för den site, som din Sambruk MedborgarPC-användare är associerad med. Om du " +"har tillgång till flera sites måste du först välja det site du vill ange." + +#: templates/documentation/status/index.html +msgid "" +"On this list, you will be shown information about all computers for the " +"site, sorted with new/inactive computers" +msgstr "" +"I den här listan ser du information om alla datorer för sitet, sorterade " +"efter nya/inaktiva datorer" + +#: templates/documentation/status/index.html +msgid "waiting to be activated" +msgstr "som väntar på att aktiveras" + +#: templates/documentation/status/index.html +msgid "at the top and otherwise by when they were last seen." +msgstr "på toppen, och annars när de senast sågs." + +#: templates/documentation/status/index.html +msgid "" +"You can click on a particular computer to see mere information about it." +msgstr "" +"Du kan klicka på den enskilda datorn för att se mer information om den." + +#: templates/documentation/users/index.html templates/site_with_navigation.html +msgid "Administrating users" +msgstr "Administration av användare" + +#: templates/documentation/users/index.html +msgid "" +"When you click on \"Users\" in the left-hand menu, you will be shown a list " +"of users to the right of the left-hand menu. The editing interface for the " +"chosen user will be shown to the right of the list. If no users exist for " +"the chosen site, you will be shown a form for creating users instead." +msgstr "" +"När du klickar på \"Användare\" i den vänstra menyn ser du en lista över " +"användare till höger om den vänstra menyn. Till höger om listan visas " +"redigeringsgränssnittet för den valda användaren. Om det inte finns någon " +"användare på det valda site visas en dialogruta för att skapa användare i " +"stället." + +#: templates/documentation/users/index.html +msgid "Editing" +msgstr "Redigering" + +#: templates/documentation/users/index.html +msgid "" +"If you wish to edit a user, you must click on that user in the list of " +"users. It will now be possible to change the user's username, password, " +"email address, usertype and language. Note that only users with the usertype " +"\"Site Admin\" or \"Customer Admin\" can change a user's usertype. " +"Furthermore, if your usertype is \"Site User\", you will only be able to " +"edit your own user. Users with the usertype \"Customer Admin\" can also only " +"be seen and edited by other \"Customer Admins\". The fields are explained " +"below:" +msgstr "" +"Om du vill redigera en användare klickar du på användaren i listan över " +"användare. Du har nu möjlighet att ändra användarens användarnamn, lösenord, " +"e-postadress, användartyp och språk. Observera att endast användare med " +"användartypen \"Site-admin\" eller \"Kunde-admin\" kan ändra en användares " +"användartyp. Dessutom, om din användartyp är \"Site användare\", kommer du " +"bara att kunna redigera din egen användare. Användare med användartypen " +"\"Kunde-admin\" kan också endast ses och redigeras av andra \"Kunde-admins" +"\". Fälten förklaras nedan:" + +#: templates/documentation/users/index.html +msgid "Username" +msgstr "Användarnamn" + +#: templates/documentation/users/index.html +msgid "" +"This is the username that the user must use when they log in to the admin-" +"site. It can be no more than 150 characters long and can only contain " +"numbers, letters and the special characters" +msgstr "" +"Detta är användarnamnet som användaren måste använda vid inloggning i " +"Sambruk MedborgarPC-admin. Det kan vara högst 150 tecken och innehåller " +"endast siffror, bokstäver och specialtecken" + +#: templates/documentation/users/index.html +#: templates/documentation/wake_plans/index.html +msgid "and" +msgstr "och" + +#: templates/documentation/users/index.html +msgid "" +"Here you can change the user's password. To ensure that the password is " +"entered correctly, it must be entered twice. If the fields are left empty, " +"the password will remain unchanged. When creating a new user, it is " +"mandatory to specify a password." +msgstr "" +"Här kan du ändra användarens lösenord. För att säkerställa att lösenordet " +"skrivs in korrekt måste det skrivas in två gånger. Om fälten inte är ifyllda " +"förblir lösenordet oförändrat. När du skapar en ny användare måste du ange " +"ett lösenord." + +#: templates/documentation/users/index.html +msgid "Email address" +msgstr "E-postadress" + +#: templates/documentation/users/index.html +msgid "Here you can enter the user's email address. It is optional." +msgstr "Här kan du ange användarens e-postadress. Det är valfritt." + +#: templates/documentation/users/index.html +msgid "The options in this field depend on your own usertype" +msgstr "Alternativen i det här fältet beror på din egen användartyp" + +#: templates/documentation/users/index.html +msgid "Usertypes" +msgstr "Användartyper" + +#: templates/documentation/users/index.html +#, python-format +msgid "Site Users are not allowed to edit %(ut)s." +msgstr "Site användare har inte möjlighet att redigera %(ut)s." + +#: templates/documentation/users/index.html +#, python-format +msgid "The different %(ut)s are described further down." +msgstr "Se information om de olika %(ut)s längre ner." + +#: templates/documentation/users/index.html +msgid "The user's language setting." +msgstr "Användarens språkinställning." + +#: templates/documentation/users/index.html +msgid "" +"Changes do not take effect until you've clicked on the button \"Save changes" +"\" at the bottom of the page." +msgstr "" +"Ändringar träder inte i kraft förrän du har klickat på knappen \"Spara " +"ändringar\" längst ner på sidan." + +#: templates/documentation/users/index.html templates/system/users/link.html +#: templates/system/users/update.html +msgid "Add existing users to this site" +msgstr "Lägg till befintliga användare på den här site" + +#: templates/documentation/users/index.html +msgid "" +"If you are a customer admin, and you wish to add an existing user to the " +"site, you must click on the button \"Add existing users to this site\" above " +"the list of users. This will open a form where you can select the user(s) " +"that you wish to add. It will only be possible to select users that do not " +"already have access to the site. You must hold down Ctrl to select more than " +"one user. When you have selected the desired user(s), you must choose the " +"usertype that they should be added with. This can be either Site User or " +"Site Admin. When you fill out the fields and then click \"Save changes\", " +"the selected user(s) will be added to the site with the selected usertype, " +"and you will be redirected to an empty form for adding more existing users " +"to the site. Only \"Customer Admins\" can add existing users to a site." +msgstr "" +"Om du är kunde-admin och vill lägga till en befintlig användare till sitet, " +"måste du klicka på knappen \"Lägg till befintliga användare till denna site" +"\" ovanför användarlistan. Detta öppnar ett formulär där du kan välja den " +"eller de användare som du vill lägga till. Det kommer endast att vara " +"möjligt att välja användare som inte redan har tillgång till sitet. Du måste " +"hålla ned Ctrl för att välja mer än en användare. När du har valt önskad " +"användare måste du välja vilken användartyp de ska läggas till med. Detta " +"kan vara antingen site användare eller site-admin. När du fyller i fälten " +"och sedan klickar på \"Spara ändringar\", kommer den eller de valda " +"användarna att läggas till på sitet med den valda användartypen, och du " +"kommer att omdirigeras till ett tomt formulär för att lägga till fler " +"befintliga användare på sitet. Endast \"Kunde-admins\" kan lägga till " +"befintliga användare på ett site." + +#: templates/documentation/users/index.html +msgid "Creating a new user" +msgstr "Skapa en ny användare" + +#: templates/documentation/users/index.html +msgid "" +"If you wish to create a new user, you must click on the button \"Add new user" +"\" above the list of users. This will open the form for creating a new user, " +"which has the same fields as the interface for editing a user. When you fill " +"out the fields and click \"Save changes\", the user will be created, and you " +"will be redirected to the editing interface for the newly created user. Both " +"\"Site Admins\" and \"Customer Admins\" can create new users." +msgstr "" +"Om du vill skapa en ny användare klickar du på knappen \"Lägg till en ny " +"användare\" ovanför listan över användare. Detta kommer att visa en " +"dialogruta där du kan fylla i samma information som vid redigering av " +"användare. När du fyller i fälten och klickar på \"Spara ändringar\", skapas " +"användaren och du omdirigeras till redigeringsgränssnittet för den nyskapade " +"användaren. Både \"Site-admins\" och \"Kunde-admins\" kan skapa nya " +"användare." + +#: templates/documentation/users/index.html +msgid "Deleting a user" +msgstr "Ta bort användare" + +#: templates/documentation/users/index.html +msgid "" +"If you wish to delete a user, you must select the user and then click on the " +"X to the right of the selected user in the list of users. You will then be " +"asked to confirm the deletion and if you do so, the user will be deleted. " +"Both \"Site Admins\" and \"Customer Admins\" can delete users. However, " +"users with the usertype \"Customer Admin\" cannot be deleted without first " +"changing them to a different usertype." +msgstr "" +"Om du vill ta bort en användare måste du välja användaren och sedan klicka " +"på X:et till höger om den valda användaren i användarlistan. Du kommer då " +"att bli ombedd att bekräfta raderingen och om du gör det kommer användaren " +"att raderas. Både \"Site-admins\" och \"Kunde-admins\" kan ta bort " +"användare. Användare med användartypen \"Kunde-admin\" kan dock inte tas " +"bort utan att först ändra dem till en annan användartyp." + +#: templates/documentation/users/index.html +msgid "Permissions for Usertypes" +msgstr "Rättigheter för användartyper" + +#: templates/documentation/users/index.html +msgid "" +"Note: Contact Magenta if a user on your site needs to be changed to a " +"usertype that none of your users have permission to choose." +msgstr "" +"Obs: Kontakta Magenta om en användare på din site behöver ändras till " +"en användartyp som ingen av dina användare har behörighet att välja." + +#: templates/documentation/users/index.html +msgid "All permissions, except deleting Customer Admins" +msgstr "Alle rättigheter, förutom att ta bort Kunde-admins" + +#: templates/documentation/users/index.html +msgid "All permissions" +msgstr "Alla rättigheter" + +#: templates/documentation/users/index.html +msgid "" +"Can create, edit and delete users except Customer Admins. Cannot change a " +"user's usertype to Customer Admin. Cannot add existing users to a site." +msgstr "" +"Kan skapa, redigera och ta bort användare förutom kunde-admins. Kan inte " +"ändra en användares användartyp till kunde-admin. Kan inte lägga till " +"befintliga användare på ett site." + +#: templates/documentation/users/index.html +msgid "Can edit site settings. Cannot create or delete sites." +msgstr "" +"Kan redigera inställningar för site. Kan inte skapa eller ta bort sites." + +#: templates/documentation/users/index.html +msgid "" +"Can edit their own user, except their usertype. Cannot create, delete or " +"edit other users." +msgstr "" +"Kan redigera egen användare, förutom att ändra användartyp. Kan inte skapa, " +"redigera eller ta bort andra användare." + +#: templates/documentation/users/index.html +msgid "Can run, create and edit scripts. Cannot delete scripts." +msgstr "Kan köra, skapa och redigera skript. Kan inte ta bort dem." + +#: templates/documentation/users/index.html +msgid "Can create and edit security rules. Cannot delete security rules." +msgstr "Kan skapa och redigera säkerhetsregler. Kan inte ta bort dem." + +#: templates/documentation/wake_plans/__submenu__.html +msgid "Associated Groups" +msgstr "Associerade Grupper" + +#: templates/documentation/wake_plans/__submenu__.html +#: templates/system/site_settings/site_settings.html +msgid "Settings" +msgstr "Inställningar" + +#: templates/documentation/wake_plans/__submenu__.html +#: templates/documentation/wake_plans/edit_exceptions.html +msgid "Handle exceptions" +msgstr "Hantera undantag" + +#: templates/documentation/wake_plans/edit_exceptions.html +msgid "" +"On the page for handling schedule exceptions, a list of schedule exceptions " +"for the chosen site will be shown to the right of the left-hand menu. You " +"can click on the name of a particular exception in order to edit it." +msgstr "" +"På sidan för hantering av schemaundantag, till höger om den vänstra menyn " +"visar en lista över schemaundantag för det site du befinner dig under. Man " +"kan klicka på namnet på varje undantag för att redigera undantaget." + +#: templates/documentation/wake_plans/edit_exceptions.html +msgid "" +"There are two types of exceptions: altered opening hours and closed days. " +"The two types have different icons in the list of exceptions. An exception " +"with altered opening hours changes the on and off times for the chosen date " +"or period. The icon is an open door. An exception with closed days sets the " +"associated devices to be constantly off during the chosen date or period. " +"The icon is a closed door." +msgstr "" +"Det finns två typer av undantag: ändrade öppettider och stängningsdagar. De " +"två typerna har olika ikoner i listan över undantag. Ett undantag med " +"ändrade öppettider ändras på- och avstängningstiderna för det valda datumet " +"eller perioden. Ikonen är en öppen dörr. Ett undantag med stängningsdagar " +"gör att de tillhörande enheterna är konstant avstängda under det valda " +"datumet eller perioden. Ikonen är en stängd dörr." + +#: templates/documentation/wake_plans/edit_exceptions.html +msgid "" +"The editing interface for the chosen exception is shown to the right. If no " +"exceptions have been created for the chosen site, the interface for creating " +"an exception with altered opening hours will be shown instead." +msgstr "" +"Till höger visas redigeringsgränssnittet för det valda undantaget. Om inga " +"undantag har skapats för den valda site visas istället gränssnittet för att " +"skapa ett undantag med ändrade öppettider." + +#: templates/documentation/wake_plans/edit_exceptions.html +msgid "" +"By default when you click on an exception, you will be shown the settings " +"for the exception. Here, you can change the name of the exception and the " +"period where it applies. A single date is chosen by choosing the same from " +"and to date. If the exception has the type altered opening hours, it will " +"also be possible to change the on and off time that applies during the " +"exception. Changes do not become permanent until you have clicked on \"Save " +"changes\" at the bottom of the screen." +msgstr "" +"Som standard, när du klickar på ett undantag, ser du inställningarna för " +"undantaget. Här kan du ändra namnet på undantaget och den period under " +"vilken det är i kraft. Ett enda datum väljs genom att välja samma från- och " +"till-datum. Om undantaget är av typen ändrade öppettider, kommer du även att " +"kunna ändra de på- och avstängningstider som gäller för undantaget. " +"Ändringar som görs på webbplatsen träder inte i kraft förrän du trycker på " +"knappen \"Spara ändringar\" längst ner på skärmen." + +#: templates/documentation/wake_plans/edit_exceptions.html +msgid "" +"Note that if you change the settings for an exception that is being used by " +"one or more schedules, those schedules will also be updated when you click " +"on \"Save changes.\"" +msgstr "" +"Observera att om du ändrar inställningarna för ett undantag som används av " +"flera aktiva scheman, kommer scheman också att uppdateras när du trycker på " +"\"Spara ändringar.\"" + +#: templates/documentation/wake_plans/edit_exceptions.html +msgid "" +"If you wish to create a new exception, you must click on \"Add altered " +"opening hours\" or \"Add closed days\" at the top of the list of exceptions. " +"This opens an interface where you must enter the name and settings for the " +"chosen type of exception. When you click on \"Create\", you will be " +"redirected to the editing interface for the newly created exception, where " +"you can continue to edit the settings." +msgstr "" +"Om du vill skapa ett nytt undantag klickar du på \"Lägg till ändrade " +"öppettider\"eller \"Lägg till stängningsdagar\" ovanför schemalistan. Detta " +"öppnar ett gränssnitt där man måste fylla i namn och inställningar för den " +"valda typen av undantag. När du klickar på \"Skapa\", kommer en att " +"omdirigeras till redigeringssidan för den nyskapade undantag där du kan " +"fortsätta att ändra inställningarna." + +#: templates/documentation/wake_plans/edit_groups.html +msgid "Editing schedules: Associated groups" +msgstr "Schemalägg redigering: Associerade grupper" + +#: templates/documentation/wake_plans/edit_groups.html +msgid "" +"The editing interface for a schedule shows a list of groups that are " +"included in the schedule on the right side of the screen. A schedule applies " +"to all computers in the groups that are associated with the schedule. A " +"schedule with no associated groups has no effect. You can edit the members " +"of the schedule as described below." +msgstr "" +"Redigeringsgränssnittet för ett schema visar en lista över grupper som ingår " +"i schemat till höger på skärmen. Ett schema gäller för alla datorer i de " +"grupper som är associerade med schemat. Ett schema utan associerade grupper " +"har ingen effekt. Du kan redigera medlemmarna i schemat enligt beskrivningen " +"nedan." + +#: templates/documentation/wake_plans/edit_groups.html +msgid "Add a group" +msgstr "Lägg till grupp" + +#: templates/documentation/wake_plans/edit_groups.html +msgid "" +"You add groups by clicking on \"Add group to the schedule\". If there are " +"any groups that do not yet belong to the schedule, they will be shown in a " +"list. Click on the group(s) that you wish to add to select them and then " +"click on the check mark beneath the list to add the group(s) to the schedule." +msgstr "" +"Du lägger till grupper genom att klicka på \"Associera gruppen till " +"tidtabellen\". Om det finns några grupper som ännu inte tillhör schemat " +"kommer de att visas i en lista. Klicka på de grupper som du vill lägga till " +"för att välja dem och klicka sedan på bockmarkeringen under listan för att " +"länka grupperna till schemat." + +#: templates/documentation/wake_plans/edit_groups.html +msgid "" +"Note that a given group/computer can only belong to a single schedule at a " +"time. If you add a group that already belongs to a different schedule, it " +"will be removed from the previous schedule." +msgstr "" +"Observera att en viss grupp/dator inte kan associeras med mer än ett schema " +"åt gången. Om du lägger till en grupp som redan har ett annat schema tas den " +"bort från föregående schema." + +#: templates/documentation/wake_plans/edit_groups.html +msgid "" +"If you attempt to add a group, which contains one or more computers that " +"already belong to a different schedule via a different group, the chosen " +"group will be rejected during the update of the schedule when you click " +"\"Save changes\". Valid groups will still be added. If one or more groups " +"are rejected, the page will inform you of this along with the reason." +msgstr "" +"Om du försöker lägga till en grupp som innehåller en eller flera datorer, " +"som är kopplat till ett annat schema via en annan grupp kommer den valda " +"gruppen att avvisas under schemauppdateringen när du klickar på \"Spara " +"ändringar\". Giltiga grupper läggs fortfarande till. Om en eller flera " +"grupper avvisas kommer sidan att informera dig om detta tillsammans med " +"orsaken." + +#: templates/documentation/wake_plans/edit_groups.html +msgid "Remove a group" +msgstr "Ta bort grupp" + +#: templates/documentation/wake_plans/edit_groups.html +msgid "" +"In order to remove a group, you must click on the X to the right of the " +"group in the list of associated groups." +msgstr "" +"Om du vill ta bort en grupp klickar du på X:et till höger om gruppens namn i " +"listan över associerade grupper." + +#: templates/documentation/wake_plans/edit_groups.html +msgid "" +"Be aware that changes to the list of groups do not become permanent until " +"you have clicked on \"Save changes\" at the bottom of the screen." +msgstr "" +"Tänk på att ändringar i listan över grupper inte blir permanenta förrän du " +"har klickat på \"Spara ändringar\" längst ner på skärmen." + +#: templates/documentation/wake_plans/edit_groups.html +msgid "" +"Note that if you later add computers to a group that belongs to a schedule, " +"those computers will also be associated with the schedule. If the computers " +"that you attempt to add already belong to a different schedule via a " +"different group, they will be rejected during the update of the group when " +"you click \"Save changes\" on the group editing interface. Valid computers " +"will still be added. If one or more computers are rejected, the page will " +"inform you of this along with the reason." +msgstr "" +"Observera att om datorer senare läggs till i en grupp som är medlem i ett " +"schema, kommer dessa datorer också att kopplas till schemat. Om datorerna du " +"försöker lägga till redan är associerade med ett annat schema via en annan " +"grupp, kommer de att avvisas under uppdateringen av gruppen när du klickar " +"på \"Spara ändringar\" i gruppredigeringsgränssnittet. Giltiga datorer " +"kommer fortfarande att läggas till. Om en eller flera datorer avvisas, " +"kommer sidan att informera dig om detta tillsammans med orsaken." + +#: templates/documentation/wake_plans/edit_settings.html +msgid "Editing schedules: Settings" +msgstr "Redigera schema: Inställningar" + +#: templates/documentation/wake_plans/edit_settings.html +msgid "" +"The editing interface for a schedule shows the settings for the schedule on " +"the left side of the screen and a list of exceptions that are used by the " +"schedule on the right side of the screen." +msgstr "" +"Redigeringsgränssnittet för ett schema visar schemainställningarna till " +"vänster på skärmen, och en lista över undantag som är associerade med " +"schemat till höger på skärmen." + +#: templates/documentation/wake_plans/edit_settings.html +msgid "" +"A schedule can be active or inactive. It will only affect the associated " +"groups if it is active." +msgstr "" +"Ett schema kan vara aktivt eller inaktivt. Det har bara en effekt på de " +"associerade grupperna, om det är aktiv." + +#: templates/documentation/wake_plans/edit_settings.html +msgid "Sleep state" +msgstr "Viloläge" + +#: templates/documentation/wake_plans/edit_settings.html +msgid "" +"The chosen sleep state determines the state that the members of the schedule " +"are placed in when they are turned off according to the schedule. In order " +"from least to greatest energy savings, the options are standby, freeze, mem " +"and off. We thus recommend using the sleep state off in order to achieve the " +"greatest energy savings, but not all hardware supports this sleep state. If " +"the sleep state off is used on a computer that does not support it, the " +"computer will not wake automatically. It will still be possible to turn it " +"on manually." +msgstr "" +"Det valda viloläget avgör vilket läge medlemmarna i schemat stängs av i, när " +"de stängs av enligt schema. För från minsta till största energibesparing är " +"alternativen standby, freeze, mem och off. Vi rekommenderar därför att du " +"använder viloläget off för maximal energibesparing, men inte all hårdvara " +"stöder detta viloläge. Om viloläge tillämpas på en dator, som inte stöder " +"det, datorn vaknar inte igen. Det kommer dock fortfarande att kunna " +"aktiveras manuellt." + +#: templates/documentation/wake_plans/edit_settings.html +msgid "Settings: Week plan" +msgstr "Inställningar: Veckoschema" + +#: templates/documentation/wake_plans/edit_settings.html +msgid "" +"In the week plan, one can choose on and off times for every day of the week, " +"or whether it should be off for the entirety of that particular day. The " +"settings in the week plan normally apply for each of those days of the week, " +"unless there exists an exception for that particular date." +msgstr "" +"I veckoschemat kan du välja att slå på och av tider för varje veckodag, " +"eller om det finns måste vara avstängd under hela dagen. Inställningarna i " +"veckoschemat gäller i princip alla veckodagar i fråga, om det inte finns ett " +"undantag för det aktuella datumet." + +#: templates/documentation/wake_plans/edit_settings.html +msgid "Settings: Exceptions" +msgstr "Inställningar: Undantag" + +#: templates/documentation/wake_plans/edit_settings.html +msgid "" +"Below the header \"Exceptions: Closed days and altered opening hours\", one " +"can add or remove exceptions to the week plan for specific dates or periods. " +"If an exception for a given date exists, the settings for the exception will " +"be used instead of the week plan settings. An exception can be a change in " +"the on and off times or a constant shutdown for a specific date or period. " +"Exceptions are created, deleted and edited in the tab that opens when you " +"click \"Create closed days\", \"Create altered opening hours\" or \"Edit " +"exceptions\". The different buttons redirect to the part of the tab that is " +"related to their name." +msgstr "" +"Under rubriken \"Undantag: Stängningsdagar och ändrade öppettider\" kan du " +"lägga till eller ta bort undantag till veckoschemat för specifika datum " +"eller perioder. Om det finns ett undantag för ett visst datum används " +"undantagsinställningarna i stället för veckoschemainställningarna. Ett " +"undantag kan vara en förändring i på- och avstängningstiderna eller en " +"konstant avstängning för ett visst datum eller en viss period. Undantag " +"skapas, raderas och redigeras i fliken som öppnas när du trycker på \"Skapa " +"stängningsdagar\", \"Skapa ändrade öppettider\" eller \"Redigera undantag\". " +"De olika knapparna går direkt till den del av fliken som är relaterad till " +"deras namn." + +#: templates/documentation/wake_plans/edit_settings.html +msgid "Add exceptions" +msgstr "Lägg till undantag" + +#: templates/documentation/wake_plans/edit_settings.html +msgid "" +"You add exceptions by clicking on \"Add exception to schedule\". If there " +"are any exceptions that do not yet belong to the schedule, they will be " +"shown in a list. Click on the exception(s) that you wish to add to select " +"them and then click on the check mark beneath the list to add the " +"exception(s) to the schedule." +msgstr "" +"Du lägger till undantag genom att klicka på \"Länka undantag till tidtabellen" +"\". Om det finns några undantag som ännu inte tillhör schemat kommer de att " +"visas i en lista. Klicka på de undantag som du vill lägga till för att välja " +"dem och klicka sedan på bockmarkeringen under listan för att länka " +"undantagen till schemat." + +#: templates/documentation/wake_plans/edit_settings.html +msgid "" +"If you attempt to add an exception that overlaps with one or more already " +"added exceptions, the chosen exception will be rejected during the update of " +"the schedule when you click \"Save changes\". Valid exceptions will still be " +"added. If one or more exceptions are rejected, the page will inform you of " +"this along with the reason." +msgstr "" +"Om du försöker lägga till ett undantag som överlappar ett eller flera redan " +"associerade undantag kommer det valda undantaget att avvisas för " +"uppdateringen av schemat när du klickar på \"Spara ändringar\". Giltiga " +"undantag kommer fortfarande att läggas till. Om ett eller flera undantag " +"avvisas, kommer sidan att informera dig om detta tillsammans med anledningen." + +#: templates/documentation/wake_plans/edit_settings.html +msgid "Remove exceptions" +msgstr "Ta bort undantag" + +#: templates/documentation/wake_plans/edit_settings.html +msgid "" +"In order to remove an exception, you must click on the X to the right of the " +"exception in the list of exceptions." +msgstr "" +"Om du vill ta bort ett undantag klickar du på X:et till höger om namnet på " +"undantaget i listan över undantag." + +#: templates/documentation/wake_plans/edit_settings.html +msgid "" +"Be aware that changes to the settings including the list of exceptions do " +"not become permanent until you have clicked on \"Save changes\" at the " +"bottom of the screen." +msgstr "" +"Tänk på att ändringar av inställningarna inklusive listan över undantag inte " +"blir permanenta förrän du har klickat på \"Spara ändringar\" längst ner på " +"skärmen." + +#: templates/documentation/wake_plans/index.html +msgid "Power saving functions" +msgstr "Energisparfunktioner" + +#: templates/documentation/wake_plans/index.html +msgid "" +"The power saving functions consist of a suspend script and on/off schedules. " +"These functions can only be accessed by the customers that pay for access. " +"The customers that helped fund the functions automatically have access. " +"Other customers can contact Magenta if they are interested." +msgstr "" +"De energisparande funktionerna består av ett skript för vila och på / av-" +"scheman. Dessa funktioner kan endast användas av kunder som har köpt " +"åtkomst. Alla kunder som hjälpte till att finansiera funktionerna har " +"automatisk åtkomst. Andra kunder kan kontakta Magenta om de är intresserade." + +#: templates/documentation/wake_plans/index.html +msgid "" +"The suspend script is only intended for use on OS2borgerPC while the on/off " +"schedules can be used on both OS2borgerPC and OS2borgerPC Kiosk. The suspend " +"script can be combined with on/off schedules." +msgstr "" +"Skriptet för vila är endast avsett för användning på Sambruk MedborgarPC, " +"medan på/av-scheman kan användas på både Sambruk MedborgarPC och Sambruk " +"MedborgarPC Kiosk. Skriptet för vila fungerar bra med på/av-scheman." + +#: templates/documentation/wake_plans/index.html +msgid "" +"If you are visiting this page for the first time, we recommend first reading " +"our" +msgstr "" +"Om det här är första gången du besöker den här sidan föreslår vi att du " +"börjar med att läsa vår" + +#: templates/documentation/wake_plans/index.html +#: templates/system/wake_plan/wake_plan.html +msgid "User guide to power saving functions in OS2borgerPC" +msgstr "Användarhandbok om energisparfunktioner i Sambruk MedborgarPC" + +#: templates/documentation/wake_plans/index.html +msgid "The suspend script" +msgstr "Skriptet för vila" + +#: templates/documentation/wake_plans/index.html +msgid "" +"The suspend script can be used to configure computers to automatically " +"suspend after a number of minutes of inactivity. A chosen warning is " +"displayed before the computer is suspended. The script takes five arguments: " +"whether to activate the function, the number of minutes of inactivity before " +"the warning is shown, the number of minutes of inactivity before the " +"computer suspends, the text in the warning and the text on the button in the " +"warning. If the last two text-related inputs are left empty, default texts " +"will be used. The script automatically logs out the user before the computer " +"suspends." +msgstr "" +"Skriptet för vila kan användas för att ställa in datorer så att de försätts " +"i viloläge efter ett antal minuters inaktivitet. Ett valfritt " +"varningsmeddelande visas innan datorn försätts i viloläge. Skriptet tar fem " +"argument: om funktionen måste aktiveras, antal minuters inaktivitet innan " +"varningen visas, antal minuters inaktivitet innan datorn försätts i " +"viloläge, texten i varningen och texten på knappen i aviseringen. Om de två " +"sista textrelaterade inmatningarna inte anges används standardtexter. " +"Skriptet loggar automatiskt ut medborgaren innan maskinen går i viloläge." + +#: templates/documentation/wake_plans/index.html +msgid "" +"The suspend script can also suspend the computer when it is inactive on the " +"login screen. However, this requires that script execution at login has been " +"enabled via the script" +msgstr "" +"Skriptet för vila kan också försätta datorn i viloläge om den är inaktiv på " +"inloggningsskärmen. Detta kräver dock att skriptkörning vid inloggning har " +"aktiverats via scriptet" + +#: templates/documentation/wake_plans/index.html +msgid "" +"Script execution at login is automatically enabled on image 5.0.0 and newer " +"images. The warning will not be shown on the login screen." +msgstr "" +"Skriptkörning vid inloggning aktiveras automatiskt på image 5.0.0 och nyare " +"images. Varningen kommer inte att visas på inloggningsskärmen." + +#: templates/documentation/wake_plans/index.html +msgid "" +"Be aware that USB surveillance cannot be active while the computer is " +"suspended." +msgstr "" +"Observera att USB-övervakning inte kan vara aktiv när en dator är i viloläge." + +#: templates/documentation/wake_plans/index.html +msgid "" +"An on/off schedule is a tool for planning and administrating on and off " +"times for computers in one or more groups." +msgstr "" +"Ett på/av-schema är ett verktyg för att planera och administrera på- och " +"avstängningstider för datorer i en eller flera grupper." + +#: templates/documentation/wake_plans/index.html +msgid "The use of On/Off schedules makes it unnecessary to use the scripts" +msgstr "Användningen av På / Av-scheman eliminerar behovet av skript" + +#: templates/documentation/wake_plans/index.html +msgid "" +"When you click on \"On/Off schedule\" in the left-hand menu, a list of " +"schedules for the chosen site will be shown to the right of the left-hand " +"menu. You can click on a particular schedule in order to edit that schedule." +msgstr "" +"När du klickar på \"Schema för på- och avstängning\" i vänstermenyn ser du " +"en lista med scheman för sitet du befinner dig under till höger om " +"vänstermenyn. Du kan klicka på namnet på det individuella schemat för att " +"redigera schemat." + +#: templates/documentation/wake_plans/index.html +msgid "" +"The editing interface for the chosen schedule is shown on the right. If no " +"schedules have been created for the chosen site, the interface for creating " +"schedules will be shown instead." +msgstr "" +"Till höger visas redigeringsgränssnittet för det valda schemat. Om inga " +"scheman har skapats för sitet du befinner dig under, visas gränssnittet för " +"att skapa på/av scheman." + +#: templates/documentation/wake_plans/index.html +msgid "" +"When you click on a schedule, you will by default be shown the schedule's " +"settings as well as the exceptions and groups that are associated with the " +"schedule. Here you can change the schedule's name, status, sleep state and " +"settings for the general week plan as well as add/remove groups or " +"exceptions from the schedule. Changes do not take effect until you've " +"clicked on the \"Save changes\"-button at the bottom of the screen." +msgstr "" +"Som standard, när du klickar på ett schema, ser du schemats inställningar, " +"samt vilka undantag och grupper som är kopplade till schemat. Här kan du " +"ändra schemanamn, status, viloläge och inställningar för det fasta " +"veckoschemat, samt lägga till/ta bort grupper eller undantag från schemat. " +"Ändringar som görs på sidan träder inte i kraft förrän du klicka på knappen " +"\"Spara ändringar\" längst ner på skärmen." + +#: templates/documentation/wake_plans/index.html +msgid "" +"If you click on \"Create closed days\", \"Create altered opening hours\" or " +"\"Edit exceptions\", you will be redirected to a new page where you can " +"create new exceptions and edit or delete existing exceptions. The two " +"\"Create\" buttons take you directly to an interface for that particular " +"type of exception while \"Edit exceptions\" opens the editing interface for " +"the first exception for the chosen site." +msgstr "" +"Om du trycker på \"Skapa stängningsdagar\", \"Skapa ändrade öppettider\" " +"eller \"Redigera undantag\" du kommer att omdirigeras till en ny sida där du " +"kan skapa nya undantag och redigera eller ta bort befintliga undantag. De " +"två \"Skapa\"-knapparna går direkt till ett gränssnitt för den typen av " +"undantag, medan \"Redigera undantag\" öppnas redigeringssidan för det första " +"undantaget för den site du befinner dig under." + +#: templates/documentation/wake_plans/index.html +msgid "The different editing options are described more closely here:" +msgstr "" +"De olika redigeringsalternativen beskrivs mer detaljerat under dessa punkter:" + +#: templates/documentation/wake_plans/index.html +msgid "" +"If you wish to create a new schedule, you must click on \"Add new On/Off " +"schedule\" above the list of schedules. This opens an interface where you " +"must enter a name for the schedule and have the option of editing the " +"settings and adding exceptions or groups. When you click on \"Save changes" +"\", you will be redirected to the editing interface for the newly screated " +"schedule where you can continue to edit the settings and add exceptions or " +"groups. If the schedule status is set to \"Active\", it will also take " +"effect when you click on \"Save changes\"." +msgstr "" +"Om du vill skapa ett nytt schema klickar du på \"Lägg till ett nytt schema " +"för på/av\" ovanför schemalistan. Detta öppnar ett gränssnitt där du måste " +"ange ett namn för schemat och ha möjlighet att redigera inställningarna och " +"lägga till undantag eller grupper. När du klickar på \"Spara ändringar\" " +"kommer du att omdirigeras till redigeringsgränssnittet för det nyskapade " +"schemaet där du kan fortsätta att redigera inställningarna och lägga till " +"undantag eller grupper. Om schemastatus är inställd på \"Aktiv\" kommer den " +"också att träda i kraft när du klickar på \"Spara ändringar\"." + +#: templates/documentation/wake_plans/index.html +msgid "Important information" +msgstr "Viktiga anmärkningar" + +#: templates/documentation/wake_plans/index.html +msgid "" +"A computer can only receive a new/updated schedule if it is on. If a " +"computer is added to a schedule or its schedule is changed while it is off, " +"it will only begin following the new/updated schedule once it has been on." +msgstr "" +"En dator kan bara ta emot ett nytt/uppdaterat schema om det är påslaget. Om " +"en datorn registrerar sig i ett schema eller dess schema ändras medan den är " +"avstängd, det börjar bara följa det nya / uppdaterade schemat när det har " +"aktiverats." + +#: templates/documentation/wake_plans/index.html +msgid "" +"If a computer is manually turned on after its off time or on a day where it " +"is set to be constantly off, it will not turn off automatically until the " +"off time for the next day. If no off time has been set for the next day, it " +"will turn off automatically 24 hours after it was turned on. If the computer " +"is turned off manually, it will turn on according to the schedule." +msgstr "" +"Om en dator slås på manuellt efter avstängningstiden, eller en dag då den är " +"inställd på att vara ständigt avstängd, stängs den inte av automatiskt " +"förrän nästa dags avstängningstid. Om det inte finns någon avstängningstid " +"för nästa dag, den stängs automatiskt av 24 timmar efter att den startades. " +"Om datorn stängs av manuellt kommer den att slås på enligt schemat." + +#: templates/documentation/wake_plans/index.html +msgid "UEFI/BIOS settings" +msgstr "Ställa in UEFI/BIOS" + +#: templates/documentation/wake_plans/index.html +msgid "" +"If UEFI/BIOS has been set to turn on the computer at a specific time, and " +"the computer belongs to an active On/Off schedule, then the computer will " +"not turn on according to the on times in the schedule, but instead follow " +"the times set in the UEFI/BIOS. It will, however, turn off according to the " +"schedule. If you want the computer to follow the on times set in the " +"schedule then you must enter UEFI/BIOS and disable the UEFI/BIOS control of " +"on times. It is generally not possible to modify UEFI/BIOS from the OS so it " +"cannot be done via scripts." +msgstr "" +"Om UEFI/BIOS är inställt på att vakna vid en specifik tidpunkt, och datorn " +"tillhör ett aktivt på/av-schema, kommer datorn inte att följa starttiderna i " +"schemat, utan istället de tider som anges i UEFI/BIOS. Det kommer dock " +"fortfarande att följ de avstängningstider som anges i schemat. Om datorn " +"behöver följa starttiderna i schemat måste du gå in i UEFI/BIOS på datorn " +"och stänga av dess hantering av starttider. Att ändra UEFI/BIOS är i " +"allmänhet inte möjligt att göra från operativsystemet, så därför kan vi inte " +"göra det via skript heller." + +#: templates/documentation/wake_plans/index.html +msgid "" +"If the computers temporarily lose power while they are turned off according " +"to the schedule, they will still turn on according to the schedule. (So long " +"as the CMOS battery is still charged.) However, if the computers lose power " +"while they are on, they will not turn on automatically." +msgstr "" +"Om datorerna tillfälligt förlorar strömmen medan de stängs av enligt schemat " +"kommer de fortfarande att vakna enligt schemaet. (Det vill säga tekniskt så " +"länge det fortfarande finns ström på CMOS-batteriet.) Men om de tappar " +"strömmen medan de är påslagna, kommer de inte att vakna på egen hand." + +#: templates/documentation/wake_plans/index.html +msgid "" +"Some UEFI/BIOS systems include the option to set the computer to return to " +"its last state (or turn on) after a power failure. We recommend turning this " +"option on." +msgstr "" +"Vissa UEFI/BIOS har möjlighet att ställa in datorn så att den återställer " +"sitt senaste tillstånd (eller slås på) efteråt om den tappade strömmen. Vi " +"rekommenderar därför att du gör det." + +#: templates/documentation/wake_plans/index.html +msgid "" +"The layout may differ depending on the UEFI/BIOS version, but here is an " +"example from a NUC: From the overview you choose \"Advanced\" and then " +"\"Power\":" +msgstr "" +"Beroende på UEFI/BIOS-versionen kan det se annorlunda ut, men här är ett " +"exempel från en NUC: På översiktssidan väljer du \"Advanced\" och sedan " +"\"Power\":" + +#: templates/documentation/wake_plans/index.html +msgid "" +"Next, you edit the setting \"After Power Failure\" and set it to \"Last State" +"\" (recommended) or \"Power On\"." +msgstr "" +"Därefter går du in och redigerar inställningen \"After Power Failure\" och " +"ställer in den på \"Last State\" (rekommenderas) eller \"Power On\"." + +#: templates/documentation/wake_plans/index.html +msgid "Frequently asked questions" +msgstr "Vanliga frågor" + +#: templates/documentation/wake_plans/index.html +msgid "1. How do I add a single PC to a schedule?" +msgstr "1. Hur registrerar jag en enda dator för ett schema?" + +#: templates/documentation/wake_plans/index.html +msgid "" +"On/Off schedules are designed to work with groups, so it is not possible to " +"directly add a single PC to a schedule. You can, however, always create a " +"group that only contains that one PC and then add that group to the schedule." +msgstr "" +"På/av-scheman är utformade för att fungera med grupper, så du kan inte " +"registrera en enskild dator direkt till ett schema. Du kan dock alltid skapa " +"en grupp som bara innehåller den här datorn, och registrera den här gruppen " +"i schemat." + +#: templates/documentation/wake_plans/index.html +msgid "2. What happens if the computer experiences a power failure?" +msgstr "2. Vad händer om datorn tappar ström?" + +#: templates/documentation/wake_plans/index.html +msgid "Check the second paragraph under \"UEFI/BIOS settings\" further up." +msgstr "Se punkt 2 under \"Ställa in UEFI/BIOS\" längre upp." + +#: templates/documentation/wake_plans/index.html +msgid "3. The computer turns on and off at the wrong times?" +msgstr "3. Datorn startar och stängs av vid fel tidpunkter?" + +#: templates/documentation/wake_plans/index.html +msgid "" +"This could be due to incorrect time settings on the computer, which could be " +"caused by the computer being unable to perform time synchronization. Ubuntu " +"Linux - and many other operating systems - normally performs time " +"synchronization via the protocol NTP (Network Time Protocol). NTP runs on " +"port 123 via UDP, which we thus suggest allowing in your network " +"configuration. If you do not wish to allow this traffic on all domains, we " +"could develop a script that forces NTP to only check specific URL's." +msgstr "" +"Det kan bero på att tiden på datorn är felaktigt inställd, till exempel för " +"att den inte har möjlighet att tidssynkroniserar. Vanligtvis synkroniserar " +"Ubuntu Linux - och flera andra operativsystem - tiden via NTP-protokollet " +"(Network Time Protocol). NTP körs på port 123 ovanför UDP, vilket vi därför " +"föreslår att du öppnar i din nätverksinstallation. Om du inte vill öppna " +"trafik på alla domäner kan vi titta på att utveckla ett skript som låser NTP " +"för att bara kontrollera vissa webbadresser." + +#: templates/documentation/wake_plans/index.html +msgid "" +"4. The computer turns on at the wrong times, but turns off according to " +"schedule?" +msgstr "4. Datorn startar vid fel tidpunkter, men stängs av enligt schema?" -#: templates/site_with_navigation.html:90 templates/system/site_settings.html:6 -msgid "Site settings" -msgstr "Inställningar för Site" +#: templates/documentation/wake_plans/index.html +msgid "" +"This could be due to the UEFI/BIOS settings. Check the first paragraph under " +"\"UEFI/BIOS settings\" further up." +msgstr "" +"Detta kan bero på inställningarna i UEFI/BIOS. Se punkt 1 under \"Ställa in " +"UEFI/BIOS\" längre upp." + +#: templates/logout.html +msgid "You have been logged out" +msgstr "Du är nu utloggad" + +#: templates/logout.html +msgid "Click here to log in again" +msgstr "Klicka här för att logga in igen" + +#: templates/site_with_navigation.html +msgid "Monitoring" +msgstr "Övervakning" + +#: templates/site_with_navigation.html +#: templates/system/event_rules/shared_navigation.html +msgid "Monitoring Rules" +msgstr "Övervakningsregler" + +#: templates/site_with_navigation.html +msgid "Organizing" +msgstr "Organisering" -#: templates/site_with_navigation.html:94 +#: templates/site_with_navigation.html +msgid "2FA on Computers" +msgstr "2FA på Datorer" + +#: templates/site_with_navigation.html msgid "Scripting" msgstr "Scripting" -#: templates/site_with_navigation.html:107 -msgid "Users & versions" -msgstr "Användare och versioner" - -#: templates/site_with_navigation.html:115 -#: templates/system/site_image_versions.html:4 -#: templates/system/site_image_versions.html:48 -msgid "Versions" -msgstr "Versioner" +#: templates/site_with_navigation.html +msgid "Users & Images" +msgstr "Användare och Images" -#: templates/site_with_navigation.html:127 -msgid "Administrating security scripts" -msgstr "Administration av säkerhetsskript" +#: templates/site_with_navigation.html templates/system/site_images.html +msgid "Images" +msgstr "" -#: templates/site_with_navigation.html:131 +#: templates/site_with_navigation.html msgid "Security rule definition" msgstr "Definition av säkerhetsregler" -#: templates/site_with_navigation.html:135 -msgid "Help regarding security events" -msgstr "Hjälp vid säkerhetsincidenter" +#: templates/site_with_navigation.html +msgid "Offline rule definition" +msgstr "Definition av offline-regler" -#: templates/site_with_navigation.html:140 -msgid "Administrating computers" -msgstr "Administration av datorer" +#: templates/site_with_navigation.html +msgid "Help regarding events" +msgstr "Hjälp vid incidenter" -#: templates/site_with_navigation.html:145 +#: templates/site_with_navigation.html msgid "Administrating groups" msgstr "Administration av grupper" -#: templates/site_with_navigation.html:150 +#: templates/site_with_navigation.html msgid "Administrating on/off schedules" msgstr "Administration av På/Av schema" -#: templates/site_with_navigation.html:158 +#: templates/site_with_navigation.html msgid "Help regarding the job list" msgstr "Hjälp för jobblistan" -#: templates/site_with_navigation.html:163 -msgid "Administrating users" -msgstr "Administration av användare" - -#: templates/site_with_navigation.html:168 +#: templates/site_with_navigation.html msgid "Help regarding the news page" msgstr "Hjälp för nyhetssidan" -#: templates/site_with_navigation.html:175 -msgid "Administrating scripts" -msgstr "Administration av skript" - -#: templates/site_with_navigation.html:179 -msgid "Executing scripts" -msgstr "Exekvering av skript" - -#: templates/site_with_navigation.html:192 +#: templates/site_with_navigation.html msgid "Read the documentation ..." msgstr "Läs dokumentation..." -#: templates/sitebase.html:12 +#: templates/sitebase.html msgid "Welcome" msgstr "Välkommen" -#: templates/sitebase.html:24 +#: templates/sitebase.html msgid "Log out" msgstr "Logga ut" -#: templates/system/changelog/comments/form.html:8 -msgid "Answer to" -msgstr "Svar till" +#: templates/system/configs/list.html +#: templates/system/site_settings/api_keys/api_keys.html +msgid "Key" +msgstr "Nyckel" -#: templates/system/changelog/comments/form.html:8 -msgid "Write a comment" -msgstr "Skriv en kommentar" +#: templates/system/configs/list.html templates/system/configs/templates.html +msgid "Value" +msgstr "Värde" -#: templates/system/changelog/comments/form.html:9 -msgid "Add comment" -msgstr "Lägg till en kommentar" +#: templates/system/configs/list.html +#: templates/system/pcgroups/policy_list/list.html +#: templates/system/site_settings/api_keys/api_keys.html +msgid "Actions" +msgstr "Aktiviteter" -#: templates/system/changelog/comments/form.html:10 -#: templates/system/configs/form.html:16 -#: templates/system/configs/templates.html:40 -#: templates/system/pcgroups/confirm_delete.html:43 -#: templates/system/pcgroups/form.html:16 -#: templates/system/pcgroups/policy_list/templates.html:24 -#: templates/system/pcgroups/site_groups.html:144 -#: templates/system/pcgroups/site_groups.html:183 -#: templates/system/pcs/confirm_delete.html:25 -#: templates/system/pcs/form.html:131 templates/system/pcs/form.html:141 -#: templates/system/scripts/confirm_delete.html:64 -#: templates/system/scripts/create.html:39 -#: templates/system/scripts/create.html:41 -#: templates/system/scripts/update.html:79 -#: templates/system/scripts/update.html:126 -#: templates/system/security_events/site_security_events.html:101 -#: templates/system/security_problems/confirm_delete.html:49 -#: templates/system/security_problems/site_security_problems.html:112 -#: templates/system/security_problems/site_security_problems.html:157 -#: templates/system/site_settings.html:60 -#: templates/system/users/confirm_delete.html:20 -#: templates/system/users/create.html:17 templates/system/users/update.html:60 -#: templates/system/users/update.html:87 -#: templates/system/wake_plan/confirm_delete.html:31 -#: templates/system/wake_plan/wake_change_events/confirm_delete.html:29 -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:114 -#: templates/system/wake_plan/wake_plan.html:277 -msgid "Cancel" -msgstr "Avbryt" +#: templates/system/configs/list.html +msgid "Add new configuration" +msgstr "Lägg till ny konfiguration" -#: templates/system/changelog/comments/form.html:14 -msgid "Please log in to add your comment" -msgstr "Logga in för att kommentera" +#: templates/system/configs/list.html +msgid "Add configuration" +msgstr "Lägg till konfiguration" -#: templates/system/changelog/comments/item.html:4 -msgid "On the date" -msgstr "Den" +#: templates/system/configs/list.html +#: templates/system/pcgroups/policy_list/list.html +msgid "You must specify a" +msgstr "Du måste ange ett" -#: templates/system/changelog/comments/item.html:4 -msgid "answered" -msgstr "svarade" +#: templates/system/configs/list.html +msgid "when inserting a configuration list" +msgstr "när den infogas i en konfigurationslista" -#: templates/system/changelog/comments/item.html:4 -msgid "wrote" -msgstr "skrev" +#: templates/system/configs/templates.html +msgid "Handle configuration" +msgstr "Hantera konfiguration" + +#: templates/system/configs/templates.html +#: templates/system/pcgroups/policy_list/templates.html +msgid "Save" +msgstr "Spara" + +#: templates/system/event_rules/event_rule_server_confirm_delete.html +msgid "Delete offline rule" +msgstr "Ta bort offline-regel" -#: templates/system/changelog/comments/item.html:13 +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/pcgroups/site_groups.html +msgid "Offline Rule" +msgstr "Offline-regel" + +#: templates/system/event_rules/event_rule_server_confirm_delete.html #, python-format -msgid "Show %(comment_comment_children_count)s answer(s)" -msgstr "Visa %(comment_comment_children_count)s svar" +msgid "" +"If a %(offline_rule)s is deleted, the related %(events)s will also be " +"deleted." +msgstr "" +"Om en %(offline_rule)s raderas, kommer de relaterade %(events)s också " +"raderas." -#: templates/system/changelog/comments/item.html:26 -msgid "Answer" -msgstr "Svar" +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/event_rules/security_problem_confirm_delete.html +msgid "Email recipients" +msgstr "E-postmottagare" -#: templates/system/changelog/item.html:15 -#: templates/system/changelog/list.html:65 -#: templates/system/changelog/list.html:119 -msgid "News categories" -msgstr "Nyhetskategorier" +#: templates/system/event_rules/event_rule_server_confirm_delete.html +msgid "the Offline Rule" +msgstr "Offline-regeln" -#: templates/system/changelog/item.html:27 -msgid "Related to version" -msgstr "Relaterad till version" +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#, python-format +msgid "" +"Associated %(groups)s and %(email_recipients)s will be removed from " +"%(the_offline_rule)s." +msgstr "" +"Associerade %(groups)s och %(email_recipients)s kommer att tas bort från " +"%(the_offline_rule)s." -#: templates/system/changelog/item.html:35 -msgid "Written by" -msgstr "Skriven av" +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/event_rules/security_problem_confirm_delete.html +msgid "The Groups" +msgstr "Grupperna" -#: templates/system/changelog/item.html:45 -msgid "Comments" -msgstr "Kommentarer" +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/event_rules/security_problem_confirm_delete.html +msgid "the Email recipients" +msgstr "Mottagare av e-post" -#: templates/system/changelog/list.html:31 -msgid "Back to login" -msgstr "Tillbaka till inloggning" +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/pcgroups/confirm_delete.html +msgid "NOT" +msgstr "INTE" -#: templates/system/changelog/list.html:37 -msgid "Help for this news site" -msgstr "Hjælp til nyhedssiden" +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#, python-format +msgid "" +"%(the_groups)s and %(the_email_recipients)s themselves will %(NOT)s be " +"deleted." +msgstr "" +"Själva %(the_groups)s och %(the_email_recipients)s kommer %(NOT)s raderas." + +#: templates/system/event_rules/event_rule_server_confirm_delete.html +msgid "Are you sure you wish to delete the Offline Rule" +msgstr "Är du säker på att du vill radera Offline-regeln" + +#: templates/system/event_rules/event_rule_server_confirm_delete.html +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/pcgroups/confirm_delete.html +#: templates/system/pcs/confirm_delete.html +#: templates/system/scripts/confirm_delete.html +#: templates/system/sites/confirm_delete.html +#: templates/system/users/confirm_delete.html +#: templates/system/wake_plan/confirm_delete.html +#: templates/system/wake_plan/wake_change_events/confirm_delete.html +msgid "Confirm deletion" +msgstr "Bekräfta radering" -#: templates/system/changelog/list.html:57 -msgid "Search..." -msgstr "Sök på..." +#: templates/system/event_rules/security_problem_confirm_delete.html +msgid "Delete security rule" +msgstr "Ta bort säkerhetsregeln" -#: templates/system/changelog/list.html:70 -#: templates/system/changelog/list.html:72 -msgid "All" -msgstr "Alla" +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/scripts/confirm_delete.html +msgid "Security Rule" +msgstr "Säkerhetsregel" -#: templates/system/changelog/list.html:92 -msgid "Showing news in the catagory of" -msgstr "Visar nyheter i kategorin" +#: templates/system/event_rules/security_problem_confirm_delete.html +#, python-format +msgid "" +"If a %(security_rule)s is deleted, the related %(events)s will also be " +"deleted." +msgstr "" +"Om en %(security_rule)s raderas, kommer de relaterade %(events)s också " +"raderas." -#: templates/system/changelog/list.html:94 -msgid "Showing" -msgstr "Visar" +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/scripts/confirm_delete.html +#: templates/system/scripts/create.html templates/system/scripts/update.html +msgid "Security Script" +msgstr "Säkerhetsskript" -#: templates/system/changelog/list.html:94 -#: templates/system/security_problems/site_security_problems.html:70 -msgid "all" -msgstr "alla" +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/scripts/confirm_delete.html +msgid "the Security Rule" +msgstr "Säkerhetsregeln" -#: templates/system/changelog/list.html:94 -msgid "news" -msgstr "nyheter" +#: templates/system/event_rules/security_problem_confirm_delete.html +#, python-format +msgid "" +"Associated %(groups)s, %(security_script)s and %(email_recipients)s will be " +"removed from %(the_security_rule)s." +msgstr "" +"Associerade %(groups)s, %(security_script)s och %(email_recipients)s kommer " +"att tas bort från %(the_security_rule)s." -#: templates/system/changelog/list.html:98 -msgid "that matches the query" -msgstr "som matchar sökordet" +#: templates/system/event_rules/security_problem_confirm_delete.html +#: templates/system/scripts/confirm_delete.html +msgid "the Security Script" +msgstr "Säkerhetsskriptet" -#: templates/system/changelog/list.html:115 -msgid "Read more" -msgstr "Läs mer" +#: templates/system/event_rules/security_problem_confirm_delete.html +#, python-format +msgid "" +"%(the_groups)s, %(the_security_script)s and %(the_email_recipients)s " +"themselves will %(NOT)s be deleted." +msgstr "" +"Själva %(the_groups)s, %(the_security_script)s og %(the_email_recipients)s " +"kommer %(NOT)s raderas." -#: templates/system/changelog/list.html:128 -msgid "Show" -msgstr "Visa" +#: templates/system/event_rules/security_problem_confirm_delete.html +msgid "Are you sure you wish to delete the Security Rule" +msgstr "Är du säker på att du vill ta bort Säkerhetsregeln" -#: templates/system/changelog/list.html:129 -msgid "chat" -msgstr "chat" +#: templates/system/event_rules/shared_navigation.html +msgid "Add new security rule" +msgstr "Lägg till ny säkerhetsregel" -#: templates/system/changelog/list.html:146 -#: templates/system/changelog/list.html:150 -msgid "Previous" -msgstr "Föregående" +#: templates/system/event_rules/shared_navigation.html +msgid "Add new offline rule" +msgstr "Lägg till ny offline-regel" -#: templates/system/changelog/list.html:180 -#: templates/system/changelog/list.html:184 -#: templates/system/scripts/run_step1.html:67 -msgid "Next" -msgstr "Nästa" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +msgid "Add group to surveillance" +msgstr "Lägg till en grupp för övervakning" -#: templates/system/configs/form.html:7 -msgid "Edit arguments" -msgstr "Redigera parametrar" - -#: templates/system/configs/form.html:15 -#: templates/system/pcgroups/site_groups.html:143 -#: templates/system/pcs/form.html:130 templates/system/pcs/form.html:140 -#: templates/system/scripts/update.html:77 -#: templates/system/security_problems/site_security_problems.html:111 -#: templates/system/site_settings.html:59 templates/system/users/update.html:56 -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:113 -#: templates/system/wake_plan/wake_plan.html:276 -msgid "Save changes" -msgstr "Spara ändringar" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +msgid "Remove monitored group" +msgstr "Ta bort övervakad grupp" -#: templates/system/configs/item.html:16 -#: templates/system/pcgroups/policy_list/item.html:79 -#: templates/system/scripts/update.html:47 -msgid "Edit" -msgstr "Redigera" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +msgid "Add email recipient" +msgstr "Lägg till e-postmottagare" -#: templates/system/configs/item.html:19 -#: templates/system/scripts/confirm_delete.html:8 -#: templates/system/scripts/form.html:108 -msgid "Delete" -msgstr "Ta bort" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +msgid "Remove recipient" +msgstr "Fjärrmottagare" -#: templates/system/configs/list.html:7 -msgid "Key" -msgstr "Nyckel" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +#: templates/system/pcgroups/site_groups.html templates/system/pcs/form.html +#: templates/system/wake_plan/wake_plan.html +msgid "None chosen" +msgstr "Ingen vald" -#: templates/system/configs/list.html:8 -#: templates/system/configs/templates.html:30 -msgid "Value" -msgstr "Värde" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +#: templates/system/pcgroups/site_groups.html templates/system/pcs/form.html +msgid "Details about" +msgstr "Detaljer om" -#: templates/system/configs/list.html:9 -#: templates/system/pcgroups/policy_list/list.html:11 -msgid "Actions" -msgstr "Aktiviteter" +#: templates/system/event_rules/site_event_rules_server.html +msgid "New offline rule" +msgstr "Ny offline-regel" -#: templates/system/configs/list.html:19 -msgid "Add new configuration" -msgstr "Lägg till ny konfiguration" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +msgid "empty" +msgstr "tom" -#: templates/system/configs/list.html:22 -msgid "Add configuration" -msgstr "Lägg till konfiguration" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +#, python-format +msgid "" +"If the rule does not have a Group added, the rule will apply to %(all)s " +"Computers." +msgstr "" +"Om det inte finns någon grupp som är associerad med Regeln kommer Regeln att " +"gälla %(all)s Datorer." -#: templates/system/configs/list.html:31 -#: templates/system/pcgroups/policy_list/list.html:31 -msgid "You must specify a" -msgstr "Du måste ange ett" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +#, python-format +msgid "" +"If you want to temporarily disable a rule, you can create an %(empty)s Group " +"(i.e. a Group with no Computers) and set this Group as the monitored Group." +msgstr "" +"Om du vill göra en Regel tillfälligt inaktiv kan du skapa en %(empty)s " +"Gruppe (dvs. en Gruppe uden Computere) og sætte denne Gruppe som den " +"övervakad Grupp." -#: templates/system/configs/list.html:31 -msgid "when inserting a configuration list" -msgstr "när den infogas i en konfigurationslista" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +msgid "" +"If a PC is a member of a group with one or more supervisors, those " +"supervisors will receive any email warnings related to that PC instead of " +"the recipients set here." +msgstr "" +"Om en PC är medlem i en Grupp med en eller flera ansvariga personer, då " +"kommer dessa ansvariga personer att få alla e-postvarningar relaterade till " +"det PC istället för de mottagare som valts här." -#: templates/system/configs/templates.html:14 -msgid "Handle configuration" -msgstr "Hantera konfiguration" +#: templates/system/event_rules/site_event_rules_server.html +msgid "" +"The rule is only active during the monitor period. We recommend choosing the " +"period such that you avoid e.g. offline events when the PC has been shut " +"down for the night." +msgstr "" +"Regeln är endast aktiv under övervakningsperioden. Vi rekommenderar att du " +"väljer period så att du slipper till exempel offlineincidenter när datorn är " +"avstängd på natten." -#: templates/system/configs/templates.html:26 -#: templates/system/scripts/form.html:104 templates/system/site_status.html:19 -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:49 -msgid "Name" -msgstr "Namn" +#: templates/system/event_rules/site_event_rules_server.html +msgid "Monitor period" +msgstr "Övervakningsperiod" -#: templates/system/configs/templates.html:39 -#: templates/system/pcgroups/policy_list/templates.html:23 -msgid "Save" -msgstr "Spara" +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/wake_plan/wake_change_events/wake_change_event.html +msgid "From" +msgstr "Från" + +#: templates/system/event_rules/site_event_rules_server.html +msgid "Until" +msgstr "Till" + +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +msgid "Monitored groups" +msgstr "Övervakade grupper" + +#: templates/system/event_rules/site_event_rules_server.html +#: templates/system/event_rules/site_security_problems.html +msgid "Recipient(s) of email warning" +msgstr "Mottagare av e-postvarning" -#: templates/system/jobs/info.html:10 templates/system/jobs/restart.html:6 +#: templates/system/event_rules/site_security_problems.html +msgid "New security rule" +msgstr "Ny säkerhetsregel" + +#: templates/system/jobs/info.html templates/system/jobs/restart.html msgid "Restart job" msgstr "Omstart av jobb" -#: templates/system/jobs/info.html:17 +#: templates/system/jobs/info.html +msgid "Copy log to the clipboard" +msgstr "Kopiera loggen till urklipp" + +#: templates/system/jobs/info.html +msgid "Log copied!" +msgstr "Loggen kopierad!" + +#: templates/system/jobs/info.html msgid "Log output" msgstr "Logga output" -#: templates/system/jobs/restart.html:12 +#: templates/system/jobs/restart.html #, python-format msgid "" "Are you sure you want to restart the execution of the script %(job_name)s on " @@ -1266,95 +5132,61 @@ msgstr "" "Är du säker på att du vill starta om utförandet av skriptet %(job_name)s på " "databehandling %(pc_name)s?" -#: templates/system/jobs/restart.html:18 +#: templates/system/jobs/restart.html msgid "Yes" msgstr "Ja" -#: templates/system/jobs/restart.html:20 +#: templates/system/jobs/restart.html msgid "No" msgstr "Nej" -#: templates/system/jobs/site_jobs.html:22 -#: templates/system/security_events/site_security_events.html:23 -msgid "Filters" -msgstr "Filter" - -#: templates/system/jobs/site_jobs.html:23 -#: templates/system/security_events/site_security_events.html:25 +#: templates/system/jobs/site_jobs.html +#: templates/system/security_events/site_security_events.html msgid "Reset filters" msgstr "Återställ filter" -#: templates/system/jobs/site_jobs.html:60 +#: templates/system/jobs/site_jobs.html msgid "Batches" msgstr "Batches" -#: templates/system/jobs/site_jobs.html:157 -#: templates/system/pcgroups/policy_list/list.html:9 -#: templates/system/pcs/form.html:149 -#: templates/system/scripts/confirm_delete.html:12 -#: templates/system/scripts/create.html:19 -#: templates/system/scripts/create.html:37 -#: templates/system/scripts/update.html:18 -#: templates/system/scripts/update.html:51 -#: templates/system/scripts/update.html:118 -#: templates/system/scripts/update.html:125 +#: templates/system/jobs/site_jobs.html +#: templates/system/pcgroups/policy_list/list.html +#: templates/system/pcs/form.html templates/system/scripts/confirm_delete.html +#: templates/system/scripts/create.html templates/system/scripts/update.html msgid "Script" msgstr "Skript" -#: templates/system/jobs/site_jobs.html:158 +#: templates/system/jobs/site_jobs.html msgid "User" msgstr "Användare" -#: templates/system/jobs/site_jobs.html:159 templates/system/pcs/form.html:150 -#: templates/system/scripts/form.html:8 +#: templates/system/jobs/site_jobs.html templates/system/pcs/form.html +#: templates/system/scripts/update.html msgid "Created" msgstr "Skapad" -#: templates/system/jobs/site_jobs.html:160 templates/system/pcs/form.html:151 +#: templates/system/jobs/site_jobs.html templates/system/pcs/form.html msgid "Started" msgstr "Startad" -#: templates/system/jobs/site_jobs.html:161 templates/system/pcs/form.html:152 +#: templates/system/jobs/site_jobs.html templates/system/pcs/form.html msgid "Finished" msgstr "Avslutad" -#: templates/system/jobs/site_jobs.html:163 -#: templates/system/wake_plan/wake_plan.html:39 -msgid "Computer" -msgstr "Dator" - -#: templates/system/jobs/site_jobs.html:176 -#: templates/system/security_events/site_security_events.html:128 +#: templates/system/jobs/site_jobs.html +#: templates/system/security_events/site_security_events.html msgid "Loading data..." msgstr "Hämta data..." -#: templates/system/pcgroups/confirm_delete.html:9 +#: templates/system/pcgroups/confirm_delete.html msgid "Delete group: " msgstr "Ta bort gruppen: " -#: templates/system/pcgroups/confirm_delete.html:15 -#: templates/system/pcgroups/site_groups.html:126 -#: templates/system/pcs/confirm_delete.html:12 -#: templates/system/scripts/confirm_delete.html:20 -#: templates/system/security_problems/confirm_delete.html:13 -#: templates/system/security_problems/site_security_problems.html:68 -#: templates/system/wake_plan/confirm_delete.html:12 -#: templates/system/wake_plan/wake_change_events/confirm_delete.html:12 -#: templates/system/wake_plan/wake_plan.html:19 -msgid "Note" -msgstr "Obs" - -#: templates/system/pcgroups/confirm_delete.html:19 -#: templates/system/pcgroups/site_groups.html:64 -#: templates/system/scripts/confirm_delete.html:24 -msgid "Associated Scripts" -msgstr "Associerade skript" - -#: templates/system/pcgroups/confirm_delete.html:20 +#: templates/system/pcgroups/confirm_delete.html msgid "the Group" msgstr "Gruppen" -#: templates/system/pcgroups/confirm_delete.html:21 +#: templates/system/pcgroups/confirm_delete.html #, python-format msgid "" "Associated %(computers)s and %(asc_scripts)s will be removed from " @@ -1363,123 +5195,115 @@ msgstr "" "Associerade %(computers)s och %(asc_scripts)s kommer att tas bort från" "%(the_group)s." -#: templates/system/pcgroups/confirm_delete.html:26 +#: templates/system/pcgroups/confirm_delete.html msgid "The Computers" msgstr "Datorerna" -#: templates/system/pcgroups/confirm_delete.html:27 +#: templates/system/pcgroups/confirm_delete.html msgid "the Scripts" msgstr "Skripten" -#: templates/system/pcgroups/confirm_delete.html:28 -#: templates/system/security_problems/confirm_delete.html:35 -msgid "NOT" -msgstr "INTE" - -#: templates/system/pcgroups/confirm_delete.html:29 +#: templates/system/pcgroups/confirm_delete.html #, python-format msgid "%(the_computers)s and %(the_scripts)s will %(not)s be deleted." msgstr "%(the_computers)s og %(the_scripts)s kommer %(not)s raderas.." -#: templates/system/pcgroups/confirm_delete.html:36 +#: templates/system/pcgroups/confirm_delete.html msgid "Are you sure you want to delete the group " -msgstr "Är du säker på att du vill ta bort gruppen? " - -#: templates/system/pcgroups/confirm_delete.html:42 -#: templates/system/pcs/confirm_delete.html:24 -#: templates/system/scripts/confirm_delete.html:63 -#: templates/system/security_problems/confirm_delete.html:48 -#: templates/system/users/confirm_delete.html:19 -#: templates/system/wake_plan/confirm_delete.html:30 -#: templates/system/wake_plan/wake_change_events/confirm_delete.html:28 -msgid "Confirm deletion" -msgstr "Bekräfta radering" - -#: templates/system/pcgroups/form.html:7 -msgid "New group" -msgstr "Ny grupp" - -#: templates/system/pcgroups/form.html:15 -#: templates/system/pcgroups/site_groups.html:182 -msgid "Create group" -msgstr "Skapa en grupp" +msgstr "Är du säker på att du vill ta bort gruppen " -#: templates/system/pcgroups/policy_list/item.html:50 +#: templates/system/pcgroups/policy_list/item.html msgid "None selected" msgstr "Ingen vald" -#: templates/system/pcgroups/policy_list/item.html:82 -#: templates/system/scripts/templates.html:28 +#: templates/system/pcgroups/policy_list/item.html msgid "Remove" msgstr "Ta bort" -#: templates/system/pcgroups/policy_list/list.html:8 +#: templates/system/pcgroups/policy_list/list.html msgid "Position" msgstr "Position" -#: templates/system/pcgroups/policy_list/list.html:10 -#: templates/system/scripts/form.html:36 +#: templates/system/pcgroups/policy_list/list.html +#: templates/system/scripts/form.html msgid "Arguments" msgstr "Inputparametrar" -#: templates/system/pcgroups/policy_list/list.html:23 -#: templates/system/pcgroups/policy_list/templates.html:34 -msgid "Add script" -msgstr "Lägg till skript" - -#: templates/system/pcgroups/policy_list/list.html:31 +#: templates/system/pcgroups/policy_list/list.html msgid "when inserting a policy list" msgstr "när den infogas i en lista med tillhörande manuskript" -#: templates/system/pcgroups/policy_list/templates.html:17 +#: templates/system/pcgroups/policy_list/templates.html msgid "Edit script" msgstr "Redigera skript" -#: templates/system/pcgroups/policy_list/templates.html:30 +#: templates/system/pcgroups/policy_list/templates.html msgid "Add script to group" msgstr "Lägg till skript till grupp" -#: templates/system/pcgroups/site_groups.html:24 -#: templates/system/pcgroups/site_groups.html:174 +#: templates/system/pcgroups/site_groups.html msgid "Add new group" msgstr "Lägg till ny grupp" -#: templates/system/pcgroups/site_groups.html:34 +#: templates/system/pcgroups/site_groups.html msgid "Delete group" msgstr "Ta bort grupp" -#: templates/system/pcgroups/site_groups.html:47 -#: templates/system/pcs/form.html:43 -#: templates/system/security_problems/site_security_problems.html:52 -msgid "Details about" -msgstr "Detaljer om" - -#: templates/system/pcgroups/site_groups.html:61 -#: templates/system/pcs/form.html:83 templates/system/scripts/form.html:29 +#: templates/system/pcgroups/site_groups.html templates/system/pcs/form.html +#: templates/system/scripts/form.html msgid "Details" msgstr "Detaljer" -#: templates/system/pcgroups/site_groups.html:88 +#: templates/system/pcgroups/site_groups.html msgid "Computers in this group" msgstr "Datorer i gruppen" -#: templates/system/pcgroups/site_groups.html:94 +#: templates/system/pcgroups/site_groups.html msgid "Add a computer to the group" msgstr "Lägg till en dator til gruppen" -#: templates/system/pcgroups/site_groups.html:95 +#: templates/system/pcgroups/site_groups.html msgid "Remove computer from the group" msgstr "Ta bort datorn från gruppen" -#: templates/system/pcgroups/site_groups.html:101 -msgid "Associated Security Rules" -msgstr "Associerad säkerhetsregler" +#: templates/system/pcgroups/site_groups.html +msgid "Add a supervisor for the group" +msgstr "Lägga till en ansvarig person för gruppen" -#: templates/system/pcgroups/site_groups.html:113 +#: templates/system/pcgroups/site_groups.html +msgid "Remove a supervisor for the group" +msgstr "Ta bort en ansvarig person från gruppen" + +#: templates/system/pcgroups/site_groups.html +msgid "Supervisors for the group" +msgstr "Ansvariga för gruppen" + +#: templates/system/pcgroups/site_groups.html +msgid "" +"This is used to control who receives the e-mails for Events, ie. Security " +"Events or Offline Events. If one or more Supervisors are set for a given " +"Group, these people will receive the e-mails instead of those set in the " +"Monitoring Rule" +msgstr "" +"Detta används för att kontrollera vem som tar emot e-postmeddelanden för " +"Incidenter - dvs. Säkerhetsincidenter och Offlineincidenter. Om en eller " +"flera ansvariga personer är inställda för en viss grupp, kommer dessa " +"personer att få e-postmeddelanden istället för de personer som anges som " +"mottagare i övervakningsregeln." + +#: templates/system/pcgroups/site_groups.html +msgid "Effective monitoring rules for the group" +msgstr "Effektiva övervakningsregler för gruppen" + +#: templates/system/pcgroups/site_groups.html +msgid "Security Problem" +msgstr "Säkerhetsregel" + +#: templates/system/pcgroups/site_groups.html msgid "Associated On/Off schedule" msgstr "Associerad På/Av-schema" -#: templates/system/pcgroups/site_groups.html:128 +#: templates/system/pcgroups/site_groups.html msgid "" "If a script that takes arguments is added to the list, then these arguments " "are to be entered first by clicking \"Edit\", before you can click \"Save " @@ -1489,12 +5313,23 @@ msgstr "" "parametrar ställs först in genom att trycka på \"Redigera\", innan du kan " "\"Spara ändringarna\"" -#: templates/system/pcgroups/site_groups.html:129 -msgid "Editing the script arguments will not make the script run again" +#: templates/system/pcgroups/site_groups.html +msgid "" +"Editing the script arguments will make the script run again on all Computers " +"in the Group. This can be toggled off under Site settings" +msgstr "" +"Redigering av ingångsparametrar gör att ett skript körs igen på alla datorer " +"i gruppen. Detta kan stängas av under Inställningar för Site" + +#: templates/system/pcgroups/site_groups.html +msgid "" +"Editing the script arguments will not make the script run again. This can be " +"changed under Site settings" msgstr "" -"Redigering av ingångsparametrar leder inte till att ett skript körs på nytt." +"Redigering av ingångsparametrar leder inte till att ett skript körs på nytt. " +"Detta kan ändras under Inställningar för Site" -#: templates/system/pcgroups/site_groups.html:130 +#: templates/system/pcgroups/site_groups.html msgid "" "Computers already in the group only run newly added scripts, but Computers " "newly added to the Group run all the scripts on the list" @@ -1502,114 +5337,104 @@ msgstr "" "Befintliga datorer i gruppen kör endast nyligen tillagda skript, medan nya " "datorer i gruppen kör hela listan med skript" -#: templates/system/pcs/confirm_delete.html:6 templates/system/pcs/form.html:30 +#: templates/system/pcgroups/site_groups.html +msgid "" +"Removing a script from the Group will NOT remove the effect of the script " +"from the Computers in the Group" +msgstr "" +"Att ta bort ett skript från gruppen betyder INTE att skriptets effekt tas " +"bort från datorerna i gruppen" + +#: templates/system/pcgroups/site_groups.html +msgid "No groups were found" +msgstr "Inga grupper hittades" + +#: templates/system/pcgroups/site_groups.html +msgid "" +"Clik the 'Add new group' button in the menu to the left to create a group" +msgstr "" +"Klicka på knappen 'Lägg till ny grupp' i menyn till vänster för att skapa en " +"grupp" + +#: templates/system/pcgroups/site_groups.html +msgid "Create group" +msgstr "Skapa en grupp" + +#: templates/system/pcs/confirm_delete.html templates/system/pcs/form.html msgid "Delete computer" msgstr "Radera dator" -#: templates/system/pcs/confirm_delete.html:14 +#: templates/system/pcs/confirm_delete.html msgid "The computer's entire job history will also be deleted" msgstr "Datorns hela jobbhistorik kommer också att raderas" -#: templates/system/pcs/confirm_delete.html:18 +#: templates/system/pcs/confirm_delete.html msgid "Are you sure you want to delete the computer" -msgstr "Är du säker på att du vill radera datorn?" +msgstr "Är du säker på att du vill radera datorn" -#: templates/system/pcs/form.html:17 +#: templates/system/pcs/form.html msgid "There are no computers" msgstr "Det finns inga datorer" -#: templates/system/pcs/form.html:27 templates/system/site_status.html:38 +#: templates/system/pcs/form.html templates/system/site_status.html msgid "Not activated" msgstr "Inte aktiverad" -#: templates/system/pcs/form.html:45 -msgid "See events for this computer" -msgstr "Visa händelser för den här datorn" - -#: templates/system/pcs/form.html:58 +#: templates/system/pcs/form.html msgid "Registered" msgstr "Registrerad" -#: templates/system/pcs/form.html:61 +#: templates/system/pcs/form.html msgid "Last check-in" msgstr "Senaste incheckning" -#: templates/system/pcs/form.html:63 templates/system/pcs/form.html:71 -#: templates/system/site_status.html:52 +#: templates/system/pcs/form.html templates/system/site_status.html msgid "ago" msgstr "sedan" -#: templates/system/pcs/form.html:65 templates/system/pcs/form.html:73 -#: templates/system/site_status.html:54 templates/system/site_status.html:61 +#: templates/system/pcs/form.html templates/system/site_status.html msgid "Never" msgstr "Aldrig" -#: templates/system/pcs/form.html:69 -msgid "Last security event received" -msgstr "Senaste säkerhetsincidenten har tagits emot" - -#: templates/system/pcs/form.html:86 -msgid "Job history" -msgstr "Jobbhistorik" +#: templates/system/pcs/form.html +msgid "Last event received" +msgstr "Senaste incidenten har tagits emot" -#: templates/system/pcs/form.html:116 +#: templates/system/pcs/form.html msgid "Groups the computer is a member of" msgstr "Grupper som datorn är medlem i" -#: templates/system/pcs/form.html:122 +#: templates/system/pcs/form.html msgid "Add computer to group" msgstr "Lägg till dator i gruppen" -#: templates/system/pcs/form.html:123 +#: templates/system/pcs/form.html msgid "Remove computer from group" msgstr "Ta bort datorn från gruppen" -#: templates/system/pcs/site_pcs.html:17 +#: templates/system/pcs/form.html +#: templates/system/security_events/site_security_events.html +msgid "Info" +msgstr "Info" + +#: templates/system/pcs/site_pcs.html msgid "No computers were found" msgstr "Inga datorer hittades" -#: templates/system/scripts/confirm_delete.html:10 -#: templates/system/scripts/create.html:17 -#: templates/system/scripts/create.html:37 -#: templates/system/scripts/update.html:16 -#: templates/system/scripts/update.html:49 -#: templates/system/scripts/update.html:118 -#: templates/system/scripts/update.html:125 -#: templates/system/security_problems/confirm_delete.html:24 -msgid "Security Script" -msgstr "Säkerhetsskript" - -#: templates/system/scripts/confirm_delete.html:22 -#: templates/system/scripts/confirm_delete.html:55 +#: templates/system/scripts/confirm_delete.html msgid "the Script" msgstr "Skriptet" -#: templates/system/scripts/confirm_delete.html:23 +#: templates/system/scripts/confirm_delete.html msgid "Associated Script" msgstr "Associerat Skript" -#: templates/system/scripts/confirm_delete.html:25 -#: templates/system/scripts/confirm_delete.html:53 -#: templates/system/security_problems/confirm_delete.html:33 -msgid "the Security Script" -msgstr "Säkerhetsskriptet" - -#: templates/system/scripts/confirm_delete.html:26 -#: templates/system/security_problems/confirm_delete.html:16 -msgid "Security Rule" -msgstr "Säkerhetsregel" - -#: templates/system/scripts/confirm_delete.html:27 -#: templates/system/security_problems/confirm_delete.html:26 -msgid "the Security Rule" -msgstr "Säkerhetsregeln" - -#: templates/system/scripts/confirm_delete.html:31 +#: templates/system/scripts/confirm_delete.html #, python-format msgid "Old %(jobs)s with %(the_script)s will be deleted." msgstr "Gamla %(jobs)s med %(the_script)s kommer att raderas." -#: templates/system/scripts/confirm_delete.html:36 +#: templates/system/scripts/confirm_delete.html #, python-format msgid "" "If %(the_script)s is set as an %(associated_script)s the list of the " @@ -1618,7 +5443,7 @@ msgstr "" "Om %(the_script)s fastställs som %(associated_script)s förteckningen över de " "%(associated_scripts)s uppdateras med %(the_script)s tas bort." -#: templates/system/scripts/confirm_delete.html:42 +#: templates/system/scripts/confirm_delete.html #, python-format msgid "" "If %(the_security_script)s is used in a %(security_rule)s, then " @@ -1627,72 +5452,61 @@ msgstr "" "Om %(the_security_script)sanvänds i en %(security_rule)s, kommer" "%(the_security_rule)s också tas bort.." -#: templates/system/scripts/confirm_delete.html:51 +#: templates/system/scripts/confirm_delete.html msgid "Are you sure you want to delete" msgstr "Är du säker på att du vill radera" -#: templates/system/scripts/create.html:15 -#: templates/system/scripts/create.html:37 -#: templates/system/scripts/update.html:125 -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:113 +#: templates/system/scripts/create.html templates/system/scripts/update.html +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "Create" msgstr "Skapa" -#: templates/system/scripts/form.html:17 -msgid "Modified" -msgstr "Ändrat" - -#: templates/system/scripts/form.html:32 templates/system/scripts/form.html:84 +#: templates/system/scripts/form.html msgid "Code" msgstr "Kod" -#: templates/system/scripts/form.html:105 +#: templates/system/scripts/form.html msgid "Type" msgstr "Typ" -#: templates/system/scripts/form.html:106 +#: templates/system/scripts/form.html msgid "Default value" msgstr "Standardvärde" -#: templates/system/scripts/form.html:107 +#: templates/system/scripts/form.html msgid "Required" msgstr "Krävs" -#: templates/system/scripts/form.html:114 -#: templates/system/scripts/form.html:117 +#: templates/system/scripts/form.html msgid "Add arguments" msgstr "Lägg till parametrar" -#: templates/system/scripts/navigation.html:7 +#: templates/system/scripts/navigation.html msgid "Local scripts" msgstr "Lokala skript" -#: templates/system/scripts/navigation.html:10 +#: templates/system/scripts/navigation.html msgid "Global scripts" msgstr "Globala skript" -#: templates/system/scripts/navigation.html:38 -#: templates/system/scripts/navigation.html:42 -#: templates/system/scripts/navigation.html:62 -#: templates/system/scripts/navigation.html:66 +#: templates/system/scripts/navigation.html msgid "Delete script" msgstr "Ta bort skript" -#: templates/system/scripts/run_base.html:60 +#: templates/system/scripts/run_base.html msgid "Loading..." msgstr "Laddar..." -#: templates/system/scripts/run_step1.html:6 -#: templates/system/scripts/run_step2.html:6 -#: templates/system/scripts/update.html:67 +#: templates/system/scripts/run_step1.html +#: templates/system/scripts/run_step2.html templates/system/scripts/update.html msgid "Run script" msgstr "Kör skript" -#: templates/system/scripts/run_step1.html:7 +#: templates/system/scripts/run_step1.html msgid "Choose computer or groups" msgstr "Välj datorer eller grupper" -#: templates/system/scripts/run_step1.html:12 +#: templates/system/scripts/run_step1.html msgid "" "Note: Scripts can only be run on computers that have been activated and " "groups that have at least 1 associated computer." @@ -1700,333 +5514,285 @@ msgstr "" "Observera: Skript kan endast köras på datorer som är aktiverade och på " "Grupper som har minst 1 dator ansluten.." -#: templates/system/scripts/run_step1.html:21 +#: templates/system/scripts/run_step1.html msgid "Choose all Computers" msgstr "Välj alla datorer" -#: templates/system/scripts/run_step1.html:39 +#: templates/system/scripts/run_step1.html msgid "Choose all Groups" msgstr "Välj alla Grupper" -#: templates/system/scripts/run_step2.html:7 +#: templates/system/scripts/run_step2.html msgid "Specify parameters" msgstr "Ange parametrar" -#: templates/system/scripts/run_step2.html:25 +#: templates/system/scripts/run_step2.html msgid "The script takes no parameters." msgstr "Det här skriptet tar inte emot några parametrar." -#: templates/system/scripts/run_step2.html:33 +#: templates/system/scripts/run_step2.html msgid "Run" msgstr "Kör" -#: templates/system/scripts/run_step3.html:6 +#: templates/system/scripts/run_step3.html msgid "Job started" msgstr "Job startat" -#: templates/system/scripts/run_step3.html:10 +#: templates/system/scripts/run_step3.html #, python-format msgid "" "Job based on script %(sname)s has been started on %(num_pcs)s computer(s)" msgstr "Job baserat på skript %(sname)s har påbörjats på %(num_pcs)s dator(er)" -#: templates/system/scripts/run_step3.html:13 +#: templates/system/scripts/run_step3.html msgid "You can follow the created jobs here" msgstr "Du kan följa de jobb som skapas här" -#: templates/system/scripts/run_step3.html:17 +#: templates/system/scripts/run_step3.html msgid "Close" msgstr "Stäng" -#: templates/system/scripts/search_result.html:13 +#: templates/system/scripts/search_result.html msgid "Local" msgstr "Lokalt" -#: templates/system/scripts/update.html:14 -#: templates/system/scripts/update.html:118 +#: templates/system/scripts/update.html msgid "Add new" msgstr "Lägg till nya" -#: templates/system/scripts/update.html:28 -#: templates/widgets/scriptsearch.html:27 +#: templates/system/scripts/update.html +msgid "script" +msgstr "skript" + +#: templates/system/scripts/update.html +msgid "Find ..." +msgstr "Hitta ..." + +#: templates/system/scripts/update.html templates/widgets/scriptsearch.html msgid "Clear the filter" msgstr "Rensa filter" +#: templates/system/scripts/update.html +msgid "Modified" +msgstr "Ändrat" + # Konsistens ml. navn i sikkerhedsregel og sikkerhedshændelse -#: templates/system/security_events/site_security_events.html:37 -#: templates/system/security_events/site_security_events.html:114 +#: templates/system/security_events/site_security_events.html msgid "Level" msgstr "Svårighetsgrad" -#: templates/system/security_events/site_security_events.html:93 -msgid "Edit Security Events" -msgstr "Redigera säkerhetsincidenter" +#: templates/system/security_events/site_security_events.html +msgid "Edit Events" +msgstr "Redigera Incidenter" -#: templates/system/security_events/site_security_events.html:100 +#: templates/system/security_events/site_security_events.html msgid "Handle event" msgstr "Hantera incidenter" -#: templates/system/security_events/site_security_events.html:109 +#: templates/system/security_events/site_security_events.html msgid "Handle events" msgstr "Hantera incidenter" -#: templates/system/security_events/site_security_events.html:115 +#: templates/system/security_events/site_security_events.html msgid "Rule" msgstr "Regel" -#: templates/system/security_events/site_security_events.html:117 -msgid "Info" -msgstr "Info" - -#: templates/system/security_events/site_security_events.html:118 -msgid "Device" -msgstr "Maskin" - -#: templates/system/security_events/site_security_events.html:119 +#: templates/system/security_events/site_security_events.html msgid "Incident time" msgstr "Händelsestidpunkt" -#: templates/system/security_events/site_security_events.html:120 +#: templates/system/security_events/site_security_events.html msgid "Time of receipt" msgstr "Mottagningstidpunkt" -#: templates/system/security_events/site_security_events.html:122 +#: templates/system/security_events/site_security_events.html msgid "Handled by" msgstr "Hanteras av" -#: templates/system/security_problems/confirm_delete.html:7 -#: templates/system/security_problems/site_security_problems.html:32 -msgid "Delete security rule" -msgstr "Ta bort säkerhetsregeln" - -#: templates/system/security_problems/confirm_delete.html:18 -#, python-format -msgid "" -"If a %(security_rule)s is deleted, the related %(security_events)s will also " -"be deleted." -msgstr "" -"Om en %(security_rule)s raderas, kommer de relaterade %(security_events)s " -"också raderas." - -#: templates/system/security_problems/confirm_delete.html:25 -msgid "Email recipients" -msgstr "E-postmottagare" - -#: templates/system/security_problems/confirm_delete.html:27 -#, python-format -msgid "" -"Associated %(groups)s, %(security_script)s and %(email_recipients)s will be " -"removed from %(the_security_rule)s." -msgstr "" -"Associerade %(groups)s, %(security_script)s och%(email_recipients)s kommer " -"atttas bort från %(the_security_rule)s." - -#: templates/system/security_problems/confirm_delete.html:32 -msgid "The Groups" -msgstr "Grupperna" - -#: templates/system/security_problems/confirm_delete.html:34 -msgid "the Email recipients" -msgstr "Mottagare av e-post" - -#: templates/system/security_problems/confirm_delete.html:36 -#, python-format -msgid "" -"%(the_groups)s, %(the_security_script)s and %(the_email_recipients)s " -"themselves will %(NOT)s be deleted." -msgstr "" -"Själva %(the_groups)s, %(the_security_script)s og %(the_email_recipients)s " -"kommer %(NOT)s raderas." - -#: templates/system/security_problems/confirm_delete.html:42 -msgid "Are you sure you wish to delete the Security Rule" -msgstr "Är du säker på att du vill ta bort säkerhetsregeln?" - -#: templates/system/security_problems/site_security_problems.html:19 -#: templates/system/security_problems/site_security_problems.html:126 -msgid "Define new security rule" -msgstr "Definiera en ny säkerhetsregel" - -#: templates/system/security_problems/site_security_problems.html:44 -msgid "Add group to surveillance" -msgstr "Lägg till en grupp för övervakning" - -#: templates/system/security_problems/site_security_problems.html:45 -msgid "Remove monitored group" -msgstr "Ta bort övervakad grupp" - -#: templates/system/security_problems/site_security_problems.html:46 -msgid "Add email recipient" -msgstr "Lägg till e-postmottagare" - -#: templates/system/security_problems/site_security_problems.html:47 -msgid "Remove recipient" -msgstr "Fjärrmottagare" - -#: templates/system/security_problems/site_security_problems.html:71 -msgid "empty" -msgstr "tom" - -#: templates/system/security_problems/site_security_problems.html:72 -#, python-format -msgid "" -"If the Security Rule does not have a Group added, the rule will apply to " -"%(all)s Computers." -msgstr "" -"Om det inte finns någon grupp som är associerad med säkerhetsregeln kommer " -"regeln att gälla %(all)s Datorer." - -#: templates/system/security_problems/site_security_problems.html:75 -#, python-format -msgid "" -"If you want to temporarily disable a rule, you can create an %(empty)s Group " -"(i.e. a Group with no Computers) and set this Group as the monitored Group." -msgstr "" -"Om du vill göra en regel tillfälligt inaktiv kan du skapa en %(empty)s " -"Gruppe (dvs. en Gruppe uden Computere) og sætte denne Gruppe som den " -"övervakad grupp." - -#: templates/system/security_problems/site_security_problems.html:98 -#: templates/system/security_problems/site_security_problems.html:145 -msgid "Monitored groups" -msgstr "Övervakade grupper" - -#: templates/system/security_problems/site_security_problems.html:102 -#: templates/system/security_problems/site_security_problems.html:149 -msgid "Recipient(s) of email warning" -msgstr "Mottagare av e-postvarning" - -#: templates/system/security_problems/site_security_problems.html:156 -msgid "Create security rule" -msgstr "Skapa en säkerhetsregel" - -#: templates/system/site_image_versions.html:27 +#: templates/system/site_images.html msgid "Newest version of" msgstr "Senaste upplagan av" -#: templates/system/site_image_versions.html:29 -#: templates/system/site_image_versions.html:62 +#: templates/system/site_images.html msgid "Version" msgstr "Version" -#: templates/system/site_image_versions.html:31 -#: templates/system/site_image_versions.html:63 +#: templates/system/site_images.html msgid "Release date" msgstr "Release-datum" -#: templates/system/site_image_versions.html:33 -#: templates/system/site_image_versions.html:64 +#: templates/system/site_images.html msgid "Operating system" msgstr "Operativsystem" -#: templates/system/site_image_versions.html:35 -#: templates/system/site_image_versions.html:65 +#: templates/system/site_images.html msgid "Release notes" msgstr "Udgivelsesnoter" -#: templates/system/site_image_versions.html:44 -#: templates/system/site_image_versions.html:66 -#: templates/system/site_image_versions.html:87 -msgid "Download" -msgstr "Download" +#: templates/system/site_images.html +msgid "Download standard image" +msgstr "Download standard image" + +#: templates/system/site_images.html +msgid "Download multi language image" +msgstr "Download flerspråkig image" -#: templates/system/site_image_versions.html:49 -msgid "No versions were found" +#: templates/system/site_images.html +msgid "No images were found" msgstr "Inga versioner hittades" -#: templates/system/site_image_versions.html:56 +#: templates/system/site_images.html msgid "Earlier versions" msgstr "Tidigare versioner" -#: templates/system/site_image_versions.html:98 -msgid "NO ACCESS" -msgstr "INGEN TILLGÅNG" +#: templates/system/site_images.html +msgid "Download" +msgstr "Download" -#: templates/system/site_image_versions.html:100 -msgid "" -"Your organization has no service agreement with a OS2borgerPC provider so no " -"versions are shown." -msgstr "" -"Din organisation har inget serviceavtal med en leverantör av Sambruk " -"MedborgarPC, och därför visas inga versioner.." +#: templates/system/site_settings/api_keys/api_keys.html +msgid "API Keys for" +msgstr "API-nycklar för" -#: templates/system/site_image_versions.html:102 -msgid "Please contact a OS2borgerPC provider to learn more." -msgstr "Vänligen kontakta Sambruk MedborgarPC Leverantör för att få veta mer." +#: templates/system/site_settings/api_keys/api_keys.html +msgid "These API keys are used to access our API. See our" +msgstr "Dessa API-nycklar används för att komma åt vårt API. Se vår" -#: templates/system/site_list.html:5 -msgid "Administrate" -msgstr "Hantera" +#: templates/system/site_settings/api_keys/api_keys.html +msgid "for more info." +msgstr "for mer information." + +#: templates/system/site_settings/api_keys/api_keys.html +msgid "You can additionally visit the API's own docs at" +msgstr "Du kan dessutom besöka API:ets egna docs på" + +#: templates/system/site_settings/api_keys/api_keys.html +msgid "as long as you are signed in to the admin site." +msgstr "så länge du är inloggad på adminsidan." -#: templates/system/site_settings.html:22 +#: templates/system/site_settings/api_keys/api_keys.html +msgid "Generate new API Key" +msgstr "Generera ny API-nyckel" + +#: templates/system/site_settings/api_keys/partials/list.html +msgid "API Key copied!" +msgstr "API-nyckel kopierad!" + +#: templates/system/site_settings/api_keys/partials/list.html +msgid "Are you sure you want to delete the following API Key?:" +msgstr "Är du säker på att du vill ta bort följande API-nyckel?:" + +#: templates/system/site_settings/api_keys/partials/list.html +msgid "There are currently no API keys" +msgstr "Det finns för närvarande inga API-nycklar" + +#: templates/system/site_settings/site_settings.html msgid "Settings for" msgstr "Inställningar för" -#: templates/system/site_settings.html:28 -msgid "Settings" -msgstr "Inställningar och preferenser" +#: templates/system/site_status.html +msgid "computers" +msgstr "datorer" -#: templates/system/site_status.html:12 -msgid "Activated:" -msgstr "Aktiverad:" +#: templates/system/site_status.html templates/system/sites/list.html +msgid "Total number of" +msgstr "Totalt antal" + +#: templates/system/site_status.html templates/system/sites/list.html +msgid "Total number of BorgerPC's" +msgstr "Totalt antal MedborgarPC'er" + +#: templates/system/site_status.html templates/system/sites/list.html +msgid "Total number of Kiosk PC's" +msgstr "Totalt antal Kiosk PC'er" -#: templates/system/site_status.html:14 -msgid "Online:" -msgstr "Online:" +#: templates/system/site_status.html templates/system/sites/list.html +msgid "Activated:" +msgstr "Aktiverade:" -#: templates/system/site_status.html:20 templates/system/site_status.html:36 +#: templates/system/site_status.html msgid "Activated" msgstr "Aktiverad" -#: templates/system/site_status.html:21 +#: templates/system/site_status.html msgid "Description" msgstr "Beskrivning" -#: templates/system/site_status.html:22 +#: templates/system/site_status.html msgid "Location" msgstr "Placering" -#: templates/system/site_status.html:24 +#: templates/system/site_status.html msgid "Latest check-in" msgstr "Senaste incheckning" -#: templates/system/site_status.html:25 -msgid "Latest security event received" -msgstr "Senaste säkerhetsincidenten har tagits emot" - -#: templates/system/site_status.html:44 -msgid "Online" -msgstr "Online" +#: templates/system/site_status.html +msgid "Latest event received" +msgstr "Senaste incidenten har tagits emot" -#: templates/system/site_status.html:46 +#: templates/system/site_status.html msgid "Offline" msgstr "Offline" -#: templates/system/site_two_factor.html:21 -msgid "Activate: Two-factor authentication for superuser" -msgstr "Aktivera: Verifiering i två steg för superanvändare" +#: templates/system/site_two_factor_pc.html +msgid "" +"Enable two-factor authentication for superuser login on OS2borgerPC and " +"OS2borgerPC Kiosk" +msgstr "" +"Aktivera tvåstegsverifiering for superuser inloggning på en Sambruk " +"MedborgarPC eller en Sambruk MedborgarPC Kiosk" + +#: templates/system/site_two_factor_pc.html +msgid "" +"This section is related to setting up two-factor authentication for " +"superuser on an OS2borgerPC or OS2borgerPC Kiosk computer." +msgstr "" +"Det här avsnittet är relaterat till att ställa in tvåstegsverifiering for " +"superuser på en Sambruk MedborgarPC eller en Sambruk MedborgarPC Kiosk" + +#: templates/system/site_two_factor_pc.html +msgid "" +"Two-factor authentication on your admin-site profile is administered from " +"the Users-section." +msgstr "" +"Tvåstegsverifiering på din admin-site profil hanteras från användarsektionen." -#: templates/system/site_two_factor.html:26 +#: templates/system/site_two_factor_pc.html msgid "Create security key and QR" msgstr "Skapa säkerhetsnyckel och QR" -#: templates/system/site_two_factor.html:28 +#: templates/system/site_two_factor_pc.html msgid "Generate security key and QR" msgstr "Generera säkerhetsnyckel och QR" -#: templates/system/site_two_factor.html:30 +#: templates/system/site_two_factor_pc.html msgid "Security key:" msgstr "Säkerhetsnyckel:" -#: templates/system/site_two_factor.html:36 +#: templates/system/site_two_factor_pc.html +msgid "Security Key copied!" +msgstr "Säkerhetsnyckel kopierad!" + +#: templates/system/site_two_factor_pc.html msgid "Scan the QR code from step 1 with your authenticator app" msgstr "Skanna QR-koden från steg 1 med din autentiseringsapp." -#: templates/system/site_two_factor.html:37 +#: templates/system/site_two_factor_pc.html msgid "Some examples of authenticator apps are:" msgstr "Autentiseringsappen kan användas till exempel:" -#: templates/system/site_two_factor.html:49 +#: templates/system/site_two_factor_pc.html +msgid "App" +msgstr "App" + +#: templates/system/site_two_factor_pc.html +msgid "Platform" +msgstr "Plattform" + +#: templates/system/site_two_factor_pc.html +msgid "Open Source" +msgstr "Öppen Källa" + +#: templates/system/site_two_factor_pc.html msgid "" "Copy the security key from step 1 and run the two-factor script with it as " "input" @@ -2034,41 +5800,138 @@ msgstr "" "Kopiera säkerhetsnyckeln från steg 1 och kör tvåstegsskriptet med den som " "Ingångsparameter." -#: templates/system/site_two_factor.html:51 -#, python-format -msgid "You can find the script \"%(name)s\" under the menu item " -msgstr "Du hittar skriptet \"%(name)s\" under menyalternativet " +#: templates/system/site_two_factor_pc.html +msgid "Click on" +msgstr "Klicka på" + +#: templates/system/site_two_factor_pc.html +msgid "Two-factor authentication for superuser" +msgstr "Tvåstegsverifiering för superuser" + +#: templates/system/site_two_factor_pc.html +msgid "to go to the script" +msgstr "för att gå till skriptet" + +#: templates/system/sites/confirm_delete.html +#: templates/system/sites/display.html +msgid "Delete Site" +msgstr "Ta bort Site" + +#: templates/system/sites/confirm_delete.html +msgid "" +"All Computers, Groups, Jobs, Monitoring Rules, On/Off schedules, schedule " +"exceptions, associated scripts and local (security) Scripts on the Site will " +"also be deleted." +msgstr "" +"Alla Datorer, Grupper, Jobs, Övervakningsregler, Schema för på- och " +"avstängning, schema undantag, associerade skript och lokala skript eller " +"säkerhetsskript på Sitet kommer också att raderas." + +#: templates/system/sites/confirm_delete.html +msgid "" +"Any Users that only have access to this Site will also be deleted. Users " +"that also have access to other Sites will not be deleted." +msgstr "" +"Alla användare som bara har tillgång till denna Site kommer också att " +"raderas. Användare som också har tillgång till andra Sites kommer inte att " +"raderas." + +#: templates/system/sites/confirm_delete.html +msgid "It will NOT be possible to restore any of the deleted data later." +msgstr "" +"Det kommer INTE att vara möjligt att återställa något av de raderade data " +"senare." + +#: templates/system/sites/confirm_delete.html +msgid "Are you sure you want to delete the Site" +msgstr "Är du säker på att du vill ta bort Sitet" + +#: templates/system/sites/confirm_delete.html +msgid "I understand and accept the consequences of deleting the Site" +msgstr "Jag förstår och accepterar konsekvenserna av att ta bort Sitet" + +#: templates/system/sites/display.html +msgid "Delete site" +msgstr "Ta bort site" + +#: templates/system/sites/display.html +msgid "" +"This Site has 5 or more registered Computers and therefore can't be deleted" +msgstr "" +"Detta Site har 5 eller fler registrerade datorer och kan därfor inte raderas" + +#: templates/system/sites/list.html +msgid "Administrate" +msgstr "Hantera" + +#: templates/system/sites/list.html +msgid "Admin site version" +msgstr "Adminsida-version" + +#: templates/system/sites/list.html +msgid "Add new site" +msgstr "Lägg till nyt site" + +#: templates/system/sites/list.html +msgid "" +"Must be unique. Valid characters are a-z (lower-case only), 0-9 and dashes, " +"and the length must be between 2-40 characters. We suggest values like " +"'organisation' or 'organisation-location' (without quotes)." +msgstr "" +"Måste vara unik. Giltiga tecken är a-z (endast små bokstäver), 0-9 och " +"bindestreck, och längden måste vara mellan 2-40 tecken. Vi föreslår värden " +"som 'organisation' eller 'organisation-plats' (utan citattecken)" -#: templates/system/users/confirm_delete.html:11 -#: templates/system/users/update.html:28 +#: templates/system/sites/list.html +msgid "Create site" +msgstr "Skapa site" + +#: templates/system/users/confirm_delete.html +#: templates/system/users/update.html msgid "Delete user" msgstr "Ta bort användare" -#: templates/system/users/confirm_delete.html:16 +#: templates/system/users/confirm_delete.html +msgid "Are you sure you want to remove this user from the site " +msgstr "Är du säker på att du vill ta bort den här användaren från sitet " + +#: templates/system/users/confirm_delete.html msgid "Are you sure you want to delete the user" msgstr "Är du säker på att du vill ta bort användaren" -#: templates/system/users/create.html:10 -msgid "Create new user" -msgstr "Lägg till en ny användare" - -#: templates/system/users/create.html:16 templates/system/users/update.html:85 -msgid "Create user" -msgstr "Skapa en användare" - -#: templates/system/users/form.html:26 +#: templates/system/users/form.html msgid "Show Password" msgstr "Visa Password" -#: templates/system/users/update.html:15 templates/system/users/update.html:78 +#: templates/system/users/form.html +msgid "Set up two-factor authentication" +msgstr "Ställ in tvåstegsverifiering" + +#: templates/system/users/form.html +msgid "Generate backup tokens" +msgstr "Generera reservkoder" + +#: templates/system/users/form.html +msgid "Deactivate two-factor authentication" +msgstr "Inaktivera tvåstegsverifiering" + +#: templates/system/users/link.html templates/system/users/update.html msgid "Add new user" msgstr "Lägg till en ny användare" -#: templates/system/users/update.html:42 +#: templates/system/users/link.html +msgid "Add existing users from your other sites to the site " +msgstr "Lägg till befintliga användare från dina andra sites till sitet " + +#: templates/system/users/update.html msgid "Profile:" msgstr "Profil:" -#: templates/system/users/update.html:46 +#: templates/system/users/update.html +msgid "Create new user" +msgstr "Lägg till en ny användare" + +#: templates/system/users/update.html msgid "" "Site users are not authorized to edit other users. Ask a site admin or " "Magenta for help." @@ -2076,16 +5939,16 @@ msgstr "" "Site-användare har inte tillgång till att ändra andra användare. Fråga en " "Site-administratör eller Magenta för att få hjälp." -#: templates/system/wake_plan/confirm_delete.html:6 -#: templates/system/wake_plan/wake_plan_base.html:34 +#: templates/system/wake_plan/confirm_delete.html +#: templates/system/wake_plan/wake_plan_base.html msgid "Delete on/off schedule" msgstr "Radera På/Av tidplan" -#: templates/system/wake_plan/confirm_delete.html:14 +#: templates/system/wake_plan/confirm_delete.html msgid "The schedule" msgstr "Tidplanen" -#: templates/system/wake_plan/confirm_delete.html:17 +#: templates/system/wake_plan/confirm_delete.html #, python-format msgid "" "Deleting %(the_schedule)s will remove all %(groups)s and the associated " @@ -2095,20 +5958,20 @@ msgstr "" "tillhörande %(computers)s och de kommer inte längre att stänga av eller slå " "på automatiskt." -#: templates/system/wake_plan/confirm_delete.html:24 +#: templates/system/wake_plan/confirm_delete.html msgid "Are you sure you wish to delete the On/Off schedule" -msgstr "Är du säker på att du vill radera På/Av schemat?" +msgstr "Är du säker på att du vill radera På/Av schemat" -#: templates/system/wake_plan/wake_change_events/confirm_delete.html:6 -#: templates/system/wake_plan/wake_change_events/wake_change_event_base.html:41 +#: templates/system/wake_plan/wake_change_events/confirm_delete.html +#: templates/system/wake_plan/wake_change_events/wake_change_event_base.html msgid "Delete exception" msgstr "Ta bort undantag" -#: templates/system/wake_plan/wake_change_events/confirm_delete.html:14 +#: templates/system/wake_plan/wake_change_events/confirm_delete.html msgid "the Exception" msgstr "Undantaget" -#: templates/system/wake_plan/wake_change_events/confirm_delete.html:15 +#: templates/system/wake_plan/wake_change_events/confirm_delete.html #, python-format msgid "" "If %(the_exception)s is deleted, it will be removed from all schedules and " @@ -2119,27 +5982,27 @@ msgstr "" "och alla datorer som är inskrivna i planerna kommer att få sin tidtabell " "uppdaterad meddetta undantag borttaget." -#: templates/system/wake_plan/wake_change_events/confirm_delete.html:22 +#: templates/system/wake_plan/wake_change_events/confirm_delete.html msgid "Are you sure you wish to delete the Exception" -msgstr "Är du säker på att du vill ta bort undantaget?" +msgstr "Är du säker på att du vill ta bort undantaget" -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:10 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "Altered opening hours" msgstr "Ändrade öppettider" -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:12 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "Closed days" msgstr "Stängningsdagar" -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:14 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "New exception" msgstr "Nytt undantag" -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:21 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "Return to schedule" msgstr "Återgå till schemat" -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:30 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "" "Here you can create exceptions from the recurring week plan and these " "exceptions have precedence" @@ -2147,7 +6010,7 @@ msgstr "" "Här kan du skapa undantag från den fasta tidtabellen och dessa Undantagen " "har företräde." -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:34 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "" "\"Altered opening hours\" means that for the selected days, the computer " "will turn on and off at the times selected for the exception rather than " @@ -2157,46 +6020,42 @@ msgstr "" "slås på och stänga av vid de tider som valts för undantaget, snarare än vid " "de tider som valts för undantaget, i det fasta veckoschemat." -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:36 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "" "\"Closed days\" means that the computer will not turn on automatically " "during the selected days." msgstr "" "\"Stängningsdag\" innebär att datorn inte slås på automatiskt denna dagen." -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:56 -msgid "From" -msgstr "Från" - -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:58 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "To" msgstr "Till" -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:72 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "Point in time" msgstr "Tidpunkt" -#: templates/system/wake_plan/wake_change_events/wake_change_event.html:96 +#: templates/system/wake_plan/wake_change_events/wake_change_event.html msgid "On/Off schedules that use this exception" msgstr "På/Av-planer som använder detta undantag" -#: templates/system/wake_plan/wake_change_events/wake_change_event_base.html:6 +#: templates/system/wake_plan/wake_change_events/wake_change_event_base.html msgid "On/Off schedule: Exceptions" msgstr "På/Av plan: Undantag" -#: templates/system/wake_plan/wake_change_events/wake_change_event_base.html:19 +#: templates/system/wake_plan/wake_change_events/wake_change_event_base.html msgid "Add altered opening hours" msgstr "Lägg till ändrade öppettider" -#: templates/system/wake_plan/wake_change_events/wake_change_event_base.html:25 +#: templates/system/wake_plan/wake_change_events/wake_change_event_base.html msgid "Add closed days" msgstr "Lägg till stängningsdagar" -#: templates/system/wake_plan/wake_plan.html:9 +#: templates/system/wake_plan/wake_plan.html msgid "New on/off schedule" msgstr "Nytt schema för på- och avstängning" -#: templates/system/wake_plan/wake_plan.html:22 +#: templates/system/wake_plan/wake_plan.html msgid "" "If you are unfamiliar with the functionality of on/off schedules, we " "recommend first reading our" @@ -2204,15 +6063,11 @@ msgstr "" "Om du inte är bekant med funktionaliteten för På/Av-schemat föreslår vi " "följande att börja med att läsa vår" -#: templates/system/wake_plan/wake_plan.html:23 -msgid "User guide to power saving functions in OS2borgerPC" -msgstr "Användarhandbok om energisparfunktioner i Sambruk MedborgarPC" - -#: templates/system/wake_plan/wake_plan.html:27 +#: templates/system/wake_plan/wake_plan.html msgid "Group" msgstr "Grupp" -#: templates/system/wake_plan/wake_plan.html:28 +#: templates/system/wake_plan/wake_plan.html #, python-format msgid "" "Schedules must have %(groups)s added before they take effect, and a " @@ -2221,7 +6076,7 @@ msgstr "" "Tidplaner ska ha %(groups)s innan de träder i kraft, och en %(group)s kan " "endast registreras i en tidtabell." -#: templates/system/wake_plan/wake_plan.html:34 +#: templates/system/wake_plan/wake_plan.html #, python-format msgid "" "A schedule applies to all the %(computers)s in the %(groups)s that have been " @@ -2230,27 +6085,27 @@ msgstr "" "En tidtabell gäller för alla %(computers)s i de %(groups)s, som är inskrivna " "i tidtabellen." -#: templates/system/wake_plan/wake_plan.html:40 +#: templates/system/wake_plan/wake_plan.html #, python-format msgid "A %(computer)s can only receive a new or updated schedule if it is on." msgstr "" "En %(computer)s kan endast få en ny eller uppdaterad tidtabell om den är på" -#: templates/system/wake_plan/wake_plan.html:45 +#: templates/system/wake_plan/wake_plan.html msgid "the individual Computers" msgstr "enskilda datorer" -#: templates/system/wake_plan/wake_plan.html:46 +#: templates/system/wake_plan/wake_plan.html #, python-format msgid "The schedule uses the time settings on %(the_individual_computers)s." msgstr "" "Tidtabellen använder tidsinställningarna på %(the_individual_computers)s." -#: templates/system/wake_plan/wake_plan.html:51 +#: templates/system/wake_plan/wake_plan.html msgid "the Computers" msgstr "Datorerna" -#: templates/system/wake_plan/wake_plan.html:52 +#: templates/system/wake_plan/wake_plan.html #, python-format msgid "" "Whether some of %(the_computers)s should also enter sleep mode when inactive " @@ -2259,92 +6114,92 @@ msgstr "" "Om några av %(the_computers)s också ska gå i vila styrs intehär, utan genom " "att köra" -#: templates/system/wake_plan/wake_plan.html:55 +#: templates/system/wake_plan/wake_plan.html msgid "the suspend script." -msgstr "Skriptet för vila" +msgstr "Skriptet för vila." -#: templates/system/wake_plan/wake_plan.html:67 +#: templates/system/wake_plan/wake_plan.html msgid "Schedule status" msgstr "Tidplan status" -#: templates/system/wake_plan/wake_plan.html:70 +#: templates/system/wake_plan/wake_plan.html msgid "Active" msgstr "Aktiv" -#: templates/system/wake_plan/wake_plan.html:70 -#: templates/system/wake_plan/wake_plan_base.html:30 +#: templates/system/wake_plan/wake_plan.html +#: templates/system/wake_plan/wake_plan_base.html msgid "Inactive" msgstr "Inaktiv" -#: templates/system/wake_plan/wake_plan.html:77 +#: templates/system/wake_plan/wake_plan.html msgid "" "Some sleep states save more power than others, but some hardware does not " "support the most power saving states. We recommend starting with \"Off" "\" (which saves the most power), and if that does not work then try them in " "the order: mem, freeze, standby" msgstr "" -"Vissa vilolägen är mer energieffektiva än andra, men vissa datorerhar inte " +"Vissa vilolägen är mer energieffektiva än andra, men vissa datorer har inte " "stöd för de mest energisparande lägena. Vi föreslår att du börjar med \"Off" "\" (den mest energibesparande), och om det inte fungerar försöker du med dem " "i ordningen: mem, freeze, standby" -#: templates/system/wake_plan/wake_plan.html:82 +#: templates/system/wake_plan/wake_plan.html msgid "Week plan" msgstr "Veckoplan" -#: templates/system/wake_plan/wake_plan.html:83 +#: templates/system/wake_plan/wake_plan.html msgid "Configure on and off for the recurring week plan" msgstr "Konfigurera att slå på och stänga av det fasta veckoschemat." -#: templates/system/wake_plan/wake_plan.html:90 +#: templates/system/wake_plan/wake_plan.html msgid "On at" msgstr "Sätt på vid" -#: templates/system/wake_plan/wake_plan.html:92 +#: templates/system/wake_plan/wake_plan.html msgid "Off at" msgstr "Stäng av vid" -#: templates/system/wake_plan/wake_plan.html:98 +#: templates/system/wake_plan/wake_plan.html msgid "On" msgstr "På" -#: templates/system/wake_plan/wake_plan.html:99 +#: templates/system/wake_plan/wake_plan.html msgid "Off" msgstr "Av" -#: templates/system/wake_plan/wake_plan.html:100 +#: templates/system/wake_plan/wake_plan.html msgid "Monday" msgstr "Måndag" -#: templates/system/wake_plan/wake_plan.html:118 +#: templates/system/wake_plan/wake_plan.html msgid "Tuesday" msgstr "Tisdag" -#: templates/system/wake_plan/wake_plan.html:136 +#: templates/system/wake_plan/wake_plan.html msgid "Wednesday" msgstr "Onsdag" -#: templates/system/wake_plan/wake_plan.html:154 +#: templates/system/wake_plan/wake_plan.html msgid "Thursday" msgstr "Torsdag" -#: templates/system/wake_plan/wake_plan.html:172 +#: templates/system/wake_plan/wake_plan.html msgid "Friday" msgstr "Fredag" -#: templates/system/wake_plan/wake_plan.html:190 +#: templates/system/wake_plan/wake_plan.html msgid "Saturday" msgstr "Lördag" -#: templates/system/wake_plan/wake_plan.html:208 +#: templates/system/wake_plan/wake_plan.html msgid "Sunday" msgstr "Söndag" -#: templates/system/wake_plan/wake_plan.html:230 +#: templates/system/wake_plan/wake_plan.html msgid "Exceptions: Closed days and altered opening hours" msgstr "Undantag: stängningsdagar och ändrade öppettider." -#: templates/system/wake_plan/wake_plan.html:231 +#: templates/system/wake_plan/wake_plan.html msgid "" "Plan and create upcoming closed days and altered opening hours from the " "recurring week plan" @@ -2352,47 +6207,256 @@ msgstr "" "Planera och skapa kommande stängningar och ändringar av öppettider från den " "fasta återkommande veckoplan" -#: templates/system/wake_plan/wake_plan.html:235 +#: templates/system/wake_plan/wake_plan.html msgid "Create closed days" msgstr "Skapa stängningsdagar" -#: templates/system/wake_plan/wake_plan.html:236 +#: templates/system/wake_plan/wake_plan.html msgid "Create altered opening hours" msgstr "Skapa ändrade öppettider" -#: templates/system/wake_plan/wake_plan.html:237 +#: templates/system/wake_plan/wake_plan.html msgid "Edit exceptions" msgstr "Redigera undantag" -#: templates/system/wake_plan/wake_plan.html:249 +#: templates/system/wake_plan/wake_plan.html msgid "Add exception to schedule" msgstr "Länka undantag till tidtabellen" -#: templates/system/wake_plan/wake_plan.html:250 +#: templates/system/wake_plan/wake_plan.html msgid "Remove exception from schedule" msgstr "Ta bort undantaget från tidtabellen" -#: templates/system/wake_plan/wake_plan.html:255 +#: templates/system/wake_plan/wake_plan.html msgid "Groups that follow the schedule" msgstr "Grupper som följer tidtabellen" -#: templates/system/wake_plan/wake_plan.html:267 +#: templates/system/wake_plan/wake_plan.html msgid "Add group to schedule" msgstr "Associera gruppen till tidtabellen" -#: templates/system/wake_plan/wake_plan.html:268 +#: templates/system/wake_plan/wake_plan.html msgid "Remove group from schedule" msgstr "Ta bort en grupp från tidtabellen" -#: templates/system/wake_plan/wake_plan.html:280 +#: templates/system/wake_plan/wake_plan.html msgid "Duplicate schedule" msgstr "Duplicera schema" -#: templates/system/wake_plan/wake_plan_base.html:19 +#: templates/system/wake_plan/wake_plan_base.html +msgid "On/Off schedule" +msgstr "Schema för på- och avstängning" + +#: templates/system/wake_plan/wake_plan_base.html msgid "Add new On/Off schedule" msgstr "Lägg till ett nytt schema för på/av" -#: templates/widgets/picklist.html:165 templates/widgets/scriptsearch.html:147 -#: templates/widgets/wake_plan_picklist.html:199 +#: templates/two_factor/_base.html +msgid "OS2borgerPC Administration Login" +msgstr "Sambruk MedborgarPC Administration Inloggning" + +#: templates/two_factor/_base.html +msgid "" +"OS2borgerPC is an open source product. You can download the source code and " +"documentation here:" +msgstr "" +"Sambruk MedborgarPC är en lösning med öppen källkod. Du kan ladda ner " +"källkoden och dokumentationen här:" + +#: templates/two_factor/_base.html +msgid "Check updates for OS2borgerPC" +msgstr "Se uppdateringar i Sambruk MedborgarPC" + +#: templates/two_factor/_base.html +msgid "Send a message to Magenta" +msgstr "Skicka ett meddelande till Magenta" + +#: templates/two_factor/core/backup_tokens.html +#: templates/two_factor/core/setup.html +#: templates/two_factor/core/setup_complete.html +#: templates/two_factor/profile/disable.html +msgid "Two-factor authentication for admin-site login" +msgstr "Tvåstegsverifiering for admin-site inloggning" + +#: templates/two_factor/core/backup_tokens.html +msgid "Backup Tokens" +msgstr "Reservkoder" + +#: templates/two_factor/core/backup_tokens.html +msgid "" +"Backup tokens can be used when your authenticator app isn't available.
" +"The backup tokens below can be used for login verification.
If you've " +"used up all your backup tokens, you can generate a new set of backup tokens." +"
Only the backup tokens shown below will be valid." +msgstr "" +"Reservkoder kan användas när din autentiseringsapp inte är tillgänglig.
" +"Reservkoderna nedan kan användas för inloggningsbekräftelse.
Om du har " +"använt alla dina reservkoder kan du skapa en ny uppsättning reservkoder.
" +"Endast reservkoderna som visas nedan är giltiga." + +#: templates/two_factor/core/backup_tokens.html +msgid "" +"Print these tokens and keep them somewhere safe
or save them in e.g. " +"Bitwarden." +msgstr "" +"Skriv ut dessa koder och förvara dem säkert
eller spara dem i t.ex. " +"Bitwarden." + +#: templates/two_factor/core/backup_tokens.html +msgid "You don't have any backup tokens yet." +msgstr "Du har inga reservkoder ännu." + +#: templates/two_factor/core/backup_tokens.html +#: templates/two_factor/core/setup_complete.html +msgid "Back to user profile" +msgstr "Tillbaka till användarprofilen" + +#: templates/two_factor/core/backup_tokens.html +msgid "Generate Tokens" +msgstr "Generera koder" + +#: templates/two_factor/core/login.html +msgid "Log in" +msgstr "Logga in" + +#: templates/two_factor/core/login.html +msgid "Please enter the token generated by your authenticator app." +msgstr "Vänligen ange koden från din autentiseringsapp." + +#: templates/two_factor/core/login.html +msgid "" +"Use this form for entering backup tokens for logging in. These tokens have " +"been generated for you to print and keep safe. Please enter one of these " +"backup tokens to login to your account." +msgstr "" +"Använd det här formuläret för att ange reservkoder för att logga in. Dessa " +"koder har skapats för din förvaring. Vänligen ange en av dina reservkoder " +"för att logga in." + +#: templates/two_factor/core/login.html +msgid "Back" +msgstr "Tillbaka" + +#: templates/two_factor/core/login.html +msgid "As a last resort, you can use a" +msgstr "Som en sista utväg kan du använda en" + +#: templates/two_factor/core/login.html +msgid "backup token" +msgstr "reservkod" + +#: templates/two_factor/core/setup.html +#: templates/two_factor/core/setup_complete.html +msgid "Enable Two-Factor Authentication for" +msgstr "Aktivera Tvåstegsverifiering för" + +#: templates/two_factor/core/setup.html +msgid "" +"You are about to take your account security to the next level. Follow the " +"steps in this wizard to enable two-factor authentication." +msgstr "" +"Du är på väg att öka säkerheten för din användarkonto. Följ stegen i denna " +"guide för att aktivera tvåstegsverifiering." + +#: templates/two_factor/core/setup.html +msgid "Please select which authentication method you would like to use." +msgstr "" + +#: templates/two_factor/core/setup.html +msgid "" +"To start using an authenticator app, please use your smartphone to scan the " +"QR code below. For example, use FreeOTP Authenticator." +msgstr "" +"Använd din autentiseringsapp för att skanna QR-koden nedan. Du kan t.ex. " +"använd FreeOTP Authenticator." + +#: templates/two_factor/core/setup.html +msgid "" +"Alternatively, you can use the following secret to set up TOTP in your " +"authenticator manually." +msgstr "" +"Alternativt kan du använda följande hemlighet för att manuellt ställa in " +"TOTP i din autentiseringsapp." + +#: templates/two_factor/core/setup.html +msgid "TOTP Secret:" +msgstr "TOTP Hemlighet:" + +#: templates/two_factor/core/setup.html +msgid "Then, enter the token generated by the app." +msgstr "Ange sedan koden som genereras av din app." + +#: templates/two_factor/core/setup.html +msgid "" +"Please enter the phone number you wish to receive the text messages on. This " +"number will be validated in the next step." +msgstr "" + +#: templates/two_factor/core/setup.html +msgid "" +"Please enter the phone number you wish to be called on. This number will be " +"validated in the next step." +msgstr "" + +#: templates/two_factor/core/setup.html +msgid "We are calling your phone right now, please enter the digits you hear." +msgstr "" + +#: templates/two_factor/core/setup.html +msgid "We sent you a text message, please enter the tokens we sent." +msgstr "" + +#: templates/two_factor/core/setup.html +msgid "" +"We've encountered an issue with the selected authentication method. Please " +"go back and verify that you entered your information correctly, try again, " +"or use a different authentication method instead. If the issue persists, " +"contact Magenta." +msgstr "" +"Vi har stött på ett problem med den valda metoden. Vänligen gå tillbaka och " +"verifiera att du har angett din information korrekt, försök igen eller " +"använd en annan metod. Kontakta Magenta om problemet kvarstår." + +#: templates/two_factor/core/setup.html +msgid "" +"To identify and verify your YubiKey, please insert a token in the field " +"below. Your YubiKey will be linked to your account." +msgstr "" + +#: templates/two_factor/core/setup_complete.html +msgid "Congratulations, you've successfully enabled two-factor authentication." +msgstr "Grattis, du har nu aktiverat tvåstegsverifiering." + +#: templates/two_factor/core/setup_complete.html +msgid "" +"However, it might happen that you don't have access to your primary token " +"device. To enable account recovery, add a phone number." +msgstr "" + +#: templates/two_factor/core/setup_complete.html +msgid "Add Phone Number" +msgstr "" + +#: templates/two_factor/profile/disable.html +msgid "Disable Two-factor Authentication for" +msgstr "Inaktivera Tvåstegsverifiering för" + +#: templates/two_factor/profile/disable.html +msgid "" +"You are about to disable two-factor authentication. This weakens your " +"account security, are you sure?" +msgstr "" +"Du är på väg att inaktivera tvåstegsverifiering. Detta försvagar säkerheten " +"på din användarkonto. Är du säker?" + +#: templates/two_factor/profile/disable.html +msgid "Disable" +msgstr "Inaktivera" + +#: templates/widgets/picklist.html +msgid "No options" +msgstr "Inga valmöjligheter" + +#: templates/widgets/picklist.html templates/widgets/scriptsearch.html msgid "Data is missing" msgstr "Data saknas" diff --git a/admin_site/locale/sv/LC_MESSAGES/djangojs.po b/admin_site/locale/sv/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000..dedd6891 --- /dev/null +++ b/admin_site/locale/sv/LC_MESSAGES/djangojs.po @@ -0,0 +1,70 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-01-09 16:25+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: static/js/jobs_list.js +msgid "No user" +msgstr "Ingen användare" + +#: static/js/jobs_list.js static/js/security_events_list.js +msgid "Previous" +msgstr "Föregående" + +#: static/js/jobs_list.js static/js/security_events_list.js +msgid "Next" +msgstr "Nästa" + +#: static/js/security_events_list.js +msgid "Note set during handling:" +msgstr "Not satt under hanteringen:" + +#: static/js/security_events_list.js +msgid "Info about the event" +msgstr "Info om incidenten" + +#: static/js/security_events_list.js +msgid "Log-output from the event:" +msgstr "Loggutgång från incidenten:" + +#: static/js/security_events_list.js +msgid "Handle" +msgstr "Hanterar" + +#: static/js/security_events_list.js +msgid "out of" +msgstr "av" + +#: static/js/security_events_list.js +msgid "events" +msgstr "incidenter" + +#: static/js/wake_plan.js +msgid "On" +msgstr "På" + +#: static/js/wake_plan.js +msgid "Off" +msgstr "Stängd" + +#: static/js/wake_plan.js +msgid "Active" +msgstr "Aktiv" + +#: static/js/wake_plan.js +msgid "Inactive" +msgstr "Inaktiv" diff --git a/admin_site/os2borgerpc_admin/__init__.py b/admin_site/os2borgerpc_admin/__init__.py old mode 100755 new mode 100644 diff --git a/admin_site/os2borgerpc_admin/api.py b/admin_site/os2borgerpc_admin/api.py new file mode 100644 index 00000000..78e7b162 --- /dev/null +++ b/admin_site/os2borgerpc_admin/api.py @@ -0,0 +1,31 @@ +from ninja import NinjaAPI +from ninja.security import HttpBearer +from django.contrib.admin.views.decorators import user_passes_test + +from system.models import APIKey +from system.api import router as system_router + +# from changelog.api import router as changelog_router + + +# Require authentication to access all parts of the API (except docs, which is handled below) +# "key" must then be passed as part of a HTTP header +# The header format is: "Authorizization: Bearer " +# Example curl call: +# curl --header 'Authorization: Bearer ' http://os2borgerpc-admin.magenta.dk/api/system/pcs +class GlobalAuth(HttpBearer): + def authenticate(self, request, key): + valid_key_check = APIKey.objects.filter(key=key).first() + + if valid_key_check: + return valid_key_check.key + + +# Initialize, and require regular API key authentication to all endpoints except the docs endpoint, make docs endpoint +# use regular django user authentication +api = NinjaAPI( + auth=GlobalAuth(), docs_decorator=user_passes_test(lambda u: u.is_authenticated) +) + +api.add_router("/system/", system_router) +# api.add_router("/changelog/", changelog_router) diff --git a/admin_site/os2borgerpc_admin/initialize.py b/admin_site/os2borgerpc_admin/initialize.py old mode 100755 new mode 100644 index 78e5e6b0..972d1b35 --- a/admin_site/os2borgerpc_admin/initialize.py +++ b/admin_site/os2borgerpc_admin/initialize.py @@ -9,7 +9,10 @@ from os2borgerpc_admin.settings import install_dir -fixtures_dir = os.path.join(install_dir, "system/fixtures") +fixtures_dirs = [ + os.path.join(install_dir, "system/fixtures"), + os.path.join(install_dir, "changelog/fixtures"), +] def initialize(): @@ -18,7 +21,8 @@ def initialize(): Should be able to be run multiple times over without generating duplicates. """ - if os.path.exists(fixtures_dir) and os.path.isdir(fixtures_dir): - for file in sorted(glob.glob(os.path.join(fixtures_dir, "*.json"))): - if os.path.isfile(file): - call_command("loaddata", file) + for dir in fixtures_dirs: + if os.path.exists(dir) and os.path.isdir(dir): + for file in sorted(glob.glob(os.path.join(dir, "*.json"))): + if os.path.isfile(file): + call_command("loaddata", file) diff --git a/admin_site/os2borgerpc_admin/middlewares.py b/admin_site/os2borgerpc_admin/middlewares.py new file mode 100644 index 00000000..77786b80 --- /dev/null +++ b/admin_site/os2borgerpc_admin/middlewares.py @@ -0,0 +1,21 @@ +from django.utils.deprecation import MiddlewareMixin +from django.http import HttpResponseRedirect +from django.utils import translation + + +class user_locale_middleware(MiddlewareMixin): + """ + Parse a request and determine the translation to use based + on the user's chosen language. If no user is logged in, + use the browser language instead. + """ + + response_redirect_class = HttpResponseRedirect + + def process_request(self, request): + if request.user.is_authenticated: + language = request.user.user_profile.language + else: + language = translation.get_language_from_request(request) + translation.activate(language) + request.LANGUAGE_CODE = translation.get_language() diff --git a/admin_site/os2borgerpc_admin/settings.py b/admin_site/os2borgerpc_admin/settings.py old mode 100755 new mode 100644 index 57cdfd28..f70075aa --- a/admin_site/os2borgerpc_admin/settings.py +++ b/admin_site/os2borgerpc_admin/settings.py @@ -18,30 +18,24 @@ config = configparser.ConfigParser() config["settings"] = {} -# We support loading settings from two files. The fallback values in this -# `settings.py` is first overwritten by the values defined in the file where -# the env var `BPC_SYSTEM_CONFIG_PATH` points to. Finally the values are -# overwritten by the values the env var `BPC_USER_CONFIG_PATH` points to. -# -# The `BPC_SYSTEM_CONFIG_PATH` file is for an alternative set of default -# values. It is useful in a specific environment such as Docker. An example is -# the setting for STATIC_ROOT. The default in `settings.py` is relative to the -# current directory. In Docker it should be an absolute path that is easy to -# mount a volume to. -# - -# The `BPC_USER_CONFIG_PATH` file is for normal settings and should generally +# We load settings from a file. The fallback values in this +# `settings.py` is overwritten by the values defined in the file +# the env var `BPC_USER_CONFIG_PATH` points to. + +# The `BPC_USER_CONFIG_PATH` file is for settings that should generally # be unique to an instance deployment. -for env in ["BPC_SYSTEM_CONFIG_PATH", "BPC_USER_CONFIG_PATH"]: - path = os.getenv(env, None) - if path: - try: - with open(path) as fp: - config.read_file(fp) - logger.info("Loaded setting %s from %s" % (env, path)) - except OSError as e: - logger.error("Loading setting %s from %s failed with %s." % (env, path, e)) +path = os.getenv("BPC_USER_CONFIG_PATH", None) +if path: + try: + with open(path) as fp: + config.read_file(fp) + logger.info("Loaded settings file BPC_USER_CONFIG_PATH from %s" % (path)) + except OSError as e: + logger.error( + "Loading settings file BPC_USER_CONFIG_PATH from %s failed with %s." + % (path, e) + ) # use settings section as default settings = config["settings"] @@ -89,7 +83,6 @@ DATABASES = { "default": { "ENGINE": "django.db.backends.postgresql", - # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. "NAME": settings["DB_NAME"], "USER": settings["DB_USER"], "PASSWORD": settings["DB_PASSWORD"], @@ -108,6 +101,14 @@ else: ALLOWED_HOSTS = [] +# Django > 4.0 introduced changes related to CSRF. Note that the protocol has to be specified too. +# https://docs.djangoproject.com/en/4.2/releases/4.0/#csrf +# https://docs.djangoproject.com/en/4.2/ref/settings/#csrf-trusted-origins +if settings.get("CSRF_TRUSTED_ORIGINS"): + CSRF_TRUSTED_ORIGINS = settings.get("CSRF_TRUSTED_ORIGINS").split(",") +else: + CSRF_TRUSTED_ORIGINS = [] + # Local time zone for this installation. Choices can be found here: # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name # although not all choices may be available on all operating systems. @@ -136,7 +137,7 @@ # Absolute filesystem path to the directory that will hold user-uploaded files. # Example: "/var/www/example.com/media/" -MEDIA_ROOT = settings["MEDIA_ROOT"] +MEDIA_ROOT = "/media" # URL that handles the media served from MEDIA_ROOT. Make sure to use a # trailing slash. @@ -147,7 +148,7 @@ # Don't put anything in this directory yourself; store your static files # in apps' "static/" subdirectories and in STATICFILES_DIRS. # Example: "/var/www/example.com/static/" -STATIC_ROOT = settings["STATIC_ROOT"] +STATIC_ROOT = "/static" # URL prefix for static files. # Example: "http://example.com/static/", "http://static.example.com/" @@ -195,6 +196,8 @@ "django.middleware.common.CommonMiddleware", "django.middleware.csrf.CsrfViewMiddleware", "django.contrib.auth.middleware.AuthenticationMiddleware", + "django_otp.middleware.OTPMiddleware", + "os2borgerpc_admin.middlewares.user_locale_middleware", "django.contrib.messages.middleware.MessageMiddleware", ) @@ -221,6 +224,7 @@ LOCAL_APPS = ( "system", "account", + "changelog", ) THIRD_PARTY_APPS = ( @@ -229,6 +233,10 @@ "crispy_forms", "crispy_bootstrap5", "markdownx", + "django_otp", + "django_otp.plugins.otp_static", + "django_otp.plugins.otp_totp", + "two_factor", ) DJANGO_APPS = ( @@ -249,13 +257,19 @@ XMLRPC_METHODS = ( ("system.rpc.register_new_computer", "register_new_computer"), + ("system.rpc.register_new_computer_v2", "register_new_computer_v2"), ("system.rpc.send_status_info", "send_status_info"), - ("system.rpc.upload_dist_packages", "upload_dist_packages"), + ("system.rpc.send_status_info_v2", "send_status_info_v2"), ("system.rpc.get_instructions", "get_instructions"), - ("system.rpc.get_proxy_setup", "get_proxy_setup"), ("system.rpc.push_config_keys", "push_config_keys"), ("system.rpc.push_security_events", "push_security_events"), ("system.rpc.citizen_login", "citizen_login"), + ("system.rpc.citizen_logout", "citizen_logout"), + ("system.rpc.sms_login", "sms_login"), + ("system.rpc.sms_login_finalize", "sms_login_finalize"), + ("system.rpc.sms_logout", "sms_logout"), + ("system.rpc.general_citizen_login", "general_citizen_login"), + ("system.rpc.general_citizen_logout", "general_citizen_logout"), ) # A sample logging configuration. The only tangible logging @@ -290,16 +304,6 @@ }, } -ETC_DIR = os.path.join(install_dir, "etc") -PROXY_HTPASSWD_FILE = os.path.join(ETC_DIR, "bibos-proxy.htpasswd") - -# List of hosts that should be allowed through BibOS gateway proxies -DEFAULT_ALLOWED_PROXY_HOSTS = settings.get("DEFAULT_ALLOWED_PROXY_HOSTS", []) - -# List of hosts that should be proxied directly from the gateway and -# not through the central server -DEFAULT_DIRECT_PROXY_HOSTS = settings.get("DEFAULT_DIRECT_PROXY_HOSTS", []) - INITIALIZE_DATABASE = settings.getboolean("INITIALIZE_DATABASE", False) CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5" @@ -309,14 +313,12 @@ DEFAULT_AUTO_FIELD = "django.db.models.AutoField" # Handler for citizen login. -CITIZEN_LOGIN_VALIDATOR = settings.get( - "CITIZEN_LOGIN_VALIDATOR", "system.utils.cicero_validate" +CITIZEN_LOGIN_API_VALIDATOR = settings.get( + "CITIZEN_LOGIN_API_VALIDATOR", "system.utils.cicero_validate" ) # Cicero specific stuff. CICERO_URL = settings.get("CICERO_URL") -CICERO_USER = settings.get("CICERO_USER") -CICERO_PASSWORD = settings.get("CICERO_PASSWORD") # All Python Markdown's officially supported extensions can be added here without # any extra setup. @@ -331,4 +333,4 @@ # This specifies where uploaded media (images) are stored MARKDOWNX_MEDIA_PATH = datetime.now().strftime("changelog-images/%Y/%m/%d") -FORM_RENDERER = "django.forms.renderers.TemplatesSetting" +FORM_RENDERER = "django.forms.renderers.DjangoDivFormRenderer" diff --git a/admin_site/os2borgerpc_admin/urls.py b/admin_site/os2borgerpc_admin/urls.py old mode 100755 new mode 100644 index ae91ee45..ef4e81f4 --- a/admin_site/os2borgerpc_admin/urls.py +++ b/admin_site/os2borgerpc_admin/urls.py @@ -1,30 +1,43 @@ -from django_xmlrpc.views import handle_xmlrpc - -from django.conf.urls import include, url +from django.urls import include, path, re_path from django.conf.urls.static import static from django.conf import settings - +from django.views.generic import RedirectView # Uncomment the next two lines to enable the admin: from django.contrib import admin from django.contrib.auth import views as auth_views +from .api import api + +from django_xmlrpc.views import handle_xmlrpc from markdownx import urls as markdownx +from two_factor.urls import urlpatterns as tf_urls +from two_factor import views as otp_views admin.autodiscover() urlpatterns = [ - # Examples: - url("accounts/login/", auth_views.LoginView.as_view(template_name="login.html")), - url(r"^xmlrpc/$", handle_xmlrpc, name="xmlrpc"), - url("accounts/logout/", auth_views.LogoutView.as_view(template_name="logout.html")), - url(r"^", include("system.urls")), - url(r"^admin-xml/$", handle_xmlrpc), + re_path("accounts/login/", otp_views.LoginView.as_view()), + re_path(r"^xmlrpc/$", handle_xmlrpc, name="xmlrpc"), + re_path(r"^admin-xml/$", handle_xmlrpc), + re_path( + "accounts/logout/", auth_views.LogoutView.as_view(template_name="logout.html") + ), + # Include each of our apps' URLs + re_path(r"^", include("system.urls")), + # Include changelog URLs + re_path(r"^changelog/", include("changelog.urls")), + # Include external apps' URLs + re_path("markdownx/", include(markdownx)), + re_path("", include(tf_urls)), # Uncomment the admin/doc line below to enable admin documentation: - url("admin/doc/", include("django.contrib.admindocs.urls")), + re_path("admin/doc/", include("django.contrib.admindocs.urls")), # Uncomment the next line to enable the admin: - url(r"^admin/", admin.site.urls), - url("markdownx/", include(markdownx)), + re_path(r"^admin/", admin.site.urls), + # API effectively has its own urls specified in api.py, besides its builtin docs + # Redirect /api/ to the docs just for convenience? + re_path("^api/$", RedirectView.as_view(url="/api/docs")), + path("api/", api.urls), ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/admin_site/os2borgerpc_admin/wsgi.py b/admin_site/os2borgerpc_admin/wsgi.py old mode 100755 new mode 100644 index 9f2c34e0..6df42700 --- a/admin_site/os2borgerpc_admin/wsgi.py +++ b/admin_site/os2borgerpc_admin/wsgi.py @@ -13,6 +13,7 @@ framework. """ + import os import sys diff --git a/admin_site/requirements.txt b/admin_site/requirements.txt old mode 100755 new mode 100644 index 9dcad587..587c7377 --- a/admin_site/requirements.txt +++ b/admin_site/requirements.txt @@ -1,21 +1,23 @@ +Django==4.2.11 crispy-bootstrap5==0.6 -Django==3.2.17 -django-crispy-forms==1.14.0 -django-extensions==3.2.0 -ipython==8.4.0 -django-markdownx==3.0.1 +django-crispy-forms==2.1.0 +django-extensions==3.2.3 +django-markdownx==4.0.7 +django-ninja==0.22.2 +django-otp==1.1.6 django-storages==1.12.3 +django-two-factor-auth[phonenumberslite]==1.14.0 django-xmlrpc==0.1.8 -google-api-core==2.8.2 -google-auth==2.9.1 -google-cloud-core==2.3.1 -google-cloud-storage==2.4.0 -google-crc32c==1.3.0 -google-resumable-media==2.3.3 -googleapis-common-protos==1.56.4 -gunicorn==20.1.0 -psycopg2-binary==2.9.3 -python-dateutil==2.8.2 -requests==2.28.1 -whitenoise==6.2.0 -black==22.6.0 +google-api-core==2.8.2 # If using Google Cloud +google-auth==2.9.1 # If using Google Cloud +google-cloud-core==2.3.1 # If using Google Cloud +google-cloud-storage==2.4.0 # If using Google Cloud +google-crc32c==1.3.0 # If using Google Cloud +google-resumable-media==2.3.3 # If using Google Cloud +googleapis-common-protos==1.56.4 # If using Google Cloud +gunicorn==22.0.0 +psycopg-binary==3.1.18 # Used in the example docker-compose.yml +psycopg==3.1.18 # Used in the example docker-compose.yml +python-dateutil==2.8.2 # Required by django-xmlrpc +requests==2.31.0 +whitenoise==6.6.0 # If you don't have a web server in front to serve static files diff --git a/admin_site/static/css/changelog.css b/admin_site/static/css/changelog.css old mode 100755 new mode 100644 index 4650d384..bc32d395 --- a/admin_site/static/css/changelog.css +++ b/admin_site/static/css/changelog.css @@ -1,4 +1,31 @@ -/* Changelog */ +.siteheader { + margin-left: 20px; +} + +#changelog-container header h1, .card-title { + font-size: 2.4rem; +} + +#changelog-container h1 + h2 { + margin-top: 0.9rem; +} + +.changelog-content h1 { + margin-top: 2rem; +} + +.changelog-content h2, .changelog-content h3 { + margin-top: 1.6rem; +} + +.changelog-content h1 { + font-size: 2.15rem; +} + +.changelog-content h2 { + font-size: 1.6rem; +} + .changelog-item { min-width: 10rem; border-top: solid 1px #aaa; @@ -124,7 +151,7 @@ nav.pagination-wrapper { bottom: -50px; } -h2.card-title { +.card-title { padding-bottom: 0.5em; color: black; } diff --git a/admin_site/static/css/custom.css b/admin_site/static/css/custom.css old mode 100755 new mode 100644 index 33298886..052159ac --- a/admin_site/static/css/custom.css +++ b/admin_site/static/css/custom.css @@ -5,7 +5,7 @@ */ -/* TODO: The contents of this file should be merged to the custom Bootstrap build +/* TODO: The contents of this file should be merged to the custom Bootstrap build or their related templates */ @@ -52,6 +52,14 @@ ul.nav li ul li.active { font-style: italic; } .selected > td{ background-color: var(--bs-cyan); } +.batch:not(:empty)::before { content: "(" } +.batch:not(:empty)::after { content: ")" } + +#scriptform textarea { + min-width: 90vh; + height: 40vh; +} + /* Forms */ input.phantom { display: none; } @@ -82,6 +90,36 @@ li.addusertrigger {position: relative;} li.addusertrigger:hover ul.adduserlist {display: block} li.selected {background-color: var(--bs-gray);} +/* Picklist.html */ + +/* checkbox */ +.li-checkbox { margin-left: 10px; margin-right: 10px;} + +/* picklist */ +.pick-list-available { + max-height: 400px; + background-color: var(--bs-white); + padding-bottom: 0px; + overflow: auto; +} +/* accept and cancel buttons */ +.dropdown-buttons { + padding: 5px; + bottom: 0; + background-color: var(--bs-white); +} + +.alert { + position: static; +} + +.list-group-item { + position: static; +} + +.translate-toast { + right: 10%; +} /* Documentation */ @@ -101,20 +139,25 @@ div.docscontainer .nav-list>li>a:hover {background: var(--bs-gray-dark); text-de .inline {display: inline} -@media screen and (max-width: 1535px) { +/* Media queries / Responsiveness */ + +@media screen and (max-width: 1735px) { /* Make jobs and computer -> jobs look decent down until around 1080px width */ #jobsearchnav { width: 9rem; } .jobtable th, .jobtable td { padding: .75rem .75rem!important; } + /* Make images look better at a lower res too */ + .images .sublevelnav { + width: 170px; + } + + .images th { + word-wrap: anywhere; + } +} + +@media screen and (max-width: 1535px) { /* Hide computer description from status page at lower resolution */ #site-status-table th:nth-of-type(3), #site-status-table th:nth-of-type(4), #site-status-table td:nth-of-type(3), #site-status-table td:nth-of-type(4) { display: none; } } - -.batch:not(:empty)::before { content: "(" } -.batch:not(:empty)::after { content: ")" } - -#scriptform textarea { - min-width: 90vh; - height: 40vh; -} diff --git a/admin_site/static/css/wake_plan.css b/admin_site/static/css/wake_plan.css old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/Audit_doc_da.pdf b/admin_site/static/docs/Audit_doc_da.pdf new file mode 100644 index 00000000..7f75c03c Binary files /dev/null and b/admin_site/static/docs/Audit_doc_da.pdf differ diff --git a/admin_site/static/docs/Audit_doc_en.pdf b/admin_site/static/docs/Audit_doc_en.pdf new file mode 100644 index 00000000..7f75c03c Binary files /dev/null and b/admin_site/static/docs/Audit_doc_en.pdf differ diff --git a/admin_site/static/docs/Audit_doc_sv.pdf b/admin_site/static/docs/Audit_doc_sv.pdf new file mode 100644 index 00000000..7f75c03c Binary files /dev/null and b/admin_site/static/docs/Audit_doc_sv.pdf differ diff --git "a/admin_site/static/docs/Guide_til_brug_af_str\303\270mbesparingsfunktioner.pdf" "b/admin_site/static/docs/Guide_til_brug_af_str\303\270mbesparingsfunktioner.pdf" old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/LICENSE b/admin_site/static/docs/LICENSE old mode 100755 new mode 100644 diff --git "a/admin_site/static/docs/OS2BorgerPC-sikkerhedsoverv\303\245gning.pdf" "b/admin_site/static/docs/OS2BorgerPC-sikkerhedsoverv\303\245gning.pdf" old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/OS2BorgerPC_security_rules_da.pdf b/admin_site/static/docs/OS2BorgerPC_security_rules_da.pdf new file mode 100644 index 00000000..3708c75b Binary files /dev/null and b/admin_site/static/docs/OS2BorgerPC_security_rules_da.pdf differ diff --git a/admin_site/static/docs/OS2BorgerPC_security_rules_en.pdf b/admin_site/static/docs/OS2BorgerPC_security_rules_en.pdf new file mode 100644 index 00000000..3708c75b Binary files /dev/null and b/admin_site/static/docs/OS2BorgerPC_security_rules_en.pdf differ diff --git a/admin_site/static/docs/OS2BorgerPC_security_rules_sv.pdf b/admin_site/static/docs/OS2BorgerPC_security_rules_sv.pdf new file mode 100644 index 00000000..c13f021a Binary files /dev/null and b/admin_site/static/docs/OS2BorgerPC_security_rules_sv.pdf differ diff --git a/admin_site/static/docs/Wake_plan_user_guide_da.pdf b/admin_site/static/docs/Wake_plan_user_guide_da.pdf new file mode 100644 index 00000000..77a68561 Binary files /dev/null and b/admin_site/static/docs/Wake_plan_user_guide_da.pdf differ diff --git a/admin_site/static/docs/Wake_plan_user_guide_en.pdf b/admin_site/static/docs/Wake_plan_user_guide_en.pdf new file mode 100644 index 00000000..77a68561 Binary files /dev/null and b/admin_site/static/docs/Wake_plan_user_guide_en.pdf differ diff --git a/admin_site/static/docs/Wake_plan_user_guide_sv.pdf b/admin_site/static/docs/Wake_plan_user_guide_sv.pdf new file mode 100644 index 00000000..c0685336 Binary files /dev/null and b/admin_site/static/docs/Wake_plan_user_guide_sv.pdf differ diff --git a/admin_site/static/docs/configuring_customer_admins.pdf b/admin_site/static/docs/configuring_customer_admins.pdf new file mode 100644 index 00000000..ee5fc1ef Binary files /dev/null and b/admin_site/static/docs/configuring_customer_admins.pdf differ diff --git a/admin_site/static/docs/customer_admin_guide_da.pdf b/admin_site/static/docs/customer_admin_guide_da.pdf new file mode 100644 index 00000000..d5125940 Binary files /dev/null and b/admin_site/static/docs/customer_admin_guide_da.pdf differ diff --git a/admin_site/static/docs/customer_admin_guide_en.pdf b/admin_site/static/docs/customer_admin_guide_en.pdf new file mode 100644 index 00000000..d5125940 Binary files /dev/null and b/admin_site/static/docs/customer_admin_guide_en.pdf differ diff --git a/admin_site/static/docs/customer_admin_guide_sv.pdf b/admin_site/static/docs/customer_admin_guide_sv.pdf new file mode 100644 index 00000000..fc8a5439 Binary files /dev/null and b/admin_site/static/docs/customer_admin_guide_sv.pdf differ diff --git a/admin_site/static/docs/img/api/api_docs.png b/admin_site/static/docs/img/api/api_docs.png new file mode 100644 index 00000000..4f4af48c Binary files /dev/null and b/admin_site/static/docs/img/api/api_docs.png differ diff --git a/admin_site/static/docs/img/api/api_docs_test_4.png b/admin_site/static/docs/img/api/api_docs_test_4.png new file mode 100644 index 00000000..f9b21d7c Binary files /dev/null and b/admin_site/static/docs/img/api/api_docs_test_4.png differ diff --git a/admin_site/static/docs/img/api/api_docs_test_5.png b/admin_site/static/docs/img/api/api_docs_test_5.png new file mode 100644 index 00000000..7c5490b5 Binary files /dev/null and b/admin_site/static/docs/img/api/api_docs_test_5.png differ diff --git a/admin_site/static/docs/img/api/api_docs_test_6.png b/admin_site/static/docs/img/api/api_docs_test_6.png new file mode 100644 index 00000000..28df0dbf Binary files /dev/null and b/admin_site/static/docs/img/api/api_docs_test_6.png differ diff --git a/admin_site/static/docs/img/api/api_docs_test_7.png b/admin_site/static/docs/img/api/api_docs_test_7.png new file mode 100644 index 00000000..15d884aa Binary files /dev/null and b/admin_site/static/docs/img/api/api_docs_test_7.png differ diff --git a/admin_site/static/docs/img/changelogs/1.png b/admin_site/static/docs/img/changelogs/1.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/changelogs/2.png b/admin_site/static/docs/img/changelogs/2.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/changelogs/3.png b/admin_site/static/docs/img/changelogs/3.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/changelogs/4.png b/admin_site/static/docs/img/changelogs/4.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/changelogs/5.png b/admin_site/static/docs/img/changelogs/5.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/1.png b/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/1.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/10.png b/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/10.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/15.png b/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/15.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/16.png b/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/16.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/17.png b/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/17.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/18.png b/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/18.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/2.png b/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/2.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/3.png b/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/3.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/4.png b/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/4.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/5.png b/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/5.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/6.png b/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/6.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/7.png b/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/7.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/8.png b/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/8.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/9.png b/admin_site/static/docs/img/os2borgerpc_kiosk_guide_to_update_wifi/9.png old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/wake_plan/nuc_bios_start_page.jpg b/admin_site/static/docs/img/wake_plan/nuc_bios_start_page.jpg old mode 100755 new mode 100644 diff --git a/admin_site/static/docs/img/wake_plan/nuc_bios_wake_up_power_failure_setting.jpg b/admin_site/static/docs/img/wake_plan/nuc_bios_wake_up_power_failure_setting.jpg old mode 100755 new mode 100644 diff --git a/admin_site/static/font/MaterialIcons-Regular.ttf b/admin_site/static/font/MaterialIcons-Regular.ttf old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Bold.eot b/admin_site/static/font/lato/Lato-Bold.eot old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Bold.ttf b/admin_site/static/font/lato/Lato-Bold.ttf old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Bold.woff b/admin_site/static/font/lato/Lato-Bold.woff old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Bold.woff2 b/admin_site/static/font/lato/Lato-Bold.woff2 old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Bold.woff2.1 b/admin_site/static/font/lato/Lato-Bold.woff2.1 old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Italic.eot b/admin_site/static/font/lato/Lato-Italic.eot old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Italic.svg b/admin_site/static/font/lato/Lato-Italic.svg old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Italic.ttf b/admin_site/static/font/lato/Lato-Italic.ttf old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Italic.woff b/admin_site/static/font/lato/Lato-Italic.woff old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Italic.woff2 b/admin_site/static/font/lato/Lato-Italic.woff2 old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Italic.woff2.1 b/admin_site/static/font/lato/Lato-Italic.woff2.1 old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Italic.woff2.2 b/admin_site/static/font/lato/Lato-Italic.woff2.2 old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Light.eot b/admin_site/static/font/lato/Lato-Light.eot old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Light.svg b/admin_site/static/font/lato/Lato-Light.svg old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Light.ttf b/admin_site/static/font/lato/Lato-Light.ttf old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Light.woff b/admin_site/static/font/lato/Lato-Light.woff old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Light.woff2 b/admin_site/static/font/lato/Lato-Light.woff2 old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Regular.eot b/admin_site/static/font/lato/Lato-Regular.eot old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Regular.svg b/admin_site/static/font/lato/Lato-Regular.svg old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Regular.ttf b/admin_site/static/font/lato/Lato-Regular.ttf old mode 100755 new mode 100644 diff --git a/admin_site/static/font/lato/Lato-Regular.woff2 b/admin_site/static/font/lato/Lato-Regular.woff2 old mode 100755 new mode 100644 diff --git a/admin_site/static/img/anne_dorte_bach_sorthvid.jpg b/admin_site/static/img/anne_dorte_bach_sorthvid.jpg old mode 100755 new mode 100644 diff --git a/admin_site/static/img/cropped-magenta_logo-2.png b/admin_site/static/img/cropped-magenta_logo-2.png old mode 100755 new mode 100644 diff --git a/admin_site/static/js/README.md b/admin_site/static/js/README.md new file mode 100644 index 00000000..947ee99b --- /dev/null +++ b/admin_site/static/js/README.md @@ -0,0 +1,37 @@ +# Overview + +Each JavaScript file in this project, and a brief description of its role: + +| Name | Description | +| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| changelog_list.js | Handles Changelog/News, specifically syntax highlighting of code and showing/hiding various levels of comments | +| configlist.js | | +| custom.js | General JavaScript, either things used globally or small blobs of JavaScript for specific pages | +| jobs_list.js | | +| policy_list.js | | +| script_edit.js | | +| script_search.js | | +| security_events_list.js | | +| wake_change_event.js | Handle ability to return to the last visited wake plan, setting some required fields as required and making it faster to setup a wake change event through auto fill | +| wake_plan.js | Handle ability to return to the last visited wake planHandle switches, | + +## Configlist + +It's used to generate the config list for both Computers, Groups and the Site. + +How it works: + +File loading sequence: +Main page loads: configlist.js, templates.html and list.html +list.html loads item.html for each item in the list on the overview page +templates.html **also** loads item.html, but for a specific item that's being edited? + +There are five relevant files: + +| File | Description | +| -------------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| A main page | Either site_settings.html, site_groups.html or pcs/form.html. It loads list.html and templates.html and passes context data to them | +| templates.html | Contains the edit modal, and therefore the form. | +| list.html | Loads item.html and passes context to it | +| item.html | Handles how each config is shown on the main list. When templates.html loads it, it's within a form | +| configlist.js | | diff --git a/admin_site/static/js/changelog_list.js b/admin_site/static/js/changelog_list.js old mode 100755 new mode 100644 diff --git a/admin_site/static/js/configlist.js b/admin_site/static/js/configlist.js old mode 100755 new mode 100644 diff --git a/admin_site/static/js/custom.js b/admin_site/static/js/custom.js old mode 100755 new mode 100644 index 2557aff1..c5b70bd9 --- a/admin_site/static/js/custom.js +++ b/admin_site/static/js/custom.js @@ -1,3 +1,45 @@ + +// This event displays the notification message in the toast element, when the page is loaded +document.addEventListener('DOMContentLoaded', (event) => { + + // First check if there is a page-notification in the cookie with the response from the server + let notification = document.cookie.match(/\bpage-notification\s*=\s*([^;]+)/) + + if(notification) { + try { + + let descriptor = JSON.parse(decodeURIComponent(notification[1])) + + // The bootstrap 5 toast html element, located in the notification.html file and must be included in the html to display the toast + const toastElement = document.getElementById("toast") + const toastBody = toastElement.firstElementChild.firstElementChild + + let toast_color="bg-success" + // if autoHide is set to true, the toast will disappear automatically, default is 5 seconds + let autoHide = true + + // Reset the toast color if the message type is error + if (descriptor["type"] == "error") { + toast_color = "bg-danger" + autoHide = false + } + + toastElement.classList.add(toast_color) + toastBody.innerText = descriptor["message"] + + const toast = new bootstrap.Toast(toastElement, {autohide: autoHide}) + toast.show() + + } catch (e) { + console.error(e) + } + // Set the cookie to a past date, so it will be deleted + document.cookie = 'page-notification=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/' + } +}); + + + // Set up global BibOS instance used for accessing utility methods var BibOS (function($) { @@ -37,31 +79,26 @@ var BibOS $('#editconfig_value').attr('maxlength', 4096) - var m = document.cookie.match(/\bbibos-notification\s*=\s*([^;]+)/) - if(m) { - try { - var descriptor = JSON.parse(decodeURIComponent(m[1])) - notification = $('.bibos-notification').first() - if (descriptor["type"] == "error") { - notification.addClass("alert-danger") - } else { - notification.addClass("alert-success") - } - notification.toggleClass(["d-block", "d-none"]) - notification.html(descriptor["message"]).fadeIn() - } catch (e) { - /* If there was an exception here, then the cookie was malformed -- - print the exception to the console and continue, clearing the - broken cookie */ - console.error(e) - } - document.cookie = 'bibos-notification=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/' - } - if(location.href.match(documentation_match)) { this.setupDocumentationBackLinks() } + + // TODO: With this we can link directly to a specific tab + // The functionality can be used to make tab forms redirect to whatever the current tab is, after pressing "Save" on + // the form. + // Example: This URL should go directly to site configs: + // http://localhost:9999/site/magenta/settings/#configs-tab + // In other words you trigger it based off the ID of the button activating it, rather than the ID of the tab + // itself. + if (window.location.hash) { + var someTabTriggerEl = document.querySelector(window.location.hash) + var tab = new bootstrap.Tab(someTabTriggerEl) + tab.show() + // Now remove the tab's highlighting + tab._element.blur() + } + }, setupDocumentationBackLinks: function() { var ref = document.referrer || '' @@ -237,7 +274,7 @@ var BibOS lastInsert(elem) }, setupJobInfoButtons: function(rootElem) { - // initialize all popovers. + // initialize all job info popovers. var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')) var popoverList = popoverTriggerList.map(function (popoverTriggerEl) { return new bootstrap.Popover(popoverTriggerEl) @@ -245,6 +282,7 @@ var BibOS var t = this + // JOBINFOBUTTON $(rootElem).find('.jobinfobutton').on('show.bs.popover', function(e) { // hide all popovers before a new popover is shown. popoverTriggerList.map(function (popoverTriggerEl) { @@ -257,7 +295,7 @@ var BibOS }) }, setupSecurityEventLogInfoButtons: function(rootElem) { - // initialize all popovers. + // initialize all security event log info popovers. var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')) var popoverList = popoverTriggerList.map(function (popoverTriggerEl) { return new bootstrap.Popover(popoverTriggerEl) @@ -291,6 +329,13 @@ var BibOS // set content from backend data and redraw popover. triggerElem.attr("data-bs-content", data) popover.setContent() + + const parser = new DOMParser(); + const dataHTML = parser.parseFromString(data, 'text/html'); + + const jobLog = dataHTML.getElementById("job-log").innerText + + addEventListenerForClipBoardButton(jobLog) }, 'error': function() { } @@ -303,7 +348,7 @@ var BibOS b.init() $(function() { b.onDOMReady() }) - // Setup support for CSRFToken in ajax calls + //(Setup support for CSRFToken in ajax calls $.ajaxSetup({ beforeSend: function(xhr, settings) { if (!b.csrfSafeMethod(settings.type) && b.sameOrigin(settings.url)) { @@ -347,3 +392,67 @@ function oldBrowserWarning() { window.addEventListener('load', function() { oldBrowserWarning() }) + +// Function to get the value of a named cookie +function getCookie(name) { + const value = `; ${document.cookie}`; + const parts = value.split(`; ${name}=`); + if (parts.length === 2) return parts.pop().split(';').shift(); +} + +/* Currently only used by the job log copy button */ +function addEventListenerForClipBoardButton(log) { + let btn = document.getElementById("clipboard-button") + + btn.addEventListener('click', () => { + + navigator.clipboard.writeText(log) + + btn.getElementsByClassName("copy-btn-text-orig")[0].classList.add('d-none') + btn.lastElementChild.classList.remove('d-none') + }) +} + +/* General purpose copy button */ +/* It expects to receive a parent element containing elements with the classes: + * copy-btn: The button to attach the event listener to, which copies + * copy-text: The element containing the text to copy + * after-copy-text: The element containing the text to be shown after copying +*/ +function copy_button(el) { + const btn = el.getElementsByClassName('copy-btn')[0] + + btn.addEventListener('click', () => { + + const text_to_copy = el.getElementsByClassName('copy-text')[0].innerText + const el_to_show_after_copy = el.getElementsByClassName('after-copy-text')[0] + + // Remove the ugly focus brorder around the btn after clicking it + btn.blur() + + navigator.clipboard.writeText(text_to_copy) + + el_to_show_after_copy.classList.remove('d-none') + }) +} + +function copy_api_key(event) { + const btn = event.currentTarget + btn.blur() // Remove the focus around the button after copying + navigator.clipboard.writeText(btn.parentElement.firstElementChild.innerText) + btn.parentElement.lastElementChild.classList.remove('d-none') +} + + +// Activate all popovers except those for job info and security event logs +$(document).ready(function(){ + $('[data-toggle="popover"]').popover(); +}); + +// This function is used in the picklist.html file, to display the names +// correctly, if it contains chars like ' or " +const parser = new DOMParser() +function htmlDecode(input) { + let doc = parser.parseFromString(input, "text/html") + return doc.documentElement.textContent +} diff --git a/admin_site/static/js/jobs_list.js b/admin_site/static/js/jobs_list.js old mode 100755 new mode 100644 index 621f77dd..2ee0a545 --- a/admin_site/static/js/jobs_list.js +++ b/admin_site/static/js/jobs_list.js @@ -34,7 +34,7 @@ $(function(){ } var script_link = '' + this.script_name + '' var pc_link = '' + this.pc_name + '' - var user_link = this.user != ''? '' + this.user + '' : 'Ingen bruger' + var user_link = this.user != ''? '' + this.user + '' : gettext("No user") var item = $(BibOS.expandTemplate( 'job-entry', $.extend(this, { @@ -94,7 +94,7 @@ $(function(){ pagination.empty() var jobsearch = this - var previous_item = $('
  • navigate_before Forrige
  • ') + var previous_item = $('
  • navigate_before ' + gettext("Previous") + '
  • ') if (data.has_previous) { previous_item.removeClass("disabled") previous_item.find('a').on("click", function() { @@ -120,7 +120,7 @@ $(function(){ item.appendTo(pagination) }) - var next_item = $('
  • Næste navigate_next
  • ') + var next_item = $('
  • ' + gettext("Next") + ' navigate_next
  • ') if (data.has_next) { next_item.removeClass("disabled") next_item.find('a').on("click", function() { diff --git a/admin_site/static/js/policy_list.js b/admin_site/static/js/policy_list.js old mode 100755 new mode 100644 index ac633e8f..f22ec0ab --- a/admin_site/static/js/policy_list.js +++ b/admin_site/static/js/policy_list.js @@ -11,17 +11,21 @@ var PolicyList = function() { this.scriptInputs = [] // These two snippets of HTML should match what's inside item.html - this.hiddenParamField = function (name, type, mandatory, default_value) { + this.hiddenParamField = function (name, type, required, default_value) { return '' + + '"' + (required == 'True' ? ' required="required"' : '') + '/>' } this.visibleParamField = function (input) { + if (input.type == 'TEXT_FIELD') { + input.default_value = input.default_value.split(",")[0] + } return '
    ' + input.name + ': ' + ((input.type == 'BOOLEAN') ? '' : input.default_value) @@ -43,6 +47,8 @@ return 'time' case 'PASSWORD': return 'password' + case 'TEXT_FIELD': + return 'textfield' default: return 'text' } @@ -111,7 +117,7 @@ $('#addpolicyscriptdialog input').removeAttr('disabled') $('#addpolicyscriptdialog').modal('show') }, - editScript: function(clickElem, id) { + editScript: function(clickElem, id, defaultValues) { $("#editpolicyscriptdialog .modal-body").html('') // delete old inputs // loop over all input fields in the list view, and render fields for them in the modal @@ -121,13 +127,37 @@ var t = $(elm) var label = t.next('.policy-script-print').find('.policy-script-print-name') const type = BibOS.PolicyList.getFieldType(t.attr('data-inputtype')) - var newElement = $('', { - type: type, - name: "edit_" + t.attr('name'), - id: "edit_" + t.attr('name'), - checked: (type === 'checkbox' && t.val() === 'True'), - class: (type !== 'checkbox') ? 'form-control' : 'form-control form-check-input', - }) + if ( type == "textfield") { + var newElement = $('', { + type: type, + name: "edit_" + t.attr('name'), + id: "edit_" + t.attr('name'), + checked: (type === 'checkbox' && t.val() === 'True'), + class: (type !== 'checkbox') ? 'form-control' : 'form-control form-check-input', + }) + } if (type == "file") { /* In principle, it'd be nice (for display purposes) to copy the FileList from the hidden input into the modal dialog -- but @@ -155,7 +185,7 @@ // generate the hidden input fields and divs to render the parameters for the selected script for(var i = 0; i < BibOS.PolicyList.scriptInputs.length; i++) { paramName = submitName + '_' + scriptPk + '_param_' + i - param_fields += this.hiddenParamField(paramName, BibOS.PolicyList.scriptInputs[i].type, BibOS.PolicyList.scriptInputs[i].mandatory, BibOS.PolicyList.scriptInputs[i].default_value) + param_fields += this.hiddenParamField(paramName, BibOS.PolicyList.scriptInputs[i].type, BibOS.PolicyList.scriptInputs[i].required, BibOS.PolicyList.scriptInputs[i].default_value) param_fields += this.visibleParamField(BibOS.PolicyList.scriptInputs[i]) } @@ -165,7 +195,7 @@ submitEditDialog: function(policy_id) { var wrapper = $("#" + policy_id) - var modalInputs = $("#editpolicyscriptdialog .modal-body input") + var modalInputs = $("#editpolicyscriptdialog .modal-body .form-control") /* Check that each of our mandatory inputs has a value (or that its corresponding hidden input field already has a value) */ var count = 0 diff --git a/admin_site/static/js/script_edit.js b/admin_site/static/js/script_edit.js old mode 100755 new mode 100644 index e27f4f94..c0bdb632 --- a/admin_site/static/js/script_edit.js +++ b/admin_site/static/js/script_edit.js @@ -62,9 +62,10 @@ 'script-input', data )) + elem.find('input.name-input')[0].required = true elem.find('input.mandatory-input')[0].checked = elem.find('input.mandatory-input')[0].value != "false" elem.find('select').val(data['value_type']) - if (elem.find('select')[0].value == "BOOLEAN") { + if (elem.find('select')[0].value == "BOOLEAN" || elem.find('select')[0].value == "TEXT_FIELD") { elem.find('input.mandatory-input')[0].disabled = true } elem.find('select')[0].addEventListener("change", type_check) @@ -104,6 +105,8 @@ default_input.attr('type', 'number') } else if (input_type == "TIME") { default_input.attr('type', 'time') + } else if (input_type == "TEXT_FIELD") { + default_input.attr('type', 'textfield') } else { default_input[0].disabled = true } @@ -126,7 +129,7 @@ function type_check(event) { index = event.target.name.slice(13, -5), ++index checkboxes = document.getElementsByClassName("mandatory-input") default_values = document.getElementsByClassName("default-input") - if (event.target.value == "BOOLEAN") { + if (event.target.value == "BOOLEAN" || event.target.value == "TEXT_FIELD") { checkboxes[index].checked = false checkboxes[index].disabled = true } else { @@ -135,7 +138,9 @@ function type_check(event) { } default_values[index].disabled = false default_values[index].value = "" - if (event.target.value == "STRING") { + if (event.target.value == "TEXT_FIELD") { + default_values[index].type = "textfield" + } else if (event.target.value == "STRING") { default_values[index].type = "text" } else if (event.target.value == "DATE") { default_values[index].type = "date" @@ -158,4 +163,4 @@ function script_refresh(saved_script_inputs) { } $.each( saved_script_inputs, function() { BibOS.ScriptEdit.addInput('#script-inputs', this)}) -} \ No newline at end of file +} diff --git a/admin_site/static/js/script_search.js b/admin_site/static/js/script_search.js old mode 100755 new mode 100644 diff --git a/admin_site/static/js/security_events_list.js b/admin_site/static/js/security_events_list.js old mode 100755 new mode 100644 index fb5ac688..34cc2cf5 --- a/admin_site/static/js/security_events_list.js +++ b/admin_site/static/js/security_events_list.js @@ -37,13 +37,14 @@ $(function(){ appendEntries: function(dataList) { var container = this.elem + $.each(dataList.results, function() { - const maybe_note = this.note? 'Note sat ved håndtering:
    ' + this.note : '' + const maybe_note = this.note? '' + gettext("Note set during handling:") + '
    ' + this.note : '' var info_button = '
    -{% endblock %} diff --git a/admin_site/templates/system/configs/item.html b/admin_site/templates/system/configs/item.html old mode 100755 new mode 100644 index 54271648..540e8f36 --- a/admin_site/templates/system/configs/item.html +++ b/admin_site/templates/system/configs/item.html @@ -3,12 +3,11 @@ {{ key }} - + - - {{ value }} + {{ value }}

    @@ -19,6 +18,6 @@ delete{% translate "Delete" %}

    - + diff --git a/admin_site/templates/system/configs/list.html b/admin_site/templates/system/configs/list.html old mode 100755 new mode 100644 diff --git a/admin_site/templates/system/configs/templates.html b/admin_site/templates/system/configs/templates.html old mode 100755 new mode 100644 diff --git a/admin_site/templates/system/event_rules/event_rule_server_confirm_delete.html b/admin_site/templates/system/event_rules/event_rule_server_confirm_delete.html new file mode 100644 index 00000000..2152a2bc --- /dev/null +++ b/admin_site/templates/system/event_rules/event_rule_server_confirm_delete.html @@ -0,0 +1,50 @@ +{% extends "site_with_navigation.html" %} +{% load crispy_forms_tags %} +{% load i18n %} +{% load custom_tags %} + +{% block specific_title %} +{% translate "Delete offline rule" %}: {{ eventruleserver.name }} +{% endblock %} + +{% block specific_content %} +
    +
    +

    {% translate "Note" %}

    +
      +
    • + {% translate "Offline Rule"|bold as offline_rule %} + {% translate "Events"|bold as events %} + {% blocktranslate trimmed %} + If a {{offline_rule}} is deleted, the related {{events}} will also be deleted. + {% endblocktranslate %} +
    • +
    • + {% translate "Groups"|bold as groups %} + {% translate "Email recipients"|bold as email_recipients %} + {% translate "the Offline Rule"|bold as the_offline_rule %} + {% blocktranslate trimmed %} + Associated {{groups}} and {{email_recipients}} will be removed from {{the_offline_rule}}. + {% endblocktranslate %} +
    • +
    • + {% translate "The Groups"|bold as the_groups %} + {% translate "the Email recipients"|bold as the_email_recipients %} + {% translate "NOT" as NOT %} + {% blocktranslate trimmed %} + {{the_groups}} and {{the_email_recipients}} themselves will {{NOT}} be deleted. + {% endblocktranslate %} +
    • +
    +
    +

    {% translate "Are you sure you wish to delete the Offline Rule" %} + {{ eventruleserver.name }}?

    + +
    + {% csrf_token %} + {{ form|crispy }} + + {% translate "Cancel" %} +
    +
    +{% endblock %} \ No newline at end of file diff --git a/admin_site/templates/system/security_problems/confirm_delete.html b/admin_site/templates/system/event_rules/security_problem_confirm_delete.html old mode 100755 new mode 100644 similarity index 92% rename from admin_site/templates/system/security_problems/confirm_delete.html rename to admin_site/templates/system/event_rules/security_problem_confirm_delete.html index 06f18ed9..b041b704 --- a/admin_site/templates/system/security_problems/confirm_delete.html +++ b/admin_site/templates/system/event_rules/security_problem_confirm_delete.html @@ -14,9 +14,9 @@

    {% translate "Note" %}

    • {% translate "Security Rule"|bold as security_rule %} - {% translate "Security Events"|bold as security_events %} + {% translate "Events"|bold as events %} {% blocktranslate trimmed %} - If a {{security_rule}} is deleted, the related {{security_events}} will also be deleted. + If a {{security_rule}} is deleted, the related {{events}} will also be deleted. {% endblocktranslate %}
    • diff --git a/admin_site/templates/system/event_rules/shared_navigation.html b/admin_site/templates/system/event_rules/shared_navigation.html new file mode 100644 index 00000000..435eb432 --- /dev/null +++ b/admin_site/templates/system/event_rules/shared_navigation.html @@ -0,0 +1,50 @@ +{% extends "site_with_navigation.html" %} +{% load crispy_forms_tags %} +{% load i18n %} +{% load custom_tags %} + +{% block specific_title %} +{% translate "Monitoring Rules" %} +{% endblock %} + +{% block subnav %} +
      + +
        + {% for el in event_listeners %} +
      • + {% if el|get_model_name == "EventRuleServer" %} + desktop_access_disabled + {% else %} + gpp_maybe + {% endif %} + + {{ el.name }} + + {% if el == selected %} + {% if user.is_superuser or site_membership.site_user_type == site_membership.SITE_ADMIN %} + + clear + + {% endif %} + {% endif %} +
      • + {% endfor %} +
      +
      +{% endblock %} diff --git a/admin_site/templates/system/event_rules/site_event_rules_server.html b/admin_site/templates/system/event_rules/site_event_rules_server.html new file mode 100644 index 00000000..f505fc51 --- /dev/null +++ b/admin_site/templates/system/event_rules/site_event_rules_server.html @@ -0,0 +1,108 @@ +{% extends "system/event_rules/shared_navigation.html" %} +{% load crispy_forms_tags %} +{% load i18n %} +{% load custom_tags %} + +{% block specific_content %} +{% translate "Add group to surveillance" as g_add %} +{% translate "Remove monitored group" as g_remove %} +{% translate "Add email recipient" as e_add %} +{% translate "Remove recipient" as e_remove %} +{% translate "None chosen" as empty_t %} +
      + + {% if selected %} +

      + desktop_access_disabled + {% translate "Details about" %} {{ selected.name }} + {% comment %} + TODO later? + + {% endcomment %} +

      + {% else %} +

      + desktop_access_disabled + {% translate "New offline rule" %} +

      + {% endif %} + {% include 'notification.html' %} + +
      + {% csrf_token %} + +
      + {% translate "Note" %} +
        + {% translate "all"|bold as all %} + {% translate "empty"|italic as empty %} +
      • {% blocktranslate trimmed %} + If the rule does not have a Group added, the rule will apply to {{all}} Computers. + {% endblocktranslate %}
      • +
      • {% blocktranslate trimmed %} + If you want to temporarily disable a rule, you can create an {{empty}} Group (i.e. a Group with no Computers) + and set this Group as the monitored Group. + {% endblocktranslate %}
      • +
      • {% blocktranslate trimmed %} + If a PC is a member of a group with one or more supervisors, those supervisors will receive any email warnings + related to that PC instead of the recipients set here. + {% endblocktranslate %}
      • +
      • {% blocktranslate trimmed %} + The rule is only active during the monitor period. We recommend choosing the period such that you avoid + e.g. offline events when the PC has been shut down for the night. + {% endblocktranslate %}
      • +
      +
      +
      +
      + + + + + {{ form.name|as_crispy_field }} + +
      +

      {% translate "Monitor period" %}

      +

      + {% translate "From" %} + {{ form.monitor_period_start }} + {% translate "Until" %} + {{ form.monitor_period_end }} +

      +
      + + {{ form.maximum_offline_period|as_crispy_field }} + + {{ form.level|as_crispy_field }} + + {{ form.description|as_crispy_field }} + +
      + +
      + +

      + + {% include 'widgets/picklist.html' with submit_name='alert_groups' selected_list=selected_groups available_list=available_groups identifier='gruppe' add_text=g_add remove_text=g_remove empty_text=empty_t site_url=site.uid target_section='groups' %} +

      +

      + + {% include 'widgets/picklist.html' with submit_name='alert_users' selected_list=selected_users available_list=available_users identifier='modtager' add_text=e_add remove_text=e_remove empty_text=empty_t site_url=site.uid target_section='users' %} +

      + +
      + +
      + +
      + + +
      + +
      + +
      +{% endblock %} diff --git a/admin_site/templates/system/event_rules/site_security_problems.html b/admin_site/templates/system/event_rules/site_security_problems.html new file mode 100644 index 00000000..bdfa9082 --- /dev/null +++ b/admin_site/templates/system/event_rules/site_security_problems.html @@ -0,0 +1,91 @@ +{% extends "system/event_rules/shared_navigation.html" %} +{% load crispy_forms_tags %} +{% load i18n %} +{% load custom_tags %} + +{% block specific_content %} +{% translate "Add group to surveillance" as g_add %} +{% translate "Remove monitored group" as g_remove %} +{% translate "Add email recipient" as e_add %} +{% translate "Remove recipient" as e_remove %} +{% translate "None chosen" as empty_t %} +
      + + {% if selected %} +

      + gpp_maybe + {% translate "Details about" %} {{ selected.name }} + {% comment %} + TODO later? + + {% endcomment %} +

      + {% else %} +

      + gpp_maybe + {% translate "New security rule" %} +

      + {% endif %} + {% include 'notification.html' %} + +
      + {% csrf_token %} + +
      + {% translate "Note" %} +
        + {% translate "all"|bold as all %} + {% translate "empty"|italic as empty %} +
      • {% blocktranslate trimmed %} + If the rule does not have a Group added, the rule will apply to {{all}} Computers. + {% endblocktranslate %}
      • +
      • {% blocktranslate trimmed %} + If you want to temporarily disable a rule, you can create an {{empty}} Group (i.e. a Group with no Computers) + and set this Group as the monitored Group. + {% endblocktranslate %}
      • +
      • {% blocktranslate trimmed %} + If a PC is a member of a group with one or more supervisors, those supervisors will receive any email warnings + related to that PC instead of the recipients set here. + {% endblocktranslate %}
      • +
      +
      +
      +
      + + + + + {{ form.name|as_crispy_field }} + {{ form.security_script|as_crispy_field }} + {{ form.level|as_crispy_field }} + {{ form.description|as_crispy_field }} + +
      + +
      + +

      + + {% include 'widgets/picklist.html' with submit_name='alert_groups' selected_list=selected_groups available_list=available_groups identifier='gruppe' add_text=g_add remove_text=g_remove empty_text=empty_t site_url=site.uid target_section='groups' %} +

      +

      + + {% include 'widgets/picklist.html' with submit_name='alert_users' selected_list=selected_users available_list=available_users identifier='modtager' add_text=e_add remove_text=e_remove empty_text=empty_t site_url=site.uid target_section='users' %} +

      + +
      + +
      + +
      + + +
      + +
      + +
      +{% endblock %} diff --git a/admin_site/templates/system/jobs/info.html b/admin_site/templates/system/jobs/info.html old mode 100755 new mode 100644 index dcca5c0c..8348f1b1 --- a/admin_site/templates/system/jobs/info.html +++ b/admin_site/templates/system/jobs/info.html @@ -1,20 +1,25 @@ {% load i18n %} -{% if job.failed %} - +{% if job.finished %} + + + + refresh + + {% translate "Restart job" %} + + +
      {% endif %} + {% if job.log_output %} + + content_copy + {% translate "Copy log to the clipboard" %} + {% translate "Log copied!" %} +

      {% translate "Log output" %}

      -
      {{job.log_output|escape}}
      +
      {{job.log_output|escape}}
      {% endif %} diff --git a/admin_site/templates/system/jobs/restart.html b/admin_site/templates/system/jobs/restart.html old mode 100755 new mode 100644 index 9d605120..f59f62da --- a/admin_site/templates/system/jobs/restart.html +++ b/admin_site/templates/system/jobs/restart.html @@ -20,4 +20,5 @@ {% translate "No" %} + {% endblock %} diff --git a/admin_site/templates/system/jobs/site_jobs.html b/admin_site/templates/system/jobs/site_jobs.html old mode 100755 new mode 100644 index 60e05382..1f8190dd --- a/admin_site/templates/system/jobs/site_jobs.html +++ b/admin_site/templates/system/jobs/site_jobs.html @@ -9,9 +9,6 @@ {% block head_javascripts %} {% endblock %} @@ -38,11 +35,11 @@

      {% translate "Status" %}

      {% for s in status_choices%}
      -
      -
      +
      {% include 'notification.html' %} - - - - {% translate "Script" as script_label %} - {% translate "User" as user_label %} - {% translate "Created" as create_label %} - {% translate "Started" as start_label %} - {% translate "Finished" as finish_label %} - {% translate "Status" as status_label %} - {% translate "Computer" as computer_label %} - {% include 'widgets/orderby_th_ajax.html' with label=script_label action="BibOS.JobList.orderby('batch__script__name')" slug='script' %} - {% include 'widgets/orderby_th_ajax.html' with label=user_label action="BibOS.JobList.orderby('user__username')" slug='user' %} - {% include 'widgets/orderby_th_ajax.html' with label=create_label action="BibOS.JobList.orderby('created')" slug='created' %} - {% include 'widgets/orderby_th_ajax.html' with label=start_label action="BibOS.JobList.orderby('started')" slug='started' %} - {% include 'widgets/orderby_th_ajax.html' with label=finish_label action="BibOS.JobList.orderby('finished')" slug='finished' %} - {% include 'widgets/orderby_th_ajax.html' with label=status_label action="BibOS.JobList.orderby('status')" slug='status' %} - {% include 'widgets/orderby_th_ajax.html' with label=computer_label action="BibOS.JobList.orderby('pc__name')" slug='computer' %} - {# Job-info-button #} - - - - - - - - - - - - -
      {% translate "Loading data..." %}
      - -
      +
      + + + + {% translate "Script" as script_label %} + {% translate "User" as user_label %} + {% translate "Created" as create_label %} + {% translate "Started" as start_label %} + {% translate "Finished" as finish_label %} + {% translate "Status" as status_label %} + {% translate "Computer" as computer_label %} + {% include 'widgets/orderby_th_ajax.html' with label=script_label action="BibOS.JobList.orderby('batch__script__name')" slug='script' %} + {% include 'widgets/orderby_th_ajax.html' with label=user_label action="BibOS.JobList.orderby('user__username')" slug='user' %} + {% include 'widgets/orderby_th_ajax.html' with label=create_label action="BibOS.JobList.orderby('created')" slug='created' %} + {% include 'widgets/orderby_th_ajax.html' with label=start_label action="BibOS.JobList.orderby('started')" slug='started' %} + {% include 'widgets/orderby_th_ajax.html' with label=finish_label action="BibOS.JobList.orderby('finished')" slug='finished' %} + {% include 'widgets/orderby_th_ajax.html' with label=status_label action="BibOS.JobList.orderby('status')" slug='status' %} + {% include 'widgets/orderby_th_ajax.html' with label=computer_label action="BibOS.JobList.orderby('pc__name')" slug='computer' %} + {# Job-info-button #} + + + + + + + + + + + + +
      {% translate "Loading data..." %}
      + +
      +
      - + {% endblock %} diff --git a/admin_site/templates/system/pcgroups/confirm_delete.html b/admin_site/templates/system/pcgroups/confirm_delete.html old mode 100755 new mode 100644 diff --git a/admin_site/templates/system/pcgroups/form.html b/admin_site/templates/system/pcgroups/form.html deleted file mode 100755 index 80bc275e..00000000 --- a/admin_site/templates/system/pcgroups/form.html +++ /dev/null @@ -1,19 +0,0 @@ -{% extends "site_with_navigation.html" %} -{% load crispy_forms_tags %} - -{% load i18n %} - -{% block specific_title %} -{% translate "New group" %} -{% endblock %} - -{% block specific_content %} -
      -
      - {% csrf_token %} - {{ form|crispy }} - - {% translate "Cancel" %} -
      -
      -{% endblock %} diff --git a/admin_site/templates/system/pcgroups/policy_list/item.html b/admin_site/templates/system/pcgroups/policy_list/item.html old mode 100755 new mode 100644 index 57656971..3ca58838 --- a/admin_site/templates/system/pcgroups/policy_list/item.html +++ b/admin_site/templates/system/pcgroups/policy_list/item.html @@ -27,14 +27,14 @@ {% if params != '#PARAMS#' %} {% for param in params %} {% if param.input.value_type != 'FILE' %} - {# Even though it looks complicated, the logic for mandatory parameters is simple enough: the server won't overwrite a parameter that already has a value with an empty value, so the browser doesn't need to enforce the non-emptiness check (and, indeed, it shouldn't for files!) #} + {# Even though it looks complicated, the logic for mandatory parameters is simple enough: The browser won't enforce the non-emptiness check for mandatory passwords or files if a value is stored in the database #} {% if param.input.value_type != 'PASSWORD' %} - + {% else %} - + {% endif %} {% else %} - + {% endif %}
      @@ -71,11 +71,17 @@ {% endif %}
      -

      - + edit{% translate "Edit" %} diff --git a/admin_site/templates/system/pcgroups/policy_list/list.html b/admin_site/templates/system/pcgroups/policy_list/list.html old mode 100755 new mode 100644 diff --git a/admin_site/templates/system/pcgroups/policy_list/templates.html b/admin_site/templates/system/pcgroups/policy_list/templates.html old mode 100755 new mode 100644 diff --git a/admin_site/templates/system/pcgroups/site_groups.html b/admin_site/templates/system/pcgroups/site_groups.html old mode 100755 new mode 100644 index 9cef7592..e6e6baff --- a/admin_site/templates/system/pcgroups/site_groups.html +++ b/admin_site/templates/system/pcgroups/site_groups.html @@ -21,20 +21,20 @@

      @@ -44,12 +44,12 @@ {% block specific_content %}
      + {% if site.groups.all %}

      {% translate "Details about" %} {{ selected_group.name }}

      {% include 'notification.html' %}
      {% translate "Details about" %} {{ selected_group.n {{ form.pcs.errors }}
      - - + + computer - +
      {% translate "Add a computer to the group" as add_c %} {% translate "Remove computer from the group" as remove_c %} - {% include 'widgets/picklist.html' with submit_name='pcs' selected_list=selected_pcs available_list=available_pcs identifier='computer' add_text=add_c remove_text=remove_c site_url=site.uid target_section='computers' %} + {% translate "None chosen" as empty_t %} + {% include 'widgets/picklist.html' with submit_name='pcs' selected_list=selected_pcs available_list=available_pcs identifier='computer' add_text=add_c remove_text=remove_c empty_text=empty_t site_url=site.uid target_section='computers' %} + + {# supervisor picklist #} +
      +

      + {% translate "Add a supervisor for the group" as add_s %} + {% translate "Remove a supervisor for the group" as remove_s %} + + + {% translate 'This is used to control who receives the e-mails for Events, ie. Security Events or Offline Events. If one or more Supervisors are set for a given Group, these people will receive the e-mails instead of those set in the Monitoring Rule' as help_text %} + + {% include 'widgets/picklist.html' with submit_name='supervisors' selected_list=selected_users available_list=available_users identifier='supervisor' add_text=add_s remove_text=remove_s empty_text=empty_t site_url=site.uid target_section='users' %} +

      +
      {# SecurityProblem #} - {% if security_problems_incl_site %} + {% if event_rules_incl_site %}
      -

      {% translate "Associated Security Rules" %}

      +

      {% translate "Effective monitoring rules for the group" %}

        - {% for problem in security_problems_incl_site %} -
      • {{ problem }}
      • + {% for e in event_rules_incl_site %} +
      • + {% if e|get_model_name == "EventRuleServer" %} + desktop_access_disabled + {{ e }} + + {% else %} + gpp_maybe + {{ e }} + {% endif %} +
      • {% endfor %}
      @@ -126,8 +151,13 @@

      {% translate "Details about" %} {{ selected_group.n {% translate "Note" %}
      • {% translate 'If a script that takes arguments is added to the list, then these arguments are to be entered first by clicking "Edit", before you can click "Save changes"' %}.
      • -
      • {% translate "Editing the script arguments will not make the script run again" %}.
      • + {% if site.rerun_asc %} +
      • {% translate "Editing the script arguments will make the script run again on all Computers in the Group. This can be toggled off under Site settings" %}.
      • + {% else %} +
      • {% translate "Editing the script arguments will not make the script run again. This can be changed under Site settings" %}.
      • + {% endif %}
      • {% translate "Computers already in the group only run newly added scripts, but Computers newly added to the Group run all the scripts on the list" %}.
      • +
      • {% translate "Removing a script from the Group will NOT remove the effect of the script from the Computers in the Group" %}.

      {% include 'system/pcgroups/policy_list/list.html' with entries=selected_group.ordered_policy policy_id='group_policies' %} @@ -165,7 +195,11 @@

      {% translate "Details about" %} {{ selected_group.n } } - + {% else %} +

      {% translate "Groups" %}

      +

      {% translate "No groups were found" %}

      +

      {% translate "Clik the 'Add new group' button in the menu to the left to create a group" %}

      + {% endif %}

    @@ -40,23 +40,16 @@

    {% translate "Details about" %} {{ selected_pc.name }} - {% if selected_pc.security_events.count > 0 %} - - - - - - {% endif %}

    {% include 'notification.html' %}
    - + {% translate "Registered" %}: {{ pc.created }} - + {% translate "Last check-in" %}: {% if selected_pc.last_seen %} {{ selected_pc.last_seen|timesince }} {% translate "ago" %} @@ -64,8 +57,8 @@

    {% translate "Never" %} {% endif %} - - {% translate "Last security event received" %}: + + {% translate "Last event received" %}: {% if security_event %} {{ security_event.reported_time|timesince }} {% translate "ago" %} {% else %} @@ -79,13 +72,13 @@

    @@ -93,10 +86,11 @@

    - +
    + {{ form.mac|as_crispy_field }} {{ form.uid|as_crispy_field }} {{ form.name|as_crispy_field }} {{ form.description|as_crispy_field }} @@ -113,14 +107,15 @@

    {{ form.pc_groups.errors }}
    - + queue
    {% translate "Add computer to group" as add_c %} {% translate "Remove computer from group" as remove_c %} - {% include 'widgets/picklist.html' with submit_name='pc_groups' selected_list=selected_groups available_list=available_groups identifier='gruppe' add_text=add_c remove_text=remove_c site_url=site.uid target_section='groups' %} + {% translate "None chosen" as empty_t %} + {% include 'widgets/picklist.html' with submit_name='pc_groups' selected_list=selected_groups available_list=available_groups identifier='gruppe' add_text=add_c remove_text=remove_c empty_text=empty_t site_url=site.uid target_section='groups' %}

    @@ -145,29 +140,24 @@

    - {% translate "Script" as script_label %} - {% translate "Created" as created_label %} - {% translate "Started" as started_label %} - {% translate "Finished" as finished_label %} - {% translate "Status" as status_label %} - {% include 'widgets/orderby_th_reload.html' with key='batch__script__name' label=script_label anchor='#jobs' %} - {% include 'widgets/orderby_th_reload.html' with key='created' label=created_label anchor='#jobs' %} - {% include 'widgets/orderby_th_reload.html' with key='started' label=started_label anchor='#jobs' %} - {% include 'widgets/orderby_th_reload.html' with key='finished' label=finished_label anchor='#jobs' %} - {% include 'widgets/orderby_th_reload.html' with key='status' label=status_label anchor='#jobs' %} - {# Job-info-button #} + + + + + + {# Job-info-button #} {% for job in joblist %} - - - - - + + + +
    {% translate "Script" %}{% translate "Created" %}{% translate "Started" %}{% translate "Finished" %}{% translate "Status" %}{% translate "Info" %}
    + {{job.batch.script.name}} {{job.batch.name}} {{job.created|default:'-'}}{{job.started|default:'-'}}{{job.finished|default:'-'}}{{job.status_translated}}{{job.created|default:'-'}}{{job.started|default:'-'}}{{job.finished|default:'-'}}{{job.status_translated}} {% if job.has_info %} delete - {% translate "Remove" %} + {% translate "Delete" %}
    -

    \ No newline at end of file +
    diff --git a/admin_site/templates/system/scripts/update.html b/admin_site/templates/system/scripts/update.html old mode 100755 new mode 100644 index 8e4396d8..f61fe1fa --- a/admin_site/templates/system/scripts/update.html +++ b/admin_site/templates/system/scripts/update.html @@ -13,16 +13,17 @@ add {% translate "Add new" %} {% if is_security %} - {% translate "Security Script" %} + {% translate "security script" %} {% else %} - {% translate "Script" %} + {% translate "script" %} {% endif %} + {% translate "Find ..." as ph %}
    - +
    {% endif %} +
    + {% if form.instance.created %} +

    + {% translate "Created" %}: {{ form.instance.created }} + {% if form.instance.user_created %} + ({{ form.instance.user_created }}) + {% endif %} +

    + {% endif %} + + {% if form.instance.modified %} +

    + {% translate "Modified" %}: {{ form.instance.modified }} + {% if form.instance.user_modified %} + ({{ form.instance.user_modified }}) + {% endif %} +

    + {% endif %} +
    + +
    + {% include 'system/scripts/form.html' with show_code_preview=1 global_script=script.is_global %}
    diff --git a/admin_site/templates/system/security_events/site_security_events.html b/admin_site/templates/system/security_events/site_security_events.html old mode 100755 new mode 100644 index 1ae4cf20..473bc4bc --- a/admin_site/templates/system/security_events/site_security_events.html +++ b/admin_site/templates/system/security_events/site_security_events.html @@ -3,17 +3,13 @@ {% load i18n %} {% block specific_title %} -{% translate "Security Events" %} +{% translate "Events" %} {% endblock %} {% block head_javascripts %} {% endblock %} @@ -68,7 +64,7 @@

    {% translate "Status" %}

    {% endblock %} {% block specific_content %} - +
    @@ -92,7 +88,7 @@

    {% translate "Status" %}

    {% translate "Rule" as rule %} - {% include 'widgets/orderby_th_ajax.html' with label=rule action="BibOS.SecurityEventList.orderby('problem__name')" slug='warning' %} + {% include 'widgets/orderby_th_ajax.html' with label=rule action="BibOS.SecurityEventList.orderby('name')" slug='warning' %} - + diff --git a/admin_site/templates/system/security_problems/site_security_problems.html b/admin_site/templates/system/security_problems/site_security_problems.html deleted file mode 100755 index 955f8e7c..00000000 --- a/admin_site/templates/system/security_problems/site_security_problems.html +++ /dev/null @@ -1,164 +0,0 @@ -{% extends "site_with_navigation.html" %} -{% load crispy_forms_tags %} -{% load i18n %} -{% load custom_tags %} - -{% block specific_title %} -{% translate "Security Rules" %} -{% endblock %} - -{% block javascripts %} - -{% endblock %} - -{% block subnav %} -
    -
    - -
    -
      - {% for sp in site.security_problems.all %} -
    • - - {{ sp.name }} - - {% ifequal sp selected_security_problem %} - {% if user.is_superuser or site_membership.site_user_type == site_membership.SITE_ADMIN %} - - clear - - {% endif %} - {% endifequal %} -
    • - {% endfor %} -
    -
    -{% endblock %} - -{% block specific_content %} -{% translate "Add group to surveillance" as g_add %} -{% translate "Remove monitored group" as g_remove %} -{% translate "Add email recipient" as e_add %} -{% translate "Remove recipient" as e_remove %} -
    - - {% if selected_security_problem %} -

    - {% translate "Details about" %} {{ selected_security_problem.name }} - {% comment %} - TODO later? - - {% endcomment %} -

    - {% include 'notification.html' %} - -
    - {% csrf_token %} - -
    - {% translate "Note" %} -
      - {% translate "all"|bold as all %} - {% translate "empty"|italic as empty %} -
    • {% blocktranslate trimmed %} - If the Security Rule does not have a Group added, the rule will apply to {{all}} Computers. - {% endblocktranslate %}
    • -
    • {% blocktranslate trimmed %} - If you want to temporarily disable a rule, you can create an {{empty}} Group (i.e. a Group with no Computers) - and set this Group as the monitored Group. - {% endblocktranslate %}
    • -
    -
    -
    -
    - - - - - {{ form.name|as_crispy_field }} - {{ form.uid|as_crispy_field }} - {{ form.description|as_crispy_field }} - {{ form.level|as_crispy_field }} - -
    - -
    - {{ form.security_script|as_crispy_field }} - -

    - - {% include 'widgets/picklist.html' with submit_name='alert_groups' selected_list=selected_groups available_list=available_groups identifier='gruppe' add_text=g_add remove_text=g_remove site_url=site.uid target_section='groups' %} -

    -

    - - {% include 'widgets/picklist.html' with submit_name='alert_users' selected_list=selected_users available_list=available_users identifier='modtager' add_text=e_add remove_text=e_remove site_url=site.uid target_section='users' %} -

    - -
    - -
    - -
    - - -
    - - - {% endif %} - - - -
    -{% endblock %} diff --git a/admin_site/templates/system/site_image_versions.html b/admin_site/templates/system/site_image_versions.html deleted file mode 100755 index 7e30b465..00000000 --- a/admin_site/templates/system/site_image_versions.html +++ /dev/null @@ -1,105 +0,0 @@ -{% extends "site_with_navigation.html" %} -{% load i18n %} -{% block specific_title %} - {% translate "Versions" %} -{% endblock %} -{% block subnav %} -
      - {% if site_allowed %} - {% for platform_choice, platform_readable in platform_choices.items %} -
    • - - - {{ platform_readable }} - - -
    • - {% endfor %} -{% endif %} -
    -{% endblock %} -{% block specific_content %} -
    -{% if site_allowed %} - {% if selected_platform_images %} - - {% with selected_platform_images|first as first_obj %} -

    {% translate "Newest version of" %} {{ selected_platform.1 }}

    -
    -
    {% translate "Version" %}
    -
    {{ first_obj.image_version }}
    -
    {% translate "Release date" %}
    -
    {{ first_obj.release_date }}
    -
    {% translate "Operating system" %}
    -
    {{ first_obj.os }}
    -
    {% translate "Release notes" %}
    -
    -
    {{ first_obj.release_notes }}
    -
    -
    - - - cloud_download - - {% translate "Download" %} - -{% endwith %} -{% else %} -

    {% translate "Versions" %}

    -

    {% translate "No versions were found" %}

    -{% endif %} -{% if selected_platform_images.count > 1 %} - -
    -
    - -
    -
    {% translate "Level" %}{% translate "Info" %}{% translate "Device" %}{% translate "Computer" %} {% translate "Incident time" %} {% translate "Time of receipt" %} {% translate "Status" %}
    - - - - - - - - - - - {% for image in selected_platform_images|slice:"1:" %} - - - - - - - - {% endfor %} - {% endif %} - -
    {% translate "Version" %}{% translate "Release date" %}{% translate "Operating system" %}{% translate "Release notes" %}{% translate "Download" %}
    {{ image.image_version }}{{ image.release_date }}{{ image.os }} - - -
    {{ image.release_notes }}
    -
    - - - - - cloud_download - - {% translate "Download" %} - - -
    -
    -{% else %} -

    {% translate "NO ACCESS" %}

    -

    -{% translate "Your organization has no service agreement with a OS2borgerPC provider so no versions are shown." %} -

    -

    {% translate "Please contact a OS2borgerPC provider to learn more." %}

    -{% endif %} -
    -{% endblock %} diff --git a/admin_site/templates/system/site_images.html b/admin_site/templates/system/site_images.html new file mode 100644 index 00000000..47f04a27 --- /dev/null +++ b/admin_site/templates/system/site_images.html @@ -0,0 +1,138 @@ +{% extends "site_with_navigation.html" %} +{% load i18n %} + +{% block specific_title %} +{% translate "Images" %} +{% endblock %} + +{% block subnav %} + +{% endblock %} +{% block specific_content %} +
    + {% if object_list %} + + {% with object_list|first as first_ver %} +

    {% translate "Newest version of" %} {{ selected_product.name }}

    +
    +
    {% translate "Version" %}
    +
    {{ first_ver.image_version }}
    +
    {% translate "Release date" %}
    +
    {{ first_ver.release_date }}
    +
    {% translate "Operating system" %}
    +
    {{ first_ver.os }}
    +
    {% translate "Release notes" %}
    +
    +
    {{ first_ver.release_notes }}
    +
    +
    + {% if not selected_product.multilang or user_language == "da" %} + + + cloud_download + + + {% translate "Download standard image" %} + + {% if first_ver.image_upload_multilang != "#" %} + + + cloud_download + + {% translate "Download multi language image" %} + + {% endif %} + {% else %} + {# Views ensure that all images are multilang if the language isn't Danish #} + + + cloud_download + + {% translate "Download standard image" %} + + {% endif %} + {% endwith %} + {% else %} +

    {% translate "Images" %}

    +

    {% translate "No images were found" %}

    + {% endif %} + {% if object_list.count > 1 %} + +
    +
    + +
    + + + + + + + + + + + + {% for image in object_list|slice:"1:" %} + + + + + + + + {% endfor %} + +
    {% translate "Version" %}{% translate "Release date" %}{% translate "Operating system" %}{% translate "Release notes" %}{% translate "Download" %}
    {{ image.image_version }}{{ image.release_date }}{{ image.os }} + + +
    {{ image.release_notes }}
    +
    + {% if not selected_product.multilang or user_language == "da" %} + + + + cloud_download + + {% translate "Download standard image" %} + + + {% if image.image_upload_multilang != "#" %} + + + + + cloud_download + + {% translate "Download multi language image" %} + + + {% endif %} + {% else %} + + + + + cloud_download + + {% translate "Download standard image" %} + + + {% endif %} +
    +
    + {% endif %} +
    +{% endblock %} diff --git a/admin_site/templates/system/site_list.html b/admin_site/templates/system/site_list.html deleted file mode 100755 index c7578b61..00000000 --- a/admin_site/templates/system/site_list.html +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "sitebase.html" %} -{% load i18n %} - -{% block header_title %} - {% translate "Administrate" %} {% translate "Sites" %} - {% translate "Sites" %}: {{site_list|length}} - {% translate "Computers" %}: {{pcs_count}} -{% endblock %} - -{% block header_class %}container{% endblock %} - -{% block specific_content %} -
    -
    - {% for site in site_list %} - - - {% endfor %} -
    - -
    -{% endblock %} diff --git a/admin_site/templates/system/site_settings/api_keys/api_keys.html b/admin_site/templates/system/site_settings/api_keys/api_keys.html new file mode 100644 index 00000000..b595d006 --- /dev/null +++ b/admin_site/templates/system/site_settings/api_keys/api_keys.html @@ -0,0 +1,55 @@ +{% extends "site_with_navigation.html" %} +{% load crispy_forms_tags %} +{% load i18n %} + +{% block specific_title %} +{% translate "API Keys" %} +{% endblock %} + +{% block specific_content %} +
    + +

    {% translate "API Keys for" %} {{ site }}

    + +
    +
    +
      +
    • {% translate "These API keys are used to access our API. See our" %} {% translate "Documentation" %} {% translate "for more info." %}
    • +
    • {% translate "You can additionally visit the API's own docs at" %} /api/docs, {% translate "as long as you are signed in to the admin site." %}
    • +
    +
    + +
    + + + + + + + + + + + + {% include "system/site_settings/api_keys/partials/list.html" %} + + + + + + + +
    {% translate "Key" %}{% translate "Comment" %}{% translate "Actions" %}
    +
    + {% csrf_token %} + +
    +
    +
    + +
    +
    +{% endblock %} diff --git a/admin_site/templates/system/site_settings/api_keys/partials/list.html b/admin_site/templates/system/site_settings/api_keys/partials/list.html new file mode 100644 index 00000000..924ad11f --- /dev/null +++ b/admin_site/templates/system/site_settings/api_keys/partials/list.html @@ -0,0 +1,36 @@ +{% load i18n %} +{% comment %} +This file is both used to render the initial film-list, and HTMX is using it to re-render the film-list on certain +events/changes. +{% endcomment %} + + +{% for key in api_keys %} + + + {{ key.key }} + + {% translate "API Key copied!" %} + + +
    + +
    + + + +

    +

    + +
    +

    + + +{% empty %} +{% translate "There are currently no API keys" %} +{% endfor %} diff --git a/admin_site/templates/system/site_settings.html b/admin_site/templates/system/site_settings/site_settings.html old mode 100755 new mode 100644 similarity index 75% rename from admin_site/templates/system/site_settings.html rename to admin_site/templates/system/site_settings/site_settings.html index f12d96f3..8b78dee7 --- a/admin_site/templates/system/site_settings.html +++ b/admin_site/templates/system/site_settings/site_settings.html @@ -7,15 +7,9 @@ {% endblock %} {% block javascripts %} - + {% endblock %} - - {% block specific_content %}
    @@ -25,36 +19,48 @@

    {% translate "Settings for" %} {{ site }}

    - -
    + {% csrf_token %} + +
    +
    - {% csrf_token %} - {% include 'system/configs/list.html' with entries=site_configs cnf_id='site_configs' %} - + {% include 'system/configs/templates.html' %}
    +
    diff --git a/admin_site/templates/system/site_status.html b/admin_site/templates/system/site_status.html old mode 100755 new mode 100644 index d0f87f67..c6ce9267 --- a/admin_site/templates/system/site_status.html +++ b/admin_site/templates/system/site_status.html @@ -8,10 +8,21 @@ {% block specific_content %}

    - {% translate "Computers" %} - {% translate "Activated:" %} {{ activated_pcs }} / {{ total_pcs }} + {% translate "computers" as computers %} + {% translate "Total number of" as total_release_before %} + {% translate "Total number of BorgerPC's" as total_bpc %} + {% translate "Total number of Kiosk PC's" as total_kiosk %} + {{computers|capfirst}} + {% translate "Activated:" %} {{ activated_pcs_count }} / {{ total_pcs_count }} {# Originally this was online / activated, but it turns out a computer that isn't activated can still be online #} - {% translate "Online:" %} {{ online_pcs }} / {{ total_pcs }} + {% translate "Online" %}: {{ online_pcs_count }} / {{ total_pcs_count }} + {% translate "OS2borgerPC" %}: {{borgerpc_count}} + {% translate "OS2borgerPC Kiosk" %}: {{borgerpc_kiosk_count}} + {% for release, release_count in releases %} + {% if release_count > 0 %} + {{release}}: {{release_count}} + {% endif %} + {% endfor %}

    @@ -22,7 +33,7 @@

    - + @@ -30,7 +41,7 @@

    {% if pc.is_activated %} diff --git a/admin_site/templates/system/site_two_factor.html b/admin_site/templates/system/site_two_factor.html deleted file mode 100755 index 1bda13ab..00000000 --- a/admin_site/templates/system/site_two_factor.html +++ /dev/null @@ -1,99 +0,0 @@ -{% extends "site_with_navigation.html" %} -{% load i18n %} -{% block specific_title %} -{% translate "Two-factor authentication" %} -{% endblock %} - -{% block head_javascripts %} - -{% endblock %} - -{% block stylesheets %} - -{% endblock %} - -{% block specific_content %} -
    -

    {% translate "Activate: Two-factor authentication for superuser" %}

    -
    - -
      -
    1. - {% translate "Create security key and QR" %}
      - -

      {% translate "Security key:" %}

      - -

      -
      -
    2. -
    3. -

      {% translate "Scan the QR code from step 1 with your authenticator app" %}

      -

      {% translate "Some examples of authenticator apps are:" %}

      - -
    4. -
    5. -

      {% translate "Copy the security key from step 1 and run the two-factor script with it as input" %}

      -

      - {% blocktranslate with name="Totrinsbekræftelse for superuser" %}You can find the script "{{name}}" under the menu item {% endblocktranslate %} - {% translate "Scripts" %}. -

      -
    6. -
    -
    -
    - - -{% endblock %} diff --git a/admin_site/templates/system/site_two_factor_pc.html b/admin_site/templates/system/site_two_factor_pc.html new file mode 100644 index 00000000..6c349695 --- /dev/null +++ b/admin_site/templates/system/site_two_factor_pc.html @@ -0,0 +1,151 @@ +{% extends "site_with_navigation.html" %} +{% load i18n %} +{% block specific_title %} +{% translate "Enable two-factor authentication for superuser login on OS2borgerPC and OS2borgerPC Kiosk" %} +{% endblock %} + +{% block head_javascripts %} + +{% endblock %} + +{% block stylesheets %} + +{% endblock %} + +{% block specific_content %} +
    + +
    +
    + {% translate "Note" %} +
      +
    • {% blocktranslate trimmed %} + This section is related to setting up two-factor authentication for superuser on an OS2borgerPC or OS2borgerPC Kiosk computer. + {% endblocktranslate %}
    • +
    • {% blocktranslate trimmed %} + Two-factor authentication on your admin-site profile is administered from the Users-section. + {% endblocktranslate %}
    • +
    +
    + +
      +
    1. + {% translate "Create security key and QR" %}
      + +
      +

      {% translate "Security key:" %}

      + +

      + + + {% translate "Security Key copied!" %} +

      +
      +
      +
    2. +
    3. +

      {% translate "Scan the QR code from step 1 with your authenticator app" %}

      +

      {% translate "Some examples of authenticator apps are:" %}

      +
    {% translate "Location" %} {% translate "Status" %} {% translate "Latest check-in" %}{% translate "Latest security event received" %}{% translate "Latest event received" %}
    {{pc.name}} - {{ pc.name }} + {{ pc.name }} {% translate "Activated" %}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    {% translate "App" %}{% translate "Platform" %}{% translate "Open Source" %}
    FreeOTP AuthenticatorAndroid, IOScheck
    Aegis AuthenticatorAndroidcheck
    AuthyAndroid, IOSclose
    Microsoft AuthenticatorAndroid, IOSclose
    Google AuthenticatorAndroid, IOSclose
    + +
  • +

    {% translate "Copy the security key from step 1 and run the two-factor script with it as input" %}

    +

    + {% translate "Click on" %} + {% translate "Two-factor authentication for superuser" %} + {% translate "to go to the script" %}. +

    +
  • + +
    +
    + + +{% endblock %} diff --git a/admin_site/templates/system/sites/confirm_delete.html b/admin_site/templates/system/sites/confirm_delete.html new file mode 100644 index 00000000..4b9fe550 --- /dev/null +++ b/admin_site/templates/system/sites/confirm_delete.html @@ -0,0 +1,52 @@ +{% extends "site_with_navigation.html" %} + +{% load i18n %} + +{% block specific_title %} + {% translate "Delete Site" %} +{% endblock %} + +{% block specific_content %} +
    +
    +

    {% translate "Note" %}

    +
      +
    • {% blocktranslate trimmed %} + All Computers, Groups, Jobs, Monitoring Rules, On/Off schedules, + schedule exceptions, associated scripts and local (security) Scripts + on the Site will also be deleted.{% endblocktranslate %}
    • +
    • {% blocktranslate trimmed %} + Any Users that only have access to this Site will also be deleted. + Users that also have access to other Sites will not be deleted.{% endblocktranslate %}
    • +
    • {% translate "It will NOT be possible to restore any of the deleted data later." %}
    • +
    +
    +

    + {% translate "Are you sure you want to delete the Site" %} + {{ selected_site.name }}? +

    +

    + + +

    + + {% csrf_token %} + {{ form }} + + + +
    + + + + +{% endblock %} diff --git a/admin_site/templates/system/sites/display.html b/admin_site/templates/system/sites/display.html new file mode 100644 index 00000000..9ec85cbf --- /dev/null +++ b/admin_site/templates/system/sites/display.html @@ -0,0 +1,32 @@ +{% load i18n %} + +
    + + + home + {{site.name}} + + computer{{site.pcs.count}} + + {% if site_membership.site.customer == site.customer and site_membership.site_user_type == site_membership.CUSTOMER_ADMIN and site.customer.sites.count > 1 %} + + + {% endif %} +
    diff --git a/admin_site/templates/system/sites/list.html b/admin_site/templates/system/sites/list.html new file mode 100644 index 00000000..59891365 --- /dev/null +++ b/admin_site/templates/system/sites/list.html @@ -0,0 +1,107 @@ +{% extends "sitebase.html" %} +{% load i18n %} +{% load crispy_forms_tags %} + +{% block page_type_class%}sites{% endblock %} + +{% block header_title %} + {% translate "Total number of BorgerPC's" as total_bpc_str %} + {% translate "Total number of Kiosk PC's" as total_kiosk_str %} + {% translate "Total number of" as total_release_before_str %} + {% translate "Computers" as computers_str %} + {% translate "Computers total" as computers_total_str %} + {% translate "Administrate" %} {% translate "Sites" %} + {% translate "Sites" %}: {{site_list|length}} + {{computers_total_str}}: {{total_pcs_count}} + {% translate "Activated:" %} {{total_activated_pcs_count}} + {% translate "Online" %}: {{total_online_pcs_count}} + {% translate "OS2borgerPC" %}: {{borgerpc_count}} + {% translate "OS2borgerPC Kiosk" %}: {{borgerpc_kiosk_count}} + {% for release, release_count in releases %} + {% if release_count > 0 %} + {{release}}: {{release_count}} + {% endif %} + {% endfor %} + {% if user.is_superuser %} +
    + {% translate "Admin site version" %}: {{version}} +
    + {% endif %} +{% endblock %} + +{% block header_class %}container-fluid{% endblock %} + +{% block specific_content %} +{% include 'notification.html' %} + + + +
    +
    + {% include 'notification.html' %} + {% if site_membership.site_user_type == site_membership.CUSTOMER_ADMIN %} + + {% endif %} + {% for country, all_customers_in_country in countries_dict.items %} + {% if user.is_superuser %} +

    {{country}}

    + {% endif %} + {% for customer in all_customers_in_country %} + {% if customer.sites %} {# Don't display the customer if they have zero sites #} +
    + {{customer.name}} + {% for site in customer.sites.all %} + {% if site in user_sites %} + {% include "system/sites/display.html" %} + {% endif %} + {% endfor %} +
    + {% endif %} + {% endfor %} + {% endfor %} +
    +
    +{% endblock %} diff --git a/admin_site/templates/system/users/confirm_delete.html b/admin_site/templates/system/users/confirm_delete.html old mode 100755 new mode 100644 index 48622a12..3d164ce5 --- a/admin_site/templates/system/users/confirm_delete.html +++ b/admin_site/templates/system/users/confirm_delete.html @@ -2,18 +2,22 @@ {% load i18n %} {% block specific_title %} -{% translate "Users" %} +{% translate "Delete user" %} {% endblock %} {% block specific_content %} - +

    {% translate "Delete user" %}: {{ selected_user.username }}

    -
    + {% csrf_token %}

    - {% translate "Are you sure you want to delete the user" %}
    + {% if selected_user.user_profile.sitemembership_set.count > 1 %} + {% translate "Are you sure you want to remove this user from the site " %}{{site.name}}:
    + {% else %} + {% translate "Are you sure you want to delete the user" %}
    + {% endif %} {{ selected_user.username }}{% if selected_user.email %} <{{ selected_user.email }}>{% endif %}?

    diff --git a/admin_site/templates/system/users/create.html b/admin_site/templates/system/users/create.html deleted file mode 100755 index aaea88e0..00000000 --- a/admin_site/templates/system/users/create.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends "site_with_navigation.html" %} -{% load i18n %} - -{% block specific_title %} -{% translate "Users" %} -{% endblock %} - -{% block specific_content %} -
    -

    {% translate "Create new user" %}

    -
    - - {% csrf_token %} - {% include 'system/users/form.html' with form_id='create_user_form' %} -

    - - -

    - -
    -
    -
    - -{% endblock %} diff --git a/admin_site/templates/system/users/form.html b/admin_site/templates/system/users/form.html old mode 100755 new mode 100644 index bb38329b..779349f4 --- a/admin_site/templates/system/users/form.html +++ b/admin_site/templates/system/users/form.html @@ -26,6 +26,21 @@
    + {% if user == selected_user and form_id != 'create_user_form' and not user.totpdevice_set.first %} + + {% elif user == selected_user and form_id != 'create_user_form' and user.totpdevice_set.first %} + + {% endif %} + {{ form.email|as_crispy_field }} {{ form.usertype|as_crispy_field }} {{ form.language|as_crispy_field }} diff --git a/admin_site/templates/system/users/link.html b/admin_site/templates/system/users/link.html new file mode 100644 index 00000000..ed129b87 --- /dev/null +++ b/admin_site/templates/system/users/link.html @@ -0,0 +1,65 @@ +{% extends "site_with_navigation.html" %} +{% load crispy_forms_tags %} +{% load i18n %} + +{% block specific_title %} +{% translate "Users" %} +{% endblock %} + +{% block subnav %} +
    + {% if site_membership.site_user_type >= site_membership.CUSTOMER_ADMIN or user.is_superuser %} + + {% endif %} + {% if site_membership.site_user_type >= site_membership.SITE_ADMIN or user.is_superuser %} + + {% endif %} + + + +
    +{% endblock %} + +{% block specific_content %} +
    +

    {% translate "Add existing users from your other sites to the site " %}{{site.name}}

    + {% include 'notification.html' %} +
    + +
    +
    + +{% endblock %} diff --git a/admin_site/templates/system/users/update.html b/admin_site/templates/system/users/update.html old mode 100755 new mode 100644 index 918e09e5..37c5441d --- a/admin_site/templates/system/users/update.html +++ b/admin_site/templates/system/users/update.html @@ -7,26 +7,33 @@ {% block subnav %}
    - - {% if site_membership.site_user_type == site_membership.SITE_ADMIN or user.is_superuser %} + {% if site_membership.site_user_type >= site_membership.CUSTOMER_ADMIN or user.is_superuser %} + + {% endif %} + {% if site_membership.site_user_type >= site_membership.SITE_ADMIN or user.is_superuser %} {% endif %}
      {% for listed_user in user_list %} -
    • +
    • {{ listed_user.username }} - {% if listed_user == selected_user and site_membership.site_user_type == site_membership.SITE_ADMIN or listed_user == selected_user and user.is_superuser %} + {% if listed_user == selected_user and not_customer_admin and site_membership.site_user_type >= site_membership.SITE_ADMIN or listed_user == selected_user and user.is_superuser %} {% translate "Delete user" as delete_name %} - + clear {% endif %} @@ -39,10 +46,14 @@ {% block specific_content %}
      + {% if selected_user %}

      {% translate "Profile:" %} {{ selected_user.username }}

      + {% else %} +

      {% translate "Create new user" %}

      + {% endif %} {% include 'notification.html' %}
      - {% if site_membership.site_user_type != site_membership.SITE_ADMIN and not user.is_superuser and not user == selected_user %} + {% if site_membership.site_user_type < site_membership.SITE_ADMIN and not user.is_superuser and not user == selected_user %}

      {% translate "Site users are not authorized to edit other users. Ask a site admin or Magenta for help." %}

      {% else %}
      {% translate "Profile:" %} {{ selected_user.usernam
      - - - {% endblock %} diff --git a/admin_site/templates/system/wake_plan/confirm_delete.html b/admin_site/templates/system/wake_plan/confirm_delete.html old mode 100755 new mode 100644 index 51f5135e..791acbae --- a/admin_site/templates/system/wake_plan/confirm_delete.html +++ b/admin_site/templates/system/wake_plan/confirm_delete.html @@ -26,7 +26,7 @@

      {% translate "Note" %}

      {% csrf_token %} - {{ form.as_p }} + {{ form }}
      diff --git a/admin_site/templates/system/wake_plan/wake_change_events/confirm_delete.html b/admin_site/templates/system/wake_plan/wake_change_events/confirm_delete.html old mode 100755 new mode 100644 index c4284d42..ef68f806 --- a/admin_site/templates/system/wake_plan/wake_change_events/confirm_delete.html +++ b/admin_site/templates/system/wake_plan/wake_change_events/confirm_delete.html @@ -24,7 +24,7 @@

      {% translate "Note" %}

      {% csrf_token %} - {{ form.as_p }} + {{ form }}
      diff --git a/admin_site/templates/system/wake_plan/wake_change_events/wake_change_event.html b/admin_site/templates/system/wake_plan/wake_change_events/wake_change_event.html old mode 100755 new mode 100644 index 7deb9d14..83fc8421 --- a/admin_site/templates/system/wake_plan/wake_change_events/wake_change_event.html +++ b/admin_site/templates/system/wake_plan/wake_change_events/wake_change_event.html @@ -7,8 +7,10 @@

      {% if selected_event.type == "ALTERED_HOURS" or "altered" in request.resolver_match.url_name %} + schedule {% translate "Altered opening hours" %}: {% else %} + door_front {% translate "Closed days" %}: {% endif %} {% translate 'New exception' as new_ex %} diff --git a/admin_site/templates/system/wake_plan/wake_change_events/wake_change_event_base.html b/admin_site/templates/system/wake_plan/wake_change_events/wake_change_event_base.html old mode 100755 new mode 100644 index 2990bb7f..bc6d6343 --- a/admin_site/templates/system/wake_plan/wake_change_events/wake_change_event_base.html +++ b/admin_site/templates/system/wake_plan/wake_change_events/wake_change_event_base.html @@ -15,33 +15,31 @@ diff --git a/admin_site/templates/system/wake_plan/wake_plan.html b/admin_site/templates/system/wake_plan/wake_plan.html old mode 100755 new mode 100644 index dccf9cbd..3de8ecf7 --- a/admin_site/templates/system/wake_plan/wake_plan.html +++ b/admin_site/templates/system/wake_plan/wake_plan.html @@ -20,7 +20,7 @@

      {{selected_plan.name|default:new_text}}

      • {% translate "If you are unfamiliar with the functionality of on/off schedules, we recommend first reading our" %} - {% translate "User guide to power saving functions in OS2borgerPC" %}. + {% translate "User guide to power saving functions in OS2borgerPC" %}.
      • {% translate "Groups"|bold as groups %} @@ -241,14 +241,15 @@

        {% translate "Exceptions: Closed days and altered openi {{ form.events.errors }}
        - + queue
        {% translate "Add exception to schedule" as ex_add %} {% translate "Remove exception from schedule" as ex_remove %} - {% include 'widgets/wake_plan_picklist.html' with submit_name='wake_change_events' selected_list=selected_wake_change_events available_list=available_wake_change_events identifier='undtagelse' add_text=ex_add remove_text=ex_remove site_url=site.uid target_section='wake_change_event' %} + {% translate "None chosen" as empty_t %} + {% include 'widgets/picklist.html' with submit_name='wake_change_events' selected_list=selected_wake_change_events available_list=available_wake_change_events identifier='undtagelse' add_text=ex_add remove_text=ex_remove empty_text=empty_t site_url=site.uid target_section='wake_change_event' save_state='wake_plan' %} @@ -259,14 +260,14 @@

        {% translate "Groups that follow the schedule" %}< {{ form.groups.errors }}
        - + queue
        {% translate "Add group to schedule" as g_add %} {% translate "Remove group from schedule" as g_remove %} - {% include 'widgets/wake_plan_picklist.html' with submit_name='groups' selected_list=selected_groups available_list=available_groups identifier='gruppe' add_text=g_add remove_text=g_remove site_url=site.uid target_section='groups' %} + {% include 'widgets/picklist.html' with submit_name='groups' selected_list=selected_groups available_list=available_groups identifier='gruppe' add_text=g_add remove_text=g_remove empty_text=empty_t site_url=site.uid target_section='groups' save_state='wake_plan' %} diff --git a/admin_site/templates/system/wake_plan/wake_plan_base.html b/admin_site/templates/system/wake_plan/wake_plan_base.html old mode 100755 new mode 100644 index 16b6f81e..4e9115f4 --- a/admin_site/templates/system/wake_plan/wake_plan_base.html +++ b/admin_site/templates/system/wake_plan/wake_plan_base.html @@ -23,19 +23,19 @@
          {% if wake_week_plans_list.all %} {% for plan in wake_week_plans_list %} -
        • +
        • {{ plan.name }} {% if not plan.enabled %} {% translate "Inactive" %} {% endif %} - {% ifequal plan selected_plan %} + {% if plan == selected_plan %} {% translate "Delete on/off schedule" as delete %} clear - {% endifequal %} + {% endif %}
        • {% endfor %} {% endif %} @@ -44,21 +44,21 @@ {% endblock %} {% block javascripts %} - - {# Function to check for permission to access wake plans #} - {# It's in here instead of the js file above to have access to djangos context #} + {% endblock %} diff --git a/admin_site/templates/login.html b/admin_site/templates/two_factor/_base.html old mode 100755 new mode 100644 similarity index 90% rename from admin_site/templates/login.html rename to admin_site/templates/two_factor/_base.html index c6802b3e..c2a8bd10 --- a/admin_site/templates/login.html +++ b/admin_site/templates/two_factor/_base.html @@ -1,7 +1,4 @@ -{% load crispy_forms_tags %} - {% load i18n %} - @@ -95,7 +92,7 @@ font-family: var(--sans-font); font-size: var(--base-fontsize); } - + /* Make the body a nice central block */ body { color: var(--text); @@ -155,7 +152,7 @@ display: block; } - input[type="text"], + input[type="text"], input[type="password"] { height: 3rem; border: solid 2px var(--accent-bg); @@ -164,9 +161,9 @@ transition: outline .3s; } - input[type="text"]:hover, + input[type="text"]:hover, input[type="password"]:hover, - input[type="text"]:focus, + input[type="text"]:focus, input[type="password"]:focus { outline: solid 2px var(--accent); } @@ -199,7 +196,23 @@ p a:hover, p a:focus { text-decoration: underline; - } + } + + .btn-link { + background-color: transparent; + border: none; + color: var(--accent); + font-size: var(--base-fontsize); + font-weight: 400; + text-decoration: underline; + width: auto; + cursor: pointer; + transition: color .3s; + } + + .btn-link:hover { + color: #122f35; + } .cto { background-color: var(--accent); @@ -211,7 +224,7 @@ font-weight: bold; text-decoration: none; width: auto; - margin: 1.75rem 0; + margin: 1.75rem 0 0; cursor: pointer; transition: background-color .3s; } @@ -221,6 +234,10 @@ background-color: var(--text-light); } + .cto.primary { + margin-right: 0.75rem; + } + .cto.contact { margin-top: 3rem; float: right; @@ -279,14 +296,11 @@ -
          -

          {% translate "Log in" %}: OS2borgerPC

          - {% csrf_token %} - {{ form|crispy }} - {% translate "Log in" as login %} - - -
          + {% block content_wrapper %} +
          + {% block content %}{% endblock %} +
          + {% endblock %}

          {% translate "OS2borgerPC is an open source product. You can download the source code and documentation here:" %} @@ -295,15 +309,15 @@

          {% translate "Log in" %}: OS2borgerPC


          - {% translate "Check updates for OS2borgerPC" %} - {% translate "Send a message to Magenta" %} @@ -313,7 +327,7 @@

          {% translate "Log in" %}: OS2borgerPC

          {% translate "It looks like you're using Internet Explorer. It won't work on this website." as warning %} {% translate "Try opening this website in Microsoft Edge" as link_text %} - diff --git a/admin_site/templates/two_factor/_wizard_actions.html b/admin_site/templates/two_factor/_wizard_actions.html new file mode 100644 index 00000000..785bba08 --- /dev/null +++ b/admin_site/templates/two_factor/_wizard_actions.html @@ -0,0 +1,7 @@ +{% load i18n %} + + +{% if cancel_url %} + {% trans "Cancel" %} +{% endif %} \ No newline at end of file diff --git a/admin_site/templates/two_factor/_wizard_forms.html b/admin_site/templates/two_factor/_wizard_forms.html new file mode 100644 index 00000000..b7ad7663 --- /dev/null +++ b/admin_site/templates/two_factor/_wizard_forms.html @@ -0,0 +1,5 @@ +{% load crispy_forms_tags %} + + {{ wizard.management_form }} + {{ wizard.form|crispy }} +
          \ No newline at end of file diff --git a/admin_site/templates/two_factor/core/backup_tokens.html b/admin_site/templates/two_factor/core/backup_tokens.html new file mode 100644 index 00000000..d7c023b4 --- /dev/null +++ b/admin_site/templates/two_factor/core/backup_tokens.html @@ -0,0 +1,40 @@ +{% extends "site_with_navigation.html" %} +{% load i18n %} + +{% block specific_title %} +{% translate "Two-factor authentication for admin-site login" %} +{% endblock %} + +{% block specific_content %} +
          +

          {% trans "Backup Tokens" %}: {{ request.user.username }}

          +
          +

          {% blocktrans trimmed %}Backup tokens can be used when your authenticator app isn't available.
          + The backup tokens below can be used for login verification.
          If you've used up all your backup tokens, + you can generate a new set of backup tokens.
          Only the backup tokens shown + below will be valid.{% endblocktrans %}

          + + {% if device.token_set.count %} +
            + {% for token in device.token_set.all %} +
          • {{ token.token }}
          • + {% endfor %} +
          +

          {% blocktrans trimmed %}Print these tokens and keep them somewhere safe
          + or save them in e.g. Bitwarden.{% endblocktrans %}

          + {% else %} +

          {% trans "You don't have any backup tokens yet." %}

          + {% endif %} + +
          {% csrf_token %}{{ form.as_p }} + + + arrow_back + + {% trans "Back to user profile" %} + +
          +
          +
          +{% endblock %} \ No newline at end of file diff --git a/admin_site/templates/two_factor/core/login.html b/admin_site/templates/two_factor/core/login.html new file mode 100644 index 00000000..34b3087e --- /dev/null +++ b/admin_site/templates/two_factor/core/login.html @@ -0,0 +1,34 @@ +{% extends "two_factor/_base.html" %} +{% load crispy_forms_tags %} +{% load i18n %} + +{% block content %} +

          {% translate "Log in" %}: OS2borgerPC

          + + {% if wizard.steps.current == 'token' %} +

          {% blocktrans trimmed %}Please enter the token generated by your + authenticator app.{% endblocktrans %}

          + {% elif wizard.steps.current == 'backup' %} +

          {% blocktrans trimmed %}Use this form for entering backup tokens for logging in. + These tokens have been generated for you to print and keep safe. Please + enter one of these backup tokens to login to your account.{% endblocktrans %}

          + {% endif %} + +
          {% csrf_token %} + {{ wizard.management_form|crispy }} + {{ wizard.form.as_table }} + + + {% if wizard.steps.prev %} + + {% endif %} + + {% if backup_tokens %} +

          {% trans "As a last resort, you can use a" %} +

          + {% endif %} +
          +{% endblock %} \ No newline at end of file diff --git a/admin_site/templates/two_factor/core/setup.html b/admin_site/templates/two_factor/core/setup.html new file mode 100644 index 00000000..0b82139b --- /dev/null +++ b/admin_site/templates/two_factor/core/setup.html @@ -0,0 +1,69 @@ +{% extends "site_with_navigation.html" %} +{% load i18n %} + +{% block specific_title %} +{% translate "Two-factor authentication for admin-site login" %} +{% endblock %} + +{% block extra_media %} + {{ form.media }} +{% endblock %} + +{% block specific_content %} +
          +

          {% trans "Enable Two-Factor Authentication for" %} {{ request.user.username }}

          +
          + {% if wizard.steps.current == 'welcome' %} +

          {% blocktrans trimmed %}You are about to take your account security to the + next level. Follow the steps in this wizard to enable two-factor + authentication.{% endblocktrans %}

          + {% elif wizard.steps.current == 'method' %} +

          {% blocktrans trimmed %}Please select which authentication method you would + like to use.{% endblocktrans %}

          + {% elif wizard.steps.current == 'generator' %} +

          {% blocktrans trimmed %}To start using an authenticator app, please use your + smartphone to scan the QR code below. For example, use FreeOTP + Authenticator.{% endblocktrans %}

          +

          QR Code

          +

          {% blocktrans trimmed %}Alternatively, you can use the following secret to + set up TOTP in your authenticator manually.{% endblocktrans %}

          +

          {% translate "TOTP Secret:" %} {{ secret_key }}

          +

          {% blocktrans %}Then, enter the token generated by the app.{% endblocktrans %}

          + + {% elif wizard.steps.current == 'sms' %} +

          {% blocktrans trimmed %}Please enter the phone number you wish to receive the + text messages on. This number will be validated in the next step. + {% endblocktrans %}

          + {% elif wizard.steps.current == 'call' %} +

          {% blocktrans trimmed %}Please enter the phone number you wish to be called on. + This number will be validated in the next step. {% endblocktrans %}

          + {% elif wizard.steps.current == 'validation' %} + {% if challenge_succeeded %} + {% if device.method == 'call' %} +

          {% blocktrans trimmed %}We are calling your phone right now, please enter the + digits you hear.{% endblocktrans %}

          + {% elif device.method == 'sms' %} +

          {% blocktrans trimmed %}We sent you a text message, please enter the tokens we + sent.{% endblocktrans %}

          + {% endif %} + {% else %} + + {% endif %} + {% elif wizard.steps.current == 'yubikey' %} +

          {% blocktrans trimmed %}To identify and verify your YubiKey, please insert a + token in the field below. Your YubiKey will be linked to your + account.{% endblocktrans %}

          + {% endif %} + +
          {% csrf_token %} + {% include "two_factor/_wizard_forms.html" %} + + {% include "two_factor/_wizard_actions.html" %} +
          +
          +
          +{% endblock %} \ No newline at end of file diff --git a/admin_site/templates/two_factor/core/setup_complete.html b/admin_site/templates/two_factor/core/setup_complete.html new file mode 100644 index 00000000..e371246c --- /dev/null +++ b/admin_site/templates/two_factor/core/setup_complete.html @@ -0,0 +1,31 @@ +{% extends "site_with_navigation.html" %} +{% load i18n %} + +{% block specific_title %} +{% translate "Two-factor authentication for admin-site login" %} +{% endblock %} + +{% block specific_content %} +
          +

          {% trans "Enable Two-Factor Authentication for" %} {{ request.user.username }}

          +
          + +

          {% blocktrans trimmed %}Congratulations, you've successfully enabled two-factor + authentication.{% endblocktrans %}

          + + {% if not phone_methods %} + {% trans "Back to user profile" %} + {% else %} +

          {% blocktrans trimmed %}However, it might happen that you don't have access to + your primary token device. To enable account recovery, add a phone + number.{% endblocktrans %}

          + + {% trans "Back to user profile" %} +

          {% trans "Add Phone Number" %}

          + {% endif %} +
          +
          +{% endblock %} \ No newline at end of file diff --git a/admin_site/templates/two_factor/profile/disable.html b/admin_site/templates/two_factor/profile/disable.html new file mode 100644 index 00000000..a489e158 --- /dev/null +++ b/admin_site/templates/two_factor/profile/disable.html @@ -0,0 +1,24 @@ +{% extends "site_with_navigation.html" %} +{% load i18n %} + +{% block specific_title %} +{% translate "Two-factor authentication for admin-site login" %} +{% endblock %} + +{% block specific_content %} +
          +

          {% trans "Disable Two-factor Authentication for" %} {{ request.user.username }}

          +
          +

          {% blocktrans trimmed %}You are about to disable two-factor authentication. This + weakens your account security, are you sure?{% endblocktrans %}

          +
          + {% csrf_token %} + {{ form }}
          + + {% trans "Cancel" %} +
          +
          +
          +{% endblock %} \ No newline at end of file diff --git a/admin_site/templates/widgets/orderby_th_ajax.html b/admin_site/templates/widgets/orderby_th_ajax.html old mode 100755 new mode 100644 diff --git a/admin_site/templates/widgets/orderby_th_reload.html b/admin_site/templates/widgets/orderby_th_reload.html old mode 100755 new mode 100644 diff --git a/admin_site/templates/widgets/pagination.html b/admin_site/templates/widgets/pagination.html old mode 100755 new mode 100644 diff --git a/admin_site/templates/widgets/picklist.html b/admin_site/templates/widgets/picklist.html old mode 100755 new mode 100644 index c4e2e4f4..8ce34d05 --- a/admin_site/templates/widgets/picklist.html +++ b/admin_site/templates/widgets/picklist.html @@ -23,6 +23,9 @@

      + +
    • {% trans 'No options' %}
    • + - -{% else %} - -

      {% translate "Data is missing" %}

      - -{% endif %} diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 00000000..16025e2f --- /dev/null +++ b/compose.yaml @@ -0,0 +1,84 @@ +services: + frontend: + build: + context: . + dockerfile: docker/Dockerfile + target: frontend + command: + npm run watch-sass + volumes: + - .:/code/ + # NOTE: We do not want node_modules on the host machine, so we + # create an additional volume for it. It is important this anonymous + # volume comes after the above bind to work. + - /code/nodejs/node_modules/ + os2borgerpc-admin: + # Defaults in case values aren't passed in via the environment, so 0 (root) isn't used. Justfile overrides them. + # NOTE: Keep in sync with the UID/GID in docker/Dockerfile + environment: + UID: 75030 + GID: 75030 + user: "${UID}:${GID}" + build: + context: . + dockerfile: docker/Dockerfile + target: os2borgerpc + image: os2borgerpcadmin + # NOTE: --workers 1 and --max-requests 1 makes gunicorn run with only + # one worker + respawn it after each request to reload on changes + # to templates/CSS + avoid issues where different workers have cached + # different versions of files so one cycles between seeing different + # codebase versions on browser refresh! + # --reload by itself only reloads on changes to python files + # Another option is reload-extra-file on every template and CSS file, + # but ATM it's apparently not recursive, so a solution like this would + # be needed: + # https://github.com/benoitc/gunicorn/pull/1846#issuecomment-1862496443 + # Open PR to make --reload-extra-file recursive: + # https://github.com/benoitc/gunicorn/pull/1846 + command: + sh -c "python manage.py initialize_database && + python manage.py compilemessages && + gunicorn --reload --workers 1 --max-requests 1 + --reload-extra-file /code/admin_site/locale/da/LC_MESSAGES/django.mo + --reload-extra-file /code/admin_site/locale/da/LC_MESSAGES/djangojs.mo + --reload-extra-file /code/admin_site/locale/sv/LC_MESSAGES/django.mo + --reload-extra-file /code/admin_site/locale/sv/LC_MESSAGES/djangojs.mo + --timeout 0 --config /code/docker/gunicorn-settings.py os2borgerpc_admin.wsgi" + volumes: + - .:/code/ + - ./dev-environment/dev-settings.ini:/user-settings.ini + - ./dev-environment/system_fixtures:/code/admin_site/system/fixtures/ + - ./dev-environment/changelog_fixtures:/code/admin_site/changelog/fixtures/ + depends_on: + - db + ports: + - 9999:9999 + stdin_open: true + tty: true + container_name: bpc_admin_site_django + privileged: true + cron-service: + image: os2borgerpcadmin + volumes: + - .:/code/ + - ./dev-environment/dev-settings.ini:/user-settings.ini + - ./dev-environment/system_fixtures:/code/admin_site/system/fixtures/ + command: ["supercronic", "/crontab"] + entrypoint: [] + depends_on: + - os2borgerpc-admin + db: + image: postgres:latest + restart: always + environment: + # NOTE: These values are only used in the local development + # environment, so it's not particularly important that + # they're secure + POSTGRES_USER: bpc + POSTGRES_PASSWORD: bpc + volumes: + - postgres-data:/var/lib/postgresql/data + container_name: bpc_admin_site_db +volumes: + postgres-data: diff --git a/crontab b/crontab new file mode 100644 index 00000000..38df51b3 --- /dev/null +++ b/crontab @@ -0,0 +1,4 @@ +# must be ended with a new line "LF" (Unix) and not "CRLF" (Windows) +*/10 * * * * /code/admin_site/manage.py check_notifications +5 19 * * 7 /code/admin_site/manage.py clean_up_database +# An empty line is required at the end of this file for a valid cron file. diff --git a/dev-environment/changelog_fixtures/100_changelog.json b/dev-environment/changelog_fixtures/100_changelog.json new file mode 100644 index 00000000..02475e39 --- /dev/null +++ b/dev-environment/changelog_fixtures/100_changelog.json @@ -0,0 +1,202 @@ +[ +{ + "model": "changelog.changelogtag", + "pk": 1, + "fields": { + "name": "Admin site" + } +}, +{ + "model": "changelog.changelogtag", + "pk": 2, + "fields": { + "name": "Scripts" + } +}, +{ + "model": "changelog.changelogtag", + "pk": 3, + "fields": { + "name": "OS2borgerPC" + } +}, +{ + "model": "changelog.changelogtag", + "pk": 4, + "fields": { + "name": "Kiosk" + } +}, +{ + "model": "changelog.changelogtag", + "pk": 5, + "fields": { + "name": "Generelt" + } +}, +{ + "model": "changelog.changelogtag", + "pk": 6, + "fields": { + "name": "Tilgængelighed" + } +}, +{ + "model": "changelog.changelog", + "pk": 2, + "fields": { + "title": "Nye releases af os2borgerpc", + "description": "Vi har netop frigivet nye versioner, som man via den hostede løsning har adgang til, hvis man abonnerer på 'Versioner' (niveau 2).", + "content": "Kære kunder på OS2borgerPC\r\n\r\nVi har netop frigivet nye versioner, som man via den hostede løsning har adgang til, hvis man abonnerer på 'Versioner' (niveau 2).\r\n\r\nDe nye versioner (images) er følgende:\r\n\r\n- OS2borgerPC 3.1.1\r\n- OS2borgerPC Kiosk 1.1.0\r\n\r\n**OS2borgerPC 3.1.1** \r\nVi er blevet opmærksomme på en fejl i OS2borgerPC-imaget 3.1.0, som har resulteret i falske sikkerhedsadvarsler. Specifikt har nogle kunder oplevet at få kontinuerlige sudo-advarsler. \r\nDisse advarsler skyldes, at changeloget identificerer sudo-kørsler under oprettelsen af imaget som nye hændelser. Og det var naturligvis en fejl.\r\n\r\nDerfor har vi nu frigivet et nyt image - 3.1.1 - som ikke har det problem. I den nye version er der desuden en række smårettelser.\r\n\r\nDet nye image har ikke ny funktionalitet ud over rettelsen ift. sikkerhedsadvarsler.\r\n\r\nDerfor anbefales den til nyinstallation, men hvis I allerede har installeret maskiner fra 3.1.0, kan i køre scriptet \"System - Fjern sudo fra auth.log\", og så vil de falske sikkerhedshændelser stoppe.\r\n\r\n**OS2borgerPC Kiosk 1.1.0** \r\nVi har omdøbt OS2displayPC til OS2borgerPC Kiosk for at fjerne eventuel sammenblanding med OS2display, der er en anden løsning.\r\n\r\nImaget har ikke ny funktionalitet, men alle pakkeversionerne er nye, så der vil være langt færre opdateringer at hente efter installationen.\r\n\r\nTil de nørdede: Man kan følge med på GitHub, hvor der er teknisk information om nyeste releases, hvor man også kan få et indblik i noget af den kommende funktionalitet: \r\n[https://github.com/OS2borgerPC/image/blob/master/NEWS.rst](https://github.com/OS2borgerPC/image/blob/master/NEWS.rst) \r\n[https://github.com/OS2borgerPC/server_image/blob/master/NEWS.rst](https://github.com/OS2borgerPC/server_image/blob/master/NEWS.rst)\r\n\r\nDet samme er gældende ift. scripts her: \r\n[https://github.com/os2borgerPC/os2borgerpc-scripts](https://github.com/os2borgerPC/os2borgerpc-scripts)\r\n\r\nHar I spørgsmål, så tøv ikke med at tage fat i os\r\n\r\nVenlig hilsen på vegne af OS2borgerPC-teamet\r\nMorten Kjærsgaard", + "created": "2022-09-01T14:46:24.763", + "updated": "2022-09-01T15:01:35.940", + "published": true, + "tags": [ + 4, + 3 + ] + } +}, +{ + "model": "changelog.changelog", + "pk": 3, + "fields": { + "title": "Sårbarhed i linux", + "description": "Sent mandag (7/3) blev en ny Linux-sårbarhed annonceret.", + "content": "Kære kunder og brugere af OS2borgerPC\r\n\r\nSent mandag (7/3) blev en ny Linux-sårbarhed annonceret. Den fik det mundrette navn CVE-2022-0847 - og bliver derfor i stedet kaldt 'Dirty Pipe'. Sårbarheden giver lokale brugere mulighed for at opnå root-privilegier. Den nye Linux-sårbarhed minder meget om CVE-2016-5195, også kaldet 'Dirty Cow', fra kort før årsskiftet.\r\n\r\nI morges kom Ubuntu med en opdatering, der giver jer følgende muligheder:\r\n\r\n1. I kan vente på de automatiske sikkerhedsopdateringer fra Ubuntu. \r\nOS2borgerPC: Automatiske sikkerhedsopdateringer er konfigureret til at blive installeret som standard, og det vil ske inden for de kommende 24 timer. \r\nKiosk: Automatiske sikkerhedsopdateringer kan slås til ved at køre scriptet \" changelog - Aktivér automatiske opdateringer\" med parametret \"sikkerhed\". Sårbarheden er ikke kritisk for Kiosk, som normalt kører låst i en browser og uden tastatur.\r\n\r\n2. I kan køre scriptet \"System - Opdater alt\" på alle maskiner.\r\n\r\nI begge tilfælde er det vigtigt, at I genstarter PC'erne, for eksempel ved at køre scriptet \"System - Genstart computeren NU\" eller i forbindelse med den daglige nedlukning.\r\n\r\nSig til, hvis I har spørgsmål.\r\n\r\nVenlig hilsen\r\nMorten", + "created": "2022-09-01T15:05:29.340", + "updated": "2022-09-01T15:07:06.225", + "published": false, + "tags": [ + 5, + 4, + 3 + ] + } +}, +{ + "model": "changelog.changelog", + "pk": 4, + "fields": { + "title": "Om appwriter og cd-ord/intowords", + "description": "Vi er i gang med at undersøge mulighederne for at integrere med dysleksiværktøjer.", + "content": "Kære alle brugere af OS2borgerPC\r\n\r\nVi er i gang med at undersøge mulighederne for at integrere med dysleksiværktøjer, og derfor vil jeg bede om en tilkendegivelse fra jer i forhold til, hvilke værktøjer I anvender - eller påtænker at anvende fremover.\r\n\r\nDet er hovedsagelig AppWriter og CD-Ord/Into Words vi har kig på. Vi vil gerne kunne lave en integration, der tilfører OS2borgerPC værdi, uanset om det sker som en klient, som en Rest-integration og/eller via browseren.\r\n\r\nVil I ikke være rare at skrive et par linjer tilbage om jeres værktøjer og om prioriteringen og ønsker?\r\n \r\nGod bededagsferie\r\n\r\nVenlig hilsen\r\nMorten", + "created": "2022-09-01T15:08:19.876", + "updated": "2022-09-01T15:08:19.876", + "published": true, + "tags": [ + 5, + 3 + ] + } +}, +{ + "model": "changelog.changelog", + "pk": 5, + "fields": { + "title": "Nye funktioner i OS2borgerPC", + "description": "Vi har netop frigivet en ny version af OS2borgerPC med nye funktioner", + "content": "Kære alle brugere af OS2borgerPC\r\n\r\nVi har netop frigivet en ny version af OS2borgerPC med nye funktioner:\r\n\r\n- Det er blevet muligt at sætte totrinsbekræftelse (to-faktor login) op ved login til superuser på en OSBorgerPC eller en OS2borgerPC Kiosk. Tak til John og Hvidovre for at samfinansiere.\r\n\r\n- Under \"Computere\" kan man nu klikke på en tilføjet \"Gruppe\" for at navigere derhen\r\n\r\n- og under \"Grupper\" kan man nu tilsvarende klikke på en tilføjet \"Computer\" for at navigere derhen\r\n\r\n- Siden \"Versioner\" er blevet en redesignet og skulle nu gerne være mere intuitiv.\r\n\r\n- Når en fil er uploadet som parameter til et \"Tilknyttet Script\", kan man nu klikke på den for at downloade filen\r\n\r\nVi har desuden fra nogle brugere hørt om et problem i forbindelse med låsning af computeren (menupunktet over sluk/genstart øverst til højre), hvor mapper i hjemmemappen pludselig har manglet, eller genveje på skrivebordet ikke har virket efter computeren har været \"låst\". Oplever man dette, vil vi anbefale at køre scriptet \"OS2borgerPC - Fjern lås fra menuen\". Denne funktion indbygges i fremtidige images.\r\n\r\n**Totrins login** \r\nLidt mere om totrins-login: Funktionen slår tidsbaseret totrinsbekræftelse til for superuser, ved login på en borgerPC.\r\n\r\n![](/media/changelog-images/2022/09/01/8ba29847-e430-46b6-a78c-8563de872e7a.png)\r\n\r\nGå først ind på siden \"Totrinsbekræftelse\" i menuen til venstre på adminsitet for at se processen for at slå totrinsbekræftelse til.\r\n\r\nNår du har genereret en sikkerhedsnøgle på ovenstående side, skal dette script køres med sikkerhedsnøgle som det andet parameter.\r\n\r\n![](/media/changelog-images/2022/09/01/8857695e-b74b-41ed-a652-350065530967.png)\r\n\r\nFra næste login vil der nu for superuser være et ekstra skridt i loginprocessen efter koden, hvor der skal indtastes totrins-koden.\r\n\r\nTager det ikke effekt øjeblikkeligt efter logud, så genstart maskinen.\r\n\r\n**Inputparametre**\r\n\r\n1. Aktivér?: 'ja' slår totrinsbekræftelse til, 'nej' slår det fra.\r\n\r\n2. Sikkerhedsnøgle: Sikkerhedsnøglen som totrinsbekræftelse-changeloget internt har brug for.\r\n\r\nSamme sikkerhedsnøgle for flere computere betyder, at du kan logge ind på flere computere med samme totrins-koder, fremfor at hver computer skal tilføjes individuelt til din totrinsbekræftelse-app.\r\n\r\nDet kan også være relevant at køre scriptet \"OS2borgerPC - Ændr login-timeout\", da det kan være svært at nå at indtaste kode og totrinsbekræftelse på de 15 sekunder, der normalt går, før der logges automatisk ind på Borger-kontoen.\r\n\r\nHar I spørgsmål eller kommentarer, så sig endelig til.\r\n\r\nVenlig hilsen\r\nMorten", + "created": "2022-09-01T15:15:33.437", + "updated": "2022-09-01T15:15:54.824", + "published": true, + "tags": [ + 1 + ] + } +}, +{ + "model": "changelog.changelog", + "pk": 6, + "fields": { + "title": "Nye funktioner", + "description": "Vi har netop frigivet en ny version af OS2borgerPC-portalen med nye funktioner.", + "content": "Kære OS2borgerPC-kunder\r\n\r\nVi har netop frigivet en ny version af OS2borgerPC-portalen med nye funktioner.\r\n\r\n**Nem flytning af scripts** \r\nMan kan nu flytte tilknyttede scripts op og ned på listen via træk-og-slip. \r\nTak til Brian Løvendahl og Vordingborg Kommune for samfinansiering.\r\n\r\n![](/media/changelog-images/2022/09/01/8f0810fa-a017-442f-a9d5-39fb38aaf6aa.png)\r\n\r\n**Valgfri kolonnesortering** \r\nStatus har fået valgfri kolonnesortering. Fra Status-siden skal man nu klikke på selve computernavnet for at gå til computeren frem for et vilkårligt sted på linjen. \r\nTak til John Vishart og Hvidovre Kommune for samfinansiering.\r\n\r\n![](/media/changelog-images/2022/09/01/80a6a5bd-a614-4a59-bda1-93017ed69c1f.png)\r\n\r\n**Link fra jobs-siden til PC** \r\nFra Jobs-siden kan man nu klikke på et computernavn for at gå til computeren.\r\n\r\n![](/media/changelog-images/2022/09/01/a24333ae-8cc9-4d6d-9735-978273ee4b89.png)\r\n\r\n**Se oprettelsestidspunkt** \r\nDer vises nu oprettelsestidspunkt for både Jobs og Computere på deres respektive sider.\r\n\r\n![](/media/changelog-images/2022/09/01/96e30df3-38b2-4438-8a8c-caba9fffa0f8.png)\r\n\r\n**Nye Princh-scripts** \r\nVi har opdateret scripts til Princh til at bruge Princh Cloud Printer, da Princh har meldt ud, at deres eksisterende løsning bliver udfaset ved udgangen af april.\r\n\r\nDe nye scripts til Princh Cloud Printer erstatter de gamle Princh-scripts, så det skulle gerne virke automatisk, når nye computere tilmeldes gruppen - hvis I altså har sat dem op som tilknyttede scripts.\r\n\r\nFor computere, der allerede har Princh installeret, er processen følgende:\r\n\r\n1. Kør scriptet \"Printer - Slet printer\" med navnet på den nuværende Princh-printer.\r\n\r\n2. Kør scriptet \"Printer - Installer Princh Cloud Printer\". Dette vil samtidig slette den gamle version af Princh-programmet.\r\n\r\n3. Kør scriptet \"Printer - Tilføj Princh Cloud Printer\" - scriptet tager de samme parametre som tidligere: \r\n\r\n a. Et selvvalgt printernavn \r\n b. En selvvalgt printer-beskrivelse \r\n c. Printer ID - som er det ID på printeren, i tidligere har fået fra Princh \r\n d. Kør \"Printer - Sæt en standard printer\" med navnet I gav Princh-printeren oven over. Så vil den være forvalgt i programmerne, og i Chrome vil den være forvalgt fremfor PDF-udprintning.\r\n\r\nDet Princh-ikon, der manglede i menuen i den gamle version, når programmet åbnede, er i øvrigt ikke længere et problem, da Princh har rettet fejlen i deres nye version.\r\n\r\nVi håber, I får glæde af de nye funktioner. Og tag endelig fat i os, hvis der er noget, der driller.\r\n\r\nVenlig hilsen fra hele OS2borgerPC-teamet\r\nMarcus, Søren, Heini, Carsten, Emil og Morten", + "created": "2022-09-01T15:26:05.961", + "updated": "2022-09-01T15:44:24.965", + "published": true, + "tags": [ + 1, + 4, + 3, + 2 + ] + } +}, +{ + "model": "changelog.changelog", + "pk": 7, + "fields": { + "title": "Nye funktioner i OS2borgerPC", + "description": "Nye funktioner i OS2borgerPC, crowdfunding om filarkiv og mailingliste.", + "content": "Kære alle OS2borgerPC-venner\r\n\r\nI har alle fået to mails fra mig i de sidste to uger: \r\nDen første mail, fra 11. april, handler om nye funktioner i OS2borgerPC-portalen. \r\nDen anden mail, fra 19. april, handler om at samle tilslutning til et filarkiv i OS2borgerPC. \r\n\r\nI forhold til den første mail vil jeg høre, om I har spørgsmål eller kommentarer.\r\n\r\nOg i forhold til den anden mail er jeg interesseret i at få tilslutning til den gode ide om et filarkiv. 'Tilslutning' i denne sammenhæng betyder også økonomi, så tag gerne fat i mig, hvis I vil høre nærmere eller har mulighed for at bidrage til udviklingen.\r\n\r\nEndelig vil jeg høre, om I kunne tænke jer at komme på den mailingliste, vi langt om længe har fået etableret. Her kommer vi til at skrive sammen om sikkerhed, scripts, Aula, kursusPC'er - ja, lige det I ønsker at drøfte med hinanden og med os i Magenta. Så det er her, I kan få inspiration til jeres borgerPC-løsning, og hvor I kan bidrage med jeres egne erfaringer om OS2borgerPC.\r\n\r\nSend mig en mail, hvis I ikke allerede har gjort det. Så tilmelder jeg jer listen.\r\n\r\nVenlig hilsen\r\nMorten", + "created": "2022-09-05T08:07:21.848", + "updated": "2022-09-05T08:07:21.848", + "published": true, + "tags": [ + 5 + ] + } +}, +{ + "model": "changelog.changelog", + "pk": 8, + "fields": { + "title": "Kommende funktioner", + "description": "Fjernopdatering af scripts, øget performance og nyhedssite på vej", + "content": "Kære OS2borgerPC-kunder\r\n\r\nI foråret og forsommeren har vi brugt et par arbejdsmåneder på at gennemgå og forbedre sikkerhedsadvarsels-changeloget i OS2BorgerPC. Bilal i Hillerød har testet til den store guldmedalje, så vi vil gerne sende en stor tak til Hillerød og Bilal.\r\n\r\nNu, hvor vi har fået gennemskrivningen på plads, skal OS2borgerPC-klienten på jeres PC'er opdateres, for at rettelserne kan slå igennem.\r\n\r\nOS2borgerPC-klienten er det program på maskinerne, der er i kontakt med adminsitet, og som afvikler scripts og sikkerhedsscripts. Det vil komme til at højne sikkerheden på maskinerne og hjælpe i forhold til falske advarsler, som nogle af jer har oplevet.\r\n\r\nFor at forstyrre jer mindst muligt med fejlrettelser har vi lavet en løsning, hvorved vi kan køre scripts på alle computere for alle kunder og brugere. Det betyder, at vi kan opdatere klienten på alle maskiner, og vi vil også kunne frigive rettelser hurtigere end de automatiske opdateringer, hvis vi fx hører om et sikkerhedsproblem i Ubuntu.\r\n\r\nDet er vigtigt for os at understrege, at vi ikke kompromitterer sikkerheden på jeres PC'er ved at fjernkøre et eller flere scripts. Vi øger sikkerheden. Og det er altsammen inden for jeres abonnement.\r\n\r\n**Den, der tier, samtykker**\r\n\r\nInden vi iværksætter 'fjern-scriptingen' vil vi bede jer vende tilbage, hvis I **ikke** ønsker, at vi udfører denne form for kørsler på jeres PC'er. Hører vi ikke fra jer, tillader vi os at sætte scriptingen i gang hos jer hver især. I den kommende tid vil I således kunne se, at jeres PC'er har kørt et \"Opdater klient\"-script som led i denne forbedring.\r\n\r\nFremover vil vi kunne fjern-opdatere jeres klienter automatisk ved større fejlrettelser og forbedringer. Det er noget, mange af jer har efterspurgt.\r\n\r\n**Øget performance**\r\n\r\nVi har også kigget på performance på adminsitet, for der har været udfordringer med, at sitet svarer særligt langsomt på bestemte tidspunkter (1-3 sekunder hvert femte minut). Det har vist sig at give en overbelastning af serveren, at alle maskiner tjekker ind samtidig. Vi har derfor udviklet et script, der spreder tjek-ins på den hostede løsning tilfældigt ud. Vi vil gerne kunne køre dette script på alle maskiner inden for de næste par uger.\r\n\r\nMaskinerne vil stadig inden for 5 minutter afvikle de scripts, I vælger. Men derefter vil det variere, hvornår de starter og afslutter. Resultatet vil blive, at I fremover ikke vil opleve samme forsinkelse på adminsitet på specifikke tidspunkter.\r\n\r\n**Nyhedssite**\r\n\r\nTil sidst har vi arbejdet på en ny sektion på adminsitet til nyheder, som vi vil opdatere, når der eksempelvis er:\r\n\r\n- Nye globale scripts eller forbedringer af de eksisterende\r\n- Ny funktionalitet eller større rettelser på adminsitet\r\n- Nye images af OS2borgerPC og OS2borgerPC Kiosk\r\n\r\nNyhederne lægges op på nyhedssitet, og når der er tale om særligt vigtige emner, udsendes der også en e-mail.\r\n\r\nMed nyhedssitet påtænker vi at komme med opdateringer oftere end tidligere, da vi indtil nu har 'bundtet' nyhederne for ikke at forstyrre jer unødigt med for mange e-mails.\r\nVi regner med at have nyhedssitet oppe at køre umiddelbart efter sommerferien.\r\n\r\nHar I spørgsmål, kommentarer eller forslag, så tøv ikke med at skrive eller ringe.\r\n\r\nGod sommer\r\n\r\nOS2borgerPC-teamet", + "created": "2022-09-05T08:11:27.551", + "updated": "2022-09-05T08:11:27.551", + "published": false, + "tags": [ + 1, + 5, + 3 + ] + } +}, +{ + "model": "changelog.changelog", + "pk": 9, + "fields": { + "title": "Undlad at opgradere Ubuntu-udgave til 22.04", + "description": "Undlad at opgradere Ubuntu-udgave til 22.04", + "content": "Kære OS2borgerPC-kunder\r\n\r\nNogle af jer har meldt ind, at der dukker en besked op om at opgradere udgaven af Ubuntu, der ser således ud:\r\n\r\n![Billede af opgraderings-popup](/media/changelog-images/2022/09/05/14445f62-d16d-4126-9113-72910992eb61.png)\r\n\r\nDet er tilsyneladende en autofunktion i den nyeste udgave af Ubuntu. Vi har ikke set den tidligere.\r\n\r\nI bør **UNDLADE** at trykke 'Ja, opgradér nu'. Når maskinen er opgraderet, vil den nemlig miste forbindelsen til admin-sitet!\r\n\r\n\r\nVi skal dog også lige sige, at der ikke sker noget, hvis man fra Borger-kontoen klikker på knappen. Det er først som superuser, at det går i gang. \r\nVi har derfor kørt et script ud til alle BorgerPC'er - \"Desktop - Fjern besked om opdatering\" - der gør, at disse beskeder om opdatering ikke dukker op fremover. \r\nHvis beskeden bliver ved med at dukke op efter kørsel, vil en genstart i så fald gøre forskellen. \r\nPlanen er vi snart går i gang med at teste en opgradering til 22.04, men det bliver i stedet gjort via et script.\r\n\r\n**Nye images**\r\n\r\nVi har desuden frigivet et nyt BorgerPC-image - version 4.0.0 - som I skal bruge, hvis I vil installere nye BorgerPC'er. Det kan downloades her: \r\n[https://os2borgerpc-admin.magenta.dk/site/magenta/image-versions/](https://os2borgerpc-admin.magenta.dk/site/magenta/image-versions/)\r\n\r\nBemærk at installationsprocessen er ændret en smule, og I derfor skal bruge en justeret installationsguide, som I finder her: \r\n[https://os2borgerpc-admin.magenta.dk/documentation/os2borgerpc_installation_guide/](https://os2borgerpc-admin.magenta.dk/documentation/os2borgerpc_installation_guide/)\r\n\r\nHar I spørgsmål eller kommentarer, så tøv ikke med at tage fat i os\r\n\r\nVenlig hilsen\r\nOS2borgerPC-teamet", + "created": "2022-09-05T08:15:32.480", + "updated": "2022-09-05T08:18:15.640", + "published": true, + "tags": [ + 5, + 3 + ] + } +}, +{ + "model": "changelog.changelog", + "pk": 10, + "fields": { + "title": "Vedligehold og udvikling i februar 2024", + "description": "-", + "content": "Denne gang fortæller vi om nye og opdaterede scripts og om nye features på admin-sitet.\r\n\r\nTil sidst fortæller vi om nogle dysleksi-analyser, vi har arbejdet på i nogle år, og som vi håber, der er tilslutning i OS2 til at se nærmere på. Vi kommer ikke med et samlet forslag til, hvordan dysleksi-problemet kan gribes an. Vi vil gerne i dialog med anvenderne om prioriteringer og brugsmønstre.\r\n\r\n# Nye scripts\r\n\r\n## Printer - Installer Brother-printer\r\nPå forespørgsel fra Køge har vi udviklet dette script, som kan bruges til at installere vilkårlige Brother-printer-drivere. De relevante driver-filer skal downloades fra Brothers hjemmeside og angives som parametre.\r\n\r\n## Printer - Tilføj Printer-filter-filer\r\nPå forespørgsel fra Tønder har vi udviklet dette script, der kan bruges til at tilføje såkaldte “filter”-filer, som visse printere skal bruge for at fungere korrekt.\r\n\r\n## Skanner - Installer Epson skanner-program\r\nI forbindelse med en forespørgsel fra Køge har vi udviklet dette script, som kan bruges til at installere et Epson skanner-program, som burde understøtte de fleste Epson-skannere samt skanner-funktionaliteten i de fleste Epson printer/skannere.\r\n\r\n## Lyd - Ryd lydindstillinger\r\nVi har udviklet dette script, som kan bruges til at rydde den lydkonfigurationsfil, som de andre scripts i kategorien Lyd skriver til. Bemærk at de tidligere valgte indstillinger fortsat vil være gældende, indtil der skrives nye indstillinger til lydkonfigurationsfilen. Scriptet er tiltænkt situationer, hvor man har eksperimenteret med forskellige lydindstillinger og derfor ønsker at rydde lydkonfigurationsfilen, før man angiver de faktiske indstillinger, som skal anvendes.\r\n\r\n## Under Test - Opret delt Samba-mappe til skan\r\nPå forespørgsel fra Tønder har vi udviklet dette script, som kan bruges til at installere Samba og oprette en Samba share ved navn “scan”, som peger på en mappe med valgfrit navn på borgerens skrivebord. Den nævnte “share” deles med brugernavnet/gruppen “samba”, og der anvendes et valgfrit kodeord. Dette tillader, at man kan konfigurere en skanner til den førnævnte mappe på borgerens skrivebord. På nuværende tidspunkt understøtter den Samba-server, som scriptet opretter, kun validering med NTLM version 1.\r\n\r\n## Mulighed for at gemme logininformationer i Chrome\r\nPå forespørgsel fra Tønder har vi udviklet tre scripts, der sammen med lidt manuelt arbejde gør det muligt at få Chrome til at gemme logininformationer til f.eks. aviser.\r\nDer gøres imidlertid opmærksom på, at det ikke er muligt at forhindre borgeren i potentielt at læse de gemte logininformationer uden at miste funktionaliteten med at gemme logininformationer.\r\n\r\nBrugen af disse scripts forudsætter, at de køres i en bestemt rækkefølge (denne instruks ligger også på admin-sitet):\r\n\r\n### Browser - Chrome: 1. Slå password manager til/fra\r\nFørst køres dette script for at slå Chromes password manager til på en computer. Som udgangspunkt er password manageren slået fra.\r\n\r\nHerefter logges der manuelt ind på de ønskede sider som Borger på den pågældende computer. Da password-manageren er blevet slået til, vil Chrome efter hvert login spørge, om loginnet skal gemmes, hvor man skal svare ja. Når der er blevet logget ind på alle de ønskede sider, kan man gå videre til næste skridt.\r\nPå dette tidspunkt vil de gemte logininformationer stadig blive slettet, hvis man logger ud, så undlad at gøre dette, før forløbet er gennemført.\r\n\r\n### Browser - Chrome: 2. Hent logininformationer fra maskine\r\nI filen “/home/user/.config/google-chrome/Default/Login Data” gemmes logininformationerne, som skal hentes fra computeren og bruges som input til det tredje script. Dette andet script skriver indholdet af filen til job-loggen på admin-sitet. Det er dog nødvendigt for scriptet at konvertere filindholdet til base64, hvorfor det skal konverteres tilbage, før det kan bruges som input til det tredje script. Fremgangsmåden for denne tilbagekonvertering er beskrevet i scriptets beskrivelse. Det er også muligt manuelt at hente filen via f.eks. en USB.\r\nNår man har fået fat i den relevante fil, kan man gå videre til næste skridt. På dette tidspunkt kan man også slå password-manageren fra igen via det første script.\r\n\r\n### Browser - Chrome: 3. Tilføj gemte logininformationer\r\nDette script tager “Login Data”-filen fra trin 2 som input og tilføjer logindataen til en til flere computere, sådan at Chrome på disse computere herefter vil huske de logininformationer, som blev gemt i skridt 1. Når logininformationerne er blevet tilføjet med dette script, vil de ikke blive slettet ved logud.\r\nDette script medfører dog også, at al browser-data ikke længere slettes, når browseren lukkes, da dette er nødvendigt for, at scriptet kan fungere. Al browser-data slettes fortsat ved logud.\r\n\r\n# Opdaterede scripts\r\n\r\n## Browser - Sæt standard-browser\r\nVordingborg indrapporterede, at dette script ikke fungerede korrekt på OS2borgerPC installeret ud fra image 5.2. Vi undersøgte sagen og konstaterede, at der var sket en ændring fra Ubuntu 22.04.2 (som bruges til image 5.0) til Ubuntu 22.04.3 (som bruges til image 5.2), der bevirkede, at scriptets metode til at sætte standard-browser ikke virkede i Ubuntu 22.04.3. Vi opdaterede derefter scriptet til at bruge en ny metode, som virker i begge situationer.\r\n\r\n## Desktop - Genvej til program fra skrivebordet\r\nDette script er blevet opdateret til at fejle med en informativ besked, hvis man forsøger at tilføje en genvej til et program, som ikke findes på computeren.\r\n\r\n# Nyt på admin-sitet\r\n\r\n## Info om ansvarspersoner\r\nVi har tilføjet en info-knap ud fra “Ansvarspersoner” på gruppe-siden, som man kan klikke på for at få vist en beskrivelse af, hvad “Ansvarspersoner” er, og hvilken betydning de har.\r\n\r\n\r\n\r\n## Mere info om tilknyttede scripts\r\nPå baggrund af spørgsmål, som vi har modtaget fra flere forskellige kunder, har vi tilføjet en ekstra linje til “Bemærk”-boksen over tilknyttede scripts, der eksplicit forklarer, at det at fjerne et tilknyttet script fra en gruppe ikke fjerner scriptets effekt fra computerne i gruppen.\r\n\r\n\r\n## Omdøbning af “Versioner” til “Images”\r\nVi har omdøbt den sektion på admin-sitet, der tidligere hed “Versioner”, til “Images”, da vi normalt taler om images og ikke versioner.\r\n\r\n\r\n\r\n## Oprettelse af første gruppe\r\nOprettelse af den første gruppe på et site foregår nu på en underside, som bedre ligner den normale gruppeoversigt og gør brug af den samme modal (popup), som bruges til oprettelse af yderligere grupper.\r\n\r\n\r\n\r\n# Status omkring tilgængelighed\r\n\r\nVi hører fra flere kommuner ønsker omkring bedre tilgængelighed på OS2borgerPC, og i Magenta er det bestemt et ønske vi deler. Herefter følger lidt information omkring status for tilgængelighed pt. - og om mulighederne for videreudvikling/forbedringer.\r\n\r\n## Grundlæggende\r\nUbuntu har nogle tilgængelighedsværktøjer indbygget.\r\nI vores image 5.0 slog vi menu-visningen nedenfor til som standard. I menuen kan man aktivere diverse tilgængelighedsværktøjer.\r\n\r\n\r\n\r\nDer er følgende muligheder: Høj kontrast, Zoom, Stor tekst, Skærmlæser, Visuelle påmindelser, Klæbetaster, Langsomme taster, Hoppende taster og Musetaster.\r\nNærmere information om tilgængelighed og disse værktøjer kan findes her:\r\n\r\nhttps://help.gnome.org/users/gnome-help/stable/a11y.html\r\n\r\nHvis man har installeret en eller flere OS2borgerPC’er fra en tidligere version end 5.0.0, kan man tilføje denne menu ved at køre følgende script:\r\nhttps://os2borgerpc-admin.magenta.dk/scripts/551/\r\n\r\n## Into Words / Appwriter\r\nVi har udviklet et script til at installere udvidelser i Chrome og Chromium. Edge er ikke pt. understøttet, men det kunne vi godt omskrive scriptet til at kunne.\r\nTil Chrome/Chromium findes der udvidelser fra Into Words og Appwriter, som man kan installere. Disse udvidelser findes desværre ikke pt. til Firefox.\r\nDette script kan installere vilkårlige extensions i Chrome og Chromium:\r\n\r\nhttps://os2borgerpc-admin.magenta.dk/site/scripts/1255/\r\n\r\nSiden det er browser-udvidelser, virker de dog ikke i eksempelvis LibreOffice.\r\nIntoWords og AppWriter har også offline-programmer, men disse virker ikke pt. til Linux.\r\nVi ville gerne undersøge nærmere om vi potentielt kunne udvikle en Linux-klient til et af disse programmer i samarbejde med dem.\r\nIntoWords og AppWriter understøtter bl.a. tekst til tale og ordforslag\r\n\r\n## Oplæsning (tekst til tale)\r\nUbuntu har Orca indbygget, men udtalen er dog noget robot-agtig.\r\nDer findes imidlertid langt bedre privatlivsbeskyttende open source løsninger såsom Mycroft’s Mimic3, som vi potentielt kunne afprøve at installere og konfigurere på OS2borgerPC, for at se om det ville give mening at skrive et script til:\r\nhttps://mycroft.ai/mimic-3/\r\n\r\nSpørgsmålet er dog, om den kan tale dansk, og hvilket niveau det i så fald er på.\r\nDernæst er spørgsmålet, hvor stor en opgave det ville være, hvis vi skulle se på om vi selv kunne forbedre dens evne til at tale dansk.\r\nDer findes allerede nu browser-udvidelser, der benytter Mimic3.\r\n\r\n## Ordforslag\r\nDette har vi kigget nærmere på for nylig, og vi har snart et script klar til formålet til indledende test.\r\nTale til tekst\r\nDette er vi ved at undersøge nærmere.\r\n\r\n## OCR\r\nDet er ikke noget vi har fokuseret på endnu. Dog findes der forskellig open source OCR-software, som kunne undersøges nærmere.", + "created": "2024-04-12T13:31:57", + "updated": "2024-04-12T13:31:57", + "published": true, + "tags": [ + 1, + 2, + 6 + ] + } +}, +{ + "model": "changelog.changelogcomment", + "pk": 7, + "fields": { + "content": "Det lyder godt, jeg har dog lige et spørgsmål vedr. det nye image.", + "created": "2022-09-05T09:37:30.322", + "changelog": 9, + "user": 35, + "parent_comment": null + } +} +] diff --git a/dev-environment/dev-settings.ini b/dev-environment/dev-settings.ini old mode 100755 new mode 100644 index 66ed0b81..a43bae5f --- a/dev-environment/dev-settings.ini +++ b/dev-environment/dev-settings.ini @@ -28,8 +28,6 @@ LOG_LEVEL=INFO # IF USING THE CICERO INTEGRATION CICERO_URL=CICERO_SERVER_HERE -CICERO_USER=API_USER_HERE -CICERO_PASSWORD=API_PASSWORD_HERE # This particular line makes it both skip the connection to the Cicero server AND the validation of the username/password # For that reason, depending on what you're testing, you might want to comment out this line -CITIZEN_LOGIN_VALIDATOR=system.utils.always_validate_citizen +CITIZEN_LOGIN_API_VALIDATOR=system.utils.always_validate_citizen diff --git a/dev-environment/system_fixtures/050_auth.json b/dev-environment/system_fixtures/050_auth.json old mode 100755 new mode 100644 index 2093ebb2..d941fa1b --- a/dev-environment/system_fixtures/050_auth.json +++ b/dev-environment/system_fixtures/050_auth.json @@ -1151,12 +1151,1128 @@ "codename": "view_sitemembership" } }, +{ + "model": "auth.permission", + "pk": 129, + "fields": { + "name": "Can add login log", + "content_type": 33, + "codename": "add_loginlog" + } +}, +{ + "model": "auth.permission", + "pk": 130, + "fields": { + "name": "Can change login log", + "content_type": 33, + "codename": "change_loginlog" + } +}, +{ + "model": "auth.permission", + "pk": 131, + "fields": { + "name": "Can delete login log", + "content_type": 33, + "codename": "delete_loginlog" + } +}, +{ + "model": "auth.permission", + "pk": 132, + "fields": { + "name": "Can view login log", + "content_type": 33, + "codename": "view_loginlog" + } +}, +{ + "model": "auth.permission", + "pk": 133, + "fields": { + "name": "Can add country", + "content_type": 34, + "codename": "add_country" + } +}, +{ + "model": "auth.permission", + "pk": 134, + "fields": { + "name": "Can change country", + "content_type": 34, + "codename": "change_country" + } +}, +{ + "model": "auth.permission", + "pk": 135, + "fields": { + "name": "Can delete country", + "content_type": 34, + "codename": "delete_country" + } +}, +{ + "model": "auth.permission", + "pk": 136, + "fields": { + "name": "Can view country", + "content_type": 34, + "codename": "view_country" + } +}, +{ + "model": "auth.permission", + "pk": 137, + "fields": { + "name": "Can add product", + "content_type": 35, + "codename": "add_product" + } +}, +{ + "model": "auth.permission", + "pk": 138, + "fields": { + "name": "Can change product", + "content_type": 35, + "codename": "change_product" + } +}, +{ + "model": "auth.permission", + "pk": 139, + "fields": { + "name": "Can delete product", + "content_type": 35, + "codename": "delete_product" + } +}, +{ + "model": "auth.permission", + "pk": 140, + "fields": { + "name": "Can view product", + "content_type": 35, + "codename": "view_product" + } +}, +{ + "model": "auth.permission", + "pk": 141, + "fields": { + "name": "Can add user profile", + "content_type": 36, + "codename": "add_userprofile" + } +}, +{ + "model": "auth.permission", + "pk": 142, + "fields": { + "name": "Can change user profile", + "content_type": 36, + "codename": "change_userprofile" + } +}, +{ + "model": "auth.permission", + "pk": 143, + "fields": { + "name": "Can delete user profile", + "content_type": 36, + "codename": "delete_userprofile" + } +}, +{ + "model": "auth.permission", + "pk": 144, + "fields": { + "name": "Can view user profile", + "content_type": 36, + "codename": "view_userprofile" + } +}, +{ + "model": "auth.permission", + "pk": 145, + "fields": { + "name": "Can add site membership", + "content_type": 37, + "codename": "add_sitemembership" + } +}, +{ + "model": "auth.permission", + "pk": 146, + "fields": { + "name": "Can change site membership", + "content_type": 37, + "codename": "change_sitemembership" + } +}, +{ + "model": "auth.permission", + "pk": 147, + "fields": { + "name": "Can delete site membership", + "content_type": 37, + "codename": "delete_sitemembership" + } +}, +{ + "model": "auth.permission", + "pk": 148, + "fields": { + "name": "Can view site membership", + "content_type": 37, + "codename": "view_sitemembership" + } +}, +{ + "model": "auth.permission", + "pk": 149, + "fields": { + "name": "Can add changelog", + "content_type": 38, + "codename": "add_changelog" + } +}, +{ + "model": "auth.permission", + "pk": 150, + "fields": { + "name": "Can change changelog", + "content_type": 38, + "codename": "change_changelog" + } +}, +{ + "model": "auth.permission", + "pk": 151, + "fields": { + "name": "Can delete changelog", + "content_type": 38, + "codename": "delete_changelog" + } +}, +{ + "model": "auth.permission", + "pk": 152, + "fields": { + "name": "Can view changelog", + "content_type": 38, + "codename": "view_changelog" + } +}, +{ + "model": "auth.permission", + "pk": 153, + "fields": { + "name": "Can add changelog tag", + "content_type": 39, + "codename": "add_changelogtag" + } +}, +{ + "model": "auth.permission", + "pk": 154, + "fields": { + "name": "Can change changelog tag", + "content_type": 39, + "codename": "change_changelogtag" + } +}, +{ + "model": "auth.permission", + "pk": 155, + "fields": { + "name": "Can delete changelog tag", + "content_type": 39, + "codename": "delete_changelogtag" + } +}, +{ + "model": "auth.permission", + "pk": 156, + "fields": { + "name": "Can view changelog tag", + "content_type": 39, + "codename": "view_changelogtag" + } +}, +{ + "model": "auth.permission", + "pk": 157, + "fields": { + "name": "Can add changelog comment", + "content_type": 40, + "codename": "add_changelogcomment" + } +}, +{ + "model": "auth.permission", + "pk": 158, + "fields": { + "name": "Can change changelog comment", + "content_type": 40, + "codename": "change_changelogcomment" + } +}, +{ + "model": "auth.permission", + "pk": 159, + "fields": { + "name": "Can delete changelog comment", + "content_type": 40, + "codename": "delete_changelogcomment" + } +}, +{ + "model": "auth.permission", + "pk": 160, + "fields": { + "name": "Can view changelog comment", + "content_type": 40, + "codename": "view_changelogcomment" + } +}, +{ + "model": "auth.permission", + "pk": 161, + "fields": { + "name": "Can add static device", + "content_type": 8, + "codename": "add_staticdevice" + } +}, +{ + "model": "auth.permission", + "pk": 162, + "fields": { + "name": "Can change static device", + "content_type": 8, + "codename": "change_staticdevice" + } +}, +{ + "model": "auth.permission", + "pk": 163, + "fields": { + "name": "Can delete static device", + "content_type": 8, + "codename": "delete_staticdevice" + } +}, +{ + "model": "auth.permission", + "pk": 164, + "fields": { + "name": "Can view static device", + "content_type": 8, + "codename": "view_staticdevice" + } +}, +{ + "model": "auth.permission", + "pk": 165, + "fields": { + "name": "Can add static token", + "content_type": 9, + "codename": "add_statictoken" + } +}, +{ + "model": "auth.permission", + "pk": 166, + "fields": { + "name": "Can change static token", + "content_type": 9, + "codename": "change_statictoken" + } +}, +{ + "model": "auth.permission", + "pk": 167, + "fields": { + "name": "Can delete static token", + "content_type": 9, + "codename": "delete_statictoken" + } +}, +{ + "model": "auth.permission", + "pk": 168, + "fields": { + "name": "Can view static token", + "content_type": 9, + "codename": "view_statictoken" + } +}, +{ + "model": "auth.permission", + "pk": 169, + "fields": { + "name": "Can add TOTP device", + "content_type": 10, + "codename": "add_totpdevice" + } +}, +{ + "model": "auth.permission", + "pk": 170, + "fields": { + "name": "Can change TOTP device", + "content_type": 10, + "codename": "change_totpdevice" + } +}, +{ + "model": "auth.permission", + "pk": 171, + "fields": { + "name": "Can delete TOTP device", + "content_type": 10, + "codename": "delete_totpdevice" + } +}, +{ + "model": "auth.permission", + "pk": 172, + "fields": { + "name": "Can view TOTP device", + "content_type": 10, + "codename": "view_totpdevice" + } +}, +{ + "model": "auth.permission", + "pk": 173, + "fields": { + "name": "Can add batch", + "content_type": 11, + "codename": "add_batch" + } +}, +{ + "model": "auth.permission", + "pk": 174, + "fields": { + "name": "Can change batch", + "content_type": 11, + "codename": "change_batch" + } +}, +{ + "model": "auth.permission", + "pk": 175, + "fields": { + "name": "Can delete batch", + "content_type": 11, + "codename": "delete_batch" + } +}, +{ + "model": "auth.permission", + "pk": 176, + "fields": { + "name": "Can view batch", + "content_type": 11, + "codename": "view_batch" + } +}, +{ + "model": "auth.permission", + "pk": 177, + "fields": { + "name": "Can add configuration", + "content_type": 12, + "codename": "add_configuration" + } +}, +{ + "model": "auth.permission", + "pk": 178, + "fields": { + "name": "Can change configuration", + "content_type": 12, + "codename": "change_configuration" + } +}, +{ + "model": "auth.permission", + "pk": 179, + "fields": { + "name": "Can delete configuration", + "content_type": 12, + "codename": "delete_configuration" + } +}, +{ + "model": "auth.permission", + "pk": 180, + "fields": { + "name": "Can view configuration", + "content_type": 12, + "codename": "view_configuration" + } +}, +{ + "model": "auth.permission", + "pk": 181, + "fields": { + "name": "Can add configuration entry", + "content_type": 13, + "codename": "add_configurationentry" + } +}, +{ + "model": "auth.permission", + "pk": 182, + "fields": { + "name": "Can change configuration entry", + "content_type": 13, + "codename": "change_configurationentry" + } +}, +{ + "model": "auth.permission", + "pk": 183, + "fields": { + "name": "Can delete configuration entry", + "content_type": 13, + "codename": "delete_configurationentry" + } +}, +{ + "model": "auth.permission", + "pk": 184, + "fields": { + "name": "Can view configuration entry", + "content_type": 13, + "codename": "view_configurationentry" + } +}, +{ + "model": "auth.permission", + "pk": 185, + "fields": { + "name": "Can add input", + "content_type": 14, + "codename": "add_input" + } +}, +{ + "model": "auth.permission", + "pk": 186, + "fields": { + "name": "Can change input", + "content_type": 14, + "codename": "change_input" + } +}, +{ + "model": "auth.permission", + "pk": 187, + "fields": { + "name": "Can delete input", + "content_type": 14, + "codename": "delete_input" + } +}, +{ + "model": "auth.permission", + "pk": 188, + "fields": { + "name": "Can view input", + "content_type": 14, + "codename": "view_input" + } +}, +{ + "model": "auth.permission", + "pk": 189, + "fields": { + "name": "Can add job", + "content_type": 15, + "codename": "add_job" + } +}, +{ + "model": "auth.permission", + "pk": 190, + "fields": { + "name": "Can change job", + "content_type": 15, + "codename": "change_job" + } +}, +{ + "model": "auth.permission", + "pk": 191, + "fields": { + "name": "Can delete job", + "content_type": 15, + "codename": "delete_job" + } +}, +{ + "model": "auth.permission", + "pk": 192, + "fields": { + "name": "Can view job", + "content_type": 15, + "codename": "view_job" + } +}, +{ + "model": "auth.permission", + "pk": 193, + "fields": { + "name": "Can add batch parameter", + "content_type": 16, + "codename": "add_batchparameter" + } +}, +{ + "model": "auth.permission", + "pk": 194, + "fields": { + "name": "Can change batch parameter", + "content_type": 16, + "codename": "change_batchparameter" + } +}, +{ + "model": "auth.permission", + "pk": 195, + "fields": { + "name": "Can delete batch parameter", + "content_type": 16, + "codename": "delete_batchparameter" + } +}, +{ + "model": "auth.permission", + "pk": 196, + "fields": { + "name": "Can view batch parameter", + "content_type": 16, + "codename": "view_batchparameter" + } +}, +{ + "model": "auth.permission", + "pk": 197, + "fields": { + "name": "Can add pc", + "content_type": 17, + "codename": "add_pc" + } +}, +{ + "model": "auth.permission", + "pk": 198, + "fields": { + "name": "Can change pc", + "content_type": 17, + "codename": "change_pc" + } +}, +{ + "model": "auth.permission", + "pk": 199, + "fields": { + "name": "Can delete pc", + "content_type": 17, + "codename": "delete_pc" + } +}, +{ + "model": "auth.permission", + "pk": 200, + "fields": { + "name": "Can view pc", + "content_type": 17, + "codename": "view_pc" + } +}, +{ + "model": "auth.permission", + "pk": 201, + "fields": { + "name": "Can add pc group", + "content_type": 18, + "codename": "add_pcgroup" + } +}, +{ + "model": "auth.permission", + "pk": 202, + "fields": { + "name": "Can change pc group", + "content_type": 18, + "codename": "change_pcgroup" + } +}, +{ + "model": "auth.permission", + "pk": 203, + "fields": { + "name": "Can delete pc group", + "content_type": 18, + "codename": "delete_pcgroup" + } +}, +{ + "model": "auth.permission", + "pk": 204, + "fields": { + "name": "Can view pc group", + "content_type": 18, + "codename": "view_pcgroup" + } +}, +{ + "model": "auth.permission", + "pk": 205, + "fields": { + "name": "Can add script", + "content_type": 19, + "codename": "add_script" + } +}, +{ + "model": "auth.permission", + "pk": 206, + "fields": { + "name": "Can change script", + "content_type": 19, + "codename": "change_script" + } +}, +{ + "model": "auth.permission", + "pk": 207, + "fields": { + "name": "Can delete script", + "content_type": 19, + "codename": "delete_script" + } +}, +{ + "model": "auth.permission", + "pk": 208, + "fields": { + "name": "Can view script", + "content_type": 19, + "codename": "view_script" + } +}, +{ + "model": "auth.permission", + "pk": 209, + "fields": { + "name": "Can add security event", + "content_type": 20, + "codename": "add_securityevent" + } +}, +{ + "model": "auth.permission", + "pk": 210, + "fields": { + "name": "Can change security event", + "content_type": 20, + "codename": "change_securityevent" + } +}, +{ + "model": "auth.permission", + "pk": 211, + "fields": { + "name": "Can delete security event", + "content_type": 20, + "codename": "delete_securityevent" + } +}, +{ + "model": "auth.permission", + "pk": 212, + "fields": { + "name": "Can view security event", + "content_type": 20, + "codename": "view_securityevent" + } +}, +{ + "model": "auth.permission", + "pk": 213, + "fields": { + "name": "Can add security problem", + "content_type": 21, + "codename": "add_securityproblem" + } +}, +{ + "model": "auth.permission", + "pk": 214, + "fields": { + "name": "Can change security problem", + "content_type": 21, + "codename": "change_securityproblem" + } +}, +{ + "model": "auth.permission", + "pk": 215, + "fields": { + "name": "Can delete security problem", + "content_type": 21, + "codename": "delete_securityproblem" + } +}, +{ + "model": "auth.permission", + "pk": 216, + "fields": { + "name": "Can view security problem", + "content_type": 21, + "codename": "view_securityproblem" + } +}, +{ + "model": "auth.permission", + "pk": 217, + "fields": { + "name": "Can add site", + "content_type": 22, + "codename": "add_site" + } +}, +{ + "model": "auth.permission", + "pk": 218, + "fields": { + "name": "Can change site", + "content_type": 22, + "codename": "change_site" + } +}, +{ + "model": "auth.permission", + "pk": 219, + "fields": { + "name": "Can delete site", + "content_type": 22, + "codename": "delete_site" + } +}, +{ + "model": "auth.permission", + "pk": 220, + "fields": { + "name": "Can view site", + "content_type": 22, + "codename": "view_site" + } +}, +{ + "model": "auth.permission", + "pk": 221, + "fields": { + "name": "Can add associated script", + "content_type": 23, + "codename": "add_associatedscript" + } +}, +{ + "model": "auth.permission", + "pk": 222, + "fields": { + "name": "Can change associated script", + "content_type": 23, + "codename": "change_associatedscript" + } +}, +{ + "model": "auth.permission", + "pk": 223, + "fields": { + "name": "Can delete associated script", + "content_type": 23, + "codename": "delete_associatedscript" + } +}, +{ + "model": "auth.permission", + "pk": 224, + "fields": { + "name": "Can view associated script", + "content_type": 23, + "codename": "view_associatedscript" + } +}, +{ + "model": "auth.permission", + "pk": 225, + "fields": { + "name": "Can add associated script parameter", + "content_type": 24, + "codename": "add_associatedscriptparameter" + } +}, +{ + "model": "auth.permission", + "pk": 226, + "fields": { + "name": "Can change associated script parameter", + "content_type": 24, + "codename": "change_associatedscriptparameter" + } +}, +{ + "model": "auth.permission", + "pk": 227, + "fields": { + "name": "Can delete associated script parameter", + "content_type": 24, + "codename": "delete_associatedscriptparameter" + } +}, +{ + "model": "auth.permission", + "pk": 228, + "fields": { + "name": "Can view associated script parameter", + "content_type": 24, + "codename": "view_associatedscriptparameter" + } +}, +{ + "model": "auth.permission", + "pk": 229, + "fields": { + "name": "Can add image version", + "content_type": 25, + "codename": "add_imageversion" + } +}, +{ + "model": "auth.permission", + "pk": 230, + "fields": { + "name": "Can change image version", + "content_type": 25, + "codename": "change_imageversion" + } +}, +{ + "model": "auth.permission", + "pk": 231, + "fields": { + "name": "Can delete image version", + "content_type": 25, + "codename": "delete_imageversion" + } +}, +{ + "model": "auth.permission", + "pk": 232, + "fields": { + "name": "Can view image version", + "content_type": 25, + "codename": "view_imageversion" + } +}, +{ + "model": "auth.permission", + "pk": 233, + "fields": { + "name": "Can add script tag", + "content_type": 26, + "codename": "add_scripttag" + } +}, +{ + "model": "auth.permission", + "pk": 234, + "fields": { + "name": "Can change script tag", + "content_type": 26, + "codename": "change_scripttag" + } +}, +{ + "model": "auth.permission", + "pk": 235, + "fields": { + "name": "Can delete script tag", + "content_type": 26, + "codename": "delete_scripttag" + } +}, +{ + "model": "auth.permission", + "pk": 236, + "fields": { + "name": "Can view script tag", + "content_type": 26, + "codename": "view_scripttag" + } +}, +{ + "model": "auth.permission", + "pk": 237, + "fields": { + "name": "Can add citizen", + "content_type": 27, + "codename": "add_citizen" + } +}, +{ + "model": "auth.permission", + "pk": 238, + "fields": { + "name": "Can change citizen", + "content_type": 27, + "codename": "change_citizen" + } +}, +{ + "model": "auth.permission", + "pk": 239, + "fields": { + "name": "Can delete citizen", + "content_type": 27, + "codename": "delete_citizen" + } +}, +{ + "model": "auth.permission", + "pk": 240, + "fields": { + "name": "Can view citizen", + "content_type": 27, + "codename": "view_citizen" + } +}, +{ + "model": "auth.permission", + "pk": 241, + "fields": { + "name": "Can add event rule server", + "content_type": 31, + "codename": "add_eventruleserver" + } +}, +{ + "model": "auth.permission", + "pk": 242, + "fields": { + "name": "Can change event rule server", + "content_type": 31, + "codename": "change_eventruleserver" + } +}, +{ + "model": "auth.permission", + "pk": 243, + "fields": { + "name": "Can delete event rule server", + "content_type": 31, + "codename": "delete_eventruleserver" + } +}, +{ + "model": "auth.permission", + "pk": 244, + "fields": { + "name": "Can view event rule server", + "content_type": 31, + "codename": "view_eventruleserver" + } +}, +{ + "model": "auth.permission", + "pk": 245, + "fields": { + "name": "Can add api key", + "content_type": 32, + "codename": "add_apikey" + } +}, +{ + "model": "auth.permission", + "pk": 246, + "fields": { + "name": "Can change api key", + "content_type": 32, + "codename": "change_apikey" + } +}, +{ + "model": "auth.permission", + "pk": 247, + "fields": { + "name": "Can delete api key", + "content_type": 32, + "codename": "delete_apikey" + } +}, +{ + "model": "auth.permission", + "pk": 248, + "fields": { + "name": "Can view api key", + "content_type": 32, + "codename": "view_apikey" + } +}, +{ + "model": "auth.permission", + "pk": 249, + "fields": { + "name": "Can add customer", + "content_type": 41, + "codename": "add_customer" + } +}, +{ + "model": "auth.permission", + "pk": 250, + "fields": { + "name": "Can change customer", + "content_type": 41, + "codename": "change_customer" + } +}, +{ + "model": "auth.permission", + "pk": 251, + "fields": { + "name": "Can delete customer", + "content_type": 41, + "codename": "delete_customer" + } +}, +{ + "model": "auth.permission", + "pk": 252, + "fields": { + "name": "Can view customer", + "content_type": 41, + "codename": "view_customer" + } +}, { "model": "auth.user", "pk": 35, "fields": { - "password": "pbkdf2_sha256$260000$SIRvs2xVZfaq6J5dTwprEA$utC5ILCA6UQAQtFIMFZNrKMFkoXajCUabC7ZAO3JLYA=", - "last_login": "2023-04-27T11:20:17.430", + "password": "pbkdf2_sha256$600000$XLry6j5bFIEHNhyuWM1NsT$k29r/18L33xeSmAkMsFGbKmlBMiU8MnaYfcUVIlWBMM=", + "last_login": "2024-05-29T14:50:16.714", "is_superuser": true, "username": "magenta", "first_name": "", diff --git a/dev-environment/system_fixtures/100_system.json b/dev-environment/system_fixtures/100_system.json old mode 100755 new mode 100644 index b9db189a..569f78e0 --- a/dev-environment/system_fixtures/100_system.json +++ b/dev-environment/system_fixtures/100_system.json @@ -272,6 +272,20 @@ "name": "pc16" } }, +{ + "model": "system.configuration", + "pk": 64, + "fields": { + "name": "test-kunde-1" + } +}, +{ + "model": "system.configuration", + "pk": 73, + "fields": { + "name": "site-2" + } +}, { "model": "system.configurationentry", "pk": 1, @@ -1312,7 +1326,7 @@ "pk": 204, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc kiosk", "owner_configuration": 17 } }, @@ -1321,7 +1335,7 @@ "pk": 205, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc", "owner_configuration": 18 } }, @@ -1330,7 +1344,7 @@ "pk": 206, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc", "owner_configuration": 3 } }, @@ -1339,7 +1353,7 @@ "pk": 207, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc", "owner_configuration": 15 } }, @@ -1348,7 +1362,7 @@ "pk": 208, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc kiosk", "owner_configuration": 22 } }, @@ -1357,7 +1371,7 @@ "pk": 209, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc kiosk", "owner_configuration": 28 } }, @@ -1366,7 +1380,7 @@ "pk": 211, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc kiosk", "owner_configuration": 9 } }, @@ -1375,7 +1389,7 @@ "pk": 216, "fields": { "key": "q", - "value": "5", + "value": "54aeqq", "owner_configuration": 1 } }, @@ -1447,7 +1461,7 @@ "pk": 224, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc", "owner_configuration": 32 } }, @@ -1573,7 +1587,7 @@ "pk": 238, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc", "owner_configuration": 34 } }, @@ -1636,7 +1650,7 @@ "pk": 245, "fields": { "key": "_os_release", - "value": "5", + "value": "22.04", "owner_configuration": 38 } }, @@ -1699,7 +1713,7 @@ "pk": 252, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc", "owner_configuration": 38 } }, @@ -1780,7 +1794,7 @@ "pk": 297, "fields": { "key": "_os_release", - "value": "5", + "value": "20.04", "owner_configuration": 44 } }, @@ -1834,7 +1848,7 @@ "pk": 303, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc kiosk", "owner_configuration": 44 } }, @@ -1915,7 +1929,7 @@ "pk": 312, "fields": { "key": "_os_release", - "value": "5", + "value": "20.04", "owner_configuration": 45 } }, @@ -1978,7 +1992,7 @@ "pk": 319, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc kiosk", "owner_configuration": 45 } }, @@ -2077,7 +2091,7 @@ "pk": 330, "fields": { "key": "_os_release", - "value": "5", + "value": "22.04", "owner_configuration": 46 } }, @@ -2131,7 +2145,7 @@ "pk": 336, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc", "owner_configuration": 46 } }, @@ -2212,7 +2226,7 @@ "pk": 345, "fields": { "key": "_os_release", - "value": "5", + "value": "22.04", "owner_configuration": 48 } }, @@ -2266,7 +2280,7 @@ "pk": 351, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc kiosk", "owner_configuration": 48 } }, @@ -2392,7 +2406,7 @@ "pk": 365, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc", "owner_configuration": 49 } }, @@ -2455,7 +2469,7 @@ "pk": 372, "fields": { "key": "_os_release", - "value": "5", + "value": "20.04", "owner_configuration": 49 } }, @@ -2536,7 +2550,7 @@ "pk": 381, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc kiosk", "owner_configuration": 50 } }, @@ -2671,7 +2685,7 @@ "pk": 396, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc", "owner_configuration": 51 } }, @@ -2743,7 +2757,7 @@ "pk": 418, "fields": { "key": "_os_release", - "value": "5", + "value": "20.04", "owner_configuration": 55 } }, @@ -2797,7 +2811,7 @@ "pk": 424, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc kiosk", "owner_configuration": 55 } }, @@ -2869,7 +2883,7 @@ "pk": 446, "fields": { "key": "_os_release", - "value": "5", + "value": "22.04", "owner_configuration": 54 } }, @@ -2923,7 +2937,7 @@ "pk": 452, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc", "owner_configuration": 54 } }, @@ -2995,7 +3009,7 @@ "pk": 460, "fields": { "key": "_os_release", - "value": "5", + "value": "20.04", "owner_configuration": 56 } }, @@ -3049,7 +3063,7 @@ "pk": 466, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc kiosk", "owner_configuration": 56 } }, @@ -3130,7 +3144,7 @@ "pk": 475, "fields": { "key": "_os_release", - "value": "5", + "value": "22.04", "owner_configuration": 57 } }, @@ -3184,7 +3198,7 @@ "pk": 481, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc", "owner_configuration": 57 } }, @@ -3283,7 +3297,7 @@ "pk": 492, "fields": { "key": "os2_product", - "value": "5", + "value": "os2borgerpc kiosk", "owner_configuration": 59 } }, @@ -3337,7 +3351,7 @@ "pk": 498, "fields": { "key": "_os_release", - "value": "5", + "value": "20.04", "owner_configuration": 59 } }, @@ -3368,6 +3382,204 @@ "owner_configuration": 59 } }, +{ + "model": "system.configurationentry", + "pk": 502, + "fields": { + "key": "hey", + "value": "heya", + "owner_configuration": 35 + } +}, +{ + "model": "system.configurationentry", + "pk": 503, + "fields": { + "key": "werwerw", + "value": "werwerw", + "owner_configuration": 17 + } +}, +{ + "model": "system.configurationentry", + "pk": 504, + "fields": { + "key": "login_counts", + "value": "2023-10-10: 4, 2023-10-11: 4, 2023-10-12: 3, 2023-10-16: 0", + "owner_configuration": 55 + } +}, +{ + "model": "system.configurationentry", + "pk": 505, + "fields": { + "key": "login_counts", + "value": "2023-10-10: 2, 2023-10-11: 1, 2023-10-12: 6, 2023-10-16: 11", + "owner_configuration": 17 + } +}, +{ + "model": "system.configurationentry", + "pk": 506, + "fields": { + "key": "_ip_addresses", + "value": "172.17.0.1 172.18.0.1 192.168.49.1 172.16.20.228", + "owner_configuration": 17 + } +}, +{ + "model": "system.configurationentry", + "pk": 507, + "fields": { + "key": "_ip_addresses", + "value": "172.17.0.1 172.18.0.1 192.168.49.1 172.16.20.228", + "owner_configuration": 55 + } +}, +{ + "model": "system.configurationentry", + "pk": 508, + "fields": { + "key": "_os_release", + "value": "20.04", + "owner_configuration": 15 + } +}, +{ + "model": "system.configurationentry", + "pk": 509, + "fields": { + "key": "_os_release", + "value": "22.04", + "owner_configuration": 32 + } +}, +{ + "model": "system.configurationentry", + "pk": 510, + "fields": { + "key": "_os_release", + "value": "22.04", + "owner_configuration": 17 + } +}, +{ + "model": "system.configurationentry", + "pk": 511, + "fields": { + "key": "_os_release", + "value": "24.04", + "owner_configuration": 51 + } +}, +{ + "model": "system.configurationentry", + "pk": 512, + "fields": { + "key": "_os_release", + "value": "24.04", + "owner_configuration": 1 + } +}, +{ + "model": "system.configurationentry", + "pk": 513, + "fields": { + "key": "os2_product", + "value": "os2borgerpc kiosk", + "owner_configuration": 1 + } +}, +{ + "model": "system.configurationentry", + "pk": 514, + "fields": { + "key": "_os_release", + "value": "20.04", + "owner_configuration": 28 + } +}, +{ + "model": "system.configurationentry", + "pk": 515, + "fields": { + "key": "_os_release", + "value": "22.04", + "owner_configuration": 18 + } +}, +{ + "model": "system.configurationentry", + "pk": 516, + "fields": { + "key": "_os_release", + "value": "24.04", + "owner_configuration": 3 + } +}, +{ + "model": "system.configurationentry", + "pk": 517, + "fields": { + "key": "_os_release", + "value": "24.04", + "owner_configuration": 50 + } +}, +{ + "model": "system.country", + "pk": 1, + "fields": { + "name": "Danmark" + } +}, +{ + "model": "system.country", + "pk": 2, + "fields": { + "name": "Sverige" + } +}, +{ + "model": "system.customer", + "pk": 1, + "fields": { + "name": "Magenta", + "country": 1, + "paid_for_access_until": null, + "is_test": false + } +}, +{ + "model": "system.customer", + "pk": 2, + "fields": { + "name": "Kunde Sverige", + "country": 2, + "paid_for_access_until": null, + "is_test": false + } +}, +{ + "model": "system.customer", + "pk": 3, + "fields": { + "name": "Test Kunde Danmark", + "country": 1, + "paid_for_access_until": null, + "is_test": true + } +}, +{ + "model": "system.customer", + "pk": 4, + "fields": { + "name": "Øvrig kunde", + "country": 1, + "paid_for_access_until": null, + "is_test": false + } +}, { "model": "system.site", "pk": 1, @@ -3375,11 +3587,17 @@ "name": "Magenta", "uid": "magenta", "configuration": 1, - "paid_for_access_until": "2025-04-02", + "customer": 1, "created": null, - "isil": "DK-100000", + "agency_id": "DK-100000", + "citizen_login_api_user": "", + "citizen_login_api_password": "", + "citizen_login_api_key": "", + "booking_api_url": "", + "booking_api_key": "", "user_login_duration": "01:00:00", - "user_quarantine_duration": "04:00:00" + "user_quarantine_duration": "04:00:00", + "rerun_asc": false } }, { @@ -3389,11 +3607,17 @@ "name": "Magenta Test", "uid": "magenta-test", "configuration": 60, - "paid_for_access_until": "2025-01-17", + "customer": 1, "created": null, - "isil": "DK-100000", + "agency_id": "DK-100000", + "citizen_login_api_user": "", + "citizen_login_api_password": "", + "citizen_login_api_key": "", + "booking_api_url": "", + "booking_api_key": "", "user_login_duration": "01:00:00", - "user_quarantine_duration": "04:00:00" + "user_quarantine_duration": "04:00:00", + "rerun_asc": false } }, { @@ -3403,11 +3627,57 @@ "name": "Site3", "uid": "site3", "configuration": 61, - "paid_for_access_until": "2024-04-01", + "customer": 2, "created": null, - "isil": "", + "agency_id": "", + "citizen_login_api_user": "", + "citizen_login_api_password": "", + "citizen_login_api_key": "", + "booking_api_url": "", + "booking_api_key": "", + "user_login_duration": "01:00:00", + "user_quarantine_duration": "04:00:00", + "rerun_asc": false + } +}, +{ + "model": "system.site", + "pk": 12, + "fields": { + "name": "Test Kunde 1", + "uid": "test-kunde-1", + "configuration": 64, + "customer": 3, + "created": "2024-06-10T10:54:03.633", + "agency_id": "", + "citizen_login_api_user": "", + "citizen_login_api_password": "", + "citizen_login_api_key": "", + "booking_api_url": "", + "booking_api_key": "", + "user_login_duration": "01:00:00", + "user_quarantine_duration": "04:00:00", + "rerun_asc": true + } +}, +{ + "model": "system.site", + "pk": 13, + "fields": { + "name": "Site 2", + "uid": "site-2", + "configuration": 73, + "customer": 4, + "created": "2024-06-13T13:49:09.421", + "agency_id": "", + "citizen_login_api_user": "", + "citizen_login_api_password": "", + "citizen_login_api_key": "", + "booking_api_url": "", + "booking_api_key": "", "user_login_duration": "01:00:00", - "user_quarantine_duration": "04:00:00" + "user_quarantine_duration": "04:00:00", + "rerun_asc": true } }, { @@ -3416,8 +3686,9 @@ "fields": { "name": "Tidsplan", "uid": "wake_plan", - "sites": [ - 1 + "customers": [ + 1, + 4 ] } }, @@ -3948,8 +4219,8 @@ "sunday_open": true, "site": 1, "wake_change_events": [ - 5, 8, + 5, 6, 7 ] @@ -4101,7 +4372,8 @@ "description": "", "site": 1, "configuration": 5, - "wake_week_plan": 1 + "wake_week_plan": 1, + "supervisors": [] } }, { @@ -4112,7 +4384,8 @@ "description": "", "site": 1, "configuration": 21, - "wake_week_plan": 3 + "wake_week_plan": 3, + "supervisors": [] } }, { @@ -4123,7 +4396,8 @@ "description": "", "site": 1, "configuration": 33, - "wake_week_plan": 1 + "wake_week_plan": 1, + "supervisors": [] } }, { @@ -4134,7 +4408,8 @@ "description": "test", "site": 1, "configuration": 35, - "wake_week_plan": null + "wake_week_plan": null, + "supervisors": [] } }, { @@ -4145,7 +4420,8 @@ "description": "-", "site": 1, "configuration": 58, - "wake_week_plan": null + "wake_week_plan": null, + "supervisors": [] } }, { @@ -4159,7 +4435,6 @@ "configuration": 3, "site": 1, "is_activated": true, - "is_update_required": false, "created": "2020-11-30T18:15:43.997", "last_seen": "2020-12-01T14:15:03", "location": "", @@ -4180,7 +4455,6 @@ "configuration": 15, "site": 9, "is_activated": true, - "is_update_required": false, "created": "2021-01-11T11:03:36.510", "last_seen": "2021-01-11T15:30:04", "location": "", @@ -4194,14 +4468,13 @@ "mac": "", "name": "pc1", "uid": "pc1", - "description": "doner", + "description": "dette er en beskrivelse", "configuration": 17, "site": 1, "is_activated": true, - "is_update_required": false, "created": "2021-01-21T08:50:37.470", "last_seen": "2021-01-21T09:05:02", - "location": "", + "location": "dette er en placering", "pc_groups": [ 10 ] @@ -4218,7 +4491,6 @@ "configuration": 18, "site": 1, "is_activated": true, - "is_update_required": false, "created": "2021-01-21T11:16:10.403", "last_seen": "2021-01-28T12:50:03", "location": "beskrivelse 2", @@ -4239,7 +4511,6 @@ "configuration": 28, "site": 1, "is_activated": true, - "is_update_required": false, "created": "2021-01-29T12:52:58.793", "last_seen": "2021-01-29T14:14:32", "location": "", @@ -4257,7 +4528,6 @@ "configuration": 32, "site": 1, "is_activated": true, - "is_update_required": true, "created": "2021-08-25T10:01:37.352", "last_seen": "2021-08-25T15:30:08", "location": "", @@ -4275,7 +4545,6 @@ "configuration": 1, "site": 1, "is_activated": true, - "is_update_required": false, "created": "2021-09-11T13:33:02.398", "last_seen": null, "location": "", @@ -4293,7 +4562,6 @@ "configuration": 46, "site": 1, "is_activated": true, - "is_update_required": false, "created": "2021-11-25T15:34:19.791", "last_seen": "2021-11-30T10:30:02", "location": "", @@ -4313,7 +4581,6 @@ "configuration": 48, "site": 1, "is_activated": true, - "is_update_required": false, "created": "2021-11-29T09:22:59.334", "last_seen": "2021-12-01T11:35:04", "location": "", @@ -4333,7 +4600,6 @@ "configuration": 49, "site": 1, "is_activated": true, - "is_update_required": false, "created": "2021-11-29T10:39:13.906", "last_seen": "2022-01-18T10:45:11", "location": "", @@ -4353,7 +4619,6 @@ "configuration": 50, "site": 1, "is_activated": true, - "is_update_required": false, "created": "2021-11-30T12:59:58.700", "last_seen": "2022-01-10T09:20:08", "location": "", @@ -4373,7 +4638,6 @@ "configuration": 51, "site": 1, "is_activated": true, - "is_update_required": false, "created": "2021-11-30T13:03:03.481", "last_seen": "2022-01-14T16:55:06", "location": "", @@ -4394,7 +4658,6 @@ "configuration": 55, "site": 1, "is_activated": true, - "is_update_required": false, "created": "2021-12-02T13:32:08.296", "last_seen": "2021-12-02T15:05:05", "location": "", @@ -4414,7 +4677,6 @@ "configuration": 57, "site": 9, "is_activated": true, - "is_update_required": false, "created": "2022-01-05T14:43:09.479", "last_seen": "2022-01-17T17:20:05", "location": "", @@ -4432,7 +4694,6 @@ "configuration": 59, "site": 1, "is_activated": true, - "is_update_required": false, "created": "2022-01-10T11:37:48.592", "last_seen": "2022-01-14T15:10:04", "location": "beskrivelse 5", @@ -4452,7 +4713,7 @@ "model": "system.scripttag", "pk": 2, "fields": { - "name": "OS2displayPC" + "name": "OS2borgerPC Kiosk" } }, { @@ -4469,6 +4730,36 @@ "name": "Desktop" } }, +{ + "model": "system.scripttag", + "pk": 5, + "fields": { + "name": "Sikkerhed" + } +}, +{ + "model": "system.scripttag", + "pk": 6, + "fields": { + "name": "Tilgængelighed" + } +}, +{ + "model": "system.product", + "pk": 1, + "fields": { + "name": "OS2borgerPC", + "multilang": true + } +}, +{ + "model": "system.product", + "pk": 2, + "fields": { + "name": "OS2borgerPC Kiosk", + "multilang": false + } +}, { "model": "system.script", "pk": 1, @@ -4485,7 +4776,9 @@ "is_security_script": true, "is_hidden": false, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -4504,7 +4797,9 @@ "is_security_script": true, "is_hidden": false, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -4523,7 +4818,9 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -4542,9 +4839,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 3 - ] + ], + "products": [] } }, { @@ -4563,9 +4862,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 3 - ] + ], + "products": [] } }, { @@ -4584,9 +4885,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 3 - ] + ], + "products": [] } }, { @@ -4605,9 +4908,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 3 - ] + ], + "products": [] } }, { @@ -4615,7 +4920,7 @@ "pk": 9, "fields": { "created": "2021-08-10T09:12:51.835", - "modified": "2023-05-08T14:12:46.883", + "modified": "2023-10-19T10:08:36.038", "user_created": "", "user_modified": "magenta", "name": "Chrome - Skift startside", @@ -4626,9 +4931,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 3 - ] + ], + "products": [] } }, { @@ -4647,9 +4954,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 3 - ] + ], + "products": [] } }, { @@ -4668,9 +4977,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 4 - ] + ], + "products": [] } }, { @@ -4689,9 +5000,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 4 - ] + ], + "products": [] } }, { @@ -4710,9 +5023,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 4 - ] + ], + "products": [] } }, { @@ -4731,9 +5046,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 4 - ] + ], + "products": [] } }, { @@ -4752,9 +5069,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 2 - ] + ], + "products": [] } }, { @@ -4765,7 +5084,7 @@ "modified": "2021-08-10T09:23:42.962", "user_created": "", "user_modified": "", - "name": "OS2DisplayPC - Installer Chromium", + "name": "OS2borgerPC Kiosk - Installer Chromium", "uid": null, "description": "Installér Chromium og en minimal X.\r\n\r\nOpgradering af Chromium-install-scriptet til Ubuntu 20.04.", "site": null, @@ -4773,9 +5092,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 2 - ] + ], + "products": [] } }, { @@ -4786,7 +5107,7 @@ "modified": "2021-08-10T09:23:36.807", "user_created": "", "user_modified": "", - "name": "OS2displayPC - Installer SSH og VNC", + "name": "OS2borgerPC Kiosk - Installer SSH og VNC", "uid": null, "description": "Installer SSH og VNC for fjernadgang. \r\n\r\nDu kan lave SSH-forbindelse med det almindelige Unix-password.\r\n\r\nGiv VNC-passwordet med som parameter.", "site": null, @@ -4794,9 +5115,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 2 - ] + ], + "products": [] } }, { @@ -4807,7 +5130,7 @@ "modified": "2021-12-02T13:39:30.625", "user_created": "", "user_modified": "mowgli", - "name": "OS2displayPC - Autostart Chromium", + "name": "OS2borgerPC Kiosk - Autostart Chromium", "uid": null, "description": "Start Chromium i kiosk-mode og sæt start-URL-en.\r\n\r\nDer angives en forsinkelse før browseren startes, der kan hjælpe med at løse evt. timing issues (som regel virker det fint med 1 sekund, der angives ved tallet 1).\r\n\r\nSkærmens højde og bredde skal sættes til skærmens korrekte opløsning.\r\n\r\nDesuden skal der angives en orientering, som kan være \"left\", \"right\" eller \"normal\".", "site": null, @@ -4815,9 +5138,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 2 - ] + ], + "products": [] } }, { @@ -4836,9 +5161,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -4857,9 +5184,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -4878,9 +5207,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -4899,9 +5230,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -4920,9 +5253,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -4941,9 +5276,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -4962,9 +5299,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -4983,9 +5322,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -5004,9 +5345,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -5025,9 +5368,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -5046,9 +5391,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -5067,9 +5414,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -5088,9 +5437,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -5109,9 +5460,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -5130,9 +5483,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -5151,9 +5506,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -5172,9 +5529,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -5193,9 +5552,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -5214,7 +5575,9 @@ "is_security_script": true, "is_hidden": false, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -5233,7 +5596,9 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -5252,7 +5617,9 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -5271,7 +5638,9 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -5290,7 +5659,9 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -5309,9 +5680,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -5330,9 +5703,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 4 - ] + ], + "products": [] } }, { @@ -5351,7 +5726,9 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -5370,7 +5747,9 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -5389,7 +5768,9 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -5408,7 +5789,9 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -5419,7 +5802,7 @@ "modified": "2021-12-02T13:40:51.799", "user_created": "mowgli", "user_modified": "mowgli", - "name": "OS2displayPC - Chromium - Skift startside", + "name": "OS2borgerPC Kiosk - Chromium - Skift startside", "uid": null, "description": "-", "site": 1, @@ -5427,7 +5810,9 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -5446,9 +5831,11 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, + "feature_permission": null, "tags": [ 1 - ] + ], + "products": [] } }, { @@ -5467,7 +5854,9 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -5486,7 +5875,9 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -5505,7 +5896,9 @@ "is_security_script": true, "is_hidden": false, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -5524,7 +5917,9 @@ "is_security_script": false, "is_hidden": true, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -5543,7 +5938,9 @@ "is_security_script": false, "is_hidden": true, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -5562,7 +5959,53 @@ "is_security_script": false, "is_hidden": false, "maintained_by_magenta": false, - "tags": [] + "feature_permission": null, + "tags": [], + "products": [] + } +}, +{ + "model": "system.script", + "pk": 85, + "fields": { + "created": "2023-09-21T15:52:26.994", + "modified": "2023-09-21T15:52:26.994", + "user_created": "", + "user_modified": "", + "name": "Sikkerhed - Totrinsbekræftelse for superuser", + "uid": "two_factor", + "description": "Slår tidsbaseret totrinsbekræftelse til for superuser, ved login på en borgerPC.\r\n\r\nSIKKERHEDSMÆSSIGE OVERVEJELSER:\r\nHvis der skulle være indsat en keylogger på maskinen, eller en angriber kigger over skulderen når der logges ind på superuser vil det forhindre angreb hvis totrinsbekræftelse for superuser er slået til, da kodeord til superuser i sig selv ikke er nok til at logge ind som superuser på maskinen.\r\n\r\nBESKRIVELSE:\r\nGå først ind på siden \"Totrinsbekræftelse\" i menuen til venstre her på adminsitet, for at se processen for at slå totrinsbekræftelse til.\r\n\r\nSå snart du har genereret en sikkerhedsnøgle på ovenstående side, skal dette script køres med sikkerhedsnøgle som det andet parameter.\r\n\r\nFra næste login, vil der nu for superuser være et ekstra skridt i loginprocessen efter koden, hvor der skal indtastes totrins-koden.\r\n\r\nTager det ikke effekt øjeblikkeligt efter logud, foreslås en genstart af maskinen.\r\n\r\nINPUTPARAMETRE:\r\n1. Aktivér?: \r\n Sæt kryds for at slå totrinsbekræftelse til\r\n Lad stå tom for at slå totrinsbekræftelse fra.\r\n2: Sikkerhedsnøgle: Sikkerhedsnøglen totrinsbekræftelse-systemet internt har brug for. \r\nSamme sikkerhedsnøgle for flere computere betyder, du kan logge ind på flere computere med samme totrins-koder, fremfor hver computer skal tilføjes individuelt til din totrinsbekræftelse-app.\r\n\r\nDet kan også være relevant at køre scriptet \"Login - Ændr login-timeout\", da det kan være svært at nå at indtaste kode og totrinsbekræftelse på de 15 sekunder der normalt går, før der logges automatisk ind på Borger-kontoen.\r\n\r\n---------------\r\n\r\nDette script er blevet testet og virker på Ubuntu 22.04.", + "site": null, + "executable_code": "script_uploads/setup_two_factor_superuser.sh", + "is_security_script": false, + "is_hidden": false, + "maintained_by_magenta": false, + "feature_permission": null, + "tags": [ + 5 + ], + "products": [] + } +}, +{ + "model": "system.script", + "pk": 86, + "fields": { + "created": "2024-04-12T13:28:30.545", + "modified": "2024-04-12T13:29:52.674", + "user_created": "magenta", + "user_modified": "magenta", + "name": "Test - Script der tager alle parametertyper", + "uid": null, + "description": "Se titel.", + "site": 1, + "executable_code": "script_uploads/emptyish.sh", + "is_security_script": false, + "is_hidden": false, + "maintained_by_magenta": false, + "feature_permission": null, + "tags": [], + "products": [] } }, { @@ -6105,6 +6548,33 @@ "site": 1 } }, +{ + "model": "system.batch", + "pk": 61, + "fields": { + "name": "", + "script": 3, + "site": 1 + } +}, +{ + "model": "system.batch", + "pk": 62, + "fields": { + "name": "", + "script": 86, + "site": 1 + } +}, +{ + "model": "system.batch", + "pk": 63, + "fields": { + "name": "", + "script": 86, + "site": 1 + } +}, { "model": "system.associatedscript", "pk": 6, @@ -6120,7 +6590,7 @@ "fields": { "group": 10, "script": 9, - "position": 1 + "position": 2 } }, { @@ -6138,7 +6608,7 @@ "fields": { "group": 10, "script": 8, - "position": 2 + "position": 3 } }, { @@ -6147,7 +6617,7 @@ "fields": { "group": 10, "script": 6, - "position": 3 + "position": 4 } }, { @@ -6156,7 +6626,7 @@ "fields": { "group": 10, "script": 7, - "position": 4 + "position": 5 } }, { @@ -6165,7 +6635,7 @@ "fields": { "group": 10, "script": 10, - "position": 5 + "position": 6 } }, { @@ -6174,7 +6644,7 @@ "fields": { "group": 10, "script": 9, - "position": 6 + "position": 7 } }, { @@ -6183,7 +6653,7 @@ "fields": { "group": 10, "script": 27, - "position": 7 + "position": 8 } }, { @@ -6192,7 +6662,7 @@ "fields": { "group": 10, "script": 31, - "position": 8 + "position": 9 } }, { @@ -6336,7 +6806,7 @@ "fields": { "group": 10, "script": 36, - "position": 9 + "position": 10 } }, { @@ -6345,7 +6815,16 @@ "fields": { "group": 10, "script": 84, - "position": 10 + "position": 11 + } +}, +{ + "model": "system.associatedscript", + "pk": 38, + "fields": { + "group": 10, + "script": 86, + "position": 1 } }, { @@ -6353,7 +6832,7 @@ "pk": 1, "fields": { "status": "NEW", - "log_output": "", + "log_output": "I found my drill", "created": "2020-11-30T18:15:43.997", "started": null, "finished": null, @@ -6367,7 +6846,7 @@ "pk": 2, "fields": { "status": "NEW", - "log_output": "", + "log_output": "On Blueberry Hill", "created": null, "started": null, "finished": null, @@ -6381,7 +6860,7 @@ "pk": 3, "fields": { "status": "NEW", - "log_output": "", + "log_output": "The moon stands still.\n on blueberry hill", "created": null, "started": null, "finished": null, @@ -6409,7 +6888,7 @@ "pk": 5, "fields": { "status": "NEW", - "log_output": "", + "log_output": "qwertyuiopåäsdfghjklæø'zxcvbnm,.-wertyuiopsdfghjklxcvbnm,dcnjdsnkjsdnckjcnncjkdsnckjndskcjdskjnckjdsncjkdsnckjdsckscndskjcnjkdscksnjdcsnsdnjcnjskdnjcnjcs sdkjcndsdscndsnckjdsnckjnds ndskdsjncksnkcdsnc", "created": null, "started": null, "finished": null, @@ -7860,20 +8339,6 @@ "pc": 24 } }, -{ - "model": "system.job", - "pk": 109, - "fields": { - "status": "NEW", - "log_output": "", - "created": null, - "started": null, - "finished": null, - "user": 39, - "batch": 20, - "pc": 25 - } -}, { "model": "system.job", "pk": 110, @@ -8072,1613 +8537,115 @@ }, { "model": "system.job", - "pk": 124, - "fields": { - "status": "NEW", - "log_output": "", - "created": null, - "started": "2020-11-30T18:15:43.997", - "finished": "2020-11-30T18:15:45.997", - "user": 37, - "batch": 21, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 125, - "fields": { - "status": "NEW", - "log_output": "", - "created": null, - "started": "2020-11-30T18:15:43.997", - "finished": "2020-11-30T18:15:45.997", - "user": 35, - "batch": 21, - "pc": 28 - } -}, -{ - "model": "system.job", - "pk": 126, + "pk": 139, "fields": { "status": "NEW", "log_output": "", - "created": "2022-06-07T15:03:21.425", + "created": "2022-06-07T15:45:40.171", "started": null, "finished": null, "user": 35, - "batch": 30, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 127, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-07T15:04:38.636", - "started": null, - "finished": null, - "user": 37, - "batch": 31, - "pc": 12 + "batch": 32, + "pc": 25 } }, { "model": "system.job", - "pk": 128, + "pk": 140, "fields": { "status": "NEW", - "log_output": "", - "created": "2022-06-07T15:45:40.155", + "log_output": "Job imported at 2023-02-22 09:56:36.453980\n>>> Starting process '/var/lib/os2borgerpc/jobs/255106/executable' with arguments [True, True] at 2023-02-22 09:56:36.465927\n+ KIOSK=True\n+ INCOG=True\n+ LAUNCH_FILE=/usr/share/os2borgerpc/bin/start_chromium.sh\n+ POLICY_FILE=/var/snap/chromium/current/policies/managed/os2borgerpc-defaults.json\n+ POLICY_NAME_INCOG=IncognitoModeAvailability\n+ sed --in-place s/--kiosk//g /usr/share/os2borgerpc/bin/start_chromium.sh\n+ [ True = True ]\n+ sed --in-place s/KIOSK=''/KIOSK='--kiosk'/ /usr/share/os2borgerpc/bin/start_chromium.sh\n+ sed --in-place /IncognitoModeAvailability/d /var/snap/chromium/current/policies/managed/os2borgerpc-defaults.json\n+ [ True = True ]\n+ sed --in-place\n2i'IncognitoModeAvailability': 2, /var/snap/chromium/current/policies/managed/os2borgerpc-defaults.json\n>>> Succeeded at 2023-02-22 09:56:36.539923", + "created": "2022-06-09T14:58:25.727", "started": null, "finished": null, "user": 35, - "batch": 32, - "pc": 8 + "batch": 58, + "pc": 31 } }, { "model": "system.job", - "pk": 129, + "pk": 141, "fields": { "status": "NEW", - "log_output": "", - "created": "2022-06-07T15:45:40.157", + "log_output": "New job with arguments [fsdfs sdfsdfs sdfs, 1, 2024-04-16, , True, 10:00, *****, ]", + "created": "2024-04-16T15:25:00.565", "started": null, "finished": null, "user": 35, - "batch": 32, + "batch": 63, "pc": 26 } }, { "model": "system.job", - "pk": 130, + "pk": 142, "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-07T15:45:40.159", - "started": null, - "finished": null, + "status": "DONE", + "log_output": "New job with arguments [fsdfs sdfsdfs sdfs, 1, 2024-04-16, , True, 10:00, *****, hey]", + "created": "2024-04-16T15:25:00.565", + "started": "2024-04-16T15:25:00.565", + "finished": "2024-04-16T15:25:00.565", "user": 35, - "batch": 32, - "pc": 18 + "batch": 63, + "pc": 31 } }, { "model": "system.job", - "pk": 131, + "pk": 143, "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-07T15:45:40.161", - "started": null, + "status": "SUBMITTED", + "log_output": "New job with arguments [fsdfs sdfsdfs sdfs, 1, 2024-04-16, , True, 10:00, *****, hey]", + "created": "2024-04-16T15:25:00.565", + "started": "2024-04-16T15:25:00.565", "finished": null, "user": 35, - "batch": 32, - "pc": 22 + "batch": 63, + "pc": 25 } }, { "model": "system.job", - "pk": 132, + "pk": 144, "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-07T15:45:40.162", - "started": null, - "finished": null, + "status": "FAILED", + "log_output": "New job with arguments [fsdfs sdfsdfs sdfs, 1, 2024-04-16, , True, 10:00, *****, hey]", + "created": "2024-04-16T15:25:00.565", + "started": "2024-04-16T15:25:00.565", + "finished": "2024-04-16T15:25:00.565", "user": 35, - "batch": 32, - "pc": 12 + "batch": 63, + "pc": 16 } }, { - "model": "system.job", - "pk": 133, + "model": "system.input", + "pk": 1, "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-07T15:45:40.164", - "started": null, - "finished": null, - "user": 35, - "batch": 32, - "pc": 16 + "name": "Ja/Nej/Fjern", + "value_type": "STRING", + "default_value": null, + "position": 0, + "mandatory": true, + "script": 5 } }, { - "model": "system.job", - "pk": 134, + "model": "system.input", + "pk": 2, "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-07T15:45:40.166", - "started": null, - "finished": null, - "user": 35, - "batch": 32, - "pc": 24 + "name": "URL", + "value_type": "STRING", + "default_value": "", + "position": 0, + "mandatory": true, + "script": 9 } }, { - "model": "system.job", - "pk": 135, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-07T15:45:40.167", - "started": null, - "finished": null, - "user": 35, - "batch": 32, - "pc": 9 - } -}, -{ - "model": "system.job", - "pk": 136, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-07T15:45:40.168", - "started": null, - "finished": null, - "user": 35, - "batch": 32, - "pc": 1 - } -}, -{ - "model": "system.job", - "pk": 137, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-07T15:45:40.169", - "started": null, - "finished": null, - "user": 35, - "batch": 32, - "pc": 31 - } -}, -{ - "model": "system.job", - "pk": 138, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-07T15:45:40.170", - "started": null, - "finished": null, - "user": 35, - "batch": 32, - "pc": 28 - } -}, -{ - "model": "system.job", - "pk": 139, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-07T15:45:40.171", - "started": null, - "finished": null, - "user": 35, - "batch": 32, - "pc": 25 - } -}, -{ - "model": "system.job", - "pk": 140, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-07T15:45:40.172", - "started": null, - "finished": null, - "user": 35, - "batch": 32, - "pc": 23 - } -}, -{ - "model": "system.job", - "pk": 141, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-07T16:04:24.315", - "started": null, - "finished": null, - "user": 35, - "batch": 39, - "pc": 9 - } -}, -{ - "model": "system.job", - "pk": 142, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-07T16:04:24.319", - "started": null, - "finished": null, - "user": 35, - "batch": 39, - "pc": 1 - } -}, -{ - "model": "system.job", - "pk": 143, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:55:31.369", - "started": null, - "finished": null, - "user": 35, - "batch": 42, - "pc": 9 - } -}, -{ - "model": "system.job", - "pk": 144, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:55:31.370", - "started": null, - "finished": null, - "user": 35, - "batch": 42, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 145, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:55:31.371", - "started": null, - "finished": null, - "user": 35, - "batch": 42, - "pc": 28 - } -}, -{ - "model": "system.job", - "pk": 146, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:55:31.379", - "started": null, - "finished": null, - "user": 35, - "batch": 43, - "pc": 9 - } -}, -{ - "model": "system.job", - "pk": 147, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:55:31.380", - "started": null, - "finished": null, - "user": 35, - "batch": 43, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 148, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:55:31.381", - "started": null, - "finished": null, - "user": 35, - "batch": 43, - "pc": 28 - } -}, -{ - "model": "system.job", - "pk": 149, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.656", - "started": null, - "finished": null, - "user": 35, - "batch": 44, - "pc": 1 - } -}, -{ - "model": "system.job", - "pk": 150, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.657", - "started": null, - "finished": null, - "user": 35, - "batch": 44, - "pc": 22 - } -}, -{ - "model": "system.job", - "pk": 151, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.657", - "started": null, - "finished": null, - "user": 35, - "batch": 44, - "pc": 24 - } -}, -{ - "model": "system.job", - "pk": 152, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.658", - "started": null, - "finished": null, - "user": 35, - "batch": 44, - "pc": 25 - } -}, -{ - "model": "system.job", - "pk": 153, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.658", - "started": null, - "finished": null, - "user": 35, - "batch": 44, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 154, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.659", - "started": null, - "finished": null, - "user": 35, - "batch": 44, - "pc": 31 - } -}, -{ - "model": "system.job", - "pk": 155, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.661", - "started": null, - "finished": null, - "user": 35, - "batch": 45, - "pc": 1 - } -}, -{ - "model": "system.job", - "pk": 156, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.662", - "started": null, - "finished": null, - "user": 35, - "batch": 45, - "pc": 22 - } -}, -{ - "model": "system.job", - "pk": 157, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.663", - "started": null, - "finished": null, - "user": 35, - "batch": 45, - "pc": 24 - } -}, -{ - "model": "system.job", - "pk": 158, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.663", - "started": null, - "finished": null, - "user": 35, - "batch": 45, - "pc": 25 - } -}, -{ - "model": "system.job", - "pk": 159, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.664", - "started": null, - "finished": null, - "user": 35, - "batch": 45, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 160, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.664", - "started": null, - "finished": null, - "user": 35, - "batch": 45, - "pc": 31 - } -}, -{ - "model": "system.job", - "pk": 161, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.667", - "started": null, - "finished": null, - "user": 35, - "batch": 46, - "pc": 1 - } -}, -{ - "model": "system.job", - "pk": 162, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.667", - "started": null, - "finished": null, - "user": 35, - "batch": 46, - "pc": 22 - } -}, -{ - "model": "system.job", - "pk": 163, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.668", - "started": null, - "finished": null, - "user": 35, - "batch": 46, - "pc": 24 - } -}, -{ - "model": "system.job", - "pk": 164, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.668", - "started": null, - "finished": null, - "user": 35, - "batch": 46, - "pc": 25 - } -}, -{ - "model": "system.job", - "pk": 165, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.669", - "started": null, - "finished": null, - "user": 35, - "batch": 46, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 166, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.669", - "started": null, - "finished": null, - "user": 35, - "batch": 46, - "pc": 31 - } -}, -{ - "model": "system.job", - "pk": 167, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.672", - "started": null, - "finished": null, - "user": 35, - "batch": 47, - "pc": 1 - } -}, -{ - "model": "system.job", - "pk": 168, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.672", - "started": null, - "finished": null, - "user": 35, - "batch": 47, - "pc": 22 - } -}, -{ - "model": "system.job", - "pk": 169, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.672", - "started": null, - "finished": null, - "user": 35, - "batch": 47, - "pc": 24 - } -}, -{ - "model": "system.job", - "pk": 170, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.673", - "started": null, - "finished": null, - "user": 35, - "batch": 47, - "pc": 25 - } -}, -{ - "model": "system.job", - "pk": 171, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.673", - "started": null, - "finished": null, - "user": 35, - "batch": 47, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 172, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.674", - "started": null, - "finished": null, - "user": 35, - "batch": 47, - "pc": 31 - } -}, -{ - "model": "system.job", - "pk": 173, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.676", - "started": null, - "finished": null, - "user": 35, - "batch": 48, - "pc": 1 - } -}, -{ - "model": "system.job", - "pk": 174, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.677", - "started": null, - "finished": null, - "user": 35, - "batch": 48, - "pc": 22 - } -}, -{ - "model": "system.job", - "pk": 175, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.677", - "started": null, - "finished": null, - "user": 35, - "batch": 48, - "pc": 24 - } -}, -{ - "model": "system.job", - "pk": 176, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.678", - "started": null, - "finished": null, - "user": 35, - "batch": 48, - "pc": 25 - } -}, -{ - "model": "system.job", - "pk": 177, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.678", - "started": null, - "finished": null, - "user": 35, - "batch": 48, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 178, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.679", - "started": null, - "finished": null, - "user": 35, - "batch": 48, - "pc": 31 - } -}, -{ - "model": "system.job", - "pk": 179, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.681", - "started": null, - "finished": null, - "user": 35, - "batch": 49, - "pc": 1 - } -}, -{ - "model": "system.job", - "pk": 180, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.682", - "started": null, - "finished": null, - "user": 35, - "batch": 49, - "pc": 22 - } -}, -{ - "model": "system.job", - "pk": 181, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.682", - "started": null, - "finished": null, - "user": 35, - "batch": 49, - "pc": 24 - } -}, -{ - "model": "system.job", - "pk": 182, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.683", - "started": null, - "finished": null, - "user": 35, - "batch": 49, - "pc": 25 - } -}, -{ - "model": "system.job", - "pk": 183, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.683", - "started": null, - "finished": null, - "user": 35, - "batch": 49, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 184, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.684", - "started": null, - "finished": null, - "user": 35, - "batch": 49, - "pc": 31 - } -}, -{ - "model": "system.job", - "pk": 185, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.686", - "started": null, - "finished": null, - "user": 35, - "batch": 50, - "pc": 1 - } -}, -{ - "model": "system.job", - "pk": 186, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.687", - "started": null, - "finished": null, - "user": 35, - "batch": 50, - "pc": 22 - } -}, -{ - "model": "system.job", - "pk": 187, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.687", - "started": null, - "finished": null, - "user": 35, - "batch": 50, - "pc": 24 - } -}, -{ - "model": "system.job", - "pk": 188, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.688", - "started": null, - "finished": null, - "user": 35, - "batch": 50, - "pc": 25 - } -}, -{ - "model": "system.job", - "pk": 189, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.688", - "started": null, - "finished": null, - "user": 35, - "batch": 50, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 190, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.689", - "started": null, - "finished": null, - "user": 35, - "batch": 50, - "pc": 31 - } -}, -{ - "model": "system.job", - "pk": 191, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.691", - "started": null, - "finished": null, - "user": 35, - "batch": 51, - "pc": 1 - } -}, -{ - "model": "system.job", - "pk": 192, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.691", - "started": null, - "finished": null, - "user": 35, - "batch": 51, - "pc": 22 - } -}, -{ - "model": "system.job", - "pk": 193, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.692", - "started": null, - "finished": null, - "user": 35, - "batch": 51, - "pc": 24 - } -}, -{ - "model": "system.job", - "pk": 194, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.692", - "started": null, - "finished": null, - "user": 35, - "batch": 51, - "pc": 25 - } -}, -{ - "model": "system.job", - "pk": 195, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.693", - "started": null, - "finished": null, - "user": 35, - "batch": 51, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 196, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.693", - "started": null, - "finished": null, - "user": 35, - "batch": 51, - "pc": 31 - } -}, -{ - "model": "system.job", - "pk": 197, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.696", - "started": null, - "finished": null, - "user": 35, - "batch": 52, - "pc": 1 - } -}, -{ - "model": "system.job", - "pk": 198, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.697", - "started": null, - "finished": null, - "user": 35, - "batch": 52, - "pc": 22 - } -}, -{ - "model": "system.job", - "pk": 199, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.697", - "started": null, - "finished": null, - "user": 35, - "batch": 52, - "pc": 24 - } -}, -{ - "model": "system.job", - "pk": 200, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.698", - "started": null, - "finished": null, - "user": 35, - "batch": 52, - "pc": 25 - } -}, -{ - "model": "system.job", - "pk": 201, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.698", - "started": null, - "finished": null, - "user": 35, - "batch": 52, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 202, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.699", - "started": null, - "finished": null, - "user": 35, - "batch": 52, - "pc": 31 - } -}, -{ - "model": "system.job", - "pk": 203, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.701", - "started": null, - "finished": null, - "user": 35, - "batch": 53, - "pc": 1 - } -}, -{ - "model": "system.job", - "pk": 204, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.701", - "started": null, - "finished": null, - "user": 35, - "batch": 53, - "pc": 22 - } -}, -{ - "model": "system.job", - "pk": 205, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.702", - "started": null, - "finished": null, - "user": 35, - "batch": 53, - "pc": 24 - } -}, -{ - "model": "system.job", - "pk": 206, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.702", - "started": null, - "finished": null, - "user": 35, - "batch": 53, - "pc": 25 - } -}, -{ - "model": "system.job", - "pk": 215, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.709", - "started": null, - "finished": null, - "user": 35, - "batch": 55, - "pc": 1 - } -}, -{ - "model": "system.job", - "pk": 216, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.709", - "started": null, - "finished": null, - "user": 35, - "batch": 55, - "pc": 22 - } -}, -{ - "model": "system.job", - "pk": 217, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.710", - "started": null, - "finished": null, - "user": 35, - "batch": 55, - "pc": 24 - } -}, -{ - "model": "system.job", - "pk": 218, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.710", - "started": null, - "finished": null, - "user": 35, - "batch": 55, - "pc": 25 - } -}, -{ - "model": "system.job", - "pk": 219, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.711", - "started": null, - "finished": null, - "user": 35, - "batch": 55, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 220, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.711", - "started": null, - "finished": null, - "user": 35, - "batch": 55, - "pc": 31 - } -}, -{ - "model": "system.job", - "pk": 221, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.714", - "started": null, - "finished": null, - "user": 35, - "batch": 56, - "pc": 1 - } -}, -{ - "model": "system.job", - "pk": 222, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.715", - "started": null, - "finished": null, - "user": 35, - "batch": 56, - "pc": 22 - } -}, -{ - "model": "system.job", - "pk": 223, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.716", - "started": null, - "finished": null, - "user": 35, - "batch": 56, - "pc": 24 - } -}, -{ - "model": "system.job", - "pk": 224, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.716", - "started": null, - "finished": null, - "user": 35, - "batch": 56, - "pc": 25 - } -}, -{ - "model": "system.job", - "pk": 225, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.717", - "started": null, - "finished": null, - "user": 35, - "batch": 56, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 226, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.718", - "started": null, - "finished": null, - "user": 35, - "batch": 56, - "pc": 31 - } -}, -{ - "model": "system.job", - "pk": 227, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.720", - "started": null, - "finished": null, - "user": 35, - "batch": 57, - "pc": 1 - } -}, -{ - "model": "system.job", - "pk": 228, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.721", - "started": null, - "finished": null, - "user": 35, - "batch": 57, - "pc": 22 - } -}, -{ - "model": "system.job", - "pk": 229, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.721", - "started": null, - "finished": null, - "user": 35, - "batch": 57, - "pc": 24 - } -}, -{ - "model": "system.job", - "pk": 230, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.722", - "started": null, - "finished": null, - "user": 35, - "batch": 57, - "pc": 25 - } -}, -{ - "model": "system.job", - "pk": 231, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.722", - "started": null, - "finished": null, - "user": 35, - "batch": 57, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 232, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.723", - "started": null, - "finished": null, - "user": 35, - "batch": 57, - "pc": 31 - } -}, -{ - "model": "system.job", - "pk": 233, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.725", - "started": null, - "finished": null, - "user": 35, - "batch": 58, - "pc": 1 - } -}, -{ - "model": "system.job", - "pk": 234, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.725", - "started": null, - "finished": null, - "user": 35, - "batch": 58, - "pc": 22 - } -}, -{ - "model": "system.job", - "pk": 235, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.726", - "started": null, - "finished": null, - "user": 35, - "batch": 58, - "pc": 24 - } -}, -{ - "model": "system.job", - "pk": 236, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.726", - "started": null, - "finished": null, - "user": 35, - "batch": 58, - "pc": 25 - } -}, -{ - "model": "system.job", - "pk": 237, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.727", - "started": null, - "finished": null, - "user": 35, - "batch": 58, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 238, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2022-06-09T14:58:25.727", - "started": null, - "finished": null, - "user": 35, - "batch": 58, - "pc": 31 - } -}, -{ - "model": "system.job", - "pk": 239, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2023-05-08T14:14:59.762", - "started": null, - "finished": null, - "user": 35, - "batch": 59, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 240, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2023-05-08T14:14:59.764", - "started": null, - "finished": null, - "user": 35, - "batch": 59, - "pc": 28 - } -}, -{ - "model": "system.job", - "pk": 241, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2023-05-08T14:14:59.765", - "started": null, - "finished": null, - "user": 35, - "batch": 59, - "pc": 23 - } -}, -{ - "model": "system.job", - "pk": 242, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2023-05-08T14:18:45.340", - "started": null, - "finished": null, - "user": 35, - "batch": 60, - "pc": 26 - } -}, -{ - "model": "system.job", - "pk": 243, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2023-05-08T14:18:45.341", - "started": null, - "finished": null, - "user": 35, - "batch": 60, - "pc": 28 - } -}, -{ - "model": "system.job", - "pk": 244, - "fields": { - "status": "NEW", - "log_output": "", - "created": "2023-05-08T14:18:45.341", - "started": null, - "finished": null, - "user": 35, - "batch": 60, - "pc": 23 - } -}, -{ - "model": "system.input", - "pk": 1, - "fields": { - "name": "Ja/Nej/Fjern", - "value_type": "STRING", - "default_value": null, - "position": 0, - "mandatory": true, - "script": 5 - } -}, -{ - "model": "system.input", - "pk": 2, - "fields": { - "name": "URL", - "value_type": "STRING", - "default_value": "", - "position": 0, - "mandatory": true, - "script": 9 - } -}, -{ - "model": "system.input", - "pk": 3, + "model": "system.input", + "pk": 3, "fields": { "name": "Aktivér?", "value_type": "STRING", @@ -10412,114 +9379,406 @@ "model": "system.input", "pk": 93, "fields": { - "name": "Dvaletilstand", - "value_type": "STRING", - "default_value": null, - "position": 15, - "mandatory": true, - "script": 82 + "name": "Dvaletilstand", + "value_type": "STRING", + "default_value": null, + "position": 15, + "mandatory": true, + "script": 82 + } +}, +{ + "model": "system.input", + "pk": 95, + "fields": { + "name": "test", + "value_type": "STRING", + "default_value": "", + "position": 0, + "mandatory": false, + "script": 84 + } +}, +{ + "model": "system.input", + "pk": 96, + "fields": { + "name": "Aktivér?", + "value_type": "BOOLEAN", + "default_value": "True", + "position": 0, + "mandatory": false, + "script": 85 + } +}, +{ + "model": "system.input", + "pk": 97, + "fields": { + "name": "Sikkerhedsnøgle", + "value_type": "STRING", + "default_value": null, + "position": 1, + "mandatory": true, + "script": 85 + } +}, +{ + "model": "system.input", + "pk": 98, + "fields": { + "name": "hey", + "value_type": "BOOLEAN", + "default_value": "", + "position": 1, + "mandatory": false, + "script": 9 + } +}, +{ + "model": "system.input", + "pk": 99, + "fields": { + "name": "String", + "value_type": "STRING", + "default_value": "", + "position": 0, + "mandatory": true, + "script": 86 + } +}, +{ + "model": "system.input", + "pk": 100, + "fields": { + "name": "Integer", + "value_type": "INT", + "default_value": "", + "position": 1, + "mandatory": true, + "script": 86 + } +}, +{ + "model": "system.input", + "pk": 101, + "fields": { + "name": "Date", + "value_type": "DATE", + "default_value": "", + "position": 2, + "mandatory": true, + "script": 86 + } +}, +{ + "model": "system.input", + "pk": 102, + "fields": { + "name": "File", + "value_type": "FILE", + "default_value": "", + "position": 3, + "mandatory": false, + "script": 86 + } +}, +{ + "model": "system.input", + "pk": 103, + "fields": { + "name": "Checkbox", + "value_type": "BOOLEAN", + "default_value": "", + "position": 4, + "mandatory": false, + "script": 86 + } +}, +{ + "model": "system.input", + "pk": 104, + "fields": { + "name": "Time", + "value_type": "TIME", + "default_value": "", + "position": 5, + "mandatory": true, + "script": 86 + } +}, +{ + "model": "system.input", + "pk": 105, + "fields": { + "name": "Password", + "value_type": "PASSWORD", + "default_value": "", + "position": 6, + "mandatory": true, + "script": 86 + } +}, +{ + "model": "system.input", + "pk": 106, + "fields": { + "name": "Options", + "value_type": "TEXT_FIELD", + "default_value": "Option 1, Option 2, Option 3", + "position": 7, + "mandatory": false, + "script": 86 + } +}, +{ + "model": "system.batchparameter", + "pk": 1, + "fields": { + "string_value": "https://magenta.dk", + "file_value": "", + "input": 2, + "batch": 5 + } +}, +{ + "model": "system.batchparameter", + "pk": 2, + "fields": { + "string_value": "left", + "file_value": "", + "input": 27, + "batch": 7 + } +}, +{ + "model": "system.batchparameter", + "pk": 3, + "fields": { + "string_value": "https://magenta.dk", + "file_value": "", + "input": 2, + "batch": 12 + } +}, +{ + "model": "system.batchparameter", + "pk": 4, + "fields": { + "string_value": "left", + "file_value": "", + "input": 27, + "batch": 14 + } +}, +{ + "model": "system.batchparameter", + "pk": 5, + "fields": { + "string_value": "sfs", + "file_value": "", + "input": 68, + "batch": 30 + } +}, +{ + "model": "system.batchparameter", + "pk": 6, + "fields": { + "string_value": "kk.dk", + "file_value": "", + "input": 2, + "batch": 43 + } +}, +{ + "model": "system.batchparameter", + "pk": 7, + "fields": { + "string_value": "hey", + "file_value": "", + "input": 32, + "batch": 59 + } +}, +{ + "model": "system.batchparameter", + "pk": 8, + "fields": { + "string_value": "hey", + "file_value": "", + "input": 33, + "batch": 59 + } +}, +{ + "model": "system.batchparameter", + "pk": 9, + "fields": { + "string_value": "", + "file_value": "", + "input": 95, + "batch": 60 + } +}, +{ + "model": "system.batchparameter", + "pk": 10, + "fields": { + "string_value": "sdfs", + "file_value": "", + "input": 99, + "batch": 62 + } +}, +{ + "model": "system.batchparameter", + "pk": 11, + "fields": { + "string_value": "123", + "file_value": "", + "input": 100, + "batch": 62 + } +}, +{ + "model": "system.batchparameter", + "pk": 12, + "fields": { + "string_value": "2024-04-10", + "file_value": "", + "input": 101, + "batch": 62 + } +}, +{ + "model": "system.batchparameter", + "pk": 13, + "fields": { + "string_value": "", + "file_value": "", + "input": 102, + "batch": 62 + } +}, +{ + "model": "system.batchparameter", + "pk": 14, + "fields": { + "string_value": "True", + "file_value": "", + "input": 103, + "batch": 62 + } +}, +{ + "model": "system.batchparameter", + "pk": 15, + "fields": { + "string_value": "08:00", + "file_value": "", + "input": 104, + "batch": 62 } }, { - "model": "system.input", - "pk": 95, + "model": "system.batchparameter", + "pk": 16, "fields": { - "name": "test", - "value_type": "STRING", - "default_value": "", - "position": 0, - "mandatory": false, - "script": 84 + "string_value": "qwe", + "file_value": "", + "input": 105, + "batch": 62 } }, { "model": "system.batchparameter", - "pk": 1, + "pk": 17, "fields": { - "string_value": "https://magenta.dk", + "string_value": "Option 1", "file_value": "", - "input": 2, - "batch": 5 + "input": 106, + "batch": 62 } }, { "model": "system.batchparameter", - "pk": 2, + "pk": 18, "fields": { - "string_value": "left", + "string_value": "fsdfs sdfsdfs sdfs", "file_value": "", - "input": 27, - "batch": 7 + "input": 99, + "batch": 63 } }, { "model": "system.batchparameter", - "pk": 3, + "pk": 19, "fields": { - "string_value": "https://magenta.dk", + "string_value": "1", "file_value": "", - "input": 2, - "batch": 12 + "input": 100, + "batch": 63 } }, { "model": "system.batchparameter", - "pk": 4, + "pk": 20, "fields": { - "string_value": "left", + "string_value": "2024-04-16", "file_value": "", - "input": 27, - "batch": 14 + "input": 101, + "batch": 63 } }, { "model": "system.batchparameter", - "pk": 5, + "pk": 21, "fields": { - "string_value": "sfs", + "string_value": "", "file_value": "", - "input": 68, - "batch": 30 + "input": 102, + "batch": 63 } }, { "model": "system.batchparameter", - "pk": 6, + "pk": 22, "fields": { - "string_value": "kk.dk", + "string_value": "True", "file_value": "", - "input": 2, - "batch": 43 + "input": 103, + "batch": 63 } }, { "model": "system.batchparameter", - "pk": 7, + "pk": 23, "fields": { - "string_value": "hey", + "string_value": "10:00", "file_value": "", - "input": 32, - "batch": 59 + "input": 104, + "batch": 63 } }, { "model": "system.batchparameter", - "pk": 8, + "pk": 24, "fields": { - "string_value": "hey", + "string_value": "2123", "file_value": "", - "input": 33, - "batch": 59 + "input": 105, + "batch": 63 } }, { "model": "system.batchparameter", - "pk": 9, + "pk": 25, "fields": { "string_value": "", "file_value": "", - "input": 95, - "batch": 60 + "input": 106, + "batch": 63 } }, { @@ -10582,12 +9841,111 @@ "associated_script": 37 } }, +{ + "model": "system.associatedscriptparameter", + "pk": 13, + "fields": { + "string_value": "True", + "file_value": "", + "input": 98, + "associated_script": 7 + } +}, +{ + "model": "system.associatedscriptparameter", + "pk": 14, + "fields": { + "string_value": "True", + "file_value": "", + "input": 98, + "associated_script": 16 + } +}, +{ + "model": "system.associatedscriptparameter", + "pk": 15, + "fields": { + "string_value": "hey", + "file_value": "", + "input": 99, + "associated_script": 38 + } +}, +{ + "model": "system.associatedscriptparameter", + "pk": 16, + "fields": { + "string_value": "123", + "file_value": "", + "input": 100, + "associated_script": 38 + } +}, +{ + "model": "system.associatedscriptparameter", + "pk": 17, + "fields": { + "string_value": "2024-04-03", + "file_value": "", + "input": 101, + "associated_script": 38 + } +}, +{ + "model": "system.associatedscriptparameter", + "pk": 18, + "fields": { + "string_value": "", + "file_value": "", + "input": 102, + "associated_script": 38 + } +}, +{ + "model": "system.associatedscriptparameter", + "pk": 19, + "fields": { + "string_value": "True", + "file_value": "", + "input": 103, + "associated_script": 38 + } +}, +{ + "model": "system.associatedscriptparameter", + "pk": 20, + "fields": { + "string_value": "10:20", + "file_value": "", + "input": 104, + "associated_script": 38 + } +}, +{ + "model": "system.associatedscriptparameter", + "pk": 21, + "fields": { + "string_value": "password", + "file_value": "", + "input": 105, + "associated_script": 38 + } +}, +{ + "model": "system.associatedscriptparameter", + "pk": 22, + "fields": { + "string_value": "Option 1", + "file_value": "", + "input": 106, + "associated_script": 38 + } +}, { "model": "system.securityproblem", "pk": 1, "fields": { "name": "Ping advarsel", - "uid": "MPING", "description": "Ping!", "level": "Normal", "site": 1, @@ -10603,7 +9961,6 @@ "pk": 4, "fields": { "name": "Sudo-advarsel", - "uid": "sudo", "description": "a", "level": "High", "site": 1, @@ -10619,7 +9976,6 @@ "pk": 5, "fields": { "name": "Keyboard-advarsel", - "uid": "keyboard", "description": "", "level": "High", "site": 1, @@ -10635,7 +9991,6 @@ "pk": 6, "fields": { "name": "Detekter låst/udløbet bruger", - "uid": "locked", "description": "abc", "level": "High", "site": 1, @@ -10646,11 +10001,42 @@ "alert_users": [] } }, +{ + "model": "system.eventruleserver", + "pk": 1, + "fields": { + "name": "Maksimal offline-periode i Tårnet", + "description": "Det kan vi ikke have.", + "level": "High", + "site": 1, + "monitor_period_start": "08:00:00", + "monitor_period_end": "16:00:00", + "maximum_offline_period": 25, + "alert_groups": [], + "alert_users": [] + } +}, +{ + "model": "system.eventruleserver", + "pk": 2, + "fields": { + "name": "Maksimal offline-periode i Vinterhaven", + "description": "Den går ikke!", + "level": "High", + "site": 1, + "monitor_period_start": "10:00:00", + "monitor_period_end": "12:00:00", + "maximum_offline_period": 15, + "alert_groups": [], + "alert_users": [] + } +}, { "model": "system.securityevent", "pk": 1, "fields": { "problem": 5, + "event_rule_server": null, "occurred_time": "2022-08-05T11:07:20", "reported_time": "2022-08-05T11:07:26", "pc": 8, @@ -10666,6 +10052,7 @@ "pk": 2, "fields": { "problem": 5, + "event_rule_server": null, "occurred_time": "2022-08-05T11:08:02", "reported_time": "2022-08-05T11:08:16", "pc": 26, @@ -10681,6 +10068,7 @@ "pk": 3, "fields": { "problem": 1, + "event_rule_server": null, "occurred_time": "2022-08-05T11:08:53", "reported_time": "2022-08-05T11:08:56", "pc": 26, @@ -10696,6 +10084,7 @@ "pk": 4, "fields": { "problem": 4, + "event_rule_server": null, "occurred_time": "2022-08-05T11:10:48", "reported_time": "2022-08-05T13:10:51", "pc": 9, @@ -10711,6 +10100,7 @@ "pk": 5, "fields": { "problem": 4, + "event_rule_server": null, "occurred_time": "2022-08-05T11:21:35", "reported_time": "2022-08-05T11:25:38", "pc": 26, @@ -10725,240 +10115,82 @@ "model": "system.imageversion", "pk": 2, "fields": { - "platform": "BORGERPC_KIOSK", + "product": 2, "image_version": "1.0.0", "release_date": "2021-02-02", "os": "Ubuntu 20.04", - "release_notes": "OS2displayPC (OS2borgerPC Server) 1.0.0 med Ubuntu 20.04.", - "image_upload": "images/os2displaypc-1.0.0.iso" + "release_notes": "OS2borgerPC Kiosk 1.0.0 med Ubuntu 20.04.", + "image_upload": "images/os2borgerpc-kiosk-1.0.0.iso", + "image_upload_multilang": "#" } }, { "model": "system.imageversion", "pk": 3, "fields": { - "platform": "BORGERPC", + "product": 1, "image_version": "3.0.0", "release_date": "2021-05-12", "os": "Ubuntu 20.04", "release_notes": "OS2borgerPC 3.0.0 med Ubuntu 20.04.1.", - "image_upload": "images/os2borgerpc-3.0.0.iso" + "image_upload": "images/os2borgerpc-3.0.0.iso", + "image_upload_multilang": "images/os2borgerpc-3.0.0m.iso" } }, { "model": "system.imageversion", "pk": 4, "fields": { - "platform": "BORGERPC", + "product": 1, "image_version": "3.1.0", "release_date": "2021-05-12", "os": "Ubuntu 20.04", "release_notes": "OS2borgerPC 3.1.0 med Ubuntu 20.04.3.", - "image_upload": "images/os2borgerpc-3.1.0.iso" + "image_upload": "images/os2borgerpc-3.1.0.iso", + "image_upload_multilang": "#" } }, { "model": "system.imageversion", "pk": 5, "fields": { - "platform": "BORGERPC", - "image_version": "3.1.1", - "release_date": "2021-07-12", - "os": "Ubuntu 20.04", - "release_notes": "OS2borgerPC 3.1.0 med Ubuntu 20.04.3.", - "image_upload": "images/os2borgerpc-3.1.1.iso" + "product": 1, + "image_version": "5.2.0", + "release_date": "2024-04-23", + "os": "Ubuntu 22.04", + "release_notes": "MD5sum: f150078e1caf51b1804fa860344c0504\r\nSwedish (multi-language) MD5sum: b14dd4c6704eb4ab674e0fb9bfa3e5e6\r\n\r\nGrundlæggende:\r\n- Opgraderet til Ubuntu Desktop 22.04.3.\r\n\r\nFølgende funktionalitet er blevet indbygget:\r\n- Opdatering af klienten i forbindelse med indledende registrering\r\n- Superuser har adgang til at redigere printerindstillinger\r\n- Deaktivering af Bluetooth\r\n- Slå Wayland fra\r\n- Automatiske opdateringer (sikkerhed)\r\n- Randomiser tjek-in-tidspunkt\r\n- Sæt GRUB-kodeord (bootmanageren) til noget tilfældigt (fremfor det ikke er sat og der er fri adgang)\r\n- Kør scripts på loginskærm (forudsætning for scriptet der aktiverer numlock på loginskærm)\r\n- Fjern popup-beskeder om fremtidige Ubuntu-opgraderinger (ikke opdateringer)\r\n- Firefox: Nedlås indstillinger / policies\r\n- Installer Okular som standard PDF-læser\r\n- Sæt baggrundsbilleder på loginskærm og skrivebord\r\n- Fjern Libreoffice \"Tip of the day\"\r\n- Borger: Aktiver genveje\r\n- Borger: Fjern luk ned, genstart og dvale fra menu\r\n- Borger: Fjern \"Lås\" fra menu\r\n- Borger: Fjern \"Skift bruger\" fra menu\r\n- Borger: Fjern skriveadgang til skrivebordet\r\n- Borger: Fjern adgang til Indstillinger\r\n- Borger: Sæt Borger som forvalgt bruger på loginskærm, fremfor den \r\n seneste loggede ind er forvalgt, som kan være superuser\r\n- Borger: Fjern Alt-F2 (Kør)\r\n- Vis hjælpeværktøjer i menuen som standard\r\n\r\nIndbygget version af OS2borgerPC-klienten: 2.4.1", + "image_upload": "/media/images/os2borgerpc-5.2.0.iso", + "image_upload_multilang": "/media/images/os2borgerpc-5.2.0M.iso" } }, { - "model": "system.changelogtag", + "model": "system.apikey", "pk": 1, "fields": { - "name": "Admin site" - } -}, -{ - "model": "system.changelogtag", - "pk": 2, - "fields": { - "name": "Scripts" - } -}, -{ - "model": "system.changelogtag", - "pk": 3, - "fields": { - "name": "OS2borgerPC" - } -}, -{ - "model": "system.changelogtag", - "pk": 4, - "fields": { - "name": "Kiosk" - } -}, -{ - "model": "system.changelogtag", - "pk": 5, - "fields": { - "name": "Generelt" + "key": "hS-JDWzFJnQGnWKweZvBFHAxFHLCl0NQPTC00tQHxHJPqPymA_7cDeLRD3g2MMXRzU9HRru7igFFa7YQhL-ojw0H7T2H-4MOb_Y9", + "description": "Test 1", + "created": "2023-10-05T16:21:27.808", + "site": 1 } }, { - "model": "system.changelog", + "model": "system.apikey", "pk": 2, "fields": { - "title": "Nye releases af os2borgerpc", - "description": "Vi har netop frigivet nye versioner, som man via den hostede løsning har adgang til, hvis man abonnerer på 'Versioner' (niveau 2).", - "content": "Kære kunder på OS2borgerPC\r\n\r\nVi har netop frigivet nye versioner, som man via den hostede løsning har adgang til, hvis man abonnerer på 'Versioner' (niveau 2).\r\n\r\nDe nye versioner (images) er følgende:\r\n\r\n- OS2borgerPC 3.1.1\r\n- OS2borgerPC Kiosk 1.1.0\r\n\r\n**OS2borgerPC 3.1.1** \r\nVi er blevet opmærksomme på en fejl i OS2borgerPC-imaget 3.1.0, som har resulteret i falske sikkerhedsadvarsler. Specifikt har nogle kunder oplevet at få kontinuerlige sudo-advarsler. \r\nDisse advarsler skyldes, at systemet identificerer sudo-kørsler under oprettelsen af imaget som nye hændelser. Og det var naturligvis en fejl.\r\n\r\nDerfor har vi nu frigivet et nyt image - 3.1.1 - som ikke har det problem. I den nye version er der desuden en række smårettelser.\r\n\r\nDet nye image har ikke ny funktionalitet ud over rettelsen ift. sikkerhedsadvarsler.\r\n\r\nDerfor anbefales den til nyinstallation, men hvis I allerede har installeret maskiner fra 3.1.0, kan i køre scriptet \"System - Fjern sudo fra auth.log\", og så vil de falske sikkerhedshændelser stoppe.\r\n\r\n**OS2borgerPC Kiosk 1.1.0** \r\nVi har omdøbt OS2displayPC til OS2borgerPC Kiosk for at fjerne eventuel sammenblanding med OS2display, der er en anden løsning.\r\n\r\nImaget har ikke ny funktionalitet, men alle pakkeversionerne er nye, så der vil være langt færre opdateringer at hente efter installationen.\r\n\r\nTil de nørdede: Man kan følge med på GitHub, hvor der er teknisk information om nyeste releases, hvor man også kan få et indblik i noget af den kommende funktionalitet: \r\n[https://github.com/OS2borgerPC/image/blob/master/NEWS.rst](https://github.com/OS2borgerPC/image/blob/master/NEWS.rst) \r\n[https://github.com/OS2borgerPC/server_image/blob/master/NEWS.rst](https://github.com/OS2borgerPC/server_image/blob/master/NEWS.rst)\r\n\r\nDet samme er gældende ift. scripts her: \r\n[https://github.com/os2borgerPC/os2borgerpc-scripts](https://github.com/os2borgerPC/os2borgerpc-scripts)\r\n\r\nHar I spørgsmål, så tøv ikke med at tage fat i os\r\n\r\nVenlig hilsen på vegne af OS2borgerPC-teamet\r\nMorten Kjærsgaard", - "created": "2022-09-01T14:46:24.763", - "updated": "2022-09-01T15:01:35.940", - "author": "Morten Kjærsgaard", - "version": "3.1.1", - "site": null, - "tags": [ - 4, - 3 - ] + "key": "2H9YvYKtMnID2mV3Wd8ALt22ExQVLZbynTaGmkBnYLcf2s3islSEUM2ZBR53kfeylCgmzEqN0IOnXDF7t12SdMxlON96bgSh2W-m", + "description": "Nøgle 2", + "created": "2023-10-05T16:21:30.811", + "site": 1 } }, { - "model": "system.changelog", + "model": "system.apikey", "pk": 3, "fields": { - "title": "Sårbarhed i linux", - "description": "Sent mandag (7/3) blev en ny Linux-sårbarhed annonceret.", - "content": "Kære kunder og brugere af OS2borgerPC\r\n\r\nSent mandag (7/3) blev en ny Linux-sårbarhed annonceret. Den fik det mundrette navn CVE-2022-0847 - og bliver derfor i stedet kaldt 'Dirty Pipe'. Sårbarheden giver lokale brugere mulighed for at opnå root-privilegier. Den nye Linux-sårbarhed minder meget om CVE-2016-5195, også kaldet 'Dirty Cow', fra kort før årsskiftet.\r\n\r\nI morges kom Ubuntu med en opdatering, der giver jer følgende muligheder:\r\n\r\n1. I kan vente på de automatiske sikkerhedsopdateringer fra Ubuntu. \r\nOS2borgerPC: Automatiske sikkerhedsopdateringer er konfigureret til at blive installeret som standard, og det vil ske inden for de kommende 24 timer. \r\nKiosk: Automatiske sikkerhedsopdateringer kan slås til ved at køre scriptet \" System - Aktivér automatiske opdateringer\" med parametret \"sikkerhed\". Sårbarheden er ikke kritisk for Kiosk, som normalt kører låst i en browser og uden tastatur.\r\n\r\n2. I kan køre scriptet \"System - Opdater alt\" på alle maskiner.\r\n\r\nI begge tilfælde er det vigtigt, at I genstarter PC'erne, for eksempel ved at køre scriptet \"System - Genstart computeren NU\" eller i forbindelse med den daglige nedlukning.\r\n\r\nSig til, hvis I har spørgsmål.\r\n\r\nVenlig hilsen\r\nMorten", - "created": "2022-09-01T15:05:29.340", - "updated": "2022-09-01T15:07:06.225", - "author": "Morten Kjærsgaard", - "version": "3.1.1", - "site": null, - "tags": [ - 5, - 4, - 3 - ] - } -}, -{ - "model": "system.changelog", - "pk": 4, - "fields": { - "title": "Om appwriter og cd-ord/intowords", - "description": "Vi er i gang med at undersøge mulighederne for at integrere med dysleksiværktøjer.", - "content": "Kære alle brugere af OS2borgerPC\r\n\r\nVi er i gang med at undersøge mulighederne for at integrere med dysleksiværktøjer, og derfor vil jeg bede om en tilkendegivelse fra jer i forhold til, hvilke værktøjer I anvender - eller påtænker at anvende fremover.\r\n\r\nDet er hovedsagelig AppWriter og CD-Ord/Into Words vi har kig på. Vi vil gerne kunne lave en integration, der tilfører OS2borgerPC værdi, uanset om det sker som en klient, som en Rest-integration og/eller via browseren.\r\n\r\nVil I ikke være rare at skrive et par linjer tilbage om jeres værktøjer og om prioriteringen og ønsker?\r\n \r\nGod bededagsferie\r\n\r\nVenlig hilsen\r\nMorten", - "created": "2022-09-01T15:08:19.876", - "updated": "2022-09-01T15:08:19.876", - "author": "Morten Kjærsgaard", - "version": "N/A", - "site": null, - "tags": [ - 5, - 3 - ] - } -}, -{ - "model": "system.changelog", - "pk": 5, - "fields": { - "title": "Nye funktioner i OS2borgerPC", - "description": "Vi har netop frigivet en ny version af OS2borgerPC med nye funktioner", - "content": "Kære alle brugere af OS2borgerPC\r\n\r\nVi har netop frigivet en ny version af OS2borgerPC med nye funktioner:\r\n\r\n- Det er blevet muligt at sætte totrinsbekræftelse (to-faktor login) op ved login til superuser på en OSBorgerPC eller en OS2borgerPC Kiosk. Tak til John og Hvidovre for at samfinansiere.\r\n\r\n- Under \"Computere\" kan man nu klikke på en tilføjet \"Gruppe\" for at navigere derhen\r\n\r\n- og under \"Grupper\" kan man nu tilsvarende klikke på en tilføjet \"Computer\" for at navigere derhen\r\n\r\n- Siden \"Versioner\" er blevet en redesignet og skulle nu gerne være mere intuitiv.\r\n\r\n- Når en fil er uploadet som parameter til et \"Tilknyttet Script\", kan man nu klikke på den for at downloade filen\r\n\r\nVi har desuden fra nogle brugere hørt om et problem i forbindelse med låsning af computeren (menupunktet over sluk/genstart øverst til højre), hvor mapper i hjemmemappen pludselig har manglet, eller genveje på skrivebordet ikke har virket efter computeren har været \"låst\". Oplever man dette, vil vi anbefale at køre scriptet \"OS2borgerPC - Fjern lås fra menuen\". Denne funktion indbygges i fremtidige images.\r\n\r\n**Totrins login** \r\nLidt mere om totrins-login: Funktionen slår tidsbaseret totrinsbekræftelse til for superuser, ved login på en borgerPC.\r\n\r\n![](/media/changelog-images/2022/09/01/8ba29847-e430-46b6-a78c-8563de872e7a.png)\r\n\r\nGå først ind på siden \"Totrinsbekræftelse\" i menuen til venstre på adminsitet for at se processen for at slå totrinsbekræftelse til.\r\n\r\nNår du har genereret en sikkerhedsnøgle på ovenstående side, skal dette script køres med sikkerhedsnøgle som det andet parameter.\r\n\r\n![](/media/changelog-images/2022/09/01/8857695e-b74b-41ed-a652-350065530967.png)\r\n\r\nFra næste login vil der nu for superuser være et ekstra skridt i loginprocessen efter koden, hvor der skal indtastes totrins-koden.\r\n\r\nTager det ikke effekt øjeblikkeligt efter logud, så genstart maskinen.\r\n\r\n**Inputparametre**\r\n\r\n1. Aktivér?: 'ja' slår totrinsbekræftelse til, 'nej' slår det fra.\r\n\r\n2. Sikkerhedsnøgle: Sikkerhedsnøglen som totrinsbekræftelse-systemet internt har brug for.\r\n\r\nSamme sikkerhedsnøgle for flere computere betyder, at du kan logge ind på flere computere med samme totrins-koder, fremfor at hver computer skal tilføjes individuelt til din totrinsbekræftelse-app.\r\n\r\nDet kan også være relevant at køre scriptet \"OS2borgerPC - Ændr login-timeout\", da det kan være svært at nå at indtaste kode og totrinsbekræftelse på de 15 sekunder, der normalt går, før der logges automatisk ind på Borger-kontoen.\r\n\r\nHar I spørgsmål eller kommentarer, så sig endelig til.\r\n\r\nVenlig hilsen\r\nMorten", - "created": "2022-09-01T15:15:33.437", - "updated": "2022-09-01T15:15:54.824", - "author": "Morten Kjærsgaard", - "version": "5.3.0", - "site": null, - "tags": [ - 1 - ] - } -}, -{ - "model": "system.changelog", - "pk": 6, - "fields": { - "title": "Nye funktioner", - "description": "Vi har netop frigivet en ny version af OS2borgerPC-portalen med nye funktioner.", - "content": "Kære OS2borgerPC-kunder\r\n\r\nVi har netop frigivet en ny version af OS2borgerPC-portalen med nye funktioner.\r\n\r\n**Nem flytning af scripts** \r\nMan kan nu flytte tilknyttede scripts op og ned på listen via træk-og-slip. \r\nTak til Brian Løvendahl og Vordingborg Kommune for samfinansiering.\r\n\r\n![](/media/changelog-images/2022/09/01/8f0810fa-a017-442f-a9d5-39fb38aaf6aa.png)\r\n\r\n**Valgfri kolonnesortering** \r\nStatus har fået valgfri kolonnesortering. Fra Status-siden skal man nu klikke på selve computernavnet for at gå til computeren frem for et vilkårligt sted på linjen. \r\nTak til John Vishart og Hvidovre Kommune for samfinansiering.\r\n\r\n![](/media/changelog-images/2022/09/01/80a6a5bd-a614-4a59-bda1-93017ed69c1f.png)\r\n\r\n**Link fra jobs-siden til PC** \r\nFra Jobs-siden kan man nu klikke på et computernavn for at gå til computeren.\r\n\r\n![](/media/changelog-images/2022/09/01/a24333ae-8cc9-4d6d-9735-978273ee4b89.png)\r\n\r\n**Se oprettelsestidspunkt** \r\nDer vises nu oprettelsestidspunkt for både Jobs og Computere på deres respektive sider.\r\n\r\n![](/media/changelog-images/2022/09/01/96e30df3-38b2-4438-8a8c-caba9fffa0f8.png)\r\n\r\n**Nye Princh-scripts** \r\nVi har opdateret scripts til Princh til at bruge Princh Cloud Printer, da Princh har meldt ud, at deres eksisterende løsning bliver udfaset ved udgangen af april.\r\n\r\nDe nye scripts til Princh Cloud Printer erstatter de gamle Princh-scripts, så det skulle gerne virke automatisk, når nye computere tilmeldes gruppen - hvis I altså har sat dem op som tilknyttede scripts.\r\n\r\nFor computere, der allerede har Princh installeret, er processen følgende:\r\n\r\n1. Kør scriptet \"Printer - Slet printer\" med navnet på den nuværende Princh-printer.\r\n\r\n2. Kør scriptet \"Printer - Installer Princh Cloud Printer\". Dette vil samtidig slette den gamle version af Princh-programmet.\r\n\r\n3. Kør scriptet \"Printer - Tilføj Princh Cloud Printer\" - scriptet tager de samme parametre som tidligere: \r\n\r\n a. Et selvvalgt printernavn \r\n b. En selvvalgt printer-beskrivelse \r\n c. Printer ID - som er det ID på printeren, i tidligere har fået fra Princh \r\n d. Kør \"Printer - Sæt en standard printer\" med navnet I gav Princh-printeren oven over. Så vil den være forvalgt i programmerne, og i Chrome vil den være forvalgt fremfor PDF-udprintning.\r\n\r\nDet Princh-ikon, der manglede i menuen i den gamle version, når programmet åbnede, er i øvrigt ikke længere et problem, da Princh har rettet fejlen i deres nye version.\r\n\r\nVi håber, I får glæde af de nye funktioner. Og tag endelig fat i os, hvis der er noget, der driller.\r\n\r\nVenlig hilsen fra hele OS2borgerPC-teamet\r\nMarcus, Søren, Heini, Carsten, Emil og Morten", - "created": "2022-09-01T15:26:05.961", - "updated": "2022-09-01T15:44:24.965", - "author": "OS2borgerPC-teamet", - "version": "5.4.0", - "site": null, - "tags": [ - 1, - 4, - 3, - 2 - ] - } -}, -{ - "model": "system.changelog", - "pk": 7, - "fields": { - "title": "Nye funktioner i OS2borgerPC", - "description": "Nye funktioner i OS2borgerPC, crowdfunding om filarkiv og mailingliste.", - "content": "Kære alle OS2borgerPC-venner\r\n\r\nI har alle fået to mails fra mig i de sidste to uger: \r\nDen første mail, fra 11. april, handler om nye funktioner i OS2borgerPC-portalen. \r\nDen anden mail, fra 19. april, handler om at samle tilslutning til et filarkiv i OS2borgerPC. \r\n\r\nI forhold til den første mail vil jeg høre, om I har spørgsmål eller kommentarer.\r\n\r\nOg i forhold til den anden mail er jeg interesseret i at få tilslutning til den gode ide om et filarkiv. 'Tilslutning' i denne sammenhæng betyder også økonomi, så tag gerne fat i mig, hvis I vil høre nærmere eller har mulighed for at bidrage til udviklingen.\r\n\r\nEndelig vil jeg høre, om I kunne tænke jer at komme på den mailingliste, vi langt om længe har fået etableret. Her kommer vi til at skrive sammen om sikkerhed, scripts, Aula, kursusPC'er - ja, lige det I ønsker at drøfte med hinanden og med os i Magenta. Så det er her, I kan få inspiration til jeres borgerPC-løsning, og hvor I kan bidrage med jeres egne erfaringer om OS2borgerPC.\r\n\r\nSend mig en mail, hvis I ikke allerede har gjort det. Så tilmelder jeg jer listen.\r\n\r\nVenlig hilsen\r\nMorten", - "created": "2022-09-05T08:07:21.848", - "updated": "2022-09-05T08:07:21.848", - "author": "Morten Kjærsgaard", - "version": "N/A", - "site": null, - "tags": [ - 5 - ] - } -}, -{ - "model": "system.changelog", - "pk": 8, - "fields": { - "title": "Kommende funktioner", - "description": "Fjernopdatering af scripts, øget performance og nyhedssite på vej", - "content": "Kære OS2borgerPC-kunder\r\n\r\nI foråret og forsommeren har vi brugt et par arbejdsmåneder på at gennemgå og forbedre sikkerhedsadvarsels-systemet i OS2BorgerPC. Bilal i Hillerød har testet til den store guldmedalje, så vi vil gerne sende en stor tak til Hillerød og Bilal.\r\n\r\nNu, hvor vi har fået gennemskrivningen på plads, skal OS2borgerPC-klienten på jeres PC'er opdateres, for at rettelserne kan slå igennem.\r\n\r\nOS2borgerPC-klienten er det program på maskinerne, der er i kontakt med adminsitet, og som afvikler scripts og sikkerhedsscripts. Det vil komme til at højne sikkerheden på maskinerne og hjælpe i forhold til falske advarsler, som nogle af jer har oplevet.\r\n\r\nFor at forstyrre jer mindst muligt med fejlrettelser har vi lavet en løsning, hvorved vi kan køre scripts på alle computere for alle kunder og brugere. Det betyder, at vi kan opdatere klienten på alle maskiner, og vi vil også kunne frigive rettelser hurtigere end de automatiske opdateringer, hvis vi fx hører om et sikkerhedsproblem i Ubuntu.\r\n\r\nDet er vigtigt for os at understrege, at vi ikke kompromitterer sikkerheden på jeres PC'er ved at fjernkøre et eller flere scripts. Vi øger sikkerheden. Og det er altsammen inden for jeres abonnement.\r\n\r\n**Den, der tier, samtykker**\r\n\r\nInden vi iværksætter 'fjern-scriptingen' vil vi bede jer vende tilbage, hvis I **ikke** ønsker, at vi udfører denne form for kørsler på jeres PC'er. Hører vi ikke fra jer, tillader vi os at sætte scriptingen i gang hos jer hver især. I den kommende tid vil I således kunne se, at jeres PC'er har kørt et \"Opdater klient\"-script som led i denne forbedring.\r\n\r\nFremover vil vi kunne fjern-opdatere jeres klienter automatisk ved større fejlrettelser og forbedringer. Det er noget, mange af jer har efterspurgt.\r\n\r\n**Øget performance**\r\n\r\nVi har også kigget på performance på adminsitet, for der har været udfordringer med, at sitet svarer særligt langsomt på bestemte tidspunkter (1-3 sekunder hvert femte minut). Det har vist sig at give en overbelastning af serveren, at alle maskiner tjekker ind samtidig. Vi har derfor udviklet et script, der spreder tjek-ins på den hostede løsning tilfældigt ud. Vi vil gerne kunne køre dette script på alle maskiner inden for de næste par uger.\r\n\r\nMaskinerne vil stadig inden for 5 minutter afvikle de scripts, I vælger. Men derefter vil det variere, hvornår de starter og afslutter. Resultatet vil blive, at I fremover ikke vil opleve samme forsinkelse på adminsitet på specifikke tidspunkter.\r\n\r\n**Nyhedssite**\r\n\r\nTil sidst har vi arbejdet på en ny sektion på adminsitet til nyheder, som vi vil opdatere, når der eksempelvis er:\r\n\r\n- Nye globale scripts eller forbedringer af de eksisterende\r\n- Ny funktionalitet eller større rettelser på adminsitet\r\n- Nye images af OS2borgerPC og OS2borgerPC Kiosk\r\n\r\nNyhederne lægges op på nyhedssitet, og når der er tale om særligt vigtige emner, udsendes der også en e-mail.\r\n\r\nMed nyhedssitet påtænker vi at komme med opdateringer oftere end tidligere, da vi indtil nu har 'bundtet' nyhederne for ikke at forstyrre jer unødigt med for mange e-mails.\r\nVi regner med at have nyhedssitet oppe at køre umiddelbart efter sommerferien.\r\n\r\nHar I spørgsmål, kommentarer eller forslag, så tøv ikke med at skrive eller ringe.\r\n\r\nGod sommer\r\n\r\nOS2borgerPC-teamet", - "created": "2022-09-05T08:11:27.551", - "updated": "2022-09-05T08:11:27.551", - "author": "OS2borgerPC-teamet", - "version": "N/A", - "site": null, - "tags": [ - 1, - 5, - 3 - ] - } -}, -{ - "model": "system.changelog", - "pk": 9, - "fields": { - "title": "Undlad at opgradere Ubuntu-udgave til 22.04", - "description": "Undlad at opgradere Ubuntu-udgave til 22.04", - "content": "Kære OS2borgerPC-kunder\r\n\r\nNogle af jer har meldt ind, at der dukker en besked op om at opgradere udgaven af Ubuntu, der ser således ud:\r\n\r\n![Billede af opgraderings-popup](/media/changelog-images/2022/09/05/14445f62-d16d-4126-9113-72910992eb61.png)\r\n\r\nDet er tilsyneladende en autofunktion i den nyeste udgave af Ubuntu. Vi har ikke set den tidligere.\r\n\r\nI bør **UNDLADE** at trykke 'Ja, opgradér nu'. Når maskinen er opgraderet, vil den nemlig miste forbindelsen til admin-sitet!\r\n\r\n\r\nVi skal dog også lige sige, at der ikke sker noget, hvis man fra Borger-kontoen klikker på knappen. Det er først som superuser, at det går i gang. \r\nVi har derfor kørt et script ud til alle BorgerPC'er - \"Desktop - Fjern besked om opdatering\" - der gør, at disse beskeder om opdatering ikke dukker op fremover. \r\nHvis beskeden bliver ved med at dukke op efter kørsel, vil en genstart i så fald gøre forskellen. \r\nPlanen er vi snart går i gang med at teste en opgradering til 22.04, men det bliver i stedet gjort via et script.\r\n\r\n**Nye images**\r\n\r\nVi har desuden frigivet et nyt BorgerPC-image - version 4.0.0 - som I skal bruge, hvis I vil installere nye BorgerPC'er. Det kan downloades her: \r\n[https://os2borgerpc-admin.magenta.dk/site/magenta/image-versions/](https://os2borgerpc-admin.magenta.dk/site/magenta/image-versions/)\r\n\r\nBemærk at installationsprocessen er ændret en smule, og I derfor skal bruge en justeret installationsguide, som I finder her: \r\n[https://os2borgerpc-admin.magenta.dk/documentation/os2borgerpc_installation_guide/](https://os2borgerpc-admin.magenta.dk/documentation/os2borgerpc_installation_guide/)\r\n\r\nHar I spørgsmål eller kommentarer, så tøv ikke med at tage fat i os\r\n\r\nVenlig hilsen\r\nOS2borgerPC-teamet", - "created": "2022-09-05T08:15:32.480", - "updated": "2022-09-05T08:18:15.640", - "author": "OS2borgerPC-teamet", - "version": "4.0.0", - "site": null, - "tags": [ - 5, - 3 - ] - } -}, -{ - "model": "system.changelogcomment", - "pk": 7, - "fields": { - "content": "Det lyder godt, jeg har dog lige et spørgsmål vedr. det nye image.", - "created": "2022-09-05T09:37:30.322", - "changelog": 9, - "user": 35, - "parent_comment": null + "key": "FhAqjLFoqqXrBiyI8-OotUsERGjUZGJYoTRt1KO6q1rED5P3doGnnuvLbI9_-rUA8xEWYJJp2wcCLOfDuMHJXI0KPcD692sfmvZY", + "description": "Magenta Test's nøgle", + "created": "2023-10-05T16:24:15.241", + "site": 9 } } ] diff --git a/dev-environment/system_fixtures/150_account.json b/dev-environment/system_fixtures/150_account.json old mode 100755 new mode 100644 index 7edcfc56..bb4bbc07 --- a/dev-environment/system_fixtures/150_account.json +++ b/dev-environment/system_fixtures/150_account.json @@ -4,7 +4,8 @@ "pk": 1, "fields": { "user": 35, - "language": "da" + "language": "da", + "is_hidden": false } }, { @@ -12,7 +13,8 @@ "pk": 2, "fields": { "user": 36, - "language": "da" + "language": "da", + "is_hidden": false } }, { @@ -20,7 +22,8 @@ "pk": 3, "fields": { "user": 37, - "language": "da" + "language": "da", + "is_hidden": false } }, { @@ -28,7 +31,8 @@ "pk": 4, "fields": { "user": 38, - "language": "da" + "language": "da", + "is_hidden": false } }, { @@ -36,14 +40,15 @@ "pk": 5, "fields": { "user": 39, - "language": "da" + "language": "da", + "is_hidden": false } }, { "model": "account.sitemembership", "pk": 1, "fields": { - "site_user_type": 2, + "site_user_type": 3, "site": 1, "user_profile": 1 } @@ -83,5 +88,23 @@ "site": 9, "user_profile": 5 } +}, +{ + "model": "account.sitemembership", + "pk": 6, + "fields": { + "site_user_type": 2, + "site": 9, + "user_profile": 3 + } +}, +{ + "model": "account.sitemembership", + "pk": 7, + "fields": { + "site_user_type": 2, + "site": 13, + "user_profile": 3 + } } ] diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100755 index e8d2a590..00000000 --- a/docker-compose.yml +++ /dev/null @@ -1,48 +0,0 @@ -version: "3.4" -services: - frontend: - build: - context: . - dockerfile: docker/Dockerfile - target: frontend - command: - npm run watch-sass - volumes: - - .:/code/ - # We do not want node_modules on the host machine, so we create an - # additional volume for it. It is important this anonymous volume - # comes after the above bind to work. - - /code/nodejs/node_modules/ - os2borgerpc-admin: - build: - context: . - dockerfile: docker/Dockerfile - target: os2borgerpc - command: - sh -c "python manage.py initialize_database && - gunicorn --reload --timeout 0 --config /code/docker/gunicorn-settings.py os2borgerpc_admin.wsgi" - volumes: - - .:/code/ - - ./dev-environment/dev-settings.ini:/user-settings.ini - - ./dev-environment/system_fixtures:/code/admin_site/system/fixtures/ - depends_on: - - db - ports: - - 9999:9999 - stdin_open: true - tty: true - container_name: bpc_admin_site_django - privileged: true - db: - image: postgres:latest - restart: always - environment: - # Note: These values are only used in the local development environment, so it's not particularly important - # that they're secure - POSTGRES_USER: bpc - POSTGRES_PASSWORD: bpc - volumes: - - postgres-data:/var/lib/postgresql/data - container_name: bpc_admin_site_db -volumes: - postgres-data: diff --git a/docker/Dockerfile b/docker/Dockerfile old mode 100755 new mode 100644 index 946a3359..015d72ee --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -19,7 +19,6 @@ LABEL org.opencontainers.image.title="OS2borgerPC" \ org.opencontainers.image.source="https://github.com/OS2borgerPC/admin-site" ENV PYTHONUNBUFFERED=1 \ - BPC_SYSTEM_CONFIG_PATH=/code/docker/docker-settings.ini \ BPC_USER_CONFIG_PATH=/user-settings.ini \ PYTHONPATH=/code/admin_site/:$PYTHONPATH\ DJANGO_SETTINGS_MODULE=os2borgerpc_admin.settings @@ -51,16 +50,33 @@ VOLUME /media WORKDIR /code/ +COPY VERSION /code/VERSION + # Install requirements. COPY admin_site/requirements.txt /code/admin_site/requirements.txt RUN pip3 install --no-cache-dir -r admin_site/requirements.txt +# Install supercronic +ENV SUPERCRONIC_URL=https://github.com/aptible/supercronic/releases/download/v0.2.25/supercronic-linux-amd64 \ + SUPERCRONIC=supercronic-linux-amd64 \ + SUPERCRONIC_SHA1SUM=642f4f5a2b67f3400b5ea71ff24f18c0a7d77d49 + +# hadolint ignore=DL4006 +RUN curl -fsSLO "$SUPERCRONIC_URL" \ + && echo "${SUPERCRONIC_SHA1SUM} ${SUPERCRONIC}" | sha1sum -c - \ + && chmod +x "$SUPERCRONIC" \ + && mv "$SUPERCRONIC" "/usr/local/bin/${SUPERCRONIC}" \ + && ln -s "/usr/local/bin/${SUPERCRONIC}" /usr/local/bin/supercronic + # Copy backend code. COPY README.rst . COPY LICENSE . COPY docker ./docker COPY admin_site ./admin_site +# Copy crontab-file +COPY crontab /crontab + WORKDIR /code/admin_site # Copy frontend static files. @@ -82,6 +98,7 @@ COPY --from=frontend \ # consider it a bug. See `insecure-settings.ini` for a detailed explanation. RUN set -ex \ && BPC_USER_CONFIG_PATH=/code/docker/insecure-settings.ini python ./manage.py collectstatic --no-input --clear \ + && BPC_USER_CONFIG_PATH=/code/docker/insecure-settings.ini python ./manage.py compilemessages \ && rm /code/docker/insecure-settings.ini # Run the server as the bpc user on port 9999 diff --git a/docker/README.md b/docker/README.md old mode 100755 new mode 100644 diff --git a/docker/docker-settings.ini b/docker/docker-settings.ini deleted file mode 100755 index cd6ea4c7..00000000 --- a/docker/docker-settings.ini +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright (C) 2019 Magenta ApS, http://magenta.dk. -# Contact: info@magenta.dk. -# - -################################################################################ -# Changes to this file requires approval from Labs. Please add a person from # -# Labs as required approval to your MR if you have any changes. # -################################################################################ - -# Setting for Django. - -# This file overwrites the fallback values from settings.py to default values -# useful when bevillingsplatform is packaged in Dockerfile. It is loaded by -# setting the DJANGO_SETTING_INI_PRELOAD in Dockerfile. Everything here can -# still be overwritten by pointing DJANGO_SETTING_INI to a file. - -[settings] -STATIC_ROOT=/static -MEDIA_ROOT=/media -GS_CREDENTIALS_FILE=/sa-key.json diff --git a/docker/gunicorn-settings.py b/docker/gunicorn-settings.py old mode 100755 new mode 100644 diff --git a/docker/insecure-settings.ini b/docker/insecure-settings.ini old mode 100755 new mode 100644 diff --git a/docs/.gitignore b/docs/.gitignore old mode 100755 new mode 100644 diff --git a/docs/.readthedocs.yaml b/docs/.readthedocs.yaml new file mode 100644 index 00000000..2386d8b7 --- /dev/null +++ b/docs/.readthedocs.yaml @@ -0,0 +1,24 @@ +# Read the Docs configuration file for Sphinx projects +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +# Set build options +build: + os: ubuntu-lts-latest # Required: The Docker image used for building the docs. + tools: # At least one tool is required + python: "latest" + +# Build documentation in the "docs/" directory with Sphinx +sphinx: + configuration: docs/source/conf.py + # Fail on all warnings to avoid broken references + fail_on_warning: true + +# Optional but recommended, declare the Python requirements required +# to build your documentation +# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html +python: + install: + - requirements: docs/requirements.txt diff --git a/docs/LICENSE b/docs/LICENSE old mode 100755 new mode 100644 diff --git a/docs/Makefile b/docs/Makefile old mode 100755 new mode 100644 diff --git a/docs/README.md b/docs/README.md old mode 100755 new mode 100644 diff --git a/docs/justfile b/docs/justfile old mode 100755 new mode 100644 diff --git a/docs/make.bat b/docs/make.bat old mode 100755 new mode 100644 diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 00000000..6c5d5d44 --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1 @@ +sphinx-rtd-theme diff --git a/docs/source/conf.py b/docs/source/conf.py old mode 100755 new mode 100644 index 5147e4d4..fe0c6b10 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- +# # Configuration file for the Sphinx documentation builder. # # This file only contains a selection of the most common options. For a full @@ -17,12 +19,12 @@ # -- Project information ----------------------------------------------------- -project = 'os2borgerpc-admin-site' -copyright = '2021, Magenta ApS' -author = 'Magenta ApS' +project = "OS2borgerPC: Admin Site" +copyright = "2024, Magenta ApS" +author = "Magenta ApS" # The full version, including alpha/beta/rc tags -release = '4.2.0' +release = "5.25.0" # -- General configuration --------------------------------------------------- @@ -30,26 +32,22 @@ # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. -extensions = [ -] +extensions = [] # Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] +templates_path = ["_templates"] -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. -exclude_patterns = [] +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = "en" # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -# -html_theme = "sphinx_rtd_theme" -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] \ No newline at end of file +html_theme = "sphinx_rtd_theme" diff --git a/docs/source/dev.rst b/docs/source/dev.rst old mode 100755 new mode 100644 index fc849c19..f9973607 --- a/docs/source/dev.rst +++ b/docs/source/dev.rst @@ -22,4 +22,13 @@ Models / Database visualized .. image:: graphics/models_graphed.png :width: 100% -| \ No newline at end of file +| + +Hosting +------- + +Configuring the use of customer admins +====================================== + +See the related +`Guide `_. diff --git a/docs/source/graphics/admin_site_example.png b/docs/source/graphics/admin_site_example.png old mode 100755 new mode 100644 diff --git a/docs/source/graphics/architecture.svg b/docs/source/graphics/architecture.svg old mode 100755 new mode 100644 diff --git a/docs/source/graphics/models_graphed.png b/docs/source/graphics/models_graphed.png old mode 100755 new mode 100644 diff --git a/docs/source/index.rst b/docs/source/index.rst old mode 100755 new mode 100644 index 05812cf7..e303bb1b --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -7,7 +7,7 @@ OS2BorgerPC - Admin Site ======================== -Introduktion +Introduction ============ This directory contains the OS2borgerPC Admin system, which is a remote administration system for Debian-based GNU/Linux-systems, especially diff --git a/docs/source/news.rst b/docs/source/news.rst old mode 100755 new mode 100644 diff --git a/docs/source/readme.rst b/docs/source/readme.rst old mode 100755 new mode 100644 diff --git a/justfile b/justfile index 3fef8910..e44e331e 100755 --- a/justfile +++ b/justfile @@ -5,10 +5,17 @@ # Default shell and settings used in the recipes set shell := ["bash", "-uc"] +# Set user ID and group ID dynamically. These are in turn used in docker compose when mounting volumes. +# This should get us closer to being able to remove "privileged", and make permissions errors (and "just fix-permissions") less relevant +export UID := `id -u` +export GID := `id -g` + # Aliases alias r := run alias rd := run-debug alias fp := fix-permissions +alias tmm := translations-make-messages +alias tcm := translations-compile-messages # Variables django_container := "bpc_admin_site_django" @@ -23,8 +30,7 @@ models_output_file_name := "models_graphed.png" # The default recipe, if none is specified @default: - if ! which fzf > /dev/null; then echo "fzf not installed. If on Ubuntu: Install the fzf package." && exit 1; fi - @just --choose + @just --list # Help command, which lists available recipes help: @@ -35,30 +41,29 @@ verify-container-running container: #!/usr/bin/env sh # this shebang is to prevent just complaining about whitespace # https://github.com/casey/just#indentation - if ! sudo docker ps | grep "{{container}}"; then + if ! docker ps | grep "{{container}}"; then printf "%s\n" "Container not running. Exiting." exit 1 fi -bash: (verify-container-running django_container) - sudo docker exec -i --tty {{django_container}} /bin/bash +bash-django: (verify-container-running django_container) + docker exec -i --tty {{django_container}} /bin/bash -# Run bash in the django container without first running migrations -# Very convenient for running migrations when the container won't start due to changes in models -bash-no-migrate: - sudo docker-compose run --rm --entrypoint bash {{compose_django_service}} +# Run bash in a django container without first running migrations - convenient for e.g. makemigrations +bash-django-skip-entrypoint: + docker compose run --rm --entrypoint bash {{compose_django_service}} # Runs black on the python codebase black: - black --extend-exclude="/migrations/" admin_site + black admin_site # Dump the database to a file named {{db_data_file}} dump-db-data: (verify-container-running django_container) - sudo docker exec {{django_container}} django-admin dumpdata > {{db_data_file}} + docker exec {{django_container}} django-admin dumpdata > {{db_data_file}} # Dump the database structure to a file named db-structure.psql dump-db-structure: (verify-container-running django_container) - sudo docker exec -i --tty {{db_container}} pg_dump -U postgres --schema-only bpc > {{db_structure_file}} + docker exec -i --tty {{db_container}} pg_dump -U postgres --schema-only bpc > {{db_structure_file}} # View the db file contents from a dumped db # it can also be viewed with fx.: jq . < out.json | view @@ -68,38 +73,52 @@ view-dumped-db-data: # Fix adminsite permissions in case you get "Permission Denied" errors fix-permissions: #!/usr/bin/env sh + # Setting all directories to 777, all files to 666 and finally set the executable bit for the few files needing that if ! which fd > /dev/null; then printf '%s\n' "fd not installed. If on Ubuntu: Install the fd-find package, and create a symlink like this:" \ "sudo ln -s /usr/bin/fdfind /usr/local/bin/fd" exit 1 fi - sudo fd --hidden -x chmod 777 + sudo fd --hidden --type directory -x chmod 777 + sudo fd --hidden --type file -x chmod 666 + sudo chmod 755 justfile docker/docker-entrypoint.sh scripts/cleanup_old_media_files/cleanup_old_media_files.py admin_site/manage.py # Run arbitrary manage.py commands. Examples: makemigrations/migrate/showmigrations/shell_plus managepy +COMMAND: (verify-container-running django_container) - sudo docker exec -i --tty {{django_container}} ./manage.py {{COMMAND}} + docker exec -i --tty {{django_container}} ./manage.py {{COMMAND}} + +# Related to: https://docs.djangoproject.com/en/4.2/howto/upgrade-version/ +# Checks for any deprecation warnings in your project +check-deprecation-warnings: (verify-container-running django_container) + docker exec -i --tty {{django_container}} python -Wa manage.py test # Useful if changing requirements.txt and ...? recreate-django: - sudo docker-compose up --build + docker compose up --build # Recreate the django database, replacing what you have with what's in the fixtures recreate-db: - sudo docker-compose down --volumes + docker compose down --volumes # Start the admin-site stack run: - sudo docker-compose up + docker compose up printf '%s' "If permissions fail, verify umask and/or manually check if the permissions differ on the file mentioned, e.g. initialize.py" # Start the admin-site stack in the background and attach specifically to the django container - so python breakpoints work run-debug: - sudo docker-compose up -d {{compose_django_service}} {{compose_db_service}} - sudo docker attach {{django_container}} - -# Run django's make-messages for translations -translations-make-messages: (verify-container-running django_container) - @just managepy makemessages --all --ignore venv + docker compose up -d + docker attach {{django_container}} + +# Run django's make-messages for translations, including translations for javascript files (djangojs) +# --no-obsolete removes unused translations, --add-location file is there to make diffs clearer by skipping line +# numbers, so a change early in views.py doesn't make makemessages update hundreds of line references +# TODO: makemessages sometimes suddenly makes changes to where it line wraps, making diffs hard to read. Seemingly there's +# no hard line wrap set, and the only option is to disable line wrap completely which doesn't seem ideal. Hopefully a +# future Django version provides a solution. +translations-make-messages: (verify-container-running django_container) fix-permissions + @just managepy makemessages --all --ignore venv --add-location file --no-obsolete + @just managepy makemessages --all --ignore venv --add-location file --no-obsolete -d djangojs # Run django's compile-messages (usually after make-messages) for translations translations-compile-messages: (verify-container-running django_container) @@ -107,17 +126,17 @@ translations-compile-messages: (verify-container-running django_container) # Replace all the fixtures (test data) with what you currently have in your local adminsite db update-test-data: (verify-container-running django_container) - sudo docker-compose exec -u 0 -T {{compose_django_service}} python manage.py dumpdata --indent 4 auth > dev-environment/system_fixtures/050_auth.json - sudo docker-compose exec -u 0 -T {{compose_django_service}} python manage.py dumpdata --indent 4 system > dev-environment/system_fixtures/100_system.json - sudo docker-compose exec -u 0 -T {{compose_django_service}} python manage.py dumpdata --indent 4 account > dev-environment/system_fixtures/150_account.json - printf '%s' 'NOTE: This may add unwanted log output to the top of the files! Verify and clean them up before commiting if so.' + docker compose exec -u 0 -T {{compose_django_service}} python manage.py dumpdata --indent 4 auth > dev-environment/system_fixtures/050_auth.json + docker compose exec -u 0 -T {{compose_django_service}} python manage.py dumpdata --indent 4 system > dev-environment/system_fixtures/100_system.json + docker compose exec -u 0 -T {{compose_django_service}} python manage.py dumpdata --indent 4 account > dev-environment/system_fixtures/150_account.json + docker compose exec -u 0 -T {{compose_django_service}} python manage.py dumpdata --indent 4 changelog > dev-environment/changelog_fixtures/100_changelog.json # Create a graph of the django models to a file named models_graphed.png graph-models: (verify-container-running django_container) # Tried using pip install instead but it kept complaining about missing graphviz binaries - sudo docker exec -it -u 0 {{django_container}} apt-get update - sudo docker exec -it -u 0 {{django_container}} apt-get install --assume-yes python3-pydotplus # alternately pytnho3-pygraphviz - sudo docker exec -it -u 0 {{django_container}} pip install pydotplus + docker exec -it -u 0 {{django_container}} apt-get update + docker exec -it -u 0 {{django_container}} apt-get install --assume-yes python3-pydotplus # alternately pytnho3-pygraphviz + docker exec -it -u 0 {{django_container}} pip install pydotplus @just managepy graph_models -a -g -o /tmp/{{models_output_file_name}} - # docker cp is not part of docker-compose, so can't docker-compose exec that - sudo docker cp {{django_container}}:/tmp/{{models_output_file_name}} {{models_output_file_name}} + # docker cp is not part of docker compose, so can't docker compose exec that + docker cp {{django_container}}:/tmp/{{models_output_file_name}} {{models_output_file_name}} diff --git a/nodejs/CSS_CUSTOMIZATION.md b/nodejs/CSS_CUSTOMIZATION.md old mode 100755 new mode 100644 index 843f619e..e16e7cf3 --- a/nodejs/CSS_CUSTOMIZATION.md +++ b/nodejs/CSS_CUSTOMIZATION.md @@ -8,7 +8,7 @@ This is a guideline for further customizing the site. First off, you'll need to install the NodeJS dependencies to build Bootstrap. **You need only do this once.** -From [nodejs/](./) directory, install dependencies. +From [nodejs/](./) directory, install dependencies. (Assuming you have [NodeJS](https://nodejs.org/en/) and [npm](https://www.npmjs.com/) installed.) ``` $ npm install @@ -17,11 +17,11 @@ This also installs the Bootstrap base styles, which you'll customize. ## Step 1: Edit SCSS -[nodejs/src/](./src) contains the customized SASS styles. +[nodejs/src/](./src) contains the customized SASS styles. Add or edit styles in the files contained here. If you add a new `.scss` file, be sure to import it into [custom.scss](./src/custom.scss) -Be sure to look into [_variables.scss](./src/_variables.scss). The SASS variables in this file are used to tweak Bootstrap variables in a standardized way. +Be sure to look into [_variables.scss](./src/_variables.scss). The SASS variables in this file are used to tweak Bootstrap variables in a standardized way. We highly encourage you to start any attempt at customization by just tweaking the variables. [Read more about default variables in the Bootstrap docs.](https://getbootstrap.com/docs/5.0/customize/sass/#variable-defaults) ## Step 2: Build CSS diff --git a/nodejs/UI_ELEMENTS.md b/nodejs/UI_ELEMENTS.md old mode 100755 new mode 100644 diff --git a/nodejs/package-lock.json b/nodejs/package-lock.json old mode 100755 new mode 100644 diff --git a/nodejs/package.json b/nodejs/package.json old mode 100755 new mode 100644 diff --git a/nodejs/src/_bootstrap_table_overrides.scss b/nodejs/src/_bootstrap_table_overrides.scss old mode 100755 new mode 100644 diff --git a/nodejs/src/_code.scss b/nodejs/src/_code.scss old mode 100755 new mode 100644 diff --git a/nodejs/src/_collapsible.scss b/nodejs/src/_collapsible.scss old mode 100755 new mode 100644 diff --git a/nodejs/src/_dropdown.scss b/nodejs/src/_dropdown.scss old mode 100755 new mode 100644 diff --git a/nodejs/src/_errors.scss b/nodejs/src/_errors.scss old mode 100755 new mode 100644 diff --git a/nodejs/src/_form.scss b/nodejs/src/_form.scss old mode 100755 new mode 100644 diff --git a/nodejs/src/_icons.scss b/nodejs/src/_icons.scss old mode 100755 new mode 100644 diff --git a/nodejs/src/_itemlist.scss b/nodejs/src/_itemlist.scss old mode 100755 new mode 100644 diff --git a/nodejs/src/_layout.scss b/nodejs/src/_layout.scss old mode 100755 new mode 100644 diff --git a/nodejs/src/_modal.scss b/nodejs/src/_modal.scss old mode 100755 new mode 100644 diff --git a/nodejs/src/_navigation.scss b/nodejs/src/_navigation.scss old mode 100755 new mode 100644 index 7d354b09..4a18082a --- a/nodejs/src/_navigation.scss +++ b/nodejs/src/_navigation.scss @@ -19,11 +19,11 @@ // Global navigation #left-menu { - width: $navigation-width; - margin: 0; - border-radius: 0; + width: $navigation-width; + margin: 0; + border-radius: 0; box-shadow: -5px -5px 20px $gray-900 inset; - overflow-x: hidden; + overflow-x: hidden; overflow-y: auto; background-color: $gray-800; display: block; @@ -53,19 +53,19 @@ } } - .badge { - width: auto; + .badge { + width: auto; } } // Sublevel navigation .sublevelnav { - width: $navigation-width; + width: $navigation-width; background-color: $gray-200; - overflow-x: hidden; + overflow-x: hidden; overflow-y: auto; margin: 0; - list-style-type: none; + list-style-type: none; padding-left: 0; display: flex; flex-flow: column nowrap; @@ -78,19 +78,19 @@ h2, h3, h4 { font-size: .75rem; text-transform: uppercase; - letter-spacing: 0.05em; + letter-spacing: 0.05em; font-weight: normal; - margin: 0; + margin: 0; padding: 0; } - a.remove:hover, - a.remove:active, + a.remove:hover, + a.remove:active, a.remove:focus { background: $danger; border: none; } - .btn-close { + .btn-close { font-size: 10px; } @@ -181,4 +181,4 @@ background-color: $orange; color: $white; } -} \ No newline at end of file +} diff --git a/nodejs/src/_pagination.scss b/nodejs/src/_pagination.scss old mode 100755 new mode 100644 diff --git a/nodejs/src/_picklist.scss b/nodejs/src/_picklist.scss old mode 100755 new mode 100644 diff --git a/nodejs/src/_table.scss b/nodejs/src/_table.scss old mode 100755 new mode 100644 diff --git a/nodejs/src/_variables.scss b/nodejs/src/_variables.scss old mode 100755 new mode 100644 index cc2c1f60..8cc7694b --- a/nodejs/src/_variables.scss +++ b/nodejs/src/_variables.scss @@ -31,13 +31,13 @@ $gentle-warning: $yellow; // Sizes $spacer: 1rem; -$navigation-width: $spacer*18; +$navigation-width: $spacer*19; // Font $font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif; $font-size-base: .9rem; -// Pagination +// Pagination $pagination-color: $black; $pagination-bg: $gray-200; $pagination-border-width: 0; diff --git a/nodejs/src/_warning.scss b/nodejs/src/_warning.scss old mode 100755 new mode 100644 diff --git a/nodejs/src/custom.scss b/nodejs/src/custom.scss old mode 100755 new mode 100644 index 06330df5..4a411c51 --- a/nodejs/src/custom.scss +++ b/nodejs/src/custom.scss @@ -40,10 +40,53 @@ hr { color: $warning; } -.picklist-counter-badge { +.pick-list-counter-badge { + color: black; font-size: 1.0rem; } +.pick-list .list-group-item:active { + background-color: transparent; +} + +li .dropdown-item:active { + background-color: transparent; + color: black +} + +.pick-list .btn:focus { + box-shadow: none; +} + #pc_update_form .basic-info { font-size: 1.20em; } + +#monitor-period input { + display: inline; + width: 100px; +} + +/* Site list */ +.customer { + background: $gray-100; + border: 1px solid $gray-300; + padding: 10px; +} + +.customer small { + position: relative; + top: -31px; +} + +.sites .container { + max-width: 1700px; +} + +.site-btns { + background: $gray-200; +} + +.customer .btn-group:hover { + background: $gray-300 +} diff --git a/nodejs/src/postcss.js b/nodejs/src/postcss.js old mode 100755 new mode 100644