diff --git a/.travis.yml b/.travis.yml
index b008c717..64b8021e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -61,7 +61,7 @@ before_deploy:
deploy:
provider: releases
api_key:
- secure: oc5WOWWROzUhVmtmPU308vGhFBGaAhU2RACUjfVnrlgevrK4lx178lV60ps8wqHWZh9b58h13LVlPI5iB1jVTdWQU8eGCEW9VIkMTQ21Ao2zSU+kOCs4JGLx/fhjslM+tKyopmIpk6FsITdTGqtbTap2D0FnEoaEVA/LWq0vJdy5MItUALe3mSm8uIGRSezifYZj6fhxuCCM6vuah02rf7vY5FPgkLAzWDpPX4jg6AfR6SqptmgcfoMqQuOjYY4bha/lPqlJ+auGAmUdSVJEnLjjvoFw6VOrBMiSm77DdyHA+5mG6Ag8dTbRQhnRS5JLQfk9/J1NyEugcHMYvA0jvd2p4P1PxwKuUu49APPPgFnVs7WiQh3G48s1fD5vjvRbBgnyrCXadYH3725zyNsFRyG2CdPt/I7gmOsl0ksYzRglf3GyGa96TYj5Ns/Yk0Smn8WYBu5jdXIo0E3TKUVkTDwNZbexW3FnNY7v7APXAl1fAWGlcSefaBrfT+w19p/hcv0Z9DYGUju0BcJIs7SKONdjqeSqSLq9eecJ69pQHYH+K0ZkrSXCpiFoS0Trwi6xDJHSAdLGbBrB0L4t/+X7/5B34PrCUXkAqBH03p2+28FBfuMQ1+GNuVoP3NuGvXDi9H1Ux7HBfC+HYJK9zEiPdqPSaroG7q9XlX9yWEsyStM=
+ secure: "Wrrc9k+3P7gmogu6AFWxA0HdUFYlfrPObqwBKlKi/2Wi7Ntd3Y3UcaRXMacmcky9Dg7KzNejNNAW6gZTx7z/PJupqtiV2LEl07cBFpfXMp8CgMDNA77T+Cq4wINO9Z1N/fzFUbO/kVTs38UsWlZo0L7NFsr6vBus18OvbV6T/L12ORFe9dRcNZx7bR6pbgeeBFk+BKD2U32/dWQ75VYnBzAX8VkymWabayV1NoGPsEtdv61UQC6AOjXWvqzVvDo2OtIwyTNgun1Be74a4D6XU4PkGygdfepKEa64RoHQbBjMKHebMETmXR7ZSUyC2inUXyM4FP5cut/8tlGgkrEBJo77sVxmDciHYutM9ZjU9+057uMW4axVqkztqvPboyc+0kIyC3/UA1H0Ddyrqrc/38AnTIV/sApxr8oJFzNL8JoJWBUy394moQgMEF1fVlvvoim0S7xRTc0nyWQFZDl1NlEQtZIkeh0m5Hr7etTLFZh5pmO/9AF3rbWY3F1jTWUCci6cNR/c/HpoZQMlEhJQYH6D/Ev0cSp2TVjvBTfsXD2YeLMjyU6CsRerwBCVaokL0BE+w90u8U/OWe7aZsqMEtGt+vo6PkSQmc7MPB88tovMQfRMTSFPJ9gi8MQ8Bo2MJvPVHmRsAvJH2erqqcRUD8v5zsAVY25SY7r1bfmwwNw="
skip_cleanup: true
file_glob: true
file: "dist/*.deb"
diff --git a/api/V1/eventUtil.ts b/api/V1/eventUtil.ts
index f417d36a..c85f6b7b 100644
--- a/api/V1/eventUtil.ts
+++ b/api/V1/eventUtil.ts
@@ -123,7 +123,6 @@ export class PowerEvents {
Device: Device | null;
hasStopped: boolean;
hasAlerted: boolean;
-
constructor(event: Event) {
this.hasStopped = false;
this.lastReported = null;
diff --git a/docker-base/package.json b/docker-base/package.json
index a49c747d..9cbd2ea8 100644
--- a/docker-base/package.json
+++ b/docker-base/package.json
@@ -17,7 +17,6 @@
"fs": "0.0.2",
"fstream": "^1.0.12",
"install": "^0.12.2",
- "json-pointer": "^0.5.0",
"jsonschema": "^1.4.0",
"jsonwebtoken": "^8.5.1",
"lodash": "^4.17.13",
diff --git a/emailUtil.ts b/emailUtil.ts
index aa8632a9..83900ec3 100644
--- a/emailUtil.ts
+++ b/emailUtil.ts
@@ -13,7 +13,7 @@ function alertBody(
const dateTime = moment(recording.recordingDateTime)
.tz(config.timeZone)
.format("h:mma Do MMM");
- let html = `
${camera} has detected a ${tag.what} - ${dateTime}
`;
+ let html = `${camera} has detected a ${tag.what} - ${dateTime}`;
html += `View Recording`;
html += "
Thanks,
Cacophony Team
";
diff --git a/models/Device.ts b/models/Device.ts
index 7445f1a1..d4f7a915 100644
--- a/models/Device.ts
+++ b/models/Device.ts
@@ -275,6 +275,10 @@ export default function (
{
model: models.User,
attributes: ["id", "username"]
+ },
+ {
+ model: models.Group,
+ attributes: ["id", "groupname"]
}
];
const includeOnlyActiveDevices = onlyActive ? { active: true } : null;
diff --git a/models/Event.ts b/models/Event.ts
index ec1f1ccf..aee56c3c 100644
--- a/models/Event.ts
+++ b/models/Event.ts
@@ -209,7 +209,13 @@ export default function (sequelize, DataTypes) {
},
{
model: models.Device,
- attributes: ["id", "devicename", "GroupId"]
+ attributes: ["id", "devicename", "GroupId"],
+ include: [
+ {
+ model: models.Group,
+ attributes: ["groupname", "id"]
+ }
+ ]
}
],
attributes: [
diff --git a/models/Tag.ts b/models/Tag.ts
index 363bd8e0..50bdf447 100644
--- a/models/Tag.ts
+++ b/models/Tag.ts
@@ -43,6 +43,7 @@ export interface TagStatic extends ModelStaticCommon {
export enum AcceptableTag {
Cool = "cool",
+ RequiresReview = "requires review",
InteractionWithTrap = "interaction with trap",
MissedTrack = "missed track",
MultipleAnimals = "multiple animals",
diff --git a/package.json b/package.json
index 6aa2cfde..16745103 100755
--- a/package.json
+++ b/package.json
@@ -25,7 +25,6 @@
"fs": "0.0.2",
"fstream": "^1.0.12",
"install": "^0.12.2",
- "json-pointer": "^0.5.0",
"jsonschema": "^1.4.0",
"jsonwebtoken": "^8.5.1",
"lodash": "^4.17.13",
diff --git a/report-stopped-devices.ts b/report-stopped-devices.ts
index f6814418..6a8b42f6 100644
--- a/report-stopped-devices.ts
+++ b/report-stopped-devices.ts
@@ -13,9 +13,7 @@ async function getUserEvents(powerEvents: PowerEvents[]) {
for (const event of powerEvents) {
if (!groupAdmins.hasOwnProperty(event.Device.GroupId)) {
- const group = await event.Device.getGroup();
- event.Device.groupname = group.groupname;
- const adminUsers = await group.getUsers({
+ const adminUsers = await event.Device.Group.getUsers({
through: { where: { admin: true } }
});
groupAdmins[event.Device.GroupId] = adminUsers;
@@ -91,7 +89,7 @@ async function main() {
function generateText(stoppedDevices: PowerEvents[]): string {
let textBody = `Stopped Devices ${moment().format("MMM ddd Do ha")}\r\n`;
for (const event of stoppedDevices) {
- let deviceText = `${event.Device.groupname}- ${
+ let deviceText = `${event.Device.Group.groupname}- ${
event.Device.devicename
} id: ${
event.Device.id
@@ -105,10 +103,10 @@ function generateText(stoppedDevices: PowerEvents[]): string {
}
function generateHtml(stoppedDevices: PowerEvents[]): string {
- let html = `Stopped Devices ${moment().format("MMM ddd Do ha")} `;
+ let html = `Stopped Devices ${moment().format("MMM ddd Do ha")} `;
html += "";
for (const event of stoppedDevices) {
- let deviceText = `- ${event.Device.groupname}-${
+ let deviceText = `
- ${event.Device.Group.groupname}-${
event.Device.devicename
} id: ${
event.Device.id