summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Merge pull request #1126 from lucc/py3/py2-compatibleDylan Baker2017-08-22
|\ | | | | Some small changes that are py2 and py3 compatible
| * py3k: Use build in next functionLucas Hoffmann2017-08-20
| |
| * py3k: Use logging.warning instead of warnLucas Hoffmann2017-08-20
| | | | | | | | | | The short version is deprecated as of python3. Both are available in both python versions.
| * py3k: Fix function signatureLucas Hoffmann2017-08-20
| | | | | | | | | | | | | | | | | | With python3 sublists are not allowed in function definitions any longer. But the same can be done with call time iterable expansion. References: https://docs.python.org/2/reference/compound_stmts.html#grammar-token-sublist https://docs.python.org/3/reference/compound_stmts.html#function-definitions
* | Merge pull request #1129 from dcbaker/submit/py3k-small-fixesPatrick Totzke2017-08-20
|\ \ | | | | | | py3k small fixes
| * | widgets/globals: drop functools.totalordering from TagWidgetDylan Baker2017-08-19
| | | | | | | | | | | | | | | | | | Implementing the comparison functions as a shared method rather than in terms of each other (as functools.totalordering does) makes the search interface much snappier.
| * | widgets/globals: Implement __hash__ for TagWidgetDylan Baker2017-08-19
| | | | | | | | | | | | | | | | | | | | | | | | Which is required in python3 when implementing the __eq__ method. The implementation caches the hash method, since it's being called each time the focus is changed in the search view. This doesn't really seem correct to me, but I'm not sure it's wrong.
| * | .gitignore: add __pycache__Dylan Baker2017-08-19
| | | | | | | | | | | | Which is where python3 puts it's cached byte compiled objects
| * | widgets/thread: Delete unused variableDylan Baker2017-08-19
| | | | | | | | | | | | | | | This wasn't caught by static checkers since it is used in the other brach of the if statement containing this value.
| * | Use io.BytesIO and io.StringIODylan Baker2017-08-19
| | | | | | | | | | | | | | | | | | | | | | | | In python3 StringIO and cStringIO are gone. In their place are io.BytesIO and io.StringIO. They are somewhat different in that they are not separated on implementation, but on the type they emulated. BytesIO works like the bytes class (str in python 2), while StringIO works like the str class (unicode in python2).
| * | Replace Exception.message with str(Exception)Dylan Baker2017-08-19
| | | | | | | | | | | | | | | | | | In python3 Exception doesn't have a message attribute, the only way to get the string output is to call str() on the Exception. This also works in python 2.7, so go ahead and make that change.
* | | Merge pull request #1125 from dcbaker/submit/deprecated-encrypt-by-defaultPatrick Totzke2017-08-20
|\ \ \ | |_|/ |/| | mark old options for encrypt_by_default as deprecated
| * | defaults/alot.rc.specDylan Baker2017-08-18
| |/ | | | | | | Mark all values for [account]encrypt_by_default as deprecated
* | Merge pull request #1127 from lucc/simplifyPatrick Totzke2017-08-19
|\ \ | | | | | | Simplify for loop and string building
| * | Simplify for loop and string buildingLucas Hoffmann2017-08-19
| | |
* | | bump versionPatrick Totzke2017-08-19
| | |
* | | bump version stringPatrick Totzke2017-08-19
|/ /
* | Merge pull request #1128 from pazz/pimp-usage-docsDylan Baker2017-08-19
|\ \ | | | | | | polish the docs
| * | polish manpagePatrick Totzke2017-08-19
| | |
| * | split and update docs regarding cli-invocationPatrick Totzke2017-08-19
|/ /
* | Merge pull request #1124 from dcbaker/submit/github-templatesPatrick Totzke2017-08-19
|\ \ | |/ |/| Add Github specific files
| * docs: Use CONTRIBUTING.rst as contributing.rstDylan Baker2017-08-18
| |
| * Add a contributing.rst fileDylan Baker2017-08-18
| | | | | | | | Which explains better how to get involved
| * github: Add a template to be used automatically for filing issuesDylan Baker2017-08-18
|/
* Merge pull request #1095 from dcbaker/submit/use-default-theme-if-no-configDylan Baker2017-08-17
|\ | | | | Load default settings even if a user config doesn't exist
| * settings: Load spec file even if config file is undefined.Dylan Baker2017-08-16
| | | | | | | | | | | | | | | | | | | | This is necessary even if the config file is None to ensure that the spec file is loaded Also mock out the setting.const module in the docs, otherwise they'll fail to generate. Fixes #1094
| * tests/settings/manager: Add tests for Null config filesDylan Baker2017-08-16
| | | | | | | | Which fail, per #1094
| * settings/manager: remove duplicate _config from constructorDylan Baker2017-08-16
| | | | | | | | | | SettingsManager sets it's _config attribute to the exact same value twice in the constructor. This is wrong.
* | Merge pull request #1115 from pazz/fix-account-selectionDylan Baker2017-08-17
|\ \ | | | | | | Fix issue with account selection
| * | use @inlineCallbacks in tests for asynchronous methodsPatrick Totzke2017-08-16
| | | | | | | | | | | | | | | This decorates test methods that internally call a `cmd.apply()`, which represents asynchronous code that returns a `twisted.deferred`.
| * | let SendmailAccount.send_mail cast the mail to strPatrick Totzke2017-08-16
| | | | | | | | | | | | | | | | | | instead of assuming that it already receives a string. The new behaviour is in sync with the type documented for the superclass `Account`.
| * | Add tests for SendCommandLucas Hoffmann2017-08-16
| | | | | | | | | | | | | | | These test only check if get_account_by_address is called correctly. All other parts of `apply()` are left out.
| * | Add test for get_account_by_address with realnameLucas Hoffmann2017-08-16
| | |
| * | fix envelope testsPatrick Totzke2017-08-16
| | | | | | | | | | | | | | | | | | This instantiates an actual Envelope object instead of a Mock object for use in the tests for envelope commands. The tests then do not fail when they hit implicit getters of the form envelope['From'].
| * | send complete addresses to settings.get_account_by_addressPatrick Totzke2017-08-16
| | | | | | | | | | | | | | | .. as read from the From-header directly, potentially including realname parts.
| * | ignore realname part in get_account_by_addressPatrick Totzke2017-08-15
| |/ | | | | | | | | This allows to simply pass the content of a messages' From-header value when determining an account to send/save/encrypt from.
* | Merge pull request #1082 from dcbaker/submit/gpg-multipart-mixedPatrick Totzke2017-08-17
|\ \ | | | | | | Handle gpg signed and encrypted mail inside a multipart/mixed block
| * | db/utils: Allow encrypted messages to be put in mixed payloads as wellDylan Baker2017-08-17
| | | | | | | | | | | | | | | | | | | | | | | | Since a multipart/mixed can contain anything that a normal message could, this should be allowed. The only case that I can think of this actually happening is if an email server takes the original message, puts it in a multipart/mixed, and then attaches it's own message, like on of the annoying "this mail scanned for viruses by <product>".
| * | db/utils: Handle multipart/signed inside multipart/mixedDylan Baker2017-08-17
| | | | | | | | | | | | | | | | | | | | | | | | It is possible (and actual mail clients such as kmail do) to embed a multipart/signed within a multipart/mixed (this is briefly mentioned in the acknowledgements of RFC 3156, and is perfectly valid according to RFC 1341, which says that a multipart/mixed is exactly like a top level message, except that the header may be empty.
| * | tests/db/utils: Add tests for encapsulating gpg messagesDylan Baker2017-08-17
| | | | | | | | | | | | | | | | | | | | | It is valid to encapsulate the multipart/signed and multipart/encrypted payloads in a multipart/mixed payload. All of these tests currently fail.
| * | db/utils: Don't attach invalid signature to unsigned but encrypted messagesDylan Baker2017-08-17
| | | | | | | | | | | | | | | | | | The logic in the comment is faulty. There are perfectly legitimate reasons to encrypt but not sign a message, some of them are fleshed out in the previous commit.
| * | tests/db/utils: Add tests for message_from_fileDylan Baker2017-08-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This class tests most of the function fairly thoroughly. There are a couple of error cases that are untested, but could be tested fairly easily with some mocking. There is one test marked as expected failure. In this case I disagree with what alot does, though there probably isn't a canonical correct behavior. Specifically, if a message is encrypted but unsigned, we generate a header that says the signature is invalid. This seems incorrect for a number of reasons. First, since there is no signature, it cannot be invalid. Second, the reasoning is that it "seems suspicious" that someone would encrypt but not sign a message. This is silly, there are plenty of people who encrypt but don't sign their messages, since signing and encrypting have two totally different purposes. Signatures verify who *wrote* the message, but encryption verifies who *reads* the message. People who need some level of deniability about who wrote the message, but not about who read it (like a political activist or whistle blower) might encrypt but not sign.
| * | alot/crypto: make keys required for detached_signature_forDylan Baker2017-08-17
| | | | | | | | | | | | | | | | | | This function is always passed a key to sign with, and not passing one leads to the first available signing key in the keyring being selected otherwise, which is problematic if one has two signing keys.
| * | crypto: Don't sign when encryptingDylan Baker2017-08-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a missed difference between pygpgme and gpg, gpg signs by default when encrypting with an attached signature. Since this isn't being toggled it's bad, it's a kind of information leak, and increases the size of the mail for no reason. NOTE: This is the kind of signature proposed by RFC 2440, which we're missing tests for.
* | | Merge pull request #1122 from lucc/setuppyLucas Hoffmann2017-08-17
|\ \ \ | | | | | | | | Add another classifier to setup.py
| * | | setup: Add database front end classifierLucas Hoffmann2017-08-17
| | | | | | | | | | | | | | | | | | | | The full list of classifiers can be found at https://pypi.python.org/pypi?:action=list_classifiers.
| * | | setup: Make interpreter line explicit for python2Lucas Hoffmann2017-08-17
|/ / /
* | | Merge pull request #1120 from dcbaker/submit/setup-cleanupsDylan Baker2017-08-17
|\ \ \ | | | | | | | | setup.py cleanups
| * | | setup.py: Add a python_requires fieldDylan Baker2017-08-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This field instructs tools like pip and setup tools about which versions of python you support. In alot's case that is currently 2.7.x Fixes #1118
| * | | setup.py: Add classifiersDylan Baker2017-08-17
| | | | | | | | | | | | | | | | | | | | These are advisory, and I've picked the ones that seem like they fit best. We can bikeshed them to death though ;)