diff --git a/RIGS/rigboard.py b/RIGS/rigboard.py
index 6c0cea8d..8b4ca10f 100644
--- a/RIGS/rigboard.py
+++ b/RIGS/rigboard.py
@@ -98,3 +98,19 @@ class EventPrint(generic.View):
response['Content-Disposition'] = "filename=N%05d | %s.pdf" % (object.pk, object.name)
response.write(merged.getvalue())
return response
+
+
+class EventDuplicate(generic.RedirectView):
+
+ def get_redirect_url(self, *args, **kwargs):
+ new = get_object_or_404(models.Event, pk=kwargs['pk'])
+ new.pk = None
+ new.save()
+
+ old = get_object_or_404(models.Event, pk=kwargs['pk'])
+ for item in old.items.all():
+ item.pk = None
+ item.event = new
+ item.save()
+
+ return reverse_lazy('event_update', kwargs={'pk': new.pk})
\ No newline at end of file
diff --git a/RIGS/templates/RIGS/event_detail.html b/RIGS/templates/RIGS/event_detail.html
index f74de4e6..a28240ba 100644
--- a/RIGS/templates/RIGS/event_detail.html
+++ b/RIGS/templates/RIGS/event_detail.html
@@ -13,6 +13,8 @@
class="glyphicon glyphicon-edit">
+
diff --git a/RIGS/urls.py b/RIGS/urls.py
index ab811bb2..7d03ec1b 100644
--- a/RIGS/urls.py
+++ b/RIGS/urls.py
@@ -68,6 +68,9 @@ urlpatterns = patterns('',
url(r'^event/(?P\d+)/edit/$',
permission_required_with_403('RIGS.change_event')(rigboard.EventUpdate.as_view()),
name='event_update'),
+ url(r'^event/(?P\d+)/duplicate/$',
+ permission_required_with_403('RIGS.change_event')(rigboard.EventDuplicate.as_view()),
+ name='event_duplicate'),
# API
url(r'^api/(?P\w+)/$', (views.SecureAPIRequest.as_view()), name="api_secure"),
diff --git a/db.sqlite3 b/db.sqlite3
index ccf54081..682df3ba 100644
Binary files a/db.sqlite3 and b/db.sqlite3 differ