From 8723d1ce34cc7159ddef014837d54cd9afb307ff Mon Sep 17 00:00:00 2001 From: Jam <1347620+JamsRepos@users.noreply.github.com> Date: Mon, 22 Apr 2024 19:42:57 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=89=20Live=20TV=20can=20now=20?= =?UTF-8?q?be=20enabled/disabled=20for=20Jellyfin/Emby=20invites?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wizarr_backend/app/models/database/invitations.py | 1 + .../wizarr_backend/app/models/wizarr/invitations.py | 1 + apps/wizarr-backend/wizarr_backend/helpers/emby.py | 7 +++++++ apps/wizarr-backend/wizarr_backend/helpers/jellyfin.py | 7 +++++++ .../modules/admin/components/Forms/InvitationForm.vue | 10 ++++++++++ .../admin/components/InvitationManager/Invitation.vue | 8 ++++++++ apps/wizarr-frontend/src/types/api/invitations.ts | 1 + 7 files changed, 35 insertions(+) diff --git a/apps/wizarr-backend/wizarr_backend/app/models/database/invitations.py b/apps/wizarr-backend/wizarr_backend/app/models/database/invitations.py index 413a6982..fefa6bd3 100644 --- a/apps/wizarr-backend/wizarr_backend/app/models/database/invitations.py +++ b/apps/wizarr-backend/wizarr_backend/app/models/database/invitations.py @@ -15,3 +15,4 @@ class Invitations(BaseModel): plex_allow_sync = BooleanField(null=True, default=None) plex_home = BooleanField(null=True, default=None) sessions = CharField(null=True, default=None) + live_tv = BooleanField(null=True, default=None) diff --git a/apps/wizarr-backend/wizarr_backend/app/models/wizarr/invitations.py b/apps/wizarr-backend/wizarr_backend/app/models/wizarr/invitations.py index eed10ed2..b877aab2 100644 --- a/apps/wizarr-backend/wizarr_backend/app/models/wizarr/invitations.py +++ b/apps/wizarr-backend/wizarr_backend/app/models/wizarr/invitations.py @@ -38,6 +38,7 @@ class InvitationsModel(Model): specific_libraries = SpecificLibrariesType(required=False, default=[]) plex_allow_sync = BooleanType(required=False, default=False) sessions = IntType(required=False, default=None) + live_tv = BooleanType(required=False, default=False) plex_home = BooleanType(required=False, default=False) used_at = DateTimeType(required=False, default=None, convert_tz=True) created = DateTimeType(required=False, default=datetime.utcnow(), convert_tz=True) diff --git a/apps/wizarr-backend/wizarr_backend/helpers/emby.py b/apps/wizarr-backend/wizarr_backend/helpers/emby.py index 31642a62..03cc2a45 100644 --- a/apps/wizarr-backend/wizarr_backend/helpers/emby.py +++ b/apps/wizarr-backend/wizarr_backend/helpers/emby.py @@ -278,6 +278,13 @@ def invite_emby_user(username: str, password: str, code: str, server_api_key: Op else: new_policy["SimultaneousStreamLimit"] = 0 + # Set live tv access + if invitation.live_tv is not None and invitation.live_tv == True: + new_policy["EnableLiveTvAccess"] = True + else: + new_policy["EnableLiveTvAccess"] = False + + # Get users default policy old_policy = user_response["Policy"] # Merge policy with user policy don't overwrite diff --git a/apps/wizarr-backend/wizarr_backend/helpers/jellyfin.py b/apps/wizarr-backend/wizarr_backend/helpers/jellyfin.py index 09c21113..40ac758a 100644 --- a/apps/wizarr-backend/wizarr_backend/helpers/jellyfin.py +++ b/apps/wizarr-backend/wizarr_backend/helpers/jellyfin.py @@ -273,6 +273,13 @@ def invite_jellyfin_user(username: str, password: str, code: str, server_api_key else: new_policy["MaxActiveSessions"] = 0 + # Set live tv access + if invitation.live_tv is not None and invitation.live_tv == True: + new_policy["EnableLiveTvAccess"] = False + else: + new_policy["EnableLiveTvAccess"] = True + + # Get users default policy old_policy = user_response["Policy"] # Merge policy with user policy don't overwrite diff --git a/apps/wizarr-frontend/src/modules/admin/components/Forms/InvitationForm.vue b/apps/wizarr-frontend/src/modules/admin/components/Forms/InvitationForm.vue index 9ff00d60..73cedebd 100644 --- a/apps/wizarr-frontend/src/modules/admin/components/Forms/InvitationForm.vue +++ b/apps/wizarr-frontend/src/modules/admin/components/Forms/InvitationForm.vue @@ -180,12 +180,20 @@ export default defineComponent({ label: "Unlimited Invitation Usages", value: "unlimited", }, + live_tv: { + label: "Access to Live TV", + value: "live_tv", + }, }, emby: { unlimited: { label: "Unlimited Invitation Usages", value: "unlimited", }, + live_tv: { + label: "Access to Live TV", + value: "live_tv", + }, }, plex: { unlimited: { @@ -256,6 +264,7 @@ export default defineComponent({ const unlimited = invitationData.checkboxes.includes("unlimited"); const plex_home = invitationData.checkboxes.includes("plex_home"); const plex_allow_sync = invitationData.checkboxes.includes("plex_allow_sync"); + const live_tv = invitationData.checkboxes.includes("live_tv"); const sessions = invitationData.sessions; const duration = invitationData.duration == "custom" ? this.$filter("toMinutes", invitationData.customDuration) : invitationData.duration == "unlimited" ? null : invitationData.duration; const libraries = invitationData.libraries; @@ -266,6 +275,7 @@ export default defineComponent({ unlimited: unlimited, plex_home: plex_home, plex_allow_sync: plex_allow_sync, + live_tv: live_tv, sessions: sessions, duration: duration, specific_libraries: JSON.stringify(libraries), diff --git a/apps/wizarr-frontend/src/modules/admin/components/InvitationManager/Invitation.vue b/apps/wizarr-frontend/src/modules/admin/components/InvitationManager/Invitation.vue index ce052635..ec6e4bdf 100644 --- a/apps/wizarr-frontend/src/modules/admin/components/InvitationManager/Invitation.vue +++ b/apps/wizarr-frontend/src/modules/admin/components/InvitationManager/Invitation.vue @@ -102,12 +102,20 @@ export default defineComponent({ label: "Unlimited Invitation Usages", value: this.invitation.unlimited, }, + live_tv: { + label: "Access to Live TV", + value: this.invitation.live_tv, + }, }, emby: { unlimited: { label: "Unlimited Invitation Usages", value: this.invitation.unlimited, }, + live_tv: { + label: "Access to Live TV", + value: this.invitation.live_tv, + }, }, plex: { unlimited: { diff --git a/apps/wizarr-frontend/src/types/api/invitations.ts b/apps/wizarr-frontend/src/types/api/invitations.ts index 4037ddac..2426d0a6 100644 --- a/apps/wizarr-frontend/src/types/api/invitations.ts +++ b/apps/wizarr-frontend/src/types/api/invitations.ts @@ -8,6 +8,7 @@ export interface Invitation { id: number; plex_allow_sync: boolean; plex_home: boolean; + live_tv: boolean; sessions: number; specific_libraries: string; unlimited: boolean;