aboutsummaryrefslogtreecommitdiff
Commit message (Expand)AuthorAge
...
* filters: Use the glyphicons for add/remove signs•••They give a much better contrast the the one already there. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-11-05
* style.css: Rename the breadcrumb selectors•••Bootstrap called what was the header bar "navigation". Let's rename the nav* selector with 'breadcrumb' so there's no confusion with bootstrap's nagivation elements and selectors. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-11-05
* style.css: Provide a default <h2> style•••Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Belén Barros Peña <belen.barros.pena@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Belén Barros Peña2015-11-05
* html: Turn the navbar into a breadcrumb bar•••So we can have a somewhat of a hierarchical progression: All projects -> $project patches -> patch name That should also help when we add series, we'll be able to just add the series in there. By default, we have: All projects -> $project patches both being links, so we can return to the list of patches from any page where the project is defined. The '$project patches' link becomes insensitive in the list page. Finally the patch page adds the patch at the end. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Belén Barros Peña <belen.barros.pena@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Belén Barros Peña2015-11-05
* base: Don't display the breadcrumb bar on the project list page•••We already have the information on the main bar, no need to have a breadcum bar here. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Damien Lespiau2015-11-05
* base: Move the project info into the navigation bar•••The goal is still to have a proper breadcrumb bar. One more little step towards it. v2: Rename "About ${project}" to "Project Info" (Stephen Finucane) Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Damien Lespiau2015-11-05
* templates: Remove extraneous blank line at the end of base.html•••Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-11-05
* templates: Move "About" at the bottom of the page•••This is part of the steps needed to make the "nav" bar into a pure breadcrumb trail. It's quite usual these days to have "about" style links at the bottom of pages. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Belén Barros Peña <belen.barros.pena@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Belén Barros Peña2015-11-05
* templates: Redesign the breadcrumbs bar•••Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-11-05
* templates: Redesign the title bar•••Let's use HTML5 <nav> and bootstrap navigation facilities for this. Among the nice things that bootstrap brings to the table, the navigation bar is now mobile friendly: it will collapse when either, being displayed on a mobile device or when the screen isn't wide enough, to show the various items in a togglable menu. This can be tested by resizing the browser to have a width < 768px. This commit is just about layout changes, keeping the exact same information displayed on the page. This is based on work from Belén Barros Peña, but transposed to bootstrap. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-11-05
* style.css: Tune <a> styling•••The links aren't underlined anymore. If, once visited, they are to become black, we won't be able to distinguish them from regular text. Instead let's decide about a color for links so they can be spotted, even after a visit. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Belén Barros Peña2015-11-05
* style.css: Move the global <a> styling at the top•••Otherwise we can't properly have a generic <a> styling that gets specialized as needed. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-11-05
* sytle.css: Remove the body selector, letting bootstrap's shine through•••Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-11-05
* list: Replace the 16-arrow* icons by glyphicons•••They look more modern. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-11-05
* template: Add bootstrap to the base template•••Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-11-05
* htdocs: Add bootstrap•••Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Damien Lespiau2015-11-05
* settings: Also define SERVER_EMAIL for email logs•••Django can send emails to admins on 500 HTTP errors when DEBUG is false. That looks handy. That mechanism uses SERVER_EMAIL for the From: address, which defaults to root@localhost and can cause problems in the email delivery. Use the same address than DEFAULT_FROM_EMAIL by default. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-11-05
* settings: Move DEFAULT_FROM_EMAIL to the core settings section•••DEFAULT_FROM_EMAIL is actually a django setting, not a patchwork one. v2: Capitalize the 'E' of 'Email' (Stephen Finucane) Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-11-05
* views: patch-list: show the 'Properties' update box for all users•••Any authenticated user should be able to change the properties of their own patches from the list view. They can already do so from the patch view and from pwclient. Now, authenticated users can perform 'Change state', 'Delegate to', and 'Archive' operations on multiple patches at a time (e.g., after 'select-all' on a bundle, or after selecting a few patches individually). We'll print an error message to the page for any patches which can't be updated (e.g., due to ownership). This fixes a usability issue that has been reported a few times. Signed-off-by: Brian Norris <computersforpeace@gmail.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Brian Norris2015-11-04
* parsemail: Don't catch exceptions when saving patches and comments•••We'd like to know when those operations fail in production so we can at least inspect what happened through the email send to settings.ADMINS in main(). Catching those exceptions early prevents that. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-10-27
* tests: Fix a typo in the MboxPassThroughHeaderTest description•••Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-10-27
* gitignore: Explicitly ignore dirs in lib/packages•••This file ignores everything at the moment. This doesn't look like a good idea, there are also jquery files there. We ignore django/ because installing django there is what currently is documented to do. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-10-27
* gitignore: Only ignore quilt files at the root of the repository•••So, say, a 'series' directory in the project (added in a later patch) doesn't get ignored. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-10-27
* wsgi.conf: Fix the path in the Directory directive•••The path in <Directory> didn't match the one defined in Alias. While at it, remove the unnecessary quotes. Reported-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-10-26
* docs: Add basic API guide•••Because it is now possible to access the auto-generated XML-RPC documentation, only provide a brief "HOWTO" on using the 'xmlrpclib' library and a note on how to find this autogenerated documentation. Signed-off-by: Stephen Finucane <stephen.finucane@intel.com> Stephen Finucane2015-10-26
* views/xmlrpc: Remove unneeded '""' parameters•••These don't make semantic sense: if a user didn't provide a parameter then we should check for None. Signed-off-by: Stephen Finucane <stephen.finucane@intel.com> Stephen Finucane2015-10-26
* views/xmlrpc: Add serialization documentation•••Add some documentation for the XML-RPC serializers, including examples. This will help developers understand exactly what the API *should* be returning for each given method. Signed-off-by: Stephen Finucane <stephen.finucane@intel.com> Stephen Finucane2015-10-26
* views/xmlrpc: Add documentation for API methods•••This will be useful for populating the XML-RPC API documentation. Note that this uses the Google-style docstring format. This format is easier to read than the information-dense, "classic" Sphinx docstring format making it more suitable for use with pydoc (which does not do any post-processing and it used by the 'DocXMLRPCServer' module). If generating documentation using Sphinx, this will require the usage of the 'sphinx.ext.napoleon' extension. Signed-off-by: Stephen Finucane <stephen.finucane@intel.com> Stephen Finucane2015-10-26
* views/xmlrpc: Add xmlrpc automatic documentation•••The DocXMLRPCServer module (standard library) provides documentation for XML-RPC dispatchers via pydoc. Use this module rather than reinventing the wheel. Also update a test that no longer makes sense (the GET method now retrieves documentation - it shouldn't redirect. Use PATCH instead). Signed-off-by: Stephen Finucane <stephen.finucane@intel.com> Stephen Finucane2015-10-26
* trivial: Clean up 'views/xmlrpc.py'•••Resolve some issues with the aforementioned file. These are mostly stylistic changes. Signed-off-by: Stephen Finucane <stephenfinucane@hotmail.com> Stephen Finucane2015-10-26
* parsemail: Mail error information to ADMINS when parsing fails•••We can use the built-in mechanism from django to send error emails when failing to parse a mail. The error mails will have contain the full guitly mail and the corresponding backtrace for debugging purposes. v2: Add 2 PEP8 blank lines (Stephen Finucane) v3: Remove one blank line (Stephen Finucane) Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-10-26
* flake: Restrict flake to the patchwork directory•••Right now flake will inspect everything in the root directory. We can avoid a bit of work, telling it to only look at the patchwork/ directory. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-10-26
* tox: Omit tests and manage.py when running coverage tests•••Having the tests in the coverage reports artifically improve the coverage percentage, because every line in tests is being run. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Reviewed-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-10-26
* docs: Update Git URLs to GitHub•••Per move to GitHub: https://lists.ozlabs.org/pipermail/patchwork/2015-October/001873.html Signed-off-by: Stephen Finucane <stephen.finucane@intel.com> Stephen Finucane2015-10-26
* doc: Add CHANGELOG and UPGRADING docs•••The CHANGELOG document should describe the high level changes of the project. This will provide a human-readable way for people to evaluate the changes in each release. This file is based on the templates and general changelog "ethos" provided by 'Keep a CHANGELOG': http://keepachangelog.com/ The UPGRADING document provide instruction for system admininstrators managing patchwork deployments. At the moment, this document is a rename and minor reformatting of the existing 'docs/NEWS' document, but going forward documentation will be added for each new release. Signed-off-by: Stephen Finucane <stephen.finucane@intel.com> Stephen Finucane2015-10-26
* pwclient: use argparse's error() function for bad input•••This reduces the boilerplate we need and provides a more consistent help output. e.g.: $ pwclient update -s FOO -c 1337 314159 1234567 usage: pwclient update [--help] [-h HASH] [-p PROJECT] [-c COMMIT-REF] [-s STATE] [-a {yes,no}] [ID [ID ...]] pwclient update: error: Declining update with COMMIT-REF on multiple IDs Signed-off-by: Brian Norris <computersforpeace@gmail.com> Reviewed-by: Mike Frysinger <vapier@chromium.org> Reviewed-by: Stephen Finucane <stephen.finucane@intel.com> Brian Norris2015-10-20
* pwclient: rework multi-command help text•••Our --help handling is convoluted and confusing, since we're hacking around using some of argparse's built-in features (like generating --help arguments for us). It seems like we were hacking around the conflict between -h used for hashes and -h used for automatic help flags. Fortunately, Python's argparse provides us with a 'conflict_handler' which will resolve these conflicts for us. Altogether, this patch means that 'pwclient --help' will not generate a full recursive print of all subcommand helps (arguably a good thing), but it provides better automatic formatting of all the supported subcommands and eliminates some awkward code. Sample runs: $ pwclient usage: pwclient [-h] {apply,git-am,get,info,projects,states,view,update,list,search} ... optional arguments: -h, --help show this help message and exit Commands: {apply,git-am,get,info,projects,states,view,update,list,search} apply Apply a patch (in the current dir, using -p1) git-am Apply a patch to current git branch using "git am". get Download a patch and save it locally info Display patchwork info about a given patch ID projects List all projects states Show list of potential patch states view View a patch update Update patch list List patches, using the optional filters specified below and an optional substring to search for patches by name search Alias for "list" Use 'pwclient <command> --help' for more info $ pwclient info --help usage: pwclient info [--help] [-h HASH] [-p PROJECT] [ID [ID ...]] positional arguments: ID Patch ID optional arguments: --help show this help message and exit -h HASH Lookup by patch hash -p PROJECT Lookup patch in project Signed-off-by: Brian Norris <computersforpeace@gmail.com> Acked-by: Mike Frysinger <vapier@chromium.org> Reviewed-by: Stephen Finucane <stephen.finucane@intel.com> Brian Norris2015-10-20
* pwclient: require one or more of pwclient -{a,s}•••Previously, we required the -s flag for 'pwclient update'. But since we allow updating up to 2 different fields ('archived' and 'state'), drop the required flag, and just enforce that the user must provide -a, -s, or both. Signed-off-by: Brian Norris <computersforpeace@gmail.com> Reviewed-by: Mike Frysinger <vapier@chromium.org> Reviewed-by: Stephen Finucane <stephen.finucane@intel.com> Brian Norris2015-10-20
* pwclient: dict.iteritems() is deprecated in Python 3•••Just use dict.items(), since there are few fields and we don't really care about the extra copying. Signed-off-by: Brian Norris <computersforpeace@gmail.com> Reviewed-by: Mike Frysinger <vapier@chromium.org> Reviewed-by: Stephen Finucane <stephen.finucane@intel.com> Brian Norris2015-10-20
* pwclient: basic python3 support•••This fixes a few random issues to make the script work at least somewhat under python 3: - set the default encoding to utf-8 - handle xmlrpclib/xmlrpc.client module renames - handle ConfigParser/configparser module renames - add a unicode() stub for python 3 - fix old style class definition w/Filter - use list comprehension instead of map() - drop the unused version= keyword w/argparse The code still runs under python 2 the same as before, and now works for the most part under python 3 -- the handling of encoded content still needs some work, but that'll require more surgery, and is best left to another commit after this. Signed-off-by: Mike Frysinger <vapier@chromium.org> Reviewed-by: Stephen Finucane <stephen.finucane@hotmail.com> Mike Frysinger2015-10-16
* pwclient: use print_function for better py3 compatibility•••The script already tries to use print like a function in many places but is really passing a parenthesized string. Import the print_function from the future module so that it actually works as intended. We also need to fix up a few latent print statements to make it work. Signed-off-by: Mike Frysinger <vapier@chromium.org> Reviewed-by: Stephen Finucane <stephen.finucane@hotmail.com> Mike Frysinger2015-10-16
* pwclient: handle missing ~/.pwclientrc better•••The upgrade path will crash if ~/.pwclientrc doesn't exist, so add an explicit check for the file before we try to "upgrade" it. The default error messages don't mention the config file, so it can be a bit confusing what pwclient is complaining about when running. Signed-off-by: Mike Frysinger <vapier@chromium.org> Acked-by: Brian Norris <computersforpeace@gmail.com> Reviewed-by: Stephen Finucane <stephen.finucane@hotmail.com> Mike Frysinger2015-10-16
* Highlight patches with Acked/Reviewed/Tested tags•••A little while ago, accounting of the number of Acked-by, Reviewed-by and Tested-by tags was added to patchwork. The count of such tags per patch is shown in the "A / R / T" column. However, since the values are shown for all patches regardless of whether they are zero or not, it makes it not very easy to spot the patches that have at least one Acked-by, Tested-by or Reviewed-by tag. Therefore, this patch proposes to replace a count of "0" by a "-". So patches with no tags will have "- - -" in their A/R/T column, and patches with some tags may get "1 - 1" for example. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: Stephen Finucane <stephen.finucane@intel.com> Thomas Petazzoni2015-10-16
* models: Resolve issues with Patch.state•••The initial migration introduced in '30bb271' was incomplete: running 'makemigrations' on the current codebase will produce a migration which could not be applied cleanly. The reason for this was the non-loading of initial data for the 'State' model. Fix this issue by only referencing the contents of the 'State' model when we have to (on save of a 'Patch' object), thus allowing the user suitable time to apply this initial data. Signed-off-by: Stephen Finucane <stephen.finucane@intel.com> Acked-by: Damien Lespiau <damien.lespiau@intel.com> Stephen Finucane2015-10-16
* login: Focus the username field on load•••Wolfram wanted a small usability improvement that's easy to add: placing the cursor automatically in the user name field when loading the login page. Suggested-by: Wolfram Sang <wsa@the-dreams.de> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Stephen Finucane <stephen.finucane@intel.com> Damien Lespiau2015-09-18
* templates: Pull jquery into base.html•••Bootstrap needs jquery for its own JS facilities, so include it on every page. Acked-by: Stephen Finucane <stephen.finucane@intel.com> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Damien Lespiau2015-09-18
* tests: Move 'reverse' calls inside 'setUp'•••Django creates test databases after it loads tests. However, any operations that exist at class level will be executed before this database is created. Fix the instances of this issue (mostly 'reverse' calls or similar) by moving the calls into the relevant 'setUp' functions for each test. Acked-by: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Stephen Finucane <stephen.finucane@intel.com> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Stephen Finucane2015-09-18
* settings: Move 'TEST_RUNNER' to correct location•••Try to keep the order/structure of this file intact for as long as possible. Reviewed-by: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Stephen Finucane <stephen.finucane@intel.com> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Stephen Finucane2015-09-17
* settings: Fix deprecated 'TEST_CHARSET' warning•••Resolve a 'RemovedInDjango19Warning' with the 'TEST_CHARSET' option. Reviewed-by: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Stephen Finucane <stephen.finucane@intel.com> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Stephen Finucane2015-09-17
* trivial: Add missing licenses to 'management'•••Acked-by: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Stephen Finucane <stephen.finucane@intel.com> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Stephen Finucane2015-09-17