{"push_id":1556628469,"size":15,"distinct_size":1,"ref":"refs/heads/master","head":"55ff2f336ce6a7e0be901fef9008e9f979c79179","before":"d28ac7b42bfb49002f0997419c9d45807b1860e8","commits":[{"sha":"df7515b1e749d65f2e8688462a081492f436641e","author":{"name":"Mark Longair","email":"8e89b1c87e4a74258cfd7179ff301b73cdafa205@pobox.com"},"message":"Factor out AddElectionFieldsMixin\n\nThis will also be used in a future commit for SingleElectionForm.","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/df7515b1e749d65f2e8688462a081492f436641e"},{"sha":"fc149a0f36f097f06f5f625769dfeb41f3a863e2","author":{"name":"Sym Roe","email":"01d7c88f3e9b496c0b637d83a2b6a980bdc0ec09@talusdesign.co.uk"},"message":"Add SingleElectionFormView to support adding candidacies with AJAX\n\n[This is Sym Roe's work from f8aa943aff0d546fa6b766f65d068e76ef598d80\nbut with some changes by Mark Longair: these were to pass the\nselected Election to the form's initializer via get_form_kwargs,\nrather than by adding it to the form's initial data, which seems\nlike a misuse of get_initial.]","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/fc149a0f36f097f06f5f625769dfeb41f3a863e2"},{"sha":"14209d2d7772f1658f7e4c93b9ab6796e5864798","author":{"name":"Mark Longair","email":"8e89b1c87e4a74258cfd7179ff301b73cdafa205@pobox.com"},"message":"Change the 'Add a candidacy' button to match master","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/14209d2d7772f1658f7e4c93b9ab6796e5864798"},{"sha":"85657e9b07f9179877f2b7c4d32967f17c7fabf7","author":{"name":"Sym Roe","email":"01d7c88f3e9b496c0b637d83a2b6a980bdc0ec09@talusdesign.co.uk"},"message":"Use AJAX to add more elections on the UpdatePersonForm\n\n[This has some changes to the original commit by Mark Longair squashed\ninto it.]","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/85657e9b07f9179877f2b7c4d32967f17c7fabf7"},{"sha":"a3c9a5d87c68d4511174c07c2f51dddfd1bedb95","author":{"name":"Sym Roe","email":"01d7c88f3e9b496c0b637d83a2b6a980bdc0ec09@talusdesign.co.uk"},"message":"Endpoint listing current elections as a simple object","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/a3c9a5d87c68d4511174c07c2f51dddfd1bedb95"},{"sha":"38916a7b8e7f4db03a3e15f2f48be6c100d658f9","author":{"name":"Sym Roe","email":"01d7c88f3e9b496c0b637d83a2b6a980bdc0ec09@talusdesign.co.uk"},"message":"Call proper functions to create select2 inputs","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/38916a7b8e7f4db03a3e15f2f48be6c100d658f9"},{"sha":"67c787d2fd7170da108be47766e163cbb7317f17","author":{"name":"Mark Longair","email":"8e89b1c87e4a74258cfd7179ff301b73cdafa205@pobox.com"},"message":"Ensure select2 is only called on the original post select element","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/67c787d2fd7170da108be47766e163cbb7317f17"},{"sha":"10ee95640fefc2a33cdd4ca43e2e42d5d50553b1","author":{"name":"Sym Roe","email":"01d7c88f3e9b496c0b637d83a2b6a980bdc0ec09@talusdesign.co.uk"},"message":"Allow dynamic addition of elections on UpdatePersonForm\n\n... and also only show the existing elections on the form by\ndefault.\n\nIn the DemocracyClub fork this was done in:\n\n  e3fb4df Allow dynamic addition of elections on UpdatePersonForm\n\nThis version is slightly different. In order to preserve existing\nbehaviour (particularly to ensure that a couple of it tests [1] still\npass) and also pick up any dynamically added candidacies, we add\nextra fields for any additional elections indicated by the presence of a\nstanding_ field, rather than depending on an extra_election_id field.\n\n[1] These were:\n\n* candidates.tests.test_validators:TestValidators.test_update_person_form_standing_no_party_but_gb_constituency\n* candidates.tests.test_validators:TestValidators.test_update_person_form_standing_no_party_no_constituency","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/10ee95640fefc2a33cdd4ca43e2e42d5d50553b1"},{"sha":"a91b391b8b7ce235470150358ce16349158d8d08","author":{"name":"Mark Longair","email":"8e89b1c87e4a74258cfd7179ff301b73cdafa205@pobox.com"},"message":"Limit (slow) calls to PartySet.party_choices when creating forms\n\nWhen creating a new form for a person on a site with lots of elections\nand parties, PartySet.party_choices might be called many times (over\n30 in the UK case); there's no need for this, so this commit caches\nthe results the first time they're fetched when creating a form object\nand reused subsequently, using Django's helpful cached_property\ndecorator.\n\nWe were seeing timeouts when users were updating some candidates -\nhopefully this should fix that issue, since these were causing the\nmost expensive queries when updating someone.","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/a91b391b8b7ce235470150358ce16349158d8d08"},{"sha":"5e386ba203d75876b35e29c87924381d31d7462e","author":{"name":"Mark Longair","email":"8e89b1c87e4a74258cfd7179ff301b73cdafa205@pobox.com"},"message":"Reduce the SQL queries needed by add_elections_fields\n\nQuerying all the posts for an election in add_election_field is very\ninefficient when it's being called multiple times from\nadd_election_fields, so in that case precalculate the mapping from\nelection to posts.","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/5e386ba203d75876b35e29c87924381d31d7462e"},{"sha":"d823b84b924d6575686c408bdf27776476240360","author":{"name":"Mark Longair","email":"8e89b1c87e4a74258cfd7179ff301b73cdafa205@pobox.com"},"message":"Factor out a generic PersonMixin for views\n\nThis factors out the code that gets a Person from a person_id in\nkwargs, which is useful to many views, not just those for handling\nediting of other names.","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/d823b84b924d6575686c408bdf27776476240360"},{"sha":"d1e01555c9152fa8d0e63cd43fde0634b0d7111d","author":{"name":"Mark Longair","email":"8e89b1c87e4a74258cfd7179ff301b73cdafa205@pobox.com"},"message":"Use PersonMixin in three existing views\n\nThis saves a little code in UpdatePersonView, RevertPersonView and\nAddCandidacyWizardView by using PersonMixin instead.","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/d1e01555c9152fa8d0e63cd43fde0634b0d7111d"},{"sha":"c05839c8b1b162eae661290cc7dfc1683bfaebdf","author":{"name":"Mark Longair","email":"8e89b1c87e4a74258cfd7179ff301b73cdafa205@pobox.com"},"message":"Add a message to the 403 on blocking changes to a locked constituency\n\nPreviously this just produce a blank 403 page; when this does come up,\nthat's very little help for debugging.","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/c05839c8b1b162eae661290cc7dfc1683bfaebdf"},{"sha":"5d02aa8b413c164b280e85c2da62e44acefd80e9","author":{"name":"Mark Longair","email":"8e89b1c87e4a74258cfd7179ff301b73cdafa205@pobox.com"},"message":"Order type codes to avoid test failures from MapIt lookups\n\nWe only fake the MapIt responses in tests for a particular order of the\nareas types (WMC, LAC) but the order of them in the URLs used by the\ntests is sometimes different depending on the test environment and\nPython version.  So this commit sorts the types before forming a URL\nbased on them and changes the faked URLs to match.","distinct":false,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/5d02aa8b413c164b280e85c2da62e44acefd80e9"},{"sha":"55ff2f336ce6a7e0be901fef9008e9f979c79179","author":{"name":"Mark Longair","email":"8e89b1c87e4a74258cfd7179ff301b73cdafa205@pobox.com"},"message":"Merge branch 'javascript-add-candidacy'","distinct":true,"url":"https://api.github.com/repos/mysociety/yournextrepresentative/commits/55ff2f336ce6a7e0be901fef9008e9f979c79179"}]}
{"actor":{"display_login":"mhl"}}