Compare commits

...

6 Commits
prod ... main

  1. 13
      chat/api.py
  2. 19
      chat/migrations/0003_alter_message_parent.py
  3. 2
      chat/models.py
  4. 22
      chat/serializers.py
  5. 8
      chat/views.py
  6. 6
      enchant_server/settings.py
  7. 3
      enchant_server/urls.py

@ -0,0 +1,13 @@
from rest_framework import permissions
from rest_framework.generics import CreateAPIView
#from django.contrib.auth import get_user_model # If used custom user model
from .serializers import UserSerializer
class CreateUserView(CreateAPIView):
#model = get_user_model()
permission_classes = [
permissions.AllowAny # Or anon users can't register
]
serializer_class = UserSerializer

@ -0,0 +1,19 @@
# Generated by Django 4.1.1 on 2023-12-13 13:02
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('chat', '0002_message_parent'),
]
operations = [
migrations.AlterField(
model_name='message',
name='parent',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='chat.message'),
),
]

@ -19,7 +19,7 @@ class Message(models.Model):
date = models.DateTimeField("date published")
user = models.ForeignKey(User, on_delete=models.CASCADE)
room = models.ForeignKey(Room, on_delete=models.CASCADE)
parent = models.ForeignKey('self', null=True, on_delete=models.SET_NULL)
parent = models.ForeignKey('self', blank=True, null=True, on_delete=models.SET_NULL)
def __str__(self):
return self.text

@ -2,6 +2,21 @@ from django.contrib.auth.models import User
from rest_framework import serializers
from .models import App, Room, Message
class UserSerializer(serializers.HyperlinkedModelSerializer):
password = serializers.CharField(write_only=True)
def create(self, validated_data):
user = User.objects.create_user(
username=validated_data['username'],
password=validated_data['password'],
)
return user
class Meta:
model = User
fields = ['id', 'username', 'password']
class AppSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = App
@ -10,9 +25,12 @@ class AppSerializer(serializers.HyperlinkedModelSerializer):
class RoomSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Room
fields = ['id', 'name']
fields = ['id', 'name', 'app']
class MessageSerializer(serializers.HyperlinkedModelSerializer):
user = UserSerializer()
classMessageSerializer (serializers.HyperlinkedModelSerializer):
class Meta:
model = Message
fields = ['id', 'text', 'date', 'user', 'room', 'parent']

@ -6,7 +6,8 @@ from django.shortcuts import get_object_or_404, render
from django.template import loader
from rest_framework import viewsets, generics
from rest_framework import permissions
from .serializers import AppSerializer, RoomSerializer, MessageSerializer
from .serializers import AppSerializer, RoomSerializer, MessageSerializer, UserSerializer
from django.contrib.auth.models import User
# Create your views here.
def index(request):
@ -25,6 +26,11 @@ def room(request, room_id):
}
return render(request, "chat/room.html", context)
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
class AppViewSet(viewsets.ModelViewSet):
queryset = App.objects.all()
serializer_class = AppSerializer

@ -130,6 +130,10 @@ REST_FRAMEWORK = {
# Use Django's standard `django.contrib.auth` permissions,
# or allow read-only access for unauthenticated users.
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',
],
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
]
}

@ -22,7 +22,8 @@ from chat import views
router = routers.DefaultRouter()
router.register(r'apps', views.AppViewSet)
router.register(r'rooms', views.RoomViewSet)
router.register(r'messages', views.MessageViewSet, basename='Message')
router.register(r'users', views.UserViewSet)
router.register(r'messages', views.MessageViewSet, basename='message')
urlpatterns = [
path("chat/", include("chat.urls")),

Loading…
Cancel
Save