From a0aa3fcad3b9f769f9bdca81b87682d549a21d75 Mon Sep 17 00:00:00 2001 From: Milos Despotovic Date: Mon, 9 Sep 2024 14:54:03 -0700 Subject: [PATCH 1/5] Remove NR and duplicate from summary --- .../DocumentServices/services/dts/redactionsummary.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/computingservices/DocumentServices/services/dts/redactionsummary.py b/computingservices/DocumentServices/services/dts/redactionsummary.py index 89fded2ef..539a53e9c 100644 --- a/computingservices/DocumentServices/services/dts/redactionsummary.py +++ b/computingservices/DocumentServices/services/dts/redactionsummary.py @@ -7,6 +7,11 @@ class redactionsummary(): def prepareredactionsummary(self, message, documentids, pageflags, programareas): + def removeduplicateandnr(pageflag): + if pageflag['name'] != 'Duplicate' and pageflag['name'] != 'Not Responsive': + return True + return False + pageflags = list(filter(removeduplicateandnr, pageflags)) _ismcfpersonalrequest = True if message.bcgovcode == 'mcf' and message.requesttype == 'personal' else False if _ismcfpersonalrequest and message.category == "responsepackage": redactionsummary = self.__packagesummaryforcfdrequests(message, documentids) From e879fe086fd9cc20cf9a43dc9490b067153e391d Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 17 Sep 2024 09:47:20 -0700 Subject: [PATCH 2/5] make redline opacity configurable enable submitting notes with enter key add watermark for nr and duplicate pages --- docker-compose.yml | 1 + web/Dockerfile | 2 ++ web/Dockerfile.local | 2 ++ web/src/components/FOI/Home/Redlining.js | 38 +++++++++++++++++++++++- web/src/constants/constants.ts | 1 + 5 files changed, 43 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index d3c57fd9a..790944e6a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,6 +18,7 @@ services: - REACT_APP_REDACTION_SELECT_LIMIT=${REDACTION_SELECT_LIMIT} - REACT_APP_BIG_HTTP_GET_TIMEOUT=${BIG_HTTP_GET_TIMEOUT} - REACT_APP_SESSION_SECURITY_KEY=${REACT_APP_SESSION_SECURITY_KEY} + - REACT_APP_REDLINE_OPACITY=${REACT_APP_REDLINE_OPACITY} volumes: - ".:/web" - "/web/node_modules" diff --git a/web/Dockerfile b/web/Dockerfile index 67fad4772..6f3229bd8 100644 --- a/web/Dockerfile +++ b/web/Dockerfile @@ -15,6 +15,7 @@ ARG REACT_APP_ANNOTATION_PAGE_SIZE ARG REACT_APP_PAGE_SELECT_LIMIT ARG REACT_APP_REDACTION_SELECT_LIMIT ARG REACT_APP_SESSION_SECURITY_KEY +ARG REACT_APP_REDLINE_OPACITY ENV NODE_ENV ${NODE_ENV} @@ -27,6 +28,7 @@ ENV REACT_APP_ANNOTATION_PAGE_SIZE ${REACT_APP_ANNOTATION_PAGE_SIZE} ENV REACT_APP_PAGE_SELECT_LIMIT ${REACT_APP_PAGE_SELECT_LIMIT} ENV REACT_APP_REDACTION_SELECT_LIMIT ${REACT_APP_REDACTION_SELECT_LIMIT} ENV REACT_APP_SESSION_SECURITY_KEY ${REACT_APP_SESSION_SECURITY_KEY} +ENV REACT_APP_REDLINE_OPACITY ${REACT_APP_REDLINE_OPACITY} # add `/app/node_modules/.bin` to $PATH ENV PATH /web/node_modules/.bin:$PATH diff --git a/web/Dockerfile.local b/web/Dockerfile.local index 728ec0f76..1747f09fd 100644 --- a/web/Dockerfile.local +++ b/web/Dockerfile.local @@ -17,6 +17,7 @@ ARG REACT_APP_PAGE_SELECT_LIMIT ARG REACT_APP_REDACTION_SELECT_LIMIT ARG REACT_APP_BIG_HTTP_GET_TIMEOUT ARG REACT_APP_SESSION_SECURITY_KEY +ARG REACT_APP_REDLINE_OPACITY ENV NODE_ENV ${NODE_ENV} ENV GENERATE_SOURCEMAP ${GENERATE_SOURCEMAP} @@ -29,6 +30,7 @@ ENV REACT_APP_PAGE_SELECT_LIMIT ${REACT_APP_PAGE_SELECT_LIMIT} ENV REACT_APP_REDACTION_SELECT_LIMIT ${REACT_APP_REDACTION_SELECT_LIMIT} ENV BIG_HTTP_GET_TIMEOUT ${REACT_APP_BIG_HTTP_GET_TIMEOUT} ENV REACT_APP_SESSION_SECURITY_KEY ${REACT_APP_SESSION_SECURITY_KEY} +ENV REACT_APP_REDLINE_OPACITY ${REACT_APP_REDLINE_OPACITY} # add `/app/node_modules/.bin` to $PATH ENV PATH /web/node_modules/.bin:$PATH diff --git a/web/src/components/FOI/Home/Redlining.js b/web/src/components/FOI/Home/Redlining.js index 79e4cd5e1..ccb2e244e 100644 --- a/web/src/components/FOI/Home/Redlining.js +++ b/web/src/components/FOI/Home/Redlining.js @@ -27,6 +27,7 @@ import { ANNOTATION_PAGE_SIZE, REDACTION_SELECT_LIMIT, BIG_HTTP_GET_TIMEOUT, + REDLINE_OPACITY, } from "../../../constants/constants"; import { errorToast } from "../../../helper/helper"; import { useAppSelector } from "../../../hooks/hook"; @@ -84,7 +85,7 @@ const Redlining = React.forwardRef( }, ref ) => { - const alpha = 0.6; + const alpha = REDLINE_OPACITY; const requestnumber = useAppSelector( (state) => state.documents?.requestnumber @@ -193,6 +194,7 @@ const Redlining = React.forwardRef( } = instance.Core; instance.UI.disableElements(PDFVIEWER_DISABLED_FEATURES.split(",")); instance.UI.enableElements(["attachmentPanelButton"]); + instance.UI.enableNoteSubmissionWithEnter(); documentViewer.setToolMode( documentViewer.getTool(instance.Core.Tools.ToolNames.REDACTION) ); @@ -1336,6 +1338,40 @@ const Redlining = React.forwardRef( if (docInstance && documentList.length > 0) { const document = docInstance?.UI.iframeWindow.document; document.getElementById("create_response_pdf").addEventListener("click", handleCreateResponsePDFClick); + docViewer.setWatermark({ + // Draw custom watermark in middle of the document + custom: (ctx, pageNumber, pageWidth, pageHeight) => { + // ctx is an instance of CanvasRenderingContext2D + // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D + // Hence being able to leverage those properties + let originalPage = pageMappedDocs['stitchedPageLookup'][pageNumber] + let doc = pageFlags.find(d => d.documentid === originalPage.docid); + let pageFlag = doc.pageflag.find(f => f.page === originalPage.page); + if (pageFlag.flagid === pageFlagTypes["Duplicate"]) { + ctx.fillStyle = "#ff0000"; + ctx.font = "20pt Arial"; + ctx.globalAlpha = 0.4; + + ctx.save(); + ctx.translate(pageWidth / 2, pageHeight / 2); + ctx.rotate(-Math.PI / 4); + ctx.fillText("DUPLICATE", 0, 0); + ctx.restore(); + } + + if (pageFlag.flagid === pageFlagTypes["Not Responsive"]) { + ctx.fillStyle = "#ff0000"; + ctx.font = "20pt Arial"; + ctx.globalAlpha = 0.4; + + ctx.save(); + ctx.translate(pageWidth / 2, pageHeight / 2); + ctx.rotate(-Math.PI / 4); + ctx.fillText("NOT RESPONSIVE", 0, 0); + ctx.restore(); + } + }, + }); } //Cleanup Function: removes previous event listeiner to ensure handleCreateResponsePDFClick event is not called multiple times on click return () => { diff --git a/web/src/constants/constants.ts b/web/src/constants/constants.ts index 0152fc2f3..1a76564a0 100644 --- a/web/src/constants/constants.ts +++ b/web/src/constants/constants.ts @@ -19,3 +19,4 @@ export const ANNOTATION_PAGE_SIZE = window._env_?.REACT_APP_ANNOTATION_PAGE_SIZE export const PAGE_SELECT_LIMIT = window._env_?.REACT_APP_PAGE_SELECT_LIMIT ?? process.env.REACT_APP_PAGE_SELECT_LIMIT ?? 250; export const REDACTION_SELECT_LIMIT = window._env_?.REACT_APP_REDACTION_SELECT_LIMIT ?? process.env.REACT_APP_REDACTION_SELECT_LIMIT ?? 250; export const BIG_HTTP_GET_TIMEOUT = window._env_?.REACT_APP_BIG_HTTP_GET_TIMEOUT ?? process.env.REACT_APP_BIG_HTTP_GET_TIMEOUT ?? 300000; +export const REDLINE_OPACITY = window._env_?.REACT_APP_REDLINE_OPACITY ?? process.env.REACT_APP_REDLINE_OPACITY ?? 0.5; From bf62b04a625388cb4dbde145d79302896cfb9e4d Mon Sep 17 00:00:00 2001 From: Abin Antony Date: Wed, 18 Sep 2024 15:55:53 -0700 Subject: [PATCH 3/5] #FOIMOD-3469 Zipper Services Blank LOC and Converstion ICS, MSG date issue --- .gitignore | 2 + .../CalendarFileProcessor.cs | 34 ++- .../CalendarFileProcessorTest.cs | 26 +- .../SourceFiles/Backlog refinement.ics | 226 ++++++++++++++++++ .../MCS.FOI.MSGToPDF/MSGFileProcessor.cs | 35 ++- .../MSGFileProcessorTest.cs | 4 +- .../Test-MSG-File-with-Attachments.pdf | Bin 25570 -> 0 bytes .../SourceFiles/simple-test-msg-file.pdf | Bin 179640 -> 0 bytes .../ZippingServices/services/zipperservice.py | 1 + 9 files changed, 306 insertions(+), 22 deletions(-) create mode 100644 MCS.FOI.S3FileConversion/MCS.FOI.CalendarToPDFUnitTests/SourceFiles/Backlog refinement.ics delete mode 100644 MCS.FOI.S3FileConversion/MCS.FOI.MSGToPDFUnitTests/SourceFiles/Test-MSG-File-with-Attachments.pdf delete mode 100644 MCS.FOI.S3FileConversion/MCS.FOI.MSGToPDFUnitTests/SourceFiles/simple-test-msg-file.pdf diff --git a/.gitignore b/.gitignore index f9395bcd2..3af96fa00 100644 --- a/.gitignore +++ b/.gitignore @@ -102,3 +102,5 @@ computingservices/ZippingServices/env/* openshift/templates/zippingservice/zipper.env *.locenv +MCS.FOI.S3FileConversion/MCS.FOI.MSGToPDFUnitTests/SourceFiles/result_*.pdf +MCS.FOI.S3FileConversion/MCS.FOI.CalendarToPDFUnitTests/SourceFiles/result_*.pdf diff --git a/MCS.FOI.S3FileConversion/MCS.FOI.CalendarToPDF/CalendarFileProcessor.cs b/MCS.FOI.S3FileConversion/MCS.FOI.CalendarToPDF/CalendarFileProcessor.cs index fdf2d03c7..b8f625022 100644 --- a/MCS.FOI.S3FileConversion/MCS.FOI.CalendarToPDF/CalendarFileProcessor.cs +++ b/MCS.FOI.S3FileConversion/MCS.FOI.CalendarToPDF/CalendarFileProcessor.cs @@ -149,12 +149,20 @@ public CalendarFileProcessor(Stream sourceStream) //Organizer Name and Email if (e.Organizer != null) { - organizer = e.Organizer.CommonName + "(" + e.Organizer.Value.AbsoluteUri + ")"; + try + { + organizer = e.Organizer.CommonName + "(" + e.Organizer.Value.AbsoluteUri + ")"; + } + catch + { + + organizer = @"Unknown Organizer"; + } } else { - organizer = @"Unknown Organizer(mailto:unknownorganizer@calendar.google.com)"; + organizer = @"Unknown Organizer(mailto:unknownorganizer@calendar.bcgov.ca)"; } htmlString.Append(@" From: @@ -174,7 +182,7 @@ public CalendarFileProcessor(Stream sourceStream) //Meeting created timestamp htmlString.Append(@" Sent: - " + e.DtStamp.Date + ""); + " + GetPSTTime(e.DtStamp.Date) + ""); //Priority htmlString.Append(@" @@ -184,12 +192,12 @@ public CalendarFileProcessor(Stream sourceStream) //Meeting Start Timestamp htmlString.Append(@" Start Time: - " + e.DtStart.Date + ""); + " + GetPSTTime(e.DtStart.Value) + ""); //Meeting End Timestamp htmlString.Append(@" End Time: - " + e.DtEnd.Date + ""); + " + GetPSTTime(e.DtEnd.Value) + ""); //Meeting Message string message = @"" + e.Description?.Replace("\n", "
"); message = message.Replace("<br>", "
").Replace("<br/>", "
"); @@ -243,6 +251,22 @@ public CalendarFileProcessor(Stream sourceStream) } + + private DateTime GetPSTTime(DateTime _timetoconvert) + { + DateTime converteddate = _timetoconvert; + if (TimeZone.CurrentTimeZone.StandardName != "Pacific Standard Time" || _timetoconvert.Kind == DateTimeKind.Utc ) + { + + converteddate = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(converteddate, "Pacific Standard Time"); + + } + + return converteddate; + } + + + /// /// Converts HTML string to PDF using syncfution library and blink engine /// diff --git a/MCS.FOI.S3FileConversion/MCS.FOI.CalendarToPDFUnitTests/CalendarFileProcessorTest.cs b/MCS.FOI.S3FileConversion/MCS.FOI.CalendarToPDFUnitTests/CalendarFileProcessorTest.cs index e457a0e70..a99f3db19 100644 --- a/MCS.FOI.S3FileConversion/MCS.FOI.CalendarToPDFUnitTests/CalendarFileProcessorTest.cs +++ b/MCS.FOI.S3FileConversion/MCS.FOI.CalendarToPDFUnitTests/CalendarFileProcessorTest.cs @@ -42,7 +42,7 @@ public void ProcessSimpleCalendarFilesTest() Dictionary> attachments = new Dictionary>(); string rootFolder = getSourceFolder(); Stream output = new MemoryStream(); - Stream testFile = new FileStream(Path.Combine(getSourceFolder(), "test-cal.ics"), FileMode.Open, FileAccess.Read); + Stream testFile = new FileStream(Path.Combine(getSourceFolder(), "Backlog refinement.ics"), FileMode.Open, FileAccess.Read); CalendarFileProcessor calendarFileProcessor = new CalendarFileProcessor(testFile); calendarFileProcessor.WaitTimeinMilliSeconds = 5000; @@ -50,6 +50,8 @@ public void ProcessSimpleCalendarFilesTest() string outputPath = Path.Combine(getSourceFolder(), "output"); (isProcessed, message, output, attachments) = calendarFileProcessor.ProcessCalendarFiles(); Assert.IsTrue(isProcessed == true, $"Calendar to PDF Conversion failed"); + + SaveStreamAsFile(getSourceFolder(), output, "result_Backlog refinement.pdf"); } [TestMethod] @@ -60,7 +62,7 @@ public void ProcessCalendarFileWithAttachmentsTest() Dictionary> attachments = new Dictionary>(); string rootFolder = getSourceFolder(); Stream output = new MemoryStream(); - Stream testFile = new FileStream(Path.Combine(getSourceFolder(), "test-with-attachments.ics"), FileMode.Open, FileAccess.Read); + Stream testFile = new FileStream(Path.Combine(getSourceFolder(), "Backlog refinement.ics"), FileMode.Open, FileAccess.Read); CalendarFileProcessor calendarFileProcessor = new CalendarFileProcessor(testFile); calendarFileProcessor.WaitTimeinMilliSeconds = 5000; @@ -71,6 +73,8 @@ public void ProcessCalendarFileWithAttachmentsTest() bool isAttachmentsExists = attachments.Count == 2; Assert.IsTrue(isAttachmentsExists, $"Attachments not found"); + + SaveStreamAsFile(getSourceFolder(), output, "result_Backlog refinement.pdf"); } [TestMethod] @@ -88,11 +92,27 @@ public void ProcessComplexCalendarFilesTest() calendarFileProcessor.FailureAttemptCount = 10; (isProcessed, message, output, attachments) = calendarFileProcessor.ProcessCalendarFiles(); Assert.IsTrue(isProcessed == true, $"Calendar to PDF Conversion failed"); + + SaveStreamAsFile(getSourceFolder(), output, "result_test-problematic-calendar.pdf"); } private string getSourceFolder() { - return "C:\\Projects\\foi-docreviewer\\MCS.FOI.S3FileConversion\\MCS.FOI.CalendarToPDFUnitTests\\SourceFiles"; + return "C:\\AOT\\FOI\\Source\\foi-docreviewer\\foi-docreviewer\\MCS.FOI.S3FileConversion\\MCS.FOI.CalendarToPDFUnitTests\\SourceFiles"; + } + + public static void SaveStreamAsFile(string filePath, Stream stream, string fileName) + { + stream.Position = 0; + var path = Path.Combine(filePath, fileName); + var bytesInStream = new byte[stream.Length]; + + stream.Read(bytesInStream, 0, (int)bytesInStream.Length); + + using (var outputFileStream = new FileStream(path, FileMode.Create)) + { + outputFileStream.Write(bytesInStream, 0, bytesInStream.Length); + } } } } diff --git a/MCS.FOI.S3FileConversion/MCS.FOI.CalendarToPDFUnitTests/SourceFiles/Backlog refinement.ics b/MCS.FOI.S3FileConversion/MCS.FOI.CalendarToPDFUnitTests/SourceFiles/Backlog refinement.ics new file mode 100644 index 000000000..193ce4f28 --- /dev/null +++ b/MCS.FOI.S3FileConversion/MCS.FOI.CalendarToPDFUnitTests/SourceFiles/Backlog refinement.ics @@ -0,0 +1,226 @@ +BEGIN:VCALENDAR +PRODID:-//Microsoft Corporation//Outlook 16.0 MIMEDIR//EN +VERSION:2.0 +METHOD:REQUEST +X-MS-OLK-FORCEINSPECTOROPEN:TRUE +BEGIN:VTIMEZONE +TZID:Pacific Standard Time +BEGIN:STANDARD +DTSTART:16011104T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:16010311T020000 +RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ATTENDEE;CN="Abin Antony";ROLE=OPT-PARTICIPANT;RSVP=TRUE:mailto:abin.antony + @aot-technologies.com +ATTENDEE;CN="Antony, Abin CITZ:EX";ROLE=OPT-PARTICIPANT;RSVP=TRUE:invalid:n + omail +ATTENDEE;CN=adam.coard@aot-technologies.com;ROLE=OPT-PARTICIPANT;RSVP=TRUE: + mailto:adam.coard@aot-technologies.com +ATTENDEE;CN="Andrews, Arielle CITZ:EX";ROLE=OPT-PARTICIPANT;RSVP=TRUE:inval + id:nomail +ATTENDEE;CN="Balachandran, Vineet CITZ:EX";ROLE=OPT-PARTICIPANT;RSVP=TRUE:i + nvalid:nomail +ATTENDEE;CN="Coard, Adam CITZ:EX";ROLE=OPT-PARTICIPANT;RSVP=TRUE:invalid:no + mail +ATTENDEE;CN="Divya Viswanath";ROLE=OPT-PARTICIPANT;RSVP=TRUE:mailto:divya.v + @aot-technologies.com +ATTENDEE;CN="Jacklyn Harrietha";ROLE=OPT-PARTICIPANT;RSVP=TRUE:mailto:jackl + yn.harrietha@aot-technologies.com +ATTENDEE;CN="Harrietha, Jacklyn CITZ:EX";ROLE=OPT-PARTICIPANT;RSVP=TRUE:inv + alid:nomail +ATTENDEE;CN="Mullane, Loren CITZ:EX";ROLE=OPT-PARTICIPANT;RSVP=TRUE:invalid + :nomail +ATTENDEE;CN="Prodan, Matthew CITZ:EX";ROLE=OPT-PARTICIPANT;RSVP=TRUE:invali + d:nomail +ATTENDEE;CN="Qi, Richard CITZ:EX";ROLE=OPT-PARTICIPANT;RSVP=TRUE:invalid:no + mail +ATTENDEE;CN='richard.qi@aot-technologies.com';ROLE=OPT-PARTICIPANT;RSVP=TRU + E:mailto:richard.qi@aot-technologies.com +ATTENDEE;CN=sumathi.thirumani@aot-technologies.com;ROLE=OPT-PARTICIPANT;RSV + P=TRUE:mailto:sumathi.thirumani@aot-technologies.com +ATTENDEE;CN="Thirumani, Sumathi CITZ:EX";ROLE=OPT-PARTICIPANT;RSVP=TRUE:inv + alid:nomail +ATTENDEE;CN='vineet.balachandran@aot-technologies.com';ROLE=OPT-PARTICIPANT + ;RSVP=TRUE:mailto:vineet.balachandran@aot-technologies.com +ATTENDEE;CN="Viswanath, Divya CITZ:EX";ROLE=OPT-PARTICIPANT;RSVP=TRUE:inval + id:nomail +ATTENDEE;CN="Aparna S";ROLE=OPT-PARTICIPANT;RSVP=TRUE:mailto:aparna.s@aot-t + echnologies.com +CLASS:PUBLIC +CREATED:20240918T224519Z +DESCRIPTION:Moving back to 2x1 hr sessions based on recent team patterns + – Can extend/remove meetings as \n\n \n\nI’m extending this invite to + everyone\, however the process we’ve agreed to trial for refinement goin + g forward is: \n\n1. Stories are written and shared with the team minimum + 48 hours in advance\n2. All members of the team review stories in their ow + n time\, add questions or discussion points within the card\n3. Team to de + termine who will attend (the technical members of the team in particular h + ave discussed rotating attendance\, and filling each other in during techn + ical standups and sprint planning)\n\n \n\nAs is our practice\, we will ch + eck back if this approach is working after a couple of sprints\n\n________ + ________________________________________________________________________ \ + n\nMicrosoft Teams meeting \n\nJoin on your computer or mobile app \n\nCli + ck here to join the meeting \n\nOr call in (audio + only) \n\n+1 778-401-6289\,\,21501988# + Canada\, Victoria \n\nPhone Conference ID: 215 019 88# \n\nFind a local n + umber | Reset PIN \n\nLearn More | Meeting options < + https://teams.microsoft.com/meetingOptions/?organizerId=adaba6c5-1521-4b0d + -8e1e-11a9bfe1c924&tenantId=6fdb5200-3d0d-4a8a-b036-d3685e359adc&threadId= + 19_meeting_Y2M4ZDFjYmItZDkzOC00MWFmLThhMzYtN2UxN2EwZWZmOGUz@thread.v2&mess + ageId=0&language=en-US> \n\n_____________________________________________ + ___________________________________ \n\n \n\n +DTEND;TZID="Pacific Standard Time":20240917T103000 +DTSTAMP:20211201T212305Z +DTSTART;TZID="Pacific Standard Time":20240917T093000 +LAST-MODIFIED:20240918T224519Z +LOCATION:Microsoft Teams Meeting +ORGANIZER;CN="Pilchar, Molly CITZ:EX":invalid:nomail +PRIORITY:5 +RECURRENCE-ID;TZID="Pacific Standard Time":20240917T093000 +SEQUENCE:210 +SUMMARY;LANGUAGE=en-us:Backlog refinement +TRANSP:OPAQUE +UID:040000008200E00074C5B7101A82E00800000000309A43BC1A3DD701000000000000000 + 01000000099BD2671DADE4B4CAF83DA04954B3577 +X-ALT-DESC;FMTTYPE=text/html:\n

Moving back to 2x1 hr sessions based on recent team patterns + –\; Can extend/remove meetings as

 \;

I’\;m extending this invi + te to everyone\, however the process we’\;ve agreed to trial for refi + nement going forward is:

  1. Stories are written and shared with the team minimum 48 ho + urs in advance
  2. All members of the team review stories i + n their own time\, add questions or discussion points within the card +
  3. Team to determine who will attend (the technical members of + the team in particular have discussed rotating attendance\, and filling e + ach other in during technical standups and sprint planning)

 \;

As i + s our practice\, we will check back if this approach is working after a co + uple of sprints

________________________________________________________________ + ________________

Micr + osoft Teams meeting

______________ + __________________________________________________________________ +

 \;

+X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE +X-MICROSOFT-CDO-IMPORTANCE:1 +X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY +X-MICROSOFT-DISALLOW-COUNTER:FALSE +X-MS-OLK-APPTSEQTIME:20211013T002428Z +BEGIN:VALARM +TRIGGER:-PT15M +ACTION:DISPLAY +DESCRIPTION:Reminder +END:VALARM +END:VEVENT +END:VCALENDAR diff --git a/MCS.FOI.S3FileConversion/MCS.FOI.MSGToPDF/MSGFileProcessor.cs b/MCS.FOI.S3FileConversion/MCS.FOI.MSGToPDF/MSGFileProcessor.cs index b19bc60c7..19ad3c9ab 100644 --- a/MCS.FOI.S3FileConversion/MCS.FOI.MSGToPDF/MSGFileProcessor.cs +++ b/MCS.FOI.S3FileConversion/MCS.FOI.MSGToPDF/MSGFileProcessor.cs @@ -73,7 +73,7 @@ public MSGFileProcessor(Stream sourceStream) var sentOn = _attachment.SentOn.ToString(); if (!string.IsNullOrEmpty(sentOn)) lastModified = sentOn; - + var attachmentSize = attachmentStream.Length.ToString(); if (string.IsNullOrEmpty(attachmentSize)) attachmentSize = attachmentStream.Capacity.ToString(); @@ -155,7 +155,7 @@ public MSGFileProcessor(Stream sourceStream) var startAt = 0; foreach (var inlineAttachment in inlineAttachments.OrderBy(m => { - int pos = (int) m.GetType().GetProperty("RenderingPosition").GetValue(m, null); + int pos = (int)m.GetType().GetProperty("RenderingPosition").GetValue(m, null); if (pos > -1) { return pos; @@ -168,7 +168,7 @@ public MSGFileProcessor(Stream sourceStream) return match.Index; } })) - { + { if (rtfInline) { if (!inlineAttachment.GetType().FullName.ToLower().Contains("message")) @@ -212,26 +212,26 @@ public MSGFileProcessor(Stream sourceStream) if (width > maxSize && width >= height) { float scale = maxSize / width; - width = (int) (width * scale); - height = (int) (height * scale); + width = (int)(width * scale); + height = (int)(height * scale); } if (height > maxSize) { float scale = maxSize / height; - width = (int) (width * scale); - height = (int) (height * scale); + width = (int)(width * scale); + height = (int)(height * scale); } string widthString = string.Empty; string heightString = string.Empty; if (width > 0) { - widthString = " width =\"" + width +"\""; + widthString = " width =\"" + width + "\""; } if (height > 0) { heightString = " height =\"" + height + "\""; } - string imgReplacementString = ""; + string imgReplacementString = ""; bodyreplaced = regex.Replace(bodyreplaced, imgReplacementString, Int32.MaxValue, startAt); startAt = match.Index + imgReplacementString.Length; } @@ -255,7 +255,7 @@ public MSGFileProcessor(Stream sourceStream) if (!string.IsNullOrEmpty(attachmentsList)) { - htmlString += (@" + htmlString += (@" Attachments: " + attachmentsList.Remove(attachmentsList.Length - 2, 2) + ""); } @@ -265,7 +265,8 @@ public MSGFileProcessor(Stream sourceStream) if (bodyreplaced.Substring(0, 4) == ""); bodyreplaced = bodyreplaced.Insert(bodyStart.Index + bodyStart.Length, htmlString); @@ -519,12 +520,20 @@ private string GenerateHtmlfromMsg(Storage.Message msg) Subject: " + msg.Subject + ""); + DateTime sentDate = Convert.ToDateTime(msg.SentOn); + if (TimeZone.CurrentTimeZone.StandardName != "Pacific Standard Time") + { + + sentDate = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(sentDate, "Pacific Standard Time"); + + } + //Message Sent On timestamp htmlString.Append(@" Sent: - " + msg.SentOn + ""); + " + sentDate + ""); + - //Message body //string message = @"" + msg.BodyText?.Replace("\n", "").Replace("<br>", "")?.Replace("<br/>", ""); diff --git a/MCS.FOI.S3FileConversion/MCS.FOI.MSGToPDFUnitTests/MSGFileProcessorTest.cs b/MCS.FOI.S3FileConversion/MCS.FOI.MSGToPDFUnitTests/MSGFileProcessorTest.cs index 1e9848bc6..d4de41a4b 100644 --- a/MCS.FOI.S3FileConversion/MCS.FOI.MSGToPDFUnitTests/MSGFileProcessorTest.cs +++ b/MCS.FOI.S3FileConversion/MCS.FOI.MSGToPDFUnitTests/MSGFileProcessorTest.cs @@ -50,6 +50,8 @@ public void ProcessSimpleMSGFilesTest() msgFileProcessor.FailureAttemptCount = 10; (converted, message, output, attachments) = msgFileProcessor.ConvertToPDF(); Assert.IsTrue(converted == true, $"MSG to PDF Conversion failed for {testFile}"); + + SaveStreamAsFile(getSourceFolder(), output, "result_simple-test-msg-file.pdf"); } [TestMethod] @@ -68,7 +70,7 @@ public void ProcessMSGFileWithAttachmentsTest() (converted, message, output, attachments) = msgFileProcessor.ConvertToPDF(); Assert.IsTrue(converted == true, $"MSG to PDF Conversion failed for {testFile}"); - SaveStreamAsFile(getSourceFolder(), output, "result.pdf"); + SaveStreamAsFile(getSourceFolder(), output, "result_Test-MSG-File-with-Attachments.pdf"); bool isAttachmentsExists = attachments.Count == 3; Assert.IsTrue(isAttachmentsExists, $"MSG PDF file does not exists {testFile}"); diff --git a/MCS.FOI.S3FileConversion/MCS.FOI.MSGToPDFUnitTests/SourceFiles/Test-MSG-File-with-Attachments.pdf b/MCS.FOI.S3FileConversion/MCS.FOI.MSGToPDFUnitTests/SourceFiles/Test-MSG-File-with-Attachments.pdf deleted file mode 100644 index 43ef48bfa9d61ccd6b008790f795aedde2909234..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25570 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

nWe1U{phCM0 zhbE>*Yi`%(H8~T`E%~PjiVF+#jP)eJMzc>%$_0M;M$NePUb_|L*18ye1=hJ_Z-mP| zG^`Mey=TizN z#2V;UZu=*|FV~mE?&%TVFwW{xyBVws5)^Nd25YIssgY#18t}iDqTVfau(VGD^oKqa z@S-Y+eUy!Zy23zijZ4*5N=o(X_khWEy$sn43YHLJXqZzvcxuG9U3mC(E$f-c{8nYTBn(>}6$tK3G!xBNraNGh_ zRdGiSfHQnK2v;e&y9ON%mxy={o*KAQ56r?KPf~QtYc%`k3LrPsA>^fcJl*N!X z!8ejWJv)m%Ti%d^Vtr-W%S2G!VvN_*IA>F{*l$>=uvRf>sbXM_4|3%eOWg?EOPnbP zYV;Y>zv?#Uzs9inVmj}MMg-qy`^ijYHA0tn?=uF6X{+hV_pr3FArOiU+$HMUv#55F zAPuMu&di5CiI-fZ;MZ2X_@aQUoGHGkhhk@GmzW#?F3!|_POx`gJqEVdroVs|#Efbc zNPyOmfUOoT^*C<_KoGglN&Yg4IA0eNZ%~i=XWhxT?FPUaqZ&mTXA~2}XTsI|l;|hR zD_pH(7dM08Uaa8~3wa-xaU5>?qNi?I+6(b8sxIo|cJvU*i+azKE$>;$ZzEC{?+(Uc z%S}qhI*!-Ze1q+Vp8vitxqVarKjQbwwr=hoOyWSq%f1%kEgn%Iw<3t02-xFx=kZ_e z4aGzd!uGc>_kSy$_?Xq|J37yZ5MA@i-7Lw}QL(0wsOie-w(@D(;i~~9?XjuO<<#O! zG&Atk=2L^eNlqPVOj~jd(d6&>G<(a~WTCs~5Ve2z#Blj&qN2e1dAlQ@)jJ2{S%qmd zaFILxdqnHIN6GTXuL`g-TZO6JA|HWz1@O%<@sxG$X@4|C+?YS%t=n( zb7B;w2qPq%TPps9i6`Wth@$A`0D zgZCtC2Kj!KzL^%Wf1&wQl#{)!)^KImIgU6esF7!)?rYu6;CAhYF3;C#dbavJF<&oy zOk`U}(zp*vixu|UK^GFk24Ag5o~p~S+|P?9!Nar8;fiy3T%nE^_|eh2jDTz-h|JDG zU+z5l`%3J-C+GX#*r|Zeoxgs3tT*)Vx}yGkl*XBH$<6y>B#H<%{2b_+x+Jo5ab+pO zMogc2S#8U+!+fUS_`cc4L14Z7OJ%{SM15J|PL_%fuy=c`MQON%y(3lhHEG57gW(q`wPLdOrg%k3O<|Bhc%%Pm#{;=D$A<)6(TY)69#$;=TJcy=d=8( zH9ZE(9zS}Mjx_FAou_5>^&Szn#dKn>9vj$*>s{dR+MBlRo|;!6`-hm;eg@-Yo6 z0I}=)LwYK5F;WHPKlpDiqQj01;6J)-5ACwM0+MQ_v0@1$Wfs$X+AYFlQ?3ll2VEq; zW2wt%Ul9fQ|6Y+AVxccoG^y|w*J)Pd)t*SkJ7=N)RB}ZWJpnfEwMahoJr+nc{TOyE zbuL+3GId}5c;wtg8SWnwTBjP^!OgI=KkeEPy;elwPJN*KGY9#-)7qx&&?q(iA^Af{m!kirQ(E4ShP$we|{Bo9}=uW@2Q%WFNU zw;mQWVL(d0bhpA{EW|$?et#6W%3oHTOWPkR9>wjE2ixGypvtU`;yIkqTqT}*d@2Dp zvt16Q95d#Pd~=xCacCq{-jq5{HE`3OU9d6BnjQoCrdtb4+IH>dbx&Dk2i;(&zTlPr z_ec7lf1%KGcJ^TU>mL`lUjx*fEUge<9{3SrF}EKYz_xx?h|~Xk&JFaetPz!`OvVT~ z876_-F8}otkNAzoKOcDVt^t6Y4jE|a^>!YJCAFT2%@D$q^1fA_7*{V;`S)?_Y-grB zNYq`2zWT0*yK5n-O3km}T5Nj42o07IN0QWxt+wr(x diff --git a/MCS.FOI.S3FileConversion/MCS.FOI.MSGToPDFUnitTests/SourceFiles/simple-test-msg-file.pdf b/MCS.FOI.S3FileConversion/MCS.FOI.MSGToPDFUnitTests/SourceFiles/simple-test-msg-file.pdf deleted file mode 100644 index 36d63a55b2dff3bc8847d70f0891b8a7f4330c9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179640 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 j8TNO`x4*b+7VhJ^qq@imRlzdH- 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%0Dh4&kr-}$F;=KBW^Xzq=PzU36o zY?foOt2x(w40-gJQajb2^{14NPZ$toGYS8E3-H&6;y+#>H}{`h^Nvo=gq+MTPh|=J zVjbyUv)sRYR#tL;!3F<08U4Q!)^o6O{%7+3e>)xRZ%#*|xWeC^4t}X0e>ojt|Lk-? zWC0<;H)C?BfyxP@?)#(McTXiyFP1VOk>c50yP zBAseW2s38eB8Eoj#6E%^FE;sMEb&^u4KGD;oqn5Sx zC!6QbQ#eXddrTDh6W_E#ueb6QybxgZswl-jBd-P#~^@lDzMX5y&P;Gcu4g{h7!EV`V`=G7a1+DMGg?Kllws|4Pb3;%* zUlk{`mBu-HEh`pgW^wfJMF|LdP1bpbAe=IipJi9Zh>175lAWI38BlQgKoqf?+Gue< zYHnCEziVjw>T=s#w+Jp`7*{W%;K-R cMLG2$c&fcK{>PpDJJrF?$;{6BZ>r;e00f_FZ~y=R diff --git a/computingservices/ZippingServices/services/zipperservice.py b/computingservices/ZippingServices/services/zipperservice.py index 5c343244e..798ff900e 100644 --- a/computingservices/ZippingServices/services/zipperservice.py +++ b/computingservices/ZippingServices/services/zipperservice.py @@ -119,6 +119,7 @@ def __zipfilesandupload(_message, s3credentials): _formattedbytes = __removesensitivecontent(_docbytes) except Exception: print(traceback.format_exc()) + #added a space to try out code merge on git. 18-Sept-2024 zip.writestr( filename, _docbytes if _formattedbytes is None else _formattedbytes ) From 0778e6b6aefb253c031d3124939b6efd7f810a14 Mon Sep 17 00:00:00 2001 From: Abin Antony Date: Wed, 18 Sep 2024 17:36:57 -0700 Subject: [PATCH 4/5] logs for zipper #FOIMOD03469 --- computingservices/ZippingServices/services/zipperservice.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/computingservices/ZippingServices/services/zipperservice.py b/computingservices/ZippingServices/services/zipperservice.py index 798ff900e..5ef94b145 100644 --- a/computingservices/ZippingServices/services/zipperservice.py +++ b/computingservices/ZippingServices/services/zipperservice.py @@ -116,8 +116,10 @@ def __zipfilesandupload(_message, s3credentials): _formattedbytes = None try: - _formattedbytes = __removesensitivecontent(_docbytes) + _formattedbytes = __removesensitivecontent(_docbytes) + print("_formattedbytes length is {0}".format(len(_formattedbytes))) except Exception: + print("error happened while removing sensitive content of {0} ".format(filename)) print(traceback.format_exc()) #added a space to try out code merge on git. 18-Sept-2024 zip.writestr( From 782074ed2ec9a464744074d507c6a168a82c903a Mon Sep 17 00:00:00 2001 From: Abin Antony Date: Wed, 18 Sep 2024 17:53:43 -0700 Subject: [PATCH 5/5] #FOIMOD-3469 removed condition for metadata! --- .../ZippingServices/services/zipperservice.py | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/computingservices/ZippingServices/services/zipperservice.py b/computingservices/ZippingServices/services/zipperservice.py index 5ef94b145..5dae9a446 100644 --- a/computingservices/ZippingServices/services/zipperservice.py +++ b/computingservices/ZippingServices/services/zipperservice.py @@ -117,7 +117,10 @@ def __zipfilesandupload(_message, s3credentials): try: _formattedbytes = __removesensitivecontent(_docbytes) - print("_formattedbytes length is {0}".format(len(_formattedbytes))) + if _formattedbytes is not None: + print("_formattedbytes length is {0}".format(len(_formattedbytes))) + else: + print("_formattedbytes is none") except Exception: print("error happened while removing sensitive content of {0} ".format(filename)) print(traceback.format_exc()) @@ -152,17 +155,17 @@ def __removesensitivecontent(documentbytes): # clear metadata reader2 = PyPDF2.PdfReader(BytesIO(documentbytes)) # Check if metadata exists. - if reader2.metadata is not None: - # Create a new PDF file without metadata. - writer = PyPDF2.PdfWriter() - # Copy pages from the original PDF to the new PDF. - for page_num in range(len(reader2.pages)): - page = reader2.pages[page_num] - writer.add_page(page) - #writer.remove_links() # to remove comments. - buffer = BytesIO() - writer.write(buffer) - return buffer.getvalue() + #if reader2.metadata is not None: + # Create a new PDF file without metadata. + writer = PyPDF2.PdfWriter() + # Copy pages from the original PDF to the new PDF. + for page_num in range(len(reader2.pages)): + page = reader2.pages[page_num] + writer.add_page(page) + #writer.remove_links() # to remove comments. + buffer = BytesIO() + writer.write(buffer) + return buffer.getvalue() def __getzipfilepath(foldername, filename):