Skip to content

Commit c05d1b6

Browse files
committed
Add owner to prompt models and make migrations
1 parent a3e89e0 commit c05d1b6

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed
+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Generated by Django 3.0 on 2021-07-28 16:14
2+
3+
from django.conf import settings
4+
from django.db import migrations, models
5+
import django.db.models.deletion
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
12+
('prompt', '0001_initial'),
13+
]
14+
15+
operations = [
16+
migrations.AddField(
17+
model_name='prompt',
18+
name='owner',
19+
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
20+
preserve_default=False,
21+
),
22+
]

prompt/models.py

+5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
from django.db import models
2+
from django.contrib.auth import get_user_model
23

34
class Prompt(models.Model):
45
"""Prompt model"""
56
content = models.CharField(max_length=100)
67
created_at = models.DateTimeField(auto_now_add=True)
78
updated_at = models.DateTimeField(auto_now=True)
9+
owner = models.ForeignKey(
10+
get_user_model(),
11+
on_delete=models.CASCADE
12+
)
813

914
def __str__(self):
1015
"""Return a string representation of a prompt"""

prompt/views.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
from .serializers import PromptSerializer
77
# from .serializers import PromptReadSerializer
88

9+
from rest_framework.permissions import IsAuthenticated
10+
from rest_framework.exceptions import PermissionDenied
11+
912

1013
# from django.http import JsonResponse
1114

@@ -31,11 +34,14 @@ def post(self, request):
3134

3235

3336
class PromptDetail(APIView):
34-
permission_classes=()
37+
permission_classes=(IsAuthenticated,)
3538
def get(self, request, pk):
3639
"""Show one Prompt"""
3740
prompt = get_object_or_404(Prompt, pk=pk)
3841

42+
if not request.user.id == prompt.owner.id:
43+
raise PermissionDenied('Unauthorized, you do not own this prompt')
44+
3945
data = PromptSerializer(prompt).data
4046
return Response({ 'prompt': data })
4147

0 commit comments

Comments
 (0)