From 4a67940fb70144eaeb961318249d710793117b7a Mon Sep 17 00:00:00 2001
From: Calum Mackervoy <c.mackervoy@gmail.com>
Date: Wed, 23 Sep 2020 10:59:49 +0000
Subject: [PATCH] major: Django 2 upgrade

---
 djangoldp_polls/djangoldp_urls.py             |  1 -
 .../migrations/0010_auto_20200923_0939.py     | 50 +++++++++++++++++++
 djangoldp_polls/models.py                     | 15 +++---
 djangoldp_polls/views.py                      |  6 +--
 setup.cfg                                     |  4 +-
 5 files changed, 61 insertions(+), 15 deletions(-)
 create mode 100644 djangoldp_polls/migrations/0010_auto_20200923_0939.py

diff --git a/djangoldp_polls/djangoldp_urls.py b/djangoldp_polls/djangoldp_urls.py
index 583fa58..86ca1ef 100644
--- a/djangoldp_polls/djangoldp_urls.py
+++ b/djangoldp_polls/djangoldp_urls.py
@@ -16,7 +16,6 @@ Including another URLconf
 
 """djangoldp project URL Configuration"""
 from django.conf.urls import url,include
-from django.contrib import admin
 from .views import TotalVotes
 from djangoldp.models import Model
 from djangoldp_polls.models import PollOption
diff --git a/djangoldp_polls/migrations/0010_auto_20200923_0939.py b/djangoldp_polls/migrations/0010_auto_20200923_0939.py
new file mode 100644
index 0000000..08dc582
--- /dev/null
+++ b/djangoldp_polls/migrations/0010_auto_20200923_0939.py
@@ -0,0 +1,50 @@
+# Generated by Django 2.2.16 on 2020-09-23 09:39
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('djangoldp_polls', '0009_auto_20200911_1316'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='poll',
+            name='author',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='createdVotes', to=settings.AUTH_USER_MODEL),
+        ),
+        migrations.AlterField(
+            model_name='poll',
+            name='circle',
+            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='polls', to='djangoldp_circle.Circle'),
+        ),
+        migrations.AlterField(
+            model_name='poll',
+            name='is_backlink',
+            field=models.BooleanField(default=False, help_text='set automatically to indicate the Model is a backlink'),
+        ),
+        migrations.AlterField(
+            model_name='polloption',
+            name='is_backlink',
+            field=models.BooleanField(default=False, help_text='set automatically to indicate the Model is a backlink'),
+        ),
+        migrations.AlterField(
+            model_name='tag',
+            name='is_backlink',
+            field=models.BooleanField(default=False, help_text='set automatically to indicate the Model is a backlink'),
+        ),
+        migrations.AlterField(
+            model_name='vote',
+            name='is_backlink',
+            field=models.BooleanField(default=False, help_text='set automatically to indicate the Model is a backlink'),
+        ),
+        migrations.AlterField(
+            model_name='vote',
+            name='user',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='votes', to=settings.AUTH_USER_MODEL),
+        ),
+    ]
diff --git a/djangoldp_polls/models.py b/djangoldp_polls/models.py
index af5817d..39cf542 100644
--- a/djangoldp_polls/models.py
+++ b/djangoldp_polls/models.py
@@ -41,18 +41,18 @@ class PollOption (Model):
 
 class Poll (Model):
 	created_at = models.DateTimeField(auto_now_add=True)
-	author = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='createdVotes', null=True,blank=True)
+	author = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='createdVotes', null=True, blank=True, on_delete=models.SET_NULL)
 	title = models.CharField(max_length=250,verbose_name="Title")
 	image = models.URLField(verbose_name="Illustration",default=settings.BASE_URL +"/media/defaultpoll.png")
 	hostingOrganisation = models.CharField(max_length=250,verbose_name="Name of the hosting organisation")
 	startDate = models.DateField(verbose_name="Start date", blank=True, null=True ) 
-	endDate =  models.DateField(verbose_name="End data" )
+	endDate = models.DateField(verbose_name="End data" )
 	shortDescription = models.CharField(max_length=250,verbose_name="Short description")
 	longDescription = models.TextField(verbose_name="Long description")
 	tags = models.ManyToManyField(Tag, related_name='polls', blank=True)
 	pollOptions = models.ManyToManyField(PollOption, related_name='relatedPollOptions', blank=True)
 	debate = models.ManyToManyField(Conversation, related_name='polls', blank=True)
-	circle = models.ForeignKey(Circle, null=True, related_name="polls")
+	circle = models.ForeignKey(Circle, null=True, related_name="polls", on_delete=models.SET_NULL)
 
 	class Meta : 
 		serializer_fields = ['@id','created_at','debate','pollOptions','votes','author','title','image','circle',\
@@ -67,9 +67,9 @@ class Poll (Model):
 
 
 class Vote (Model):
-	user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='votes',null=True,blank=True)
-	chosenOption =  models.ForeignKey(PollOption, related_name='userVote')
-	relatedPoll = models.ForeignKey(Poll, related_name='votes')
+	user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='votes',null=True,blank=True, on_delete=models.SET_NULL)
+	chosenOption =  models.ForeignKey(PollOption, related_name='userVote', on_delete=models.CASCADE)
+	relatedPoll = models.ForeignKey(Poll, related_name='votes', on_delete=models.CASCADE)
 
 	class Meta :
 		auto_author = "user"
@@ -79,5 +79,4 @@ class Vote (Model):
 		authenticated_perms =  ['inherit','add']
 
 	def __str__(self):
-		return self.chosenOption
-	
\ No newline at end of file
+		return self.chosenOption.__str__()
\ No newline at end of file
diff --git a/djangoldp_polls/views.py b/djangoldp_polls/views.py
index d6cbe8a..38895c3 100644
--- a/djangoldp_polls/views.py
+++ b/djangoldp_polls/views.py
@@ -19,6 +19,7 @@ class FuturePollViewset(LDPViewSet):
 
 class TotalVotes(LDPViewSet):
     '''view to GET the total counts of votes selecting a particular option'''
+    serializer_class = PollOptionSerializer
 
     def _get_poll_or_404(self):
         pk = self.kwargs['pk']
@@ -39,8 +40,3 @@ class TotalVotes(LDPViewSet):
     def get_queryset(self, *args, **kwargs):
         poll = self._get_poll_or_404()
         return poll.pollOptions.all()
-
-    def get_serializer_class(self):
-        # NOTE: this is required because currently DjangoLDP overrides the serializer_class during __init__
-        # https://git.startinblox.com/djangoldp-packages/djangoldp/issues/241
-        return PollOptionSerializer
diff --git a/setup.cfg b/setup.cfg
index 6004dbb..5e3834c 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -10,7 +10,9 @@ license = MIT
 [options]
 packages = find:
 install_requires =
-    djangoldp~=0.5
+    djangoldp~=0.0
+    djangoldp_conversation
+    djangoldp_circle
 
 [options.extras_require]
 dev =
-- 
GitLab