Advance don't merge
This commit is contained in:
		@ -18,17 +18,25 @@ class ChatConsumer(WebsocketConsumer):
 | 
				
			|||||||
		text_data_json = json.loads(text_data)
 | 
							text_data_json = json.loads(text_data)
 | 
				
			||||||
		message = text_data_json['message']
 | 
							message = text_data_json['message']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							user = self.scope["user"]
 | 
				
			||||||
 | 
							if user.is_anonymous:
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		async_to_sync(self.channel_layer.group_send)(
 | 
							async_to_sync(self.channel_layer.group_send)(
 | 
				
			||||||
			self.room_group_name,
 | 
								self.room_group_name,
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				'type':'chat_message',
 | 
									'type':'chat_message',
 | 
				
			||||||
				'username':self.scope["user"].username,
 | 
									'username':user.username,
 | 
				
			||||||
				'message':message
 | 
									'message':message
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		)
 | 
							)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def chat_message(self, event):
 | 
						def chat_message(self, event):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							user = self.scope["user"]
 | 
				
			||||||
 | 
							if user.is_anonymous:
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		self.send(text_data=json.dumps({
 | 
							self.send(text_data=json.dumps({
 | 
				
			||||||
			'type':'chat',
 | 
								'type':'chat',
 | 
				
			||||||
			'username':event['username'],
 | 
								'username':event['username'],
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,17 @@
 | 
				
			|||||||
from django.db import models
 | 
					from django.db import models
 | 
				
			||||||
 | 
					from django.db.models import IntegerField
 | 
				
			||||||
 | 
					from django.contrib.auth.models import User
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Create your models here.
 | 
					# Create your models here.
 | 
				
			||||||
 | 
					class ChannelModel(models.Model):
 | 
				
			||||||
 | 
						pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MemberModel(models.Model):
 | 
				
			||||||
 | 
						member_id = IntegerField(primary_key=False)
 | 
				
			||||||
 | 
						channel_id = IntegerField(primary_key=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MessageModel(models.Model):
 | 
				
			||||||
 | 
						channel_id = IntegerField(primary_key=False)
 | 
				
			||||||
 | 
						author_id = IntegerField(primary_key=False)
 | 
				
			||||||
 | 
						content = models.CharField(max_length=255)
 | 
				
			||||||
 | 
						time = models.DateField()
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										8
									
								
								chat/serializers.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								chat/serializers.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					from rest_framework import serializers
 | 
				
			||||||
 | 
					from .models import ChannelModel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ChannelSerializer(serializers.ModelSerializer):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class Meta:
 | 
				
			||||||
 | 
					        model = ChannelModel
 | 
				
			||||||
 | 
					        fields = []
 | 
				
			||||||
							
								
								
									
										9
									
								
								chat/urls.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								chat/urls.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					from django.urls import path
 | 
				
			||||||
 | 
					from django.conf import settings
 | 
				
			||||||
 | 
					from django.conf.urls.static import static
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from . import views
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					urlpatterns = [
 | 
				
			||||||
 | 
					    path("<int:pk>", views.ChatView.as_view(), name="chat_page"),
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
@ -1,3 +1,29 @@
 | 
				
			|||||||
from django.shortcuts import render
 | 
					from rest_framework.views import APIView
 | 
				
			||||||
 | 
					from rest_framework.response import Response
 | 
				
			||||||
 | 
					from rest_framework import authentication, permissions
 | 
				
			||||||
 | 
					from rest_framework.authentication import SessionAuthentication
 | 
				
			||||||
 | 
					from .models import ChannelModel, MemberModel, MessageModel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Create your views here.
 | 
					class ChatView(APIView):
 | 
				
			||||||
 | 
						permission_classes = (permissions.IsAuthenticated,)
 | 
				
			||||||
 | 
						authentication_classes = (SessionAuthentication,)
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						def post(self, request, pk):
 | 
				
			||||||
 | 
							if (ChannelModel.objects.filter(pk = pk)):
 | 
				
			||||||
 | 
								return Response("Channel already exist")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							data: dict = request.data
 | 
				
			||||||
 | 
							users_id = request.data.get("users_id", [])
 | 
				
			||||||
 | 
							if len(users_id) < 2:
 | 
				
			||||||
 | 
								return Response("Not enought members to create the channel")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							new_channel = ChannelModel()
 | 
				
			||||||
 | 
							new_channel.save()	
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							for user_id in users_id:
 | 
				
			||||||
 | 
								new_member = MemberModel()
 | 
				
			||||||
 | 
								new_member.channel_id = new_channel.pk
 | 
				
			||||||
 | 
								new_member.member_id = user_id
 | 
				
			||||||
 | 
								new_member.save()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return Response("Channel created")
 | 
				
			||||||
 | 
				
			|||||||
@ -10,10 +10,10 @@
 | 
				
			|||||||
<body>
 | 
					<body>
 | 
				
			||||||
    <nav class="nav">
 | 
					    <nav class="nav">
 | 
				
			||||||
        <a href="/" class="nav__link" data-link>Dashboard</a>
 | 
					        <a href="/" class="nav__link" data-link>Dashboard</a>
 | 
				
			||||||
        <a href="/profiles" class="nav__link" data-link>Profiles</a>
 | 
					        <a href="/search" class="nav__link" data-link>Search</a>
 | 
				
			||||||
 | 
					        <a href="/home" class="nav__link" data-link>Home</a>
 | 
				
			||||||
        <a href="/login" class="nav__link" data-link>Login</a>
 | 
					        <a href="/login" class="nav__link" data-link>Login</a>
 | 
				
			||||||
        <a href="/register" class="nav__link" data-link>Register</a>
 | 
					        <a href="/register" class="nav__link" data-link>Register</a>
 | 
				
			||||||
        <a href="/search" class="nav__link" data-link>Search</a>
 | 
					 | 
				
			||||||
    </nav>
 | 
					    </nav>
 | 
				
			||||||
    <div id="app"></div>
 | 
					    <div id="app"></div>
 | 
				
			||||||
	<script type="module" src="{% static 'js/index.js' %}"></script>
 | 
						<script type="module" src="{% static 'js/index.js' %}"></script>
 | 
				
			||||||
 | 
				
			|||||||
@ -46,6 +46,7 @@ INSTALLED_APPS = [
 | 
				
			|||||||
    'accounts.apps.AccountsConfig',
 | 
					    'accounts.apps.AccountsConfig',
 | 
				
			||||||
    'profiles.apps.ProfilesConfig',
 | 
					    'profiles.apps.ProfilesConfig',
 | 
				
			||||||
    'frontend.apps.FrontendConfig',
 | 
					    'frontend.apps.FrontendConfig',
 | 
				
			||||||
 | 
					    'chat.apps.ChatConfig',
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    'corsheaders',
 | 
					    'corsheaders',
 | 
				
			||||||
    'rest_framework',
 | 
					    'rest_framework',
 | 
				
			||||||
 | 
				
			|||||||
@ -21,5 +21,6 @@ urlpatterns = [
 | 
				
			|||||||
    path('admin/', admin.site.urls),
 | 
					    path('admin/', admin.site.urls),
 | 
				
			||||||
    path('api/profiles/', include('profiles.urls')),
 | 
					    path('api/profiles/', include('profiles.urls')),
 | 
				
			||||||
    path('api/accounts/', include('accounts.urls')),
 | 
					    path('api/accounts/', include('accounts.urls')),
 | 
				
			||||||
 | 
					    path('api/chat/', include('chat.urls')),
 | 
				
			||||||
    path('', include('frontend.urls')),
 | 
					    path('', include('frontend.urls')),
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
		Reference in New Issue
	
	Block a user