1. 15 Jul, 2020 2 commits
    • Arkadiusz Hiler's avatar
      Make email addresses for incoming emails case-insensitive · 0181a3ec
      Arkadiusz Hiler authored
      Quoting RFC: "However, exploiting the case sensitivity of mailbox
      local-parts impedes interoperability and is discouraged."
      
      Most of the existing software is threating the local part (i.e. the
      thing before @) of emails as case insensitive.
      
      Some people use different capitalization at different times, e.g.
      arkadiusz.hiler@example.com with git-send-email and
      Arkadiusz.Hiler@example.com with their regular client.
      
      To mitigate this Person's email is now case insensitive for the sake of
      searching and normalized to lower case pre_save.
      
      It's not perfect by any means and still can be bypassed by doing
      .update() on the QuerySet, but will work in most of the usual cases.
      
      Tests and migration deduplicating existing entries are provided.
      
      Fixes: #32Signed-off-by: Arkadiusz Hiler's avatarArkadiusz Hiler <arkadiusz.hiler@intel.com>
      0181a3ec
    • Arkadiusz Hiler's avatar
      Remove related_name from Series.submitter · f4f47a4e
      Arkadiusz Hiler authored
      class Series:
          submitter = models.ForeignKey(Person, ...
      
      Would result in Person having a field named series_set QuerySet that
      represents the other side of this one-to-many relation.
      
      related_name is used to overwrite that and it looks like it purpose was
      misunderstood as it had been set to "submitters" - Person.submitters
      doesn't make much sense.
      
      Let's remove related_name an use the default name.
      Signed-off-by: Arkadiusz Hiler's avatarArkadiusz Hiler <arkadiusz.hiler@intel.com>
      f4f47a4e
  2. 09 Jul, 2020 1 commit
    • Arkadiusz Hiler's avatar
      Add support for Markdown results · 8aebdaf7
      Arkadiusz Hiler authored
      Results send to Patchwork can now be marked as markdown (on a Test model
      level). Such results are then rendered into HTML and displayed on the
      web views.
      
      Emails that are sent to the mailing list / recipients for such results
      are going to be multipart/alternative containing both the text form (raw
      Markdown) and the rendered HTML.
      
      Fixes: #6Signed-off-by: Arkadiusz Hiler's avatarArkadiusz Hiler <arkadiusz.hiler@intel.com>
      8aebdaf7
  3. 07 Jul, 2020 2 commits
    • Arkadiusz Hiler's avatar
      Don't mangle \n and \r combinations in the generated mboxes · 189b72f2
      Arkadiusz Hiler authored
      Generated mboxes weren't representing newline (aka LF or \n) and
      carriage return (aka CR or \r) found in the original patch faithfully.
      
      This is mostly due to how email.Message is implemented - it tries to
      normalize newlines in plain text emails. This doesn't work for us as we
      want to provide the patches in an unchanged form.
      
      To do that we have to overwrite as_string() and as_bytes() methods on
      our Message class that will use modified Generator that doesn't mangle
      newlines.
      
      The difference in the checksums is due to slightly different header
      wrapping caused by the changes in generator.
      
      Additionally tests are provided to make sure that we ingest emails
      correctly (no mangling there) and that the generated mbox is also
      a-okay.
      
      Fixes: #33Signed-off-by: Arkadiusz Hiler's avatarArkadiusz Hiler <arkadiusz.hiler@intel.com>
      189b72f2
    • Arkadiusz Hiler's avatar
      Switch to base64 for mails over 200 chars in line · fdb77357
      Arkadiusz Hiler authored
      This is done because Python's qp encoding can be a bit problematic with
      line endings.
      
      Also, bumping the line length limit to 200 makes the downloaded mboxes
      readable with any sensible patches and is well below the RFC 5322 limit
      of 998 characters.
      
      The changes in checksums are due to emails not being qp-encoded.
      Signed-off-by: Arkadiusz Hiler's avatarArkadiusz Hiler <arkadiusz.hiler@intel.com>
      fdb77357
  4. 06 Jul, 2020 1 commit
  5. 01 Jul, 2020 4 commits
  6. 25 Jun, 2020 1 commit
  7. 23 Jun, 2020 2 commits
  8. 16 Jun, 2020 1 commit
  9. 15 Jun, 2020 2 commits
  10. 23 Apr, 2020 1 commit
  11. 25 Mar, 2020 4 commits
  12. 09 Mar, 2020 2 commits
  13. 17 Feb, 2020 1 commit
    • Arkadiusz Hiler's avatar
      series/revision: Add skip testing button · 2c142a43
      Arkadiusz Hiler authored
      Add a button that marks the latest revision of a series as "skip
      testing". Only the author of the series and maintainers of the project
      can perform this action.
      
      The `skip_testing` state is exposed through the JSON API:
      /api/1.0/series/{int}/revisions/{int}/
      
      The attached CI/testing infrastructure is responsible for checking this
      flag.
      
      The UI shows which revisions were skipped and who has triggered it.
      
      Closes #27Signed-off-by: Arkadiusz Hiler's avatarArkadiusz Hiler <arkadiusz.hiler@intel.com>
      2c142a43
  14. 06 Feb, 2020 1 commit
    • Arkadiusz Hiler's avatar
      parsemail: Use the sum of payloads for the comments · db413dd4
      Arkadiusz Hiler authored
      Payload is the content of the last text part of the multipart message.
      
      Mailing lists sometimes append their own footers as a new part. This
      happens for emails that are already multipart or the ones with more
      uncommon encodings.
      
      In those cases we end up with an empty comment, as the footer is then
      stripped out via clean_content().
      
      We cannot use the commentbuf as it has anything diff-like stripped out
      by parse_patch().
      
      Fixes #39Signed-off-by: Arkadiusz Hiler's avatarArkadiusz Hiler <arkadiusz.hiler@intel.com>
      db413dd4
  15. 30 Jan, 2020 1 commit
  16. 15 Jan, 2020 1 commit
  17. 13 Jan, 2020 1 commit
    • Arkadiusz Hiler's avatar
      models: Fix revision date for older series · d6172e6c
      Arkadiusz Hiler authored
      Old series do not have a completion date for series which breaks posting
      results:
      
        File "patchwork/models.py" in _on_test_result
          1083.                   'revision_completed': revision.completed.isoformat()}
      
        Exception Type: AttributeError at /api/1.0/series/71839/revisions/1/test-results/
        Exception Value: 'NoneType' object has no attribute 'isoformat'
      
      Let's just admit that it's unknown.
      Signed-off-by: Arkadiusz Hiler's avatarArkadiusz Hiler <arkadiusz.hiler@intel.com>
      d6172e6c
  18. 10 Jan, 2020 3 commits
  19. 07 Jan, 2020 1 commit
  20. 11 Dec, 2019 2 commits
  21. 27 Nov, 2019 1 commit
  22. 26 Nov, 2019 1 commit
  23. 19 Nov, 2019 3 commits
  24. 23 Oct, 2019 1 commit