From 6fc89727f2ba1b89c67df3cde3fc05a8332a14ba Mon Sep 17 00:00:00 2001 From: Johnathan Graydon Date: Fri, 21 Oct 2016 15:45:29 +0100 Subject: [PATCH 1/2] Stop PO number from duplicating when copying event Would close #256 --- RIGS/rigboard.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/RIGS/rigboard.py b/RIGS/rigboard.py index fc14a89e..2e2869ac 100644 --- a/RIGS/rigboard.py +++ b/RIGS/rigboard.py @@ -54,7 +54,7 @@ class EventOembed(generic.View): def get(self, request, pk=None): - embed_url = reverse('event_embed', args=[pk]) + embed_url = reverse('event_embed', args=[pk]) full_url = "{0}://{1}{2}".format(request.scheme, request.META['HTTP_HOST'], embed_url) data = { @@ -121,6 +121,7 @@ class EventDuplicate(EventUpdate): old = super(EventDuplicate, self).get_object(queryset) # Get the object (the event you're duplicating) new = copy.copy(old) # Make a copy of the object in memory new.based_on = old # Make the new event based on the old event + new.purchase_order = None if self.request.method in ('POST', 'PUT'): # This only happens on save (otherwise items won't display in editor) new.pk = None # This means a new event will be created on save, and all items will be re-created @@ -216,4 +217,4 @@ class EventArchive(generic.ArchiveIndexView): if len(qs) == 0: messages.add_message(self.request, messages.WARNING, "No events have been found matching those criteria.") - return qs \ No newline at end of file + return qs From 90c8b199159375a76580844e6eff8fbd868e9068 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Sun, 23 Oct 2016 12:45:27 +0100 Subject: [PATCH 2/2] Added tests for PO non-duplication --- RIGS/test_functional.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/RIGS/test_functional.py b/RIGS/test_functional.py index 7e5010f7..673dadd1 100644 --- a/RIGS/test_functional.py +++ b/RIGS/test_functional.py @@ -438,7 +438,7 @@ class EventTest(LiveServerTestCase): pass def testEventDuplicate(self): - testEvent = models.Event.objects.create(name="TE E1", status=models.Event.PROVISIONAL, start_date=date.today() + timedelta(days=6), description="start future no end") + testEvent = models.Event.objects.create(name="TE E1", status=models.Event.PROVISIONAL, start_date=date.today() + timedelta(days=6), description="start future no end", purchase_order="TESTPO") item1 = models.EventItem( event=testEvent, @@ -498,6 +498,8 @@ class EventTest(LiveServerTestCase): infoPanel = self.browser.find_element_by_xpath('//div[contains(text(), "Event Info")]/..') self.assertIn("N0000%d"%testEvent.pk, infoPanel.find_element_by_xpath('//dt[text()="Based On"]/following-sibling::dd[1]').text) + # Check the PO hasn't carried through + self.assertNotIn("TESTPO", infoPanel.find_element_by_xpath('//dt[text()="PO"]/following-sibling::dd[1]').text) @@ -506,6 +508,8 @@ class EventTest(LiveServerTestCase): #Check that based-on hasn't crept into the old event infoPanel = self.browser.find_element_by_xpath('//div[contains(text(), "Event Info")]/..') self.assertNotIn("N0000%d"%testEvent.pk, infoPanel.find_element_by_xpath('//dt[text()="Based On"]/following-sibling::dd[1]').text) + # Check the PO remains on the old event + self.assertIn("TESTPO", infoPanel.find_element_by_xpath('//dt[text()="PO"]/following-sibling::dd[1]').text) # Check the items are as they were table = self.browser.find_element_by_id('item-table') # ID number is known, see above