Fix review

Co-Authored-By: Antoine Nguyen <tonio@ngyn.org>
This commit is contained in:
Spitap
2023-03-03 11:25:02 +01:00
co-authored by Antoine Nguyen
parent 8807fcd94b
commit 5558dfba30
6 changed files with 44 additions and 22 deletions
+15 -4
View File
@@ -52,7 +52,7 @@ export default {
created () {
// this.$store.dispatch('auth/initialize')
bus.$on('notification', this.showNotification)
bus.$on('logged', this.checkAlarms)
bus.$on('loggedIn', this.checkAlarms)
},
mounted () {
this.checkAlarms()
@@ -66,7 +66,9 @@ export default {
notificationColor: 'success',
notificationTimeout: 2000,
alarmNotified: [],
alarmChecker: null
alarmChecker: null,
lastAlarmDate: '',
alarmSleepTime: 10000
}),
methods: {
showNotification (options) {
@@ -79,10 +81,19 @@ export default {
checkAlarms () {
if (this.isAuthenticated) {
this.alarmChecker = window.setInterval(() => {
alarms.getAll({}).then(resp => {
const params = {}
if (this.lastAlarmDate instanceof Date) {
params.min_date = this.lastAlarmDate
}
alarms.getAll(params).then(resp => {
let count = 0
for (const alarm of resp.data) {
if (alarm.status === 1 && !this.alarmNotified.includes(alarm.id)) {
if (this.lastAlarmDate instanceof Date && new Date(alarm.created) > this.lastAlarmDate) {
this.lastAlarmDate = new Date(alarm.created)
} else if (!(this.lastAlarmDate instanceof Date)) {
this.lastAlarmDate = new Date(alarm.created)
}
count++
this.alarmNotified.push(alarm.id)
}
@@ -91,7 +102,7 @@ export default {
bus.$emit('notification', { msg: this.$gettext('You have one or more opened alarms'), type: 'error' })
}
})
}, 10000)
}, this.alarmSleepTime)
}
}
}
+4 -3
View File
@@ -82,6 +82,7 @@ import { bus } from '@/main'
import alarms from '@/api/alarms'
import debounce from 'debounce'
import MenuItems from '@/components/tools/MenuItems'
import constants from '@/constants.json'
export default {
components: {
@@ -121,7 +122,7 @@ export default {
}
this.loading = true
alarms.getAll(params).then(resp => {
this.alarms = resp.data.results
this.alarms = resp.data
this.totalAlarms = resp.data.count
this.loading = false
})
@@ -135,13 +136,13 @@ export default {
})
},
async closeAlarm (alarm) {
alarms.switchStatus(alarm.id, { status: 2 }).then(() => {
alarms.switchStatus(alarm.id, { status: constants.ALARM_CLOSED }).then(() => {
bus.$emit('notification', { msg: this.$gettext('Alarm closed') })
this.fetchAlarms()
})
},
async openAlarm (alarm) {
alarms.switchStatus(alarm.id, { status: 1 }).then(() => {
alarms.switchStatus(alarm.id, { status: constants.ALARM_OPENED }).then(() => {
bus.$emit('notification', { msg: this.$gettext('Alarm re-opened') })
this.fetchAlarms()
})
+1
View File
@@ -0,0 +1 @@
{"ALARM_OPENED":1, "ALARM_CLOSED":2}
+1 -1
View File
@@ -87,7 +87,7 @@ export default {
Cookies.set('token', resp.data.access, { sameSite: 'strict' })
Cookies.set('refreshToken', resp.data.refresh, { sameSite: 'strict' })
this.$store.dispatch('auth/initialize').then(() => {
bus.$emit('logged')
bus.$emit('loggedIn')
this.$router.push({ name: 'DomainList' })
})
}).catch(err => {
+18 -4
View File
@@ -326,13 +326,29 @@ class UserAccountViewSet(GetThrottleViewsetMixin, viewsets.ViewSet):
return response.Response(serializer.validated_data)
class AlarmFilterSet(dj_filters.FilterSet):
"""Custom FilterSet for Alarms."""
min_date = dj_filters.DateTimeFilter(method="filter_date")
class Meta:
model = models.Alarm
fields = ["created"]
def filter_date(self, queryset, name, value):
return queryset.filter(created__gt=value)
class AlarmViewSet(GetThrottleViewsetMixin,
mixins.ListModelMixin,
mixins.RetrieveModelMixin,
viewsets.GenericViewSet):
"""Viewset for Alarm."""
filter_backends = (filters.OrderingFilter, filters.SearchFilter, )
filter_backends = (filters.OrderingFilter,
filters.SearchFilter,
dj_filters.DjangoFilterBackend)
filterset_class = AlarmFilterSet
ordering_fields = ["created", "status", "title"]
pagination_class = pagination.PageNumberPagination
permission_classes = (
@@ -349,9 +365,8 @@ class AlarmViewSet(GetThrottleViewsetMixin,
@action(methods=["delete"], detail=True)
def delete(self, request, **kwargs):
"""Custom delete method that accepts body arguments."""
"""Allow admins to delete alarms."""
alarm = self.get_object()
domain = models.Domain.objects.get(pk=alarm.domain.pk)
alarm.delete()
return response.Response(status=status.HTTP_204_NO_CONTENT)
@@ -361,7 +376,6 @@ class AlarmViewSet(GetThrottleViewsetMixin,
alarm = self.get_object()
serializer = serializers.AlarmSwitchStatusSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
domain = models.Domain.objects.get(pk=alarm.domain.pk)
if serializer.data["status"] == constants.ALARM_CLOSED:
alarm.close()
else:
@@ -21,23 +21,18 @@ class ManageDKIMKeys(BaseCommand):
"""Create a new DKIM key."""
storage_dir = param_tools.get_global_parameter("dkim_keys_storage_dir")
pkey_path = os.path.join(storage_dir, "{}.pem".format(domain.name))
alarm_qset = models.alarm.Alarm.objects.filter(
domain=domain.pk,
internal_name=DKIM_WRITE_ERROR)
alarm_qset = domain.alarms.filter(internal_name=DKIM_WRITE_ERROR)
if not os.access(storage_dir, os.W_OK):
if not alarm_qset:
alarm = models.alarm.Alarm.objects.create(
domain=domain,
if not alarm_qset.exists():
domain.alarms.create(
title=_("DKIM path non-writable"),
internal_name=DKIM_WRITE_ERROR
)
alarm.save()
internal_name=DKIM_WRITE_ERROR)
else:
alarm = alarm_qset.first()
if alarm.status != ALARM_OPENED:
alarm.reopen()
return
elif alarm_qset:
elif alarm_qset.exists():
alarm_qset.first().close()
key_size = (
domain.dkim_key_length if domain.dkim_key_length