Skip to content

Commit

Permalink
Merge pull request #17 from Trunk-Player/git-checkout--b-TP-79-api-cr…
Browse files Browse the repository at this point in the history
…eate-talkgroup-unit-alerts

Git checkout  b tp 79 api create talkgroup unit alerts
  • Loading branch information
MaxwellDPS committed Mar 17, 2022
2 parents 6a84cfc + fd2d6c8 commit 3d7f0d4
Show file tree
Hide file tree
Showing 9 changed files with 69 additions and 9 deletions.
6 changes: 5 additions & 1 deletion trunkplayerNG/radio/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def unlock_transmssions(modeladmin, request, queryset):

class UserAlertAdmin(admin.ModelAdmin):
ordering = ("-user",)
list_display = ("name", "user", "web_notification", "app_rise_notification")
list_display = ("name", "user", "web_notification", "app_rise_notification", "emergency_only", "count", "trigger_time")
list_filter = ("web_notification", "app_rise_notification")


Expand Down Expand Up @@ -201,10 +201,14 @@ class TalkgroupACLAdmin(admin.ModelAdmin):
"name",
"default_new_talkgroups",
"default_new_users",
"download_allowed",
"transcript_allowed",
)
list_filter = (
"default_new_talkgroups",
"default_new_users",
"download_allowed",
"transcript_allowed",
)


Expand Down
10 changes: 4 additions & 6 deletions trunkplayerNG/radio/filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ class Meta:
"app_rise_notification",
"app_rise_urls",
"emergency_only",
"count",
"trigger_time"
]

class UserProfileFilter(filters.FilterSet):
Expand Down Expand Up @@ -270,21 +272,17 @@ class ScannerFilter(filters.FilterSet):
name = django_filters.CharFilter(lookup_expr='icontains')
description = django_filters.CharFilter(lookup_expr='icontains')

talkgroups__alpha_tag = django_filters.CharFilter(field_name='talkgroups__alpha_tag', lookup_expr='icontains')
talkgroups__decimal_id = django_filters.CharFilter(field_name='talkgroups__decimal_id', lookup_expr='exact')
talkgroups__agency__name = django_filters.CharFilter(field_name='talkgroups__agency__name', lookup_expr='icontains')


class Meta:
model = ScanList
model = Scanner
fields = [
"UUID",
"owner",
"name",
"description",
"public",
"community_shared",
"talkgroups",
"scanlists",
]


Expand Down
11 changes: 10 additions & 1 deletion trunkplayerNG/radio/helpers/notifications.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@
import apprise
import socketio

from datetime import timedelta

from django.utils import timezone
from django.conf import settings

from radio.models import TalkGroup, Unit, UserAlert
from radio.models import TalkGroup, Unit, UserAlert, Transmission

if settings.SEND_TELEMETRY:
from sentry_sdk import capture_exception
Expand Down Expand Up @@ -38,6 +41,7 @@ def _send_transmission_notifications(transmission: dict) -> None:
"""
from radio.tasks import broadcast_user_notification


talkgroup = transmission["talkgroup"]
units = transmission["units"]
logging.debug(f'[+] Handling Notifications for TX:{transmission["UUID"]}')
Expand All @@ -47,6 +51,11 @@ def _send_transmission_notifications(transmission: dict) -> None:
if not alert.enabled:
continue

transmission_count = Transmission.objects.filter(talkgroup__UUID=talkgroup, end_time__gte=timezone.now()-timedelta(seconds=alert.trigger_time))
if len(transmission_count) < alert.count:
continue


try:
if alert.talkgroups.filter(UUID=talkgroup).exists():
talkgroup_object = TalkGroup.objects.get(UUID=talkgroup)
Expand Down
1 change: 0 additions & 1 deletion trunkplayerNG/radio/helpers/socket.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ def tx_request(sid, message):

if user_allowed_to_access_transmission(transmission, user.userProfile.UUID):
resp = TransmissionListSerializer(transmission)
logging.warning(resp.data)
# Clean me up
data = json.loads(json.dumps(resp.data, cls=UUIDEncoder))
sio.emit(
Expand Down
6 changes: 6 additions & 0 deletions trunkplayerNG/radio/helpers/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
TransmissionFreq,
Unit,
TransmissionUnit,
UserProfile,
)

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -271,6 +272,11 @@ def user_allowed_to_access_transmission(
"""
Returs bool if user can access Transmission
"""

user:UserProfile = UserProfile.objects.get(UUID=user_uuid)
if user.site_admin:
return True

allowed_tgs = get_user_allowed_talkgroups(transmission.system, user_uuid=user_uuid)

if transmission.talkgroup in allowed_tgs:
Expand Down
28 changes: 28 additions & 0 deletions trunkplayerNG/radio/migrations/0004_auto_20220316_1922.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Generated by Django 3.2.10 on 2022-03-17 02:22

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('radio', '0003_auto_20220313_0907'),
]

operations = [
migrations.AddField(
model_name='talkgroupacl',
name='transcript_allowed',
field=models.BooleanField(default=True),
),
migrations.AddField(
model_name='useralert',
name='count',
field=models.IntegerField(default=1, verbose_name='Number of Transmissions over trigger time to alert'),
),
migrations.AddField(
model_name='useralert',
name='trigger_time',
field=models.IntegerField(default=10, verbose_name='trigger time'),
),
]
2 changes: 2 additions & 0 deletions trunkplayerNG/radio/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -396,6 +396,8 @@ class UserAlert(models.Model):
talkgroups = models.ManyToManyField(TalkGroup, blank=True)
emergency_only = models.BooleanField(default=False)
units = models.ManyToManyField(Unit, blank=True)
count = models.IntegerField('Number of Transmissions over trigger time to alert', default=1)
trigger_time = models.IntegerField('trigger time', default=10)
title = models.CharField(max_length=255, default="New Activity Alert")
body = models.TextField(default="New Activity on %T - %I")

Expand Down
2 changes: 2 additions & 0 deletions trunkplayerNG/radio/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ class Meta:
"title",
"body",
"emergency_only",
"count",
"trigger_time",
]


Expand Down
12 changes: 12 additions & 0 deletions trunkplayerNG/radio/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,12 @@ class UserAlertCreate(APIView):
type=openapi.TYPE_STRING,
description="Only alert on Emergency Transmissions",
),
"count": openapi.Schema(
type=openapi.TYPE_INTEGER, description="Number of Transmissions over trigger time to alert"
),
"trigger_time": openapi.Schema(
type=openapi.TYPE_INTEGER, description="trigger time"
),
},
),
)
Expand Down Expand Up @@ -316,6 +322,12 @@ def get(self, request, request_uuid):
type=openapi.TYPE_STRING,
description="Only alert on Emergency Transmissions",
),
"count": openapi.Schema(
type=openapi.TYPE_INTEGER, description="Number of Transmissions over trigger time to alert"
),
"trigger_time": openapi.Schema(
type=openapi.TYPE_INTEGER, description="trigger time"
),
},
),
)
Expand Down

0 comments on commit 3d7f0d4

Please sign in to comment.