From 192a1c84fe79509ec892ed17b31f2033ccdab475 Mon Sep 17 00:00:00 2001
From: Conal Brosnan <129299738+Conalb97@users.noreply.github.com>
Date: Thu, 18 Apr 2024 15:01:30 +0100
Subject: [PATCH] Revert "Merge latest Guardian changes as of 18-04-2024"
---
.github/workflows/ci.yml | 2 +-
.github/workflows/push-pr.yml | 1 -
.../lib/elasticsearch/MappingTest.scala | 3 +-
.../lib/elasticsearch/Mappings.scala | 5 +-
.../lib/usage/ItemToMediaUsage.scala | 4 +-
.../mediaservice/lib/usage/UsageBuilder.scala | 2 +-
.../gu/mediaservice/model/ThrallMessage.scala | 3 -
.../usage/SyndicationUsageMetadata.scala | 5 +-
.../model/usage/UsageStatus.scala | 4 -
.../mediaservice/syntax/MessageSubjects.scala | 1 -
.../gr-image-metadata/gr-image-metadata.html | 10 ---
.../gr-image-metadata/gr-image-metadata.js | 78 ++++++++-----------
.../public/js/edits/list-editor-compact.html | 1 -
.../js/edits/list-editor-info-panel.html | 1 -
kahuna/public/js/edits/list-editor.js | 6 +-
kahuna/public/js/preview/image.html | 1 -
kahuna/public/js/preview/image.js | 7 +-
kahuna/public/js/search/query-filter.js | 31 --------
.../app/lib/querysyntax/QuerySyntax.scala | 7 +-
.../app/lib/elasticsearch/ElasticSearch.scala | 31 +-------
thrall/app/lib/kinesis/MessageProcessor.scala | 9 ---
.../app/lib/kinesis/MessageTranslator.scala | 4 -
.../lib/elasticsearch/ElasticSearchTest.scala | 13 ----
usage/app/controllers/UsageApi.scala | 43 +---------
usage/app/model/SyndicationUsageRequest.scala | 11 +--
usage/app/model/UsageGroup.scala | 1 -
usage/app/model/UsageIdBuilder.scala | 1 -
usage/conf/routes | 2 +-
28 files changed, 54 insertions(+), 233 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index ac94192ae5..7277c2b54c 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -5,7 +5,7 @@ on:
push:
branches:
- main
- - pr*
+ - 'pr**'
jobs:
CI:
runs-on: ubuntu-latest
diff --git a/.github/workflows/push-pr.yml b/.github/workflows/push-pr.yml
index 4c4cceec2e..5a293fb19b 100644
--- a/.github/workflows/push-pr.yml
+++ b/.github/workflows/push-pr.yml
@@ -1,5 +1,4 @@
name: push-pr
-run-name: Create/Update pr${{ inputs.prNumber }} branch
on:
workflow_dispatch:
inputs:
diff --git a/common-lib/src/main/scala/com/gu/mediaservice/lib/elasticsearch/MappingTest.scala b/common-lib/src/main/scala/com/gu/mediaservice/lib/elasticsearch/MappingTest.scala
index 022e63ce0b..0f27e25963 100644
--- a/common-lib/src/main/scala/com/gu/mediaservice/lib/elasticsearch/MappingTest.scala
+++ b/common-lib/src/main/scala/com/gu/mediaservice/lib/elasticsearch/MappingTest.scala
@@ -175,8 +175,7 @@ object MappingTest {
composerUrl = Some(new URI("https://composer/api/2345678987654321345678"))
)),
syndicationUsageMetadata = Some(SyndicationUsageMetadata(
- partnerName = "friends of ours",
- syndicatedBy = Some("Bob")
+ partnerName = "friends of ours"
)),
frontUsageMetadata = Some(FrontUsageMetadata(
addedBy = "me",
diff --git a/common-lib/src/main/scala/com/gu/mediaservice/lib/elasticsearch/Mappings.scala b/common-lib/src/main/scala/com/gu/mediaservice/lib/elasticsearch/Mappings.scala
index 0b126e1839..ff5d86e755 100644
--- a/common-lib/src/main/scala/com/gu/mediaservice/lib/elasticsearch/Mappings.scala
+++ b/common-lib/src/main/scala/com/gu/mediaservice/lib/elasticsearch/Mappings.scala
@@ -281,8 +281,7 @@ object Mappings {
))
def syndicationUsageMetadata(name: String): ObjectField = nonDynamicObjectField(name).copy(properties = Seq(
- keywordField("partnerName"),
- keywordField("syndicatedBy")
+ keywordField("partnerName")
))
def frontUsageMetadata(name: String): ObjectField = nonDynamicObjectField(name).copy(properties = Seq(
@@ -294,7 +293,7 @@ object Mappings {
keywordField("downloadedBy")
))
- def usagesMapping(name: String): NestedField = nestedField(name).copy(properties = Seq(
+ def usagesMapping(name: String): NestedField = nestedField(name).copy( properties = Seq(
keywordField("id"),
sStemmerAnalysed("title"),
usageReference("references"),
diff --git a/common-lib/src/main/scala/com/gu/mediaservice/lib/usage/ItemToMediaUsage.scala b/common-lib/src/main/scala/com/gu/mediaservice/lib/usage/ItemToMediaUsage.scala
index dc9a84100d..c7fdf7bb69 100644
--- a/common-lib/src/main/scala/com/gu/mediaservice/lib/usage/ItemToMediaUsage.scala
+++ b/common-lib/src/main/scala/com/gu/mediaservice/lib/usage/ItemToMediaUsage.scala
@@ -1,6 +1,7 @@
package com.gu.mediaservice.lib.usage
import java.net.URI
+
import com.amazonaws.services.dynamodbv2.document.Item
import com.gu.mediaservice.model.usage._
import org.joda.time.DateTime
@@ -51,8 +52,7 @@ object ItemToMediaUsage {
private def buildSyndication(metadataMap: Map[String, Any]): Option[SyndicationUsageMetadata] = {
Try {
SyndicationUsageMetadata(
- metadataMap("partnerName").asInstanceOf[String],
- metadataMap.get("syndicatedBy").map(x => x.asInstanceOf[String])
+ metadataMap("partnerName").asInstanceOf[String]
)
}.toOption
}
diff --git a/common-lib/src/main/scala/com/gu/mediaservice/lib/usage/UsageBuilder.scala b/common-lib/src/main/scala/com/gu/mediaservice/lib/usage/UsageBuilder.scala
index 4d422309f8..d015333dea 100644
--- a/common-lib/src/main/scala/com/gu/mediaservice/lib/usage/UsageBuilder.scala
+++ b/common-lib/src/main/scala/com/gu/mediaservice/lib/usage/UsageBuilder.scala
@@ -64,7 +64,7 @@ object UsageBuilder {
private def buildSyndicationUsageReference(usage: MediaUsage): List[UsageReference] = usage.syndicationUsageMetadata.map (metadata => {
List(
UsageReference(
- SyndicationUsageReference, None, metadata.syndicatedBy.map(_ => s"${metadata.partnerName}, ${metadata.syndicatedBy.get}").orElse(Some(metadata.partnerName))
+ SyndicationUsageReference, None, Some(metadata.partnerName)
)
)
}).getOrElse(
diff --git a/common-lib/src/main/scala/com/gu/mediaservice/model/ThrallMessage.scala b/common-lib/src/main/scala/com/gu/mediaservice/model/ThrallMessage.scala
index 41370db7d5..40a8bfc8a6 100644
--- a/common-lib/src/main/scala/com/gu/mediaservice/model/ThrallMessage.scala
+++ b/common-lib/src/main/scala/com/gu/mediaservice/model/ThrallMessage.scala
@@ -76,7 +76,6 @@ object ExternalThrallMessage{
implicit val updateImagePhotoshootMetadataMessage = Json.format[UpdateImagePhotoshootMetadataMessage]
implicit val deleteUsagesMessage = Json.format[DeleteUsagesMessage]
implicit val deleteSingleUsageMessage = Json.format[DeleteSingleUsageMessage]
- implicit val updateUsageStatusMessage = Json.format[UpdateUsageStatusMessage]
implicit val updateImageUsagesMessage = Json.format[UpdateImageUsagesMessage]
implicit val addImageLeaseMessage = Json.format[AddImageLeaseMessage]
implicit val removeImageLeaseMessage = Json.format[RemoveImageLeaseMessage]
@@ -125,8 +124,6 @@ case class DeleteSingleUsageMessage(id: String, lastModified: DateTime, usageId:
case class DeleteUsagesMessage(id: String, lastModified: DateTime) extends ExternalThrallMessage
-case class UpdateUsageStatusMessage(id: String, usageNotice: UsageNotice, lastModified: DateTime) extends ExternalThrallMessage
-
object DeleteUsagesMessage {
implicit val yourJodaDateReads = JodaReads.DefaultJodaDateTimeReads.map(d => d.withZone(DateTimeZone.UTC))
implicit val yourJodaDateWrites = JodaWrites.JodaDateTimeWrites
diff --git a/common-lib/src/main/scala/com/gu/mediaservice/model/usage/SyndicationUsageMetadata.scala b/common-lib/src/main/scala/com/gu/mediaservice/model/usage/SyndicationUsageMetadata.scala
index 2804b82884..4ede81dd58 100644
--- a/common-lib/src/main/scala/com/gu/mediaservice/model/usage/SyndicationUsageMetadata.scala
+++ b/common-lib/src/main/scala/com/gu/mediaservice/model/usage/SyndicationUsageMetadata.scala
@@ -3,12 +3,11 @@ package com.gu.mediaservice.model.usage
import play.api.libs.json._
case class SyndicationUsageMetadata(
- partnerName: String,
- syndicatedBy: Option[String] = None
+ partnerName: String
) extends UsageMetadata {
override def toMap: Map[String, Any] = Map(
"partnerName" -> partnerName
- ) ++ syndicatedBy.map("syndicatedBy" -> _)
+ )
}
object SyndicationUsageMetadata {
diff --git a/common-lib/src/main/scala/com/gu/mediaservice/model/usage/UsageStatus.scala b/common-lib/src/main/scala/com/gu/mediaservice/model/usage/UsageStatus.scala
index 3a356c1634..cbafb45fe7 100644
--- a/common-lib/src/main/scala/com/gu/mediaservice/model/usage/UsageStatus.scala
+++ b/common-lib/src/main/scala/com/gu/mediaservice/model/usage/UsageStatus.scala
@@ -9,7 +9,6 @@ sealed trait UsageStatus {
case RemovedUsageStatus => "removed"
case SyndicatedUsageStatus => "syndicated"
case DownloadedUsageStatus => "downloaded"
- case FailedUsageStatus => "failed"
case UnknownUsageStatus => "unknown"
}
}
@@ -21,9 +20,7 @@ object UsageStatus {
case "removed" => RemovedUsageStatus
case "syndicated" => SyndicatedUsageStatus
case "downloaded" => DownloadedUsageStatus
- case "failed" => FailedUsageStatus
case "unknown" => UnknownUsageStatus
- case _ => throw new IllegalArgumentException("Invalid usage status")
}
implicit val reads: Reads[UsageStatus] = JsPath.read[String].map(UsageStatus(_))
@@ -38,7 +35,6 @@ object PublishedUsageStatus extends UsageStatus
object RemovedUsageStatus extends UsageStatus
object SyndicatedUsageStatus extends UsageStatus
object DownloadedUsageStatus extends UsageStatus
-object FailedUsageStatus extends UsageStatus
// For Fronts usages as we don't know if a front is in draft or is live
// TODO remove this once we do!
diff --git a/common-lib/src/main/scala/com/gu/mediaservice/syntax/MessageSubjects.scala b/common-lib/src/main/scala/com/gu/mediaservice/syntax/MessageSubjects.scala
index a490f427f5..8713d58a4a 100644
--- a/common-lib/src/main/scala/com/gu/mediaservice/syntax/MessageSubjects.scala
+++ b/common-lib/src/main/scala/com/gu/mediaservice/syntax/MessageSubjects.scala
@@ -16,7 +16,6 @@ trait MessageSubjects {
val AddImageLease = "add-image-lease"
val RemoveImageLease = "remove-image-lease"
val SetImageCollections = "set-image-collections"
- val UpdateUsageStatus = "update-usage-status"
val DeleteUsages = "delete-usages"
val DeleteSingleUsage = "delete-single-usage"
val UpdateImageSyndicationMetadata = "update-image-syndication-metadata"
diff --git a/kahuna/public/js/components/gr-image-metadata/gr-image-metadata.html b/kahuna/public/js/components/gr-image-metadata/gr-image-metadata.html
index ffe0d8c7bd..11fb29cdbe 100644
--- a/kahuna/public/js/components/gr-image-metadata/gr-image-metadata.html
+++ b/kahuna/public/js/components/gr-image-metadata/gr-image-metadata.html
@@ -104,7 +104,6 @@
{{ctrl.metadata.title}}
@@ -113,7 +112,6 @@
{{ctrl.metadata.title}}
@@ -324,7 +322,6 @@
{{ctrl.metadata.byline}}
@@ -373,7 +370,6 @@
{{ctrl.metadata.credit}}
@@ -404,7 +400,6 @@
{{ctrl.metadata[prop]}}
{{ctrl.metadata.copyright}}
@@ -565,7 +559,6 @@
{{ctrl.extraInfo.uploadedBy | stripEmailDomain}}
@@ -646,7 +639,6 @@
{{key | spaceWords}}
{{value}}
@@ -655,7 +647,6 @@
{{key}}
{{metadata.value}}
@@ -841,7 +832,6 @@
ng-repeat="collection in ctrl.singleImage.data.collections"
ng-switch-default>
{{collection.data.path.join(' ▸ ')}}
diff --git a/kahuna/public/js/components/gr-image-metadata/gr-image-metadata.js b/kahuna/public/js/components/gr-image-metadata/gr-image-metadata.js
index fbccf1b0ec..6cf4f31079 100644
--- a/kahuna/public/js/components/gr-image-metadata/gr-image-metadata.js
+++ b/kahuna/public/js/components/gr-image-metadata/gr-image-metadata.js
@@ -12,8 +12,6 @@ import { editOptions, overwrite } from '../../util/constants/editOptions';
import '../../services/image-accessor';
import '../../services/image-list';
import '../../services/label';
-import '../../search/query-filter';
-
import { List } from 'immutable';
export const module = angular.module('gr.imageMetadata', [
@@ -36,7 +34,8 @@ module.controller('grImageMetadataCtrl', [
'inject$',
'labelService',
'storage',
- 'searchWithModifiers',
+
+
function ($rootScope,
$scope,
$window,
@@ -48,8 +47,7 @@ module.controller('grImageMetadataCtrl', [
imageAccessor,
inject$,
labelService,
- storage,
- searchWithModifiers) {
+ storage) {
let ctrl = this;
@@ -60,14 +58,14 @@ module.controller('grImageMetadataCtrl', [
ctrl.metadataUpdatedByTemplate = [];
ctrl.$onInit = () => {
- $scope.$watchCollection('ctrl.selectedImages', function () {
+ $scope.$watchCollection('ctrl.selectedImages', function() {
ctrl.singleImage = singleImage();
ctrl.selectedLabels = selectedLabels();
ctrl.usageRights = selectedUsageRights();
inject$($scope, Rx.Observable.fromPromise(selectedUsageCategory(ctrl.usageRights)), ctrl, 'usageCategory');
ctrl.rawMetadata = rawMetadata();
ctrl.metadata = displayMetadata();
- ctrl.metadata.dateTaken = ctrl.displayDateTakenMetadata();
+ ctrl.metadata.dateTaken = ctrl.displayDateTakenMetadata();
ctrl.newPeopleInImage = "";
ctrl.newKeywords = "";
ctrl.extraInfo = extraInfo();
@@ -78,7 +76,7 @@ module.controller('grImageMetadataCtrl', [
});
const freeUpdateListener = $rootScope.$on('images-updated',
- (e, updatedImages) => updateHandler(updatedImages));
+ (e, updatedImages) => updateHandler(updatedImages));
const updateHandler = (updatedImages) => {
ctrl.selectedImages = new List(updatedImages);
@@ -86,20 +84,18 @@ module.controller('grImageMetadataCtrl', [
ctrl.hasMultipleValues = (val) => Array.isArray(val) && val.length > 1;
- ctrl.displayDateTakenMetadata = function () {
+ ctrl.displayDateTakenMetadata = function() {
let dateTaken = ctrl.metadata.dateTaken ? new Date(ctrl.metadata.dateTaken) : undefined;
- if (dateTaken) {
- dateTaken.setSeconds(0, 0);
- }
+ if (dateTaken) { dateTaken.setSeconds(0, 0); }
return dateTaken;
};
- ctrl.credits = function (searchText) {
+ ctrl.credits = function(searchText) {
return ctrl.metadataSearch('credit', searchText);
};
ctrl.metadataSearch = (field, q) => {
- return mediaApi.metadataSearch(field, {q}).then(resource => {
+ return mediaApi.metadataSearch(field, { q }).then(resource => {
return resource.data.map(d => d.key);
});
};
@@ -108,11 +104,11 @@ module.controller('grImageMetadataCtrl', [
ctrl.descriptionOptions = editOptions;
- ctrl.updateDescriptionField = function () {
+ ctrl.updateDescriptionField = function() {
ctrl.updateMetadataField('description', ctrl.metadata.description);
};
- ctrl.updateLocationField = function (data, value) {
+ ctrl.updateLocationField = function(data, value) {
Object.keys(value).forEach(key => {
if (value[key] === undefined) {
delete value[key];
@@ -124,7 +120,7 @@ module.controller('grImageMetadataCtrl', [
ctrl.updateMetadataField = function (field, value) {
var imageArray = Array.from(ctrl.selectedImages);
if (field === 'dateTaken') {
- value = value.toISOString();
+ value = value.toISOString();
}
if (field === 'peopleInImage') {
ctrl.addPersonToImages(imageArray, value);
@@ -142,7 +138,7 @@ module.controller('grImageMetadataCtrl', [
);
};
- ctrl.updateDomainMetadataField = function (name, field, value) {
+ ctrl.updateDomainMetadataField = function(name, field, value) {
return editsService.updateDomainMetadataField(ctrl.singleImage, name, field, value)
.then((updatedImage) => {
if (updatedImage) {
@@ -244,7 +240,7 @@ module.controller('grImageMetadataCtrl', [
.map(([key, value]) => {
let fieldAlias = ctrl.fieldAliases.find(_ => _.alias === key);
if (fieldAlias && fieldAlias.displayInAdditionalMetadata === true) {
- return [fieldAlias.label, {value, alias: fieldAlias.alias}];
+ return [fieldAlias.label, { value, alias: fieldAlias.alias}];
}
})
.filter(_ => _ !== undefined));
@@ -254,7 +250,7 @@ module.controller('grImageMetadataCtrl', [
ctrl.domainMetadata = ctrl.domainMetadataSpecs
.filter(domainMetadataSpec => domainMetadataSpec.fields.length > 0)
.reduce((acc, domainMetadataSpec) => {
- let domainMetadata = {...domainMetadataSpec};
+ let domainMetadata = { ...domainMetadataSpec };
if (ctrl.singleImage.data.metadata) {
const imageDomainMetadata = ctrl.singleImage.data.metadata.domainMetadata ? ctrl.singleImage.data.metadata.domainMetadata : {};
@@ -288,7 +284,7 @@ module.controller('grImageMetadataCtrl', [
field.selectOptions = field.options
.filter(option => option)
.map(option => {
- return {value: option, text: option};
+ return { value: option, text: option };
});
}
@@ -336,7 +332,7 @@ module.controller('grImageMetadataCtrl', [
ctrl.hasLocationInformation = hasLocationInformation;
function singleImage() {
- if (ctrl.selectedImages.size === 1) {
+ if (ctrl.selectedImages.size === 1){
return ctrl.selectedImages.first();
}
}
@@ -375,12 +371,9 @@ module.controller('grImageMetadataCtrl', [
function rawMetadata() {
return selectedMetadata().map((values) => {
switch (values.size) {
- case 0:
- return undefined;
- case 1:
- return values.first();
- default:
- return Array.from(values);
+ case 0: return undefined;
+ case 1: return values.first();
+ default: return Array.from(values);
}
}).toObject();
}
@@ -388,10 +381,8 @@ module.controller('grImageMetadataCtrl', [
function displayMetadata() {
return selectedMetadata().map((values) => {
switch (values.size) {
- case 1:
- return values.first();
- default:
- return undefined;
+ case 1: return values.first();
+ default: return undefined;
}
}).toObject();
}
@@ -401,12 +392,9 @@ module.controller('grImageMetadataCtrl', [
const properties = imageList.getSetOfProperties(info);
return properties.map((values) => {
switch (values.size) {
- case 0:
- return undefined;
- case 1:
- return values.first();
- default:
- return Array.from(values);
+ case 0: return undefined;
+ case 1: return values.first();
+ default: return Array.from(values);
}
}).toObject();
}
@@ -433,11 +421,11 @@ module.controller('grImageMetadataCtrl', [
ctrl.removeImageFromCollection = (collection) => {
ctrl.removingCollection = collection;
collections.removeImageFromCollection(collection, ctrl.singleImage)
- .then(() => ctrl.removingCollection = false);
+ .then(() => ctrl.removingCollection = false);
};
- $scope.$on('$destroy', function () {
- freeUpdateListener();
+ $scope.$on('$destroy', function() {
+ freeUpdateListener();
});
ctrl.onMetadataTemplateSelected = (metadata, usageRights, collection, leasesWithConfig) => {
@@ -510,18 +498,16 @@ module.controller('grImageMetadataCtrl', [
};
ctrl.isDomainMetadataEmpty = (key) => {
- return ctrl.domainMetadata.find(obj => obj.name === key).fields.every(field => field.value === undefined);
+ return ctrl.domainMetadata.find(obj => obj.name === key ).fields.every(field => field.value === undefined );
};
ctrl.isAdditionalMetadataEmpty = () => {
const totalAdditionalMetadataCount = Object.keys(ctrl.metadata).filter(key => ctrl.isUsefulMetadata(key)).length +
- Object.keys(ctrl.additionalMetadata).length +
- Object.keys(ctrl.identifiers).length;
+ Object.keys(ctrl.additionalMetadata).length +
+ Object.keys(ctrl.identifiers).length;
return totalAdditionalMetadataCount == 0;
};
-
- ctrl.searchWithModifiers = searchWithModifiers;
};
}
]);
diff --git a/kahuna/public/js/edits/list-editor-compact.html b/kahuna/public/js/edits/list-editor-compact.html
index 326ae0e8d3..1851bbcdf2 100644
--- a/kahuna/public/js/edits/list-editor-compact.html
+++ b/kahuna/public/js/edits/list-editor-compact.html
@@ -8,7 +8,6 @@
{{element}}
diff --git a/kahuna/public/js/edits/list-editor-info-panel.html b/kahuna/public/js/edits/list-editor-info-panel.html
index 81208af2fa..9fcf8c4e1f 100644
--- a/kahuna/public/js/edits/list-editor-info-panel.html
+++ b/kahuna/public/js/edits/list-editor-info-panel.html
@@ -8,7 +8,6 @@
library_add
diff --git a/kahuna/public/js/edits/list-editor.js b/kahuna/public/js/edits/list-editor.js
index c26f84e547..cf86f91f9d 100644
--- a/kahuna/public/js/edits/list-editor.js
+++ b/kahuna/public/js/edits/list-editor.js
@@ -22,15 +22,13 @@ listEditor.controller('ListEditorCtrl', [
'imageLogic',
'imageList',
'storage',
- 'searchWithModifiers',
function($rootScope,
$scope,
$window,
$timeout,
imageLogic,
imageList,
- storage,
- searchWithModifiers) {
+ storage) {
var ctrl = this;
ctrl.$onInit = () => {
@@ -149,8 +147,6 @@ listEditor.controller('ListEditorCtrl', [
$scope.$on('$destroy', function() {
updateListener();
});
-
- ctrl.searchWithModifiers = searchWithModifiers;
};
}]);
diff --git a/kahuna/public/js/preview/image.html b/kahuna/public/js/preview/image.html
index 285c010118..02ed16870c 100644
--- a/kahuna/public/js/preview/image.html
+++ b/kahuna/public/js/preview/image.html
@@ -79,7 +79,6 @@
gr-tooltip-position="top">
{{::collection.data.description}}
diff --git a/kahuna/public/js/preview/image.js b/kahuna/public/js/preview/image.js
index 7909ff5d14..7983968c18 100644
--- a/kahuna/public/js/preview/image.js
+++ b/kahuna/public/js/preview/image.js
@@ -17,7 +17,6 @@ import '../components/gr-add-label/gr-add-label';
import '../components/gr-archiver-status/gr-archiver-status';
import '../components/gr-syndication-icon/gr-syndication-icon';
import {graphicImageBlurService} from "../services/graphic-image-blur";
-import '../search/query-filter';
export var image = angular.module('kahuna.preview.image', [
'gr.image.service',
@@ -44,7 +43,6 @@ image.controller('uiPreviewImageCtrl', [
'imageAccessor',
'storage',
'graphicImageBlurService',
- 'searchWithModifiers',
function (
$scope,
inject$,
@@ -55,8 +53,7 @@ image.controller('uiPreviewImageCtrl', [
labelService,
imageAccessor,
storage,
- graphicImageBlurService,
- searchWithModifiers) {
+ graphicImageBlurService) {
var ctrl = this;
ctrl.$onInit = () => {
@@ -134,8 +131,6 @@ image.controller('uiPreviewImageCtrl', [
return $window._clientConfig.imagePreviewFlagAlertCopy;
}
};
-
- ctrl.searchWithModifiers = searchWithModifiers;
};
}]);
diff --git a/kahuna/public/js/search/query-filter.js b/kahuna/public/js/search/query-filter.js
index 04de18c597..aeafcb017b 100644
--- a/kahuna/public/js/search/query-filter.js
+++ b/kahuna/public/js/search/query-filter.js
@@ -21,37 +21,6 @@ export function fieldFilter(field, value) {
return `${field}:${valueMaybeQuoted}`;
}
-queryFilters.factory('searchWithModifiers',
- ['$state', '$stateParams', 'storage',
- function($state, $stateParams, storage) {
- function updateQueryWithModifiers(field, fieldValue, alt, shift, prevQuery) {
- if (alt && prevQuery) {
- return `${prevQuery} -${fieldFilter(field, fieldValue)}`;
- }
- if (alt) {
- return `-${fieldFilter(field, fieldValue)}`;
- }
- if (shift && prevQuery) {
- return `${prevQuery} ${fieldFilter(field, fieldValue)}`;
- }
- return fieldFilter(field, fieldValue);
- }
-
- return ($event, fieldName, fieldValue) => {
- const alt = $event.getModifierState('Alt');
- const shift = $event.getModifierState('Shift');
- if (alt || shift) {
- $event.preventDefault();
- const nonFree = storage.getJs("isNonFree", true) ? true : undefined;
-
- return $state.go('search.results', {
- query: updateQueryWithModifiers(fieldName, fieldValue, alt, shift, $stateParams.query),
- nonFree: nonFree
- });
- }
- };
- }]);
-
queryFilters.filter('queryFilter', function() {
return (value, field) => fieldFilter(field, value);
});
diff --git a/media-api/app/lib/querysyntax/QuerySyntax.scala b/media-api/app/lib/querysyntax/QuerySyntax.scala
index 2770e5e9ba..1f5abd2930 100644
--- a/media-api/app/lib/querysyntax/QuerySyntax.scala
+++ b/media-api/app/lib/querysyntax/QuerySyntax.scala
@@ -34,8 +34,7 @@ class QuerySyntax(val input: ParserInput) extends Parser with ImageFields {
DateConstraintMatch |
DateRangeMatch ~> Match | AtMatch |
FileTypeMatch ~> Match |
- CollectionRule |
- ScopedMatch ~> Match | HashMatch |
+ ScopedMatch ~> Match | HashMatch | CollectionRule |
AnyMatch
}
@@ -84,7 +83,7 @@ class QuerySyntax(val input: ParserInput) extends Parser with ImageFields {
)
)}
- def CollectionRule = rule { ("~" | "collection:") ~ ExactMatchValue ~> (
+ def CollectionRule = rule { '~' ~ ExactMatchValue ~> (
collection => Match(
HierarchyField,
Phrase(collection.string.toLowerCase)
@@ -121,6 +120,7 @@ class QuerySyntax(val input: ParserInput) extends Parser with ImageFields {
"supplier" |
"specialInstructions" |
"title" |
+ "collection" |
"keyword" |
"label" |
"croppedBy" |
@@ -134,6 +134,7 @@ class QuerySyntax(val input: ParserInput) extends Parser with ImageFields {
case "illustrator" => "credit"
case "uploader" => "uploadedBy"
case "label" => "labels"
+ case "collection" => "suppliersCollection"
case "subject" => "subjects"
case "location" => "subLocation"
case "by" | "photographer" => "byline"
diff --git a/thrall/app/lib/elasticsearch/ElasticSearch.scala b/thrall/app/lib/elasticsearch/ElasticSearch.scala
index a0c0156f43..d212300151 100644
--- a/thrall/app/lib/elasticsearch/ElasticSearch.scala
+++ b/thrall/app/lib/elasticsearch/ElasticSearch.scala
@@ -8,7 +8,7 @@ import com.gu.mediaservice.lib.formatting.printDateTime
import com.gu.mediaservice.lib.logging.{LogMarker, MarkerMap}
import com.gu.mediaservice.model._
import com.gu.mediaservice.model.leases.MediaLease
-import com.gu.mediaservice.model.usage.{Usage, UsageNotice}
+import com.gu.mediaservice.model.usage.Usage
import com.gu.mediaservice.syntax._
import com.sksamuel.elastic4s.ElasticDsl._
import com.sksamuel.elastic4s.requests.script.Script
@@ -20,7 +20,6 @@ import com.sksamuel.elastic4s.requests.update.UpdateRequest
import com.sksamuel.elastic4s.{ElasticDsl, Executor, Functor, Handler, Response}
import lib.{BatchDeletionIds, ThrallMetrics}
import org.joda.time.DateTime
-import play.api.libs.json.JsValue.jsValueToJsLookup
import play.api.libs.json._
import scala.annotation.nowarn
@@ -504,33 +503,6 @@ class ElasticSearch(
}))
}
- def updateUsageStatus(id: String, usages: Seq[Usage], lastModified: DateTime)
- (implicit ex: ExecutionContext, logMarker: LogMarker): List[Future[ElasticSearchUpdateResponse]] = {
-
- val updateUsageStatusScript =
- s"""
- | for(int i = 0; i < ctx._source.usages.size(); i++) {
- | if(ctx._source.usages[i].id == params.usage.id) {
- | ctx._source.usages[i].status = params.usage.status;
- | ctx._source.usages[i].lastModified = params.lastModified;
- | ctx._source.usagesLastModified = params.lastModified;
- | }
- | }
- |""".stripMargin
-
- val scriptSource = loadUpdatingModificationPainless(updateUsageStatusScript)
-
- val usageParameters = JsDefined(Json.toJson(usages.head)).toOption.map(_.as[Usage]).map(i => asNestedMap(Json.toJson(i))).orNull
-
- List(migrationAwareUpdater(
- requestFromIndexName = indexName =>
- prepareUpdateRequest(indexName, id, scriptSource, lastModified, ("usage", usageParameters)),
- logMessageFromIndexName = indexName =>
- s"ES6 updating usagesRights on image $id and usages id ${usageParameters.get("id")} " +
- s"in index $indexName with usage $usageParameters"
- ).map(_ => ElasticSearchUpdateResponse()))
- }
-
def deleteSyndicationRights(id: String, lastModified: DateTime)
(implicit ex: ExecutionContext, logMarker: LogMarker): List[Future[ElasticSearchUpdateResponse]] = {
val deleteSyndicationRightsScript = s"""
@@ -805,5 +777,4 @@ class ElasticSearch(
image.transform(removeUploadInformation()).get
}
-
}
diff --git a/thrall/app/lib/kinesis/MessageProcessor.scala b/thrall/app/lib/kinesis/MessageProcessor.scala
index 03c7b4616b..f86ccebddb 100644
--- a/thrall/app/lib/kinesis/MessageProcessor.scala
+++ b/thrall/app/lib/kinesis/MessageProcessor.scala
@@ -49,7 +49,6 @@ class MessageProcessor(
case message: CreateMigrationIndexMessage => createMigrationIndex(message, logMarker)
case message: MigrateImageMessage => migrateImage(message, logMarker)
case message: UpsertFromProjectionMessage => upsertImageFromProjection(message, logMarker)
- case message: UpdateUsageStatusMessage => updateUsageStatus(message, logMarker)
case _: CompleteMigrationMessage => completeMigration(logMarker)
}
}
@@ -183,14 +182,6 @@ class MessageProcessor(
Future.sequence(es.deleteSingleImageUsage(message.id, message.usageId, message.lastModified)(ec, logMarker))
}
- private def updateUsageStatus(message: UpdateUsageStatusMessage, logMarker: LogMarker)(implicit ec: ExecutionContext): Future[List[ElasticSearchUpdateResponse]] = {
- implicit val lm: LogMarker = combineMarkers(message, logMarker)
- val usage = message.usageNotice.usageJson.as[Seq[Usage]]
- Future.traverse(es.updateUsageStatus(message.id, usage, message.lastModified ))(_.recoverWith {
- case ElasticNotFoundException => Future.successful(ElasticSearchUpdateResponse())
- })
- }
-
def upsertSyndicationRightsOnly(message: UpdateImageSyndicationMetadataMessage, logMarker: LogMarker)(implicit ec: ExecutionContext): Future[Any] = {
implicit val marker: LogMarker = logMarker ++ imageIdMarker(ImageId(message.id))
es.getImage(message.id) map {
diff --git a/thrall/app/lib/kinesis/MessageTranslator.scala b/thrall/app/lib/kinesis/MessageTranslator.scala
index 77cd14ff08..8b4ae60a1c 100644
--- a/thrall/app/lib/kinesis/MessageTranslator.scala
+++ b/thrall/app/lib/kinesis/MessageTranslator.scala
@@ -73,10 +73,6 @@ object MessageTranslator extends GridLogging {
case (Some(id), Some(edits)) => Right(UpdateImagePhotoshootMetadataMessage(id, updateMessage.lastModified, edits))
case _ => Left(MissingFieldsException(updateMessage.subject))
}
- case UpdateUsageStatus => (updateMessage.id, updateMessage.usageNotice ) match {
- case (Some(id), Some(usageNotice)) => Right(UpdateUsageStatusMessage(id, usageNotice, updateMessage.lastModified))
- case _ => Left(MissingFieldsException(updateMessage.subject))
- }
case _ => Left(ProcessorNotFoundException(updateMessage.subject))
}
}
diff --git a/thrall/test/lib/elasticsearch/ElasticSearchTest.scala b/thrall/test/lib/elasticsearch/ElasticSearchTest.scala
index 0416fb5e57..7b32633eda 100644
--- a/thrall/test/lib/elasticsearch/ElasticSearchTest.scala
+++ b/thrall/test/lib/elasticsearch/ElasticSearchTest.scala
@@ -5,7 +5,6 @@ import com.gu.mediaservice.lib.logging.{LogMarker, MarkerMap}
import com.gu.mediaservice.model
import com.gu.mediaservice.model._
import com.gu.mediaservice.model.leases.{LeasesByMedia, MediaLease}
-import com.gu.mediaservice.model.usage.{PublishedUsageStatus, SyndicatedUsageStatus}
import com.gu.mediaservice.model.usage.Usage
import com.sksamuel.elastic4s.ElasticDsl
import com.sksamuel.elastic4s.ElasticDsl._
@@ -535,18 +534,6 @@ class ElasticSearchTest extends ElasticSearchTestBase {
reloadedImage(id).get.usages.head.id shouldEqual ("recent")
}
-
- "can update usage status for single image" in {
- val id = UUID.randomUUID().toString
- val imageWithUsages = createImageForSyndication(id = UUID.randomUUID().toString, true, Some(now), None).copy(usages = List(usage(), usage()))
- val usageWithUpdatedUsageStatus = imageWithUsages.usages.head.copy(status = SyndicatedUsageStatus)
-
- Await.result(ES.migrationAwareIndexImage(id, imageWithUsages, now), fiveSeconds)
-
- Await.result(Future.sequence(ES.updateUsageStatus(id, List(usageWithUpdatedUsageStatus), now)), fiveSeconds)
- reloadedImage(id).get.usages.head.status shouldBe (SyndicatedUsageStatus)
- reloadedImage(id).get.usages.last.status shouldBe (PublishedUsageStatus)
- }
}
"syndication rights" - {
diff --git a/usage/app/controllers/UsageApi.scala b/usage/app/controllers/UsageApi.scala
index 60ed5c0baf..934837bc4f 100644
--- a/usage/app/controllers/UsageApi.scala
+++ b/usage/app/controllers/UsageApi.scala
@@ -9,11 +9,11 @@ import com.gu.mediaservice.lib.aws.UpdateMessage
import com.gu.mediaservice.lib.logging.{LogMarker, MarkerMap}
import com.gu.mediaservice.lib.play.RequestLoggingFilter
import com.gu.mediaservice.lib.usage.UsageBuilder
-import com.gu.mediaservice.model.usage.{MediaUsage, SyndicatedUsageStatus, Usage, UsageNotice, UsageStatus}
+import com.gu.mediaservice.model.usage.{MediaUsage, Usage}
import com.gu.mediaservice.syntax.MessageSubjects
import lib._
import model._
-import play.api.libs.json.{JsArray, JsError, JsValue, Json}
+import play.api.libs.json.{JsError, JsValue}
import play.api.mvc._
import play.utils.UriEncoding
import rx.lang.scala.Subject
@@ -256,45 +256,6 @@ class UsageApi(
)
}}
- def updateUsageStatus(mediaId: String, usageId: String) = auth.async(parse.json) {req => {
- val request = (req.body \ "data").validate[UsageStatus]
- request.fold(
- e => Future.successful(
- respondError(
- BadRequest,
- errorKey = "update-image-usage-status-failed",
- errorMessage = JsError.toJson(e).toString()
- )
- ),
- usageStatus => {
- implicit val logMarker: LogMarker = MarkerMap(
- "requestType" -> "update-usage-status",
- "requestId" -> RequestLoggingFilter.getRequestId(req),
- "usageStatus" -> usageStatus.toString,
- "image-id" -> mediaId,
- "usage-id" -> usageId,
- ) ++ apiKeyMarkers(req.user.accessor)
- logger.info(logMarker, "recording usage status update")
-
- usageTable.queryByUsageId(usageId).map {
- case Some(mediaUsage) =>
- val updatedStatusMediaUsage = mediaUsage.copy(status = usageStatus)
- usageTable.update(updatedStatusMediaUsage)
- val usageNotice = UsageNotice(mediaId,
- JsArray(Seq(Json.toJson(UsageBuilder.build(updatedStatusMediaUsage)))))
- val updateMessage = UpdateMessage(
- subject = UpdateUsageStatus, id = Some(mediaId),
- usageNotice = Some(usageNotice)
- )
- notifications.publish(updateMessage)
- Ok
- case None =>
- NotFound
- }
- }
- )
- }}
-
def deleteSingleUsage(mediaId: String, usageId: String) = AuthenticatedAndAuthorisedToDelete.async { req =>
implicit val logMarker: LogMarker = MarkerMap(
"requestType" -> "delete-usage",
diff --git a/usage/app/model/SyndicationUsageRequest.scala b/usage/app/model/SyndicationUsageRequest.scala
index 4b900ef81e..ff05282034 100644
--- a/usage/app/model/SyndicationUsageRequest.scala
+++ b/usage/app/model/SyndicationUsageRequest.scala
@@ -1,21 +1,16 @@
package model
-import com.gu.mediaservice.model.usage.{PendingUsageStatus, SyndicatedUsageStatus, SyndicationUsageMetadata, UsageStatus}
+import com.gu.mediaservice.model.usage.{SyndicatedUsageStatus, SyndicationUsageMetadata, UsageStatus}
import org.joda.time.DateTime
import play.api.libs.json._
case class SyndicationUsageRequest (
partnerName: String,
- syndicatedBy: Option[String],
- startPending: Option[Boolean],
mediaId: String,
dateAdded: DateTime
) {
- val status: UsageStatus = startPending match {
- case Some(true) => PendingUsageStatus
- case _ => SyndicatedUsageStatus
- }
- val metadata: SyndicationUsageMetadata = SyndicationUsageMetadata(partnerName, syndicatedBy)
+ val status: UsageStatus = SyndicatedUsageStatus
+ val metadata: SyndicationUsageMetadata = SyndicationUsageMetadata(partnerName)
}
object SyndicationUsageRequest {
import JodaWrites._
diff --git a/usage/app/model/UsageGroup.scala b/usage/app/model/UsageGroup.scala
index 77e5124ace..bee9878745 100644
--- a/usage/app/model/UsageGroup.scala
+++ b/usage/app/model/UsageGroup.scala
@@ -29,7 +29,6 @@ class UsageGroupOps(config: UsageConfig, mediaWrapperOps: MediaWrapperOps)
def buildId(syndicationUsageRequest: SyndicationUsageRequest): String = s"syndication/${
MD5.hash(List(
syndicationUsageRequest.metadata.partnerName,
- syndicationUsageRequest.metadata.syndicatedBy,
syndicationUsageRequest.mediaId
).mkString("_"))
}"
diff --git a/usage/app/model/UsageIdBuilder.scala b/usage/app/model/UsageIdBuilder.scala
index fa5f8cf92a..b61b947991 100644
--- a/usage/app/model/UsageIdBuilder.scala
+++ b/usage/app/model/UsageIdBuilder.scala
@@ -23,7 +23,6 @@ object UsageIdBuilder {
def build(syndicationUsageRequest: SyndicationUsageRequest) = buildId(List(
Some(syndicationUsageRequest.mediaId),
Some(syndicationUsageRequest.metadata.partnerName),
- syndicationUsageRequest.metadata.syndicatedBy,
Some(syndicationUsageRequest.status)
))
diff --git a/usage/conf/routes b/usage/conf/routes
index 8bc0ac8e50..f8886bdc04 100644
--- a/usage/conf/routes
+++ b/usage/conf/routes
@@ -8,7 +8,7 @@ POST /usages/print controllers.UsageApi.set
POST /usages/syndication controllers.UsageApi.setSyndicationUsages
POST /usages/front controllers.UsageApi.setFrontUsages
POST /usages/download controllers.UsageApi.setDownloadUsages
-PUT /usages/status/update/:mediaId/*usageId controllers.UsageApi.updateUsageStatus(mediaId: String, usageId: String)
+
GET /usages/digital/content/*contentId/reindex controllers.UsageApi.reindexForContent(contentId: String)
# Management