get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/1903835/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 1903835,
    "url": "http://patchwork.ozlabs.org/api/patches/1903835/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/swupdate/patch/20240224140031.9888-4-daniel@braunwarth.dev/",
    "project": {
        "id": 58,
        "url": "http://patchwork.ozlabs.org/api/projects/58/?format=api",
        "name": "swupdate development",
        "link_name": "swupdate",
        "list_id": "swupdate.googlegroups.com",
        "list_email": "swupdate@googlegroups.com",
        "web_url": "https://github.com/sbabic/swupdate",
        "scm_url": "git://github.com/sbabic/swupdate",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20240224140031.9888-4-daniel@braunwarth.dev>",
    "list_archive_url": null,
    "date": "2024-02-24T14:00:29",
    "name": "[3/5] web-app: apply \"standard\" fixes",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "da3e2e18253159e2e9e9fe737635349bd87aabd1",
    "submitter": {
        "id": 85609,
        "url": "http://patchwork.ozlabs.org/api/people/85609/?format=api",
        "name": "Daniel Braunwarth",
        "email": "daniel@braunwarth.dev"
    },
    "delegate": {
        "id": 1693,
        "url": "http://patchwork.ozlabs.org/api/users/1693/?format=api",
        "username": "sbabic",
        "first_name": "Stefano",
        "last_name": "Babic",
        "email": "sbabic@denx.de"
    },
    "mbox": "http://patchwork.ozlabs.org/project/swupdate/patch/20240224140031.9888-4-daniel@braunwarth.dev/mbox/",
    "series": [
        {
            "id": 396467,
            "url": "http://patchwork.ozlabs.org/api/series/396467/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/swupdate/list/?series=396467",
            "date": "2024-02-24T14:00:26",
            "name": "web-app: update web application",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/396467/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/1903835/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/1903835/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<swupdate+bncBAABBIPN46XAMGQETVNF2QI@googlegroups.com>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=googlegroups.com header.i=@googlegroups.com\n header.a=rsa-sha256 header.s=20230601 header.b=h+whoWOY;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com\n (client-ip=2a00:1450:4864:20::140; helo=mail-lf1-x140.google.com;\n envelope-from=swupdate+bncbaabbipn46xamgqetvnf2qi@googlegroups.com;\n receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from mail-lf1-x140.google.com (mail-lf1-x140.google.com\n [IPv6:2a00:1450:4864:20::140])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4ThpSk6g1mz23q6\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 25 Feb 2024 01:01:10 +1100 (AEDT)",
            "by mail-lf1-x140.google.com with SMTP id\n 2adb3069b0e04-50e55470b49sf2775336e87.0\n        for <incoming@patchwork.ozlabs.org>;\n Sat, 24 Feb 2024 06:01:10 -0800 (PST)",
            "by 2002:a05:6512:4026:b0:512:cb07:f4c2 with SMTP id\n br38-20020a056512402600b00512cb07f4c2ls512736lfb.2.-pod-prod-06-eu; Sat, 24\n Feb 2024 06:01:04 -0800 (PST)",
            "from bergelmir.uberspace.de (bergelmir.uberspace.de.\n [185.26.156.157])\n        by gmr-mx.google.com with ESMTPS id\n dx6-20020a0565122c0600b00512ed835a49si84232lfb.1.2024.02.24.06.01.04\n        for <swupdate@googlegroups.com>\n        (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);\n        Sat, 24 Feb 2024 06:01:04 -0800 (PST)",
            "(qmail 21550 invoked by uid 989); 24 Feb 2024 14:01:03 -0000",
            "from unknown (HELO unkown) (::1)\n\tby bergelmir.uberspace.de (Haraka/3.0.1) with ESMTPSA;\n Sat, 24 Feb 2024 15:01:03 +0100"
        ],
        "ARC-Seal": [
            "i=2; a=rsa-sha256; t=1708783267; cv=pass;\n        d=google.com; s=arc-20160816;\n        b=GGCwwUeg0EBX4FUHT1G+kAyzt8AxJicZQp7w46ArSANkwIvGixaOqeiCnVCJGJE1CG\n         lZDeCFxm1Yx0umQEo2Ndj5d54oJW2cj5F0DaIWxsaLYgf7t1K+fzek6PLoLYNb+uJmgx\n         NtyrnW/lhadErK5qP8leu/fMsbuGvbM9Ubwd726PNE4XuaHYPU4QJtAvghknw+d/H6AO\n         5nVW3NszqGgVHYdGCxPfiddHBvGXBYcNA0USWO2Wn7tTONsNpAVH4Rx6TUB23O9D9K6t\n         QOPG/Bcw8mUTUvPbo2X41tzFpj7PlCwVxpK22e+BcRjG0CGx4CL4XKw2bAwhb2udK+Fu\n         ai2w==",
            "i=1; a=rsa-sha256; t=1708783264; cv=none;\n        d=google.com; s=arc-20160816;\n        b=mGzCm/5zq1PWaDSCCVseyEwUhf/GcyOExcXYnh7Ss7KREaqRtodUUrTWaVo+9sXD/J\n         NlxlrIiKao/s/mJXSmzv1HaWXpH9SBrn86JdEQtBBt2qFK/a6r3afTrWgE0srgdiQDpb\n         k2I5TDVSoXHGNMoTJT1FD62yOFlEWZEYzTS1KzwxLRSZiP95W5PK8ZouBcZbHjYbq3oc\n         wlaUvyscnP++nZj+1QwZLUt6EYPa+mpfRYH9ktO872AIhT70vT96A9IO6uT5cFFeWJxV\n         2Lv2ekYJxkQdf/l7UrHPKYB3EM7c8KgHIUZpm8w8OPD2DirADwAVxK9g9L5piOS19OLE\n         rscQ=="
        ],
        "ARC-Message-Signature": [
            "i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20160816;\n        h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post\n         :list-id:mailing-list:precedence:mime-version:references:in-reply-to\n         :message-id:date:subject:cc:to:from:sender:dkim-signature;\n        bh=3mi2G16TTDaI9oy1PruzZx4xCV9fNwqT0Ygayd3Ga/w=;\n        fh=18OhZ5Dp9O5dio5xyzjyoBjvsKgmMIY8NBN+wQopz+U=;\n        b=orpXup8tV1WCddocDUBx8AALbOEuNg/HiTRKZEE7F0mqatvm/tEeqGcqKjGIjT23Wa\n         lMxxAYOdSG+yxrYEcR8qQxh1g0x+xctq0WokzOoprZ7x5k1pYr2HXH6MpWCAjQHOdkYt\n         LfFy1Scd5062bB3qy+EAv6wwx9ASALWMAXipxLju/aosBxOVTi+X+2iNT8CMA4prEGPY\n         vnZfL/0lknlUI+4u1KsiJwbg9/vVTE9Py/D6U2oJJOJpuz87MT3/D1yip6fw/f1q9TpN\n         Ih9NgS2m4mwkb05i1VvmEsoss9aiZqu2gLusWdIaI9Uy0vl5pWuJnffbOqU7F/G/wFuU\n         JuQA==;\n        darn=patchwork.ozlabs.org",
            "i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20160816;\n        h=dkim-signature:content-transfer-encoding:mime-version:references\n         :in-reply-to:message-id:date:subject:cc:to:from;\n        bh=GRnb5zDjSTkXRdqcj06P+J8KdvXyTzvekrfs7/DPc74=;\n        fh=BXlwH+1nWuAxJAQnM3fjgjZkXNBtIKsJ4sRu0kRLMwA=;\n        b=jarXA63fh+m7YYBsi/WCgq7txc1n6KkX6Doa2WsgVCSz9ROKpys6g3d9higy+P1Up9\n         Hk2Zn1iEZkw17iPMJjMan6sTaA90aY58pxGQbxdq61yK2iKsMboNo5LAf2uufQy30ErL\n         ytpjAg/hwUJS2T0DQlicXE2NVuZh2gEj1vnETARgBqdisZuiXQY1FEit6uEQZBeojBFJ\n         Hg7Y+hKG1LIk/dru9MFv3/gs3V1JnmCUX7udfmAQtdpUm+nBfDG2/B+QjhSpn8lVM0DG\n         F1AYgnLsflDIlA/LjfDfFla7iy6emz4ectQvCtkawjY1BelEx5AyKGbVOJxFPI+4xGg8\n         JcjQ==;\n        dara=google.com"
        ],
        "ARC-Authentication-Results": [
            "i=2; gmr-mx.google.com;\n       dkim=temperror (no key for signature) header.i=@braunwarth.dev\n header.s=uberspace header.b=mqe9ttWL;\n       spf=pass (google.com: domain of daniel@braunwarth.dev designates\n 185.26.156.157 as permitted sender) smtp.mailfrom=daniel@braunwarth.dev",
            "i=1; gmr-mx.google.com;\n       dkim=temperror (no key for signature) header.i=@braunwarth.dev\n header.s=uberspace header.b=mqe9ttWL;\n       spf=pass (google.com: domain of daniel@braunwarth.dev designates\n 185.26.156.157 as permitted sender) smtp.mailfrom=daniel@braunwarth.dev"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=googlegroups.com; s=20230601; t=1708783267; x=1709388067;\n darn=patchwork.ozlabs.org;\n        h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post\n         :list-id:mailing-list:precedence:x-original-authentication-results\n         :x-original-sender:mime-version:references:in-reply-to:message-id\n         :date:subject:cc:to:from:sender:from:to:cc:subject:date:message-id\n         :reply-to;\n        bh=3mi2G16TTDaI9oy1PruzZx4xCV9fNwqT0Ygayd3Ga/w=;\n        b=h+whoWOYQrWsjidLa69Sx0fo3nfMGIEzcizUds1hTJeewfFV3Z0taxraHOWzt0X5LH\n         73EgdPwqk3fEOy7Z0wfyhAwWnmDdYE4gUHtqSN89Ic/lH5P9Oe899UJeS82xAiMQzpbh\n         VPZb/1Y2h40uY4ko3YgPW4vQNd20YPd5iiO/D4d7dJbPsQeVYlABReMC6GQnfzZ5/p5U\n         jBQhwEApSD2Y+v78YoWLxy6AYAx/5z9ehGPEBMuVlnLPwdIXrumBvrDZj/VDO/uFQQM5\n         rKBDSdSOgMVpdVt4Clr4OtGfbQkTVTMqjCOoE2uobuU70lXdhoNeNs9pmjHDc1DomWlC\n         uotA==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20230601; t=1708783267; x=1709388067;\n        h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post\n         :x-spam-checked-in-group:list-id:mailing-list:precedence\n         :x-original-authentication-results:x-original-sender:mime-version\n         :references:in-reply-to:message-id:date:subject:cc:to:from\n         :x-beenthere:x-gm-message-state:sender:from:to:cc:subject:date\n         :message-id:reply-to;\n        bh=3mi2G16TTDaI9oy1PruzZx4xCV9fNwqT0Ygayd3Ga/w=;\n        b=UDzC6GbMVgruv1kFyaNhGZeKfBE631AzVZ7BebXolBfOOrznhYLr9aIJJc9refNFmE\n         33P+barZDWLVIi5du+uVbU7GrhjmMbOp7aYaFXXv6eeDHXscagf6q0Q/bGGzRibH7AON\n         XPQm3YUVlduUNkQZsxi+HMgefRYB4o4nooq9ZHvBC5DcWA8l3xf+3NVJz4bA7GStjkdv\n         sdPhY0DLrpYXjaNuLo0UwWpYVzI3I60SDXGrRa4yOUHy4Q2Fvt2QKHV/+auo7K6VNfRb\n         aDiWiG4gUErf7LkP/s+JBOr1lrfErKWpTcArbl/OfpzQOJzgBUn3a7JyQCYKvcfVd+Js\n         wIyw==",
        "Sender": "swupdate@googlegroups.com",
        "X-Forwarded-Encrypted": "i=2;\n AJvYcCXciEhtLA7gFkRHV/piM8ulUJafTG+yRKc3bnSVdS2bdl6lsIpUX05h6EkrK+C1jNg/vjCLa1s9ywsPm3GF+rq2+j/hUV66pikU+58icQ==",
        "X-Gm-Message-State": "AOJu0YyM5g+UIM7MNxV1DJbE0rPgP2vLHeDfMJ8o5hd34mGXjJ/uFhfZ\n\tcEcyjUbbnJyeXtJQjHdPWTfHvWy3e5Smt79hWeiAaT2lEnQCdgZY",
        "X-Google-Smtp-Source": "\n AGHT+IH3W3+r/dhQWLBoJ8AhUfA3oUiVjoCuxMYItbRtlc0YgMKbZxnNmNfA8tAiK7u1IejRAKL7Hw==",
        "X-Received": [
            "by 2002:ac2:4e06:0:b0:512:b041:d6cc with SMTP id\n e6-20020ac24e06000000b00512b041d6ccmr2052307lfr.29.1708783266477;\n        Sat, 24 Feb 2024 06:01:06 -0800 (PST)",
            "by 2002:ac2:44c2:0:b0:512:f336:1bd6 with SMTP id\n d2-20020ac244c2000000b00512f3361bd6mr708766lfm.31.1708783264499;\n        Sat, 24 Feb 2024 06:01:04 -0800 (PST)"
        ],
        "X-BeenThere": "swupdate@googlegroups.com",
        "Received-SPF": "pass (google.com: domain of daniel@braunwarth.dev designates\n 185.26.156.157 as permitted sender) client-ip=185.26.156.157;",
        "From": "Daniel Braunwarth <daniel@braunwarth.dev>",
        "To": "swupdate@googlegroups.com",
        "Cc": "Daniel Braunwarth <daniel@braunwarth.dev>",
        "Subject": "[swupdate] [PATCH 3/5] web-app: apply \"standard\" fixes",
        "Date": "Sat, 24 Feb 2024 14:00:29 +0000",
        "Message-ID": "<20240224140031.9888-4-daniel@braunwarth.dev>",
        "X-Mailer": "git-send-email 2.43.0",
        "In-Reply-To": "<20240224140031.9888-1-daniel@braunwarth.dev>",
        "References": "<20240224140031.9888-1-daniel@braunwarth.dev>",
        "MIME-Version": "1.0",
        "X-Rspamd-Bar": "-----",
        "X-Rspamd-Report": "REPLY(-4) BAYES_HAM(-2.963416) MID_CONTAINS_FROM(1)\n MIME_GOOD(-0.1) R_MISSING_CHARSET(0.5)",
        "X-Rspamd-Score": "-5.563416",
        "X-Original-Sender": "daniel@braunwarth.dev",
        "X-Original-Authentication-Results": "gmr-mx.google.com;       dkim=temperror (no\n key for signature) header.i=@braunwarth.dev header.s=uberspace\n header.b=mqe9ttWL;\n       spf=pass (google.com: domain of daniel@braunwarth.dev\n designates 185.26.156.157 as permitted sender)\n smtp.mailfrom=daniel@braunwarth.dev",
        "Content-Type": "text/plain; charset=\"UTF-8\"",
        "Precedence": "list",
        "Mailing-list": "list swupdate@googlegroups.com;\n contact swupdate+owners@googlegroups.com",
        "List-ID": "<swupdate.googlegroups.com>",
        "X-Spam-Checked-In-Group": "swupdate@googlegroups.com",
        "X-Google-Group-Id": "605343134186",
        "List-Post": "<https://groups.google.com/group/swupdate/post>,\n <mailto:swupdate@googlegroups.com>",
        "List-Help": "<https://groups.google.com/support/>,\n <mailto:swupdate+help@googlegroups.com>",
        "List-Archive": "<https://groups.google.com/group/swupdate",
        "List-Subscribe": "<https://groups.google.com/group/swupdate/subscribe>,\n <mailto:swupdate+subscribe@googlegroups.com>",
        "List-Unsubscribe": "\n <mailto:googlegroups-manage+605343134186+unsubscribe@googlegroups.com>,\n <https://groups.google.com/group/swupdate/subscribe>"
    },
    "content": "Signed-off-by: Daniel Braunwarth <daniel@braunwarth.dev>\n---\n web-app/gulpfile.js    | 34 +++++++++++++++++-----------------\n web-app/js/swupdate.js | 36 ++++++++++++++++++++----------------\n 2 files changed, 37 insertions(+), 33 deletions(-)",
    "diff": "diff --git a/web-app/gulpfile.js b/web-app/gulpfile.js\nindex d8c7380..a698e81 100755\n--- a/web-app/gulpfile.js\n+++ b/web-app/gulpfile.js\n@@ -5,27 +5,27 @@\n  * SPDX-License-Identifier: MIT\n  */\n \n-var cleanCSS = require('gulp-clean-css')\n-var del = require('del')\n-var gulp = require('gulp')\n-var gzip = require('gulp-gzip')\n-var imagemin = require('gulp-imagemin')\n-var filter = require('gulp-filter')\n-var htmlmin = require('gulp-htmlmin')\n-var minify = require('gulp-minify')\n-var rename = require('gulp-rename')\n-var replace = require('gulp-replace')\n-var sass = require('gulp-sass')(require('sass'))\n-var tar = require('gulp-tar')\n-var useref = require('gulp-useref')\n-var minimist = require('minimist')\n+const cleanCSS = require('gulp-clean-css')\n+const del = require('del')\n+const gulp = require('gulp')\n+const gzip = require('gulp-gzip')\n+const imagemin = require('gulp-imagemin')\n+const filter = require('gulp-filter')\n+const htmlmin = require('gulp-htmlmin')\n+const minify = require('gulp-minify')\n+const rename = require('gulp-rename')\n+const replace = require('gulp-replace')\n+const sass = require('gulp-sass')(require('sass'))\n+const tar = require('gulp-tar')\n+const useref = require('gulp-useref')\n+const minimist = require('minimist')\n \n-var knownOptions = {\n+const knownOptions = {\n   string: 'output',\n   default: { output: 'swupdate-www' }\n }\n \n-var options = minimist(process.argv.slice(2), knownOptions)\n+const options = minimist(process.argv.slice(2), knownOptions)\n \n gulp.task('sass', async function () {\n   return gulp.src('scss/*.scss')\n@@ -114,7 +114,7 @@ gulp.task('resize-images', async function () {\n })\n \n gulp.task('package', function () {\n-  var name = options.output.replace('.tar', '').replace('.gz', '')\n+  const name = options.output.replace('.tar', '').replace('.gz', '')\n   return gulp.src('dist/**')\n     .pipe(tar(name + '.tar'))\n     .pipe(gzip())\ndiff --git a/web-app/js/swupdate.js b/web-app/js/swupdate.js\nindex 6661d0a..ae65a1e 100755\n--- a/web-app/js/swupdate.js\n+++ b/web-app/js/swupdate.js\n@@ -14,9 +14,9 @@ const StatusEnum = {\n   SUCCESS: 'SUCCESS',\n   FAILURE: 'FAILURE',\n   DONE: 'DONE'\n-};\n+}\n \n-function isStatusInEnum(status){\n+function isStatusInEnum (status) {\n   return (status in StatusEnum)\n }\n \n@@ -45,7 +45,7 @@ function tryReload () {\n }\n \n function updateStatus (status) {\n-  if(!isStatusInEnum(status)) return;\n+  if (!isStatusInEnum(status)) return\n   $('#swu-idle').hide()\n   $('#swu-success').hide()\n   $('#swu-failure').hide()\n@@ -74,11 +74,11 @@ function updateStatus (status) {\n   }\n }\n \n-var updateProgressBarStatus = (function (status) {\n-  var s = ''\n+const updateProgressBarStatus = (function (status) {\n+  let s = ''\n \n   return function (status) {\n-    if(!isStatusInEnum(status)) return;\n+    if (!isStatusInEnum(status)) return\n     $('#swu-progress-bar')\n       .removeClass('bg-danger bg-success progress-bar-animated')\n     $('#swu-progress-spinner')\n@@ -127,13 +127,13 @@ Dropzone.options.dropzone = {\n }\n \n window.onload = function () {\n-  var protocol\n+  let protocol\n \n   $('#swu-restart').click(restart)\n \n   if (window.location.protocol === 'https:') { protocol = 'wss:' } else { protocol = 'ws:' }\n \n-  var ws = new WebSocket(protocol + '//' + window.location.host + window.location.pathname.replace(/\\/[^/]*$/, '') + '/ws')\n+  const ws = new WebSocket(protocol + '//' + window.location.host + window.location.pathname.replace(/\\/[^/]*$/, '') + '/ws')\n \n   ws.onopen = function (event) {\n     updateStatus(StatusEnum.IDLE)\n@@ -144,28 +144,32 @@ window.onload = function () {\n   }\n \n   ws.onmessage = function (event) {\n-    var msg = JSON.parse(event.data)\n+    const msg = JSON.parse(event.data)\n \n     switch (msg.type) {\n-      case 'message':\n-        var p = $('<p></p>')\n+      case 'message': {\n+        const p = $('<p></p>')\n         p.text(msg.text)\n         p.addClass('mb-1')\n         if (msg.level <= 3) { p.addClass('text-danger') }\n         $('#messages').append(p)\n         break\n-      case 'status':\n+      }\n+      case 'status': {\n         updateStatus(msg.status)\n         updateProgressBarStatus(msg.status)\n         break\n-      case 'source':\n+      }\n+      case 'source': {\n         break\n-      case 'step':\n-        var percent = Math.round((100 * (Number(msg.step) - 1) + Number(msg.percent)) / Number(msg.number))\n-        var value = percent + '%' + ' (' + msg.step + ' of ' + msg.number + ')'\n+      }\n+      case 'step': {\n+        const percent = Math.round((100 * (Number(msg.step) - 1) + Number(msg.percent)) / Number(msg.number))\n+        const value = percent + '%' + ' (' + msg.step + ' of ' + msg.number + ')'\n \n         updateProgressBar(percent, msg.name, value)\n         break\n+      }\n     }\n   }\n }\n",
    "prefixes": [
        "3/5"
    ]
}