Browse Source

class friend提交
(ws的函数置空)

zoe 3 years ago
parent
commit
b8756ec4b3
12 changed files with 146 additions and 2 deletions
  1. 1 1
      .idea/MeChat.iml
  2. 4 1
      .idea/misc.xml
  3. 1 0
      MeChat/urls.py
  4. 0 0
      friends/__init__.py
  5. 3 0
      friends/admin.py
  6. 6 0
      friends/apps.py
  7. 13 0
      friends/form.py
  8. 0 0
      friends/migrations/__init__.py
  9. 15 0
      friends/models.py
  10. 3 0
      friends/tests.py
  11. 12 0
      friends/urls.py
  12. 88 0
      friends/views.py

+ 1 - 1
.idea/MeChat.iml

@@ -14,7 +14,7 @@
   </component>
   <component name="NewModuleRootManager">
     <content url="file://$MODULE_DIR$" />
-    <orderEntry type="inheritedJdk" />
+    <orderEntry type="jdk" jdkName="Python 3.7" jdkType="Python SDK" />
     <orderEntry type="sourceFolder" forTests="false" />
   </component>
   <component name="TemplatesService">

+ 4 - 1
.idea/misc.xml

@@ -1,4 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8" project-jdk-type="Python SDK" />
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7" project-jdk-type="Python SDK" />
+  <component name="PyCharmProfessionalAdvertiser">
+    <option name="shown" value="true" />
+  </component>
 </project>

+ 1 - 0
MeChat/urls.py

@@ -20,4 +20,5 @@ urlpatterns = [
     path('admin/', admin.site.urls),
     path('chat/', include(('chat.urls', "chat"), namespace='chat')),
     path('account/', include(('account.urls', "account"), namespace='account')),
+    path('friends/', include(('friends.urls', "friends"), namespace= 'friends'))
 ]

+ 0 - 0
friends/__init__.py


+ 3 - 0
friends/admin.py

@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.

+ 6 - 0
friends/apps.py

@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class FriendsConfig(AppConfig):
+    default_auto_field = 'django.db.models.BigAutoField'
+    name = 'friends'

+ 13 - 0
friends/form.py

@@ -0,0 +1,13 @@
+from django import forms
+from django.contrib.auth.models import User
+
+
+class UserRequestForm(forms.Form):
+    username = forms.CharField()
+    otherUsername = forms.CharField()
+    token = forms.CharField()
+
+
+class UserListForm(forms.Form):
+    username = forms.CharField()
+    token = forms.CharField()

+ 0 - 0
friends/migrations/__init__.py


+ 15 - 0
friends/models.py

@@ -0,0 +1,15 @@
+from django.db import models
+
+
+# 好友表
+class friends(models.Model):
+    # 用户id
+    userid = models.IntegerField()
+    # 用户好友
+    whomFriend = models.IntegerField()
+    # 用户名
+    username = models.CharField(max_length=20, null=True)
+    # 凭证
+    token = models.CharField(max_length=100, default='233', blank=False)
+    # 状态码,可以拉黑名单用,为0表示并不是好友,但是对方向自己发送过消息。
+    status = models.IntegerField(default=1)

+ 3 - 0
friends/tests.py

@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.

+ 12 - 0
friends/urls.py

@@ -0,0 +1,12 @@
+from django.urls import path, include
+from django.views.generic.base import TemplateView
+from . import views
+
+
+urlpatterns = [
+    path("Friend/add", views.addFriend),
+    path("friendsList/", views.friendsList),
+    path("friendsList/<int:pk>", views.friendDetail),
+    path("friend/delete", views.deleteFriend),
+    path("friend/accept", views.acceptFriend)
+]

+ 88 - 0
friends/views.py

@@ -0,0 +1,88 @@
+import json
+from django.http import JsonResponse, HttpResponse
+from django.views.decorators.csrf import csrf_exempt
+from .form import UserRequestForm, UserListForm
+from .models import friends
+
+
+# 批处理流程
+def more_clean(request, form):
+    if request.method == 'POST':
+        user_login_form = form(request.POST)
+        if user_login_form.is_valid():
+            # 清洗出合法的数据
+            data = user_login_form.cleaned_data
+            return data
+    else:
+        response = ['illegal input']
+        return HttpResponse(json.dumps(response))
+
+
+# 获取好友列表
+@csrf_exempt
+def friendsList(request):
+    data = more_clean(request, UserListForm)
+    if data.get('token') != 'token':
+        response = ['there has a mistake, please provide illegal token']
+        return HttpResponse(json.dumps(response))
+    else:
+        try:
+            friendsTemp = friends.objects.filter(whomfriend=data['username'])
+            return HttpResponse(json.dumps(friendsTemp))
+        except friends.DoesNotExist:
+            response = ['this user do not exist']
+            return HttpResponse(json.dumps(response))
+
+
+#  添加好友(通过ws发送给被请求方信息,返回等待对方回应中)
+# @csrf_exempt
+# def addFriend(request):
+# 由于ws不是很确定,先闲置
+
+
+# 同意添加好友,
+def acceptFriend(request):
+    data = more_clean(request, UserRequestForm)
+    if request.method == "POST":
+        try:
+            friends.objects.create(username=data["username"], whomfriend=data["otherUsername"], token=data["token"],
+                                   status=1)
+            response = ["add successfully"]
+            return HttpResponse(json.dumps(response))
+        except:
+            response = ["add failed"]
+            return HttpResponse(json.dumps(response))
+
+
+# 获取详细好友信息
+@csrf_exempt
+def friendDetail(request, pk):
+    data = more_clean(request, UserRequestForm)
+    try:
+        loginUserid = int(data["username"])
+        friendsTemp = friends.objects.get(whomfriend=loginUserid, userid=pk)
+
+    except friends.DoesNotExist:
+        response = ["do not exist"]
+        return HttpResponse(json.dumps(response))
+
+    if len(friendsTemp):
+        response = [friendsTemp]
+        return HttpResponse(json.dumps(response))
+    else:
+        response = ["wrong"]
+        return HttpResponse(json.dumps(response))
+
+
+@csrf_exempt
+def deleteFriend(request):
+    data = more_clean(request, UserRequestForm)
+    try:
+        tempFriend = friends.objects.get(
+            username=data["username"], whomfriend=data["otherUsername"])
+        tempFriend.clear()
+        response = ["delete success"]
+        return HttpResponse(json.dumps(response))
+    except:
+        response = ["delete failed"]
+        return JsonResponse(response)