The Review ID column was using a function to get the proper ID for a review request, but functions aren't sortable in the database. This broke at least one user. Instead, construct the column with the proper field.
The 'requests' module, while nice on the outside, does not meet our needs today. It doesn't support Python 2.4 or 2.5 (which RB 1.6.x does support), and it's unclear what support will be going forward. In reality, the main reason we're using it in 1.6.x at all is because we needed to pre-populate the Authorization header, which requests will do automatically. However, this isn't anything special. We can just add that header ourselves and keep urllib2, which is fine because our needs there are very basic. In order to prevent code duplication, I've created a SCMClient class that Git's and Mercurial's clients inherit from. It provides at the moment one utility function, get_file_http, which wraps the urllib2 logic. If we switch back at some point to requests or another module, we need only update this function. We probably won't need to, though. In the end, both classes are simplified, we don't need this dependency, we keep our Python support, and pre-populated authorizations work.
Notification emails for reviews and review replies would add a link to screenshot comments without the domain method or domain. Fixes bug 2305.
This alias allows '.mm' files to follow the same header regexes as '.m' files. Reviewed at http://reviews.reviewboard.org/r/2893/diff/
When an ldap server was configured without a fullName attribute assigned, it would cause an AttributeError. Since having such a configuration is okay as long as there are also sn and givenName attributes, we can just eat the AttributeError. Fixes bug 2382
We had a request to change the list of operating systems that post-review supports to be a bit more generic. Instead of listing "solaris", I've changed it to be "other unix-like operating systems", which also includes flavors of BSD. Fixes bug 2444.
In the review summary dialog, there is now an "open an issue" checkbox after each comment. Also fixed the way we get checkbox states in reviews.js Tested in my local linux machine with Chrome using the following steps 1. take any review request, view its diffs 2. comment on any line of the diff, open an issue 3. comment on some other line of the diff, don't open an issue 4. there should be a green bar on top, click the "edit review" button 5. in the summary, uncheck the "open an issue" in the first comment, don't modify the comment content 6. check the "open an issue" in the second comment, don't modify the comment content 7. save the review 8. refresh the page, and see that the issue states have been changed accordingly Reviewed at http://reviews.reviewboard.org/r/2827/ Fixes bugs 2282 and 2399
Supporting Django pre-1.3 was causing multiple CC headers to appear on emails sent out with Django 1.3.1 and RB 1.6.1. Django 1.3.1 is required for RB 1.6.1 now anyway, so there should be no problems with this. Reviewed at http://reviews.reviewboard.org/r/2694/
This change adds the creation date to the content of the page (in addition to the dashboard). This also fixes the internationalization of this text. Fixes bug 1252. Reviewed at http://reviews.reviewboard.org/r/2800/
The "+" icon to "Expand All" reviews on the review request page is now click-able. Tested on local dev using Chrome 16.0.912.75. Fixes bug 2439. Reviewed at http://reviews.reviewboard.org/r/2801/
In addition to being a downright awful API to use, urllib2 has a fundamental flaw in that it will only send HTTP Basic Auth information if the first request for the resource comes back with a www-authenticate header. This doesn't work for many HTTPS mercurial repositories, and it doesn't work with some 3rd-party providers of raw-file URLs like Codebase HQ's API. This change converts our code to use the 'requests' module, which is downright sexy. 'requests' will also do a much better job of trying to guess the charset of any text we get. Fixes bug 547 Reviewed at http://reviews.reviewboard.org/r/2863/
Resources in the API are now returned with per-resource mimetypes. These allow a client to identify the resource and make an intelligent decision about what that payload represents without having to hard-code anything about the location of the resource. An example would be client bindings that could not only generically handle any resources but could also provide utility functions for specific ones. Unit tests have been updated to verify each and every resource we provide. This change will be made available for 1.5 and 1.6, so that we could take advantage of this in RBTools.
The DB backup/load scripts are still around, but don't cover all models. It's worth fixing up, since they can be useful when moving from sqlite to something else. They've been moved to be management commands now. This will be made available to 1.6.
…tes. This column wasn't showing the display ID, but rather the database pk. This worked unless you had local sites, in which case the ID shown would be useless. Fixes bug 2376.
…unicode names When a user had unicode in their full name or email address, the infobox view would crash with a UnicodeEncodeError, because etags can only contain ascii. This fixes it to explicitly encode everything to ascii, replacing characters if needed. Fixes bug 2309 Reviewed at http://reviews.reviewboard.org/r/2813/
If users type the wrong thing into the cache backend setting in the admin site, it can save to the database, which will then cause any request to the site to generate a traceback. This is particularly annoying because settings are stored as a big JSON blob, so it's not even easy to fix. This change adds validation using django's parse_backend_uri--if the form can parse it, we know that this won't cause problems later on. Fixes bug 2347.
When an scmtool returns text with an unexpected encoding as an exception (such as if pysvn can't load the DLL because something is broken, and the system locale is Big-5), we would spew a traceback. This catches text encoding errors and forces it to "replace" instead, which means that users will see a bunch of boxes with question marks in them, but at least it's better than a traceback, and (in this particular case) includes the text "DLL load failed". Tested by manually raising an exception with the bogus text and verifying the displayed error in the UI. Fixes bug 1921.
…iewers. DefaultReviewer objects worked properly with regards to LocalSite rooting when they had a repository associated, but not when they were global. This change adds an additional parameter to for_repository which will make sure that only LocalSite-specific default reviewers will be matched. This also includes a unit test for the same. Fixes bug 2367.
If the repository form in the admin is submitted with a custom hosting service and an empty path, our validation would try to access the key directly without checking if it exists. This is fine for most fields but not those which come from ModelForm, so it fails. This change adds some simple validation to check that the path is specified.
ChangeResourceTests was creating two ChangeDescriptions, one after the other, and then checking the order in the list resource results. However, it was very easy for them to have the same timestamp, since they were created at nearly the same time. Fix this by enforcing timestamps at least 1 second apart.
Git was using the file contents as an indicator as to whether a file exists when using raw file URLs. However, this fails on empty files, such as a standard __init__.py. What we really care about is whether we can successfully fetch a file, or whether we'll get an HTTP error. So, ignore the contents, and assume the file exists if there's no error.