ignalxy 4 rokov pred
rodič
commit
3ff4faea81

+ 1 - 5
account/admin.py

@@ -1,11 +1,8 @@
 from django.contrib import admin
-from .models import Profile, User, LoginToken
+from .models import User, LoginToken
 
 
 # Register your models here.
-class ProfileAdmin(admin.ModelAdmin):
-    list_display = ["user", "root_folder_id"]
-
 
 class UserAdmin(admin.ModelAdmin):
     list_display = ["username", "password", "email"]
@@ -15,6 +12,5 @@ class LoginTokenAdmin(admin.ModelAdmin):
     list_display = ["user", "token"]
 
 
-admin.site.register(Profile, ProfileAdmin)
 admin.site.register(User, UserAdmin)
 admin.site.register(LoginToken, LoginTokenAdmin)

+ 16 - 0
account/migrations/0002_delete_profile.py

@@ -0,0 +1,16 @@
+# Generated by Django 3.2.5 on 2021-09-09 16:10
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('account', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.DeleteModel(
+            name='Profile',
+        ),
+    ]

+ 6 - 32
account/models.py

@@ -27,6 +27,9 @@ class User(models.Model):
         db_table = '_user'
         verbose_name = verbose_name_plural = '用户信息表'
 
+    def get_root_folder(self):
+        return self.folders.get(father_folder=None)
+
     def set_password(self, password):
         # TODO: 密码强度检验,密码hash存储
         self.password = password
@@ -73,6 +76,9 @@ class User(models.Model):
     def _make_hash_value(self, timestamp):
         return f'{self.pk}{self.password}{timestamp}{self.email}'
 
+    def __str__(self):
+        return self.username
+
 
 def get_user(request):
     username = request.data.get('username', '')
@@ -97,35 +103,3 @@ class LoginToken(models.Model):
     token = models.CharField(max_length=256)
 
 
-from folder.models import Folder
-# 引入内置信号
-from django.db.models.signals import post_save
-# 引入信号接收器的装饰器
-from django.dispatch import receiver
-
-
-class Profile(models.Model):
-    # 对应django自带的user
-    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
-    # 对应的根目录
-    root_folder = models.ForeignKey(Folder, null=True, on_delete=models.DO_NOTHING, related_name='profile')
-
-    def __str__(self):
-        return '_user {}'.format(self.user.username)
-
-
-# 信号接收函数,每当新建User实例的时候自动调用
-@receiver(post_save, sender=User)
-def create_user_profile(sender, instance, created, **kwargs):
-    if created:
-        Profile.objects.create(user=instance)
-        root_folder = Folder.objects.create(owner=instance)
-        instance.profile.root_folder = root_folder
-        instance.save()
-
-
-# 信号接收函数,每当更新User实例的时候自动调用
-@receiver(post_save, sender=User)
-def save_user_profile(sender, instance, **kwargs):
-    pass
-    # instance.profile.save()

+ 3 - 2
account/views.py

@@ -22,14 +22,15 @@ def register(request):
     username = request.data.get('username', '')
     password = request.data.get('password', '')
     email = request.data.get('email', '')
-    if not username or not password or email:
+    if not username or not password or not email:
         return JsonResponse({'code': 303, 'error': '用户名/密码/邮箱不能为空'})
     else:
-        print(request.POST)
         if User.objects.filter(username=username):
+            print('用户名已存在')
             return JsonResponse({'code': 301, 'error': '用户名已存在'})
 
         if User.objects.filter(email=email):
+            print('邮箱已存在')
             return JsonResponse({'code': 302, 'error': '邮箱已存在'})
 
         try:

BIN
db.sqlite3


+ 1 - 1
file/admin.py

@@ -4,7 +4,7 @@ from .models import File
 
 # Register your models here.
 class FileAdmin(admin.ModelAdmin):
-    list_display = ["file_id", "file_name", "folder", "update_time", "file_type", "file_size", "owner"]
+    list_display = ["file_id", "file_name", "folder", "update_time", "file_type", "file_size", "owner", "group"]
 
 
 admin.site.register(File, FileAdmin)

+ 20 - 0
file/migrations/0004_file_group.py

@@ -0,0 +1,20 @@
+# Generated by Django 3.2.5 on 2021-09-09 16:10
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('group', '0003_auto_20210910_0010'),
+        ('file', '0003_auto_20210909_2239'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='file',
+            name='group',
+            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='files', to='group.group'),
+        ),
+    ]

+ 3 - 1
file/models.py

@@ -1,7 +1,7 @@
 from django.db import models
 from folder.models import Folder
 from account.models import User
-
+from group.models import Group
 
 # 文件表
 class File(models.Model):
@@ -20,6 +20,8 @@ class File(models.Model):
 
     owner = models.ForeignKey(User, on_delete=models.DO_NOTHING, related_name='files')
 
+    group = models.ForeignKey(Group, on_delete=models.DO_NOTHING, related_name='files', null=True)
+
     def to_json(self):
         return {'file_id': self.file_id,
                 'file_name': self.file_name,

+ 20 - 0
folder/migrations/0006_folder_group.py

@@ -0,0 +1,20 @@
+# Generated by Django 3.2.5 on 2021-09-09 16:10
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('group', '0003_auto_20210910_0010'),
+        ('folder', '0005_folder_owner'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='folder',
+            name='group',
+            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='folders', to='group.group'),
+        ),
+    ]

+ 20 - 0
folder/models.py

@@ -2,6 +2,12 @@ from django.db import models
 
 # 文件夹表
 from account.models import User
+from group.models import Group
+
+# 引入内置信号
+from django.db.models.signals import post_save
+# 引入信号接收器的装饰器
+from django.dispatch import receiver
 
 
 class Folder(models.Model):
@@ -14,6 +20,7 @@ class Folder(models.Model):
                                       related_name='children_folders')
     # 所有者
     owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name='folders')
+    group = models.ForeignKey(Group, on_delete=models.DO_NOTHING, related_name='folders', null=True)
 
     def to_json(self):
         return {'folder_id': self.folder_id, 'folder_name': self.folder_name, 'father_folder_id': self.father_folder_id}
@@ -21,3 +28,16 @@ class Folder(models.Model):
     def __unicode__(self):
         return self.folder_id
 
+
+# 信号接收函数,每当新建User实例的时候自动调用
+@receiver(post_save, sender=User)
+def create_user_root_folder(sender, instance, created, **kwargs):
+    if created:
+        root_folder = Folder.objects.create(owner=instance)
+
+
+# 信号接收函数,每当新建Group实例的时候自动调用
+@receiver(post_save, sender=Group)
+def create_group_root_folder(sender, instance, created, **kwargs):
+    if created:
+        root_folder = Folder.objects.create(owner=instance.creator, group=instance)

+ 1 - 1
group/admin.py

@@ -4,7 +4,7 @@ from .models import Group
 
 # Register your models here.
 class GroupAdmin(admin.ModelAdmin):
-    list_display = ["group_id", "group_name", "creator", "folder"]
+    list_display = ["group_id", "group_name", "creator"]
 
 
 admin.site.register(Group, GroupAdmin)

+ 29 - 0
group/migrations/0003_auto_20210910_0010.py

@@ -0,0 +1,29 @@
+# Generated by Django 3.2.5 on 2021-09-09 16:10
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('account', '0002_delete_profile'),
+        ('group', '0002_alter_group_member'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='group',
+            name='folder',
+        ),
+        migrations.AlterField(
+            model_name='group',
+            name='creator',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='my_groups', to='account.user'),
+        ),
+        migrations.AlterField(
+            model_name='group',
+            name='member',
+            field=models.ManyToManyField(related_name='joined_groups', to='account.User'),
+        ),
+    ]

+ 2 - 7
group/models.py

@@ -2,9 +2,6 @@ from django.db import models
 
 from account.models import User
 
-# 群表
-from folder.models import Folder
-
 
 class Group(models.Model):
     # 群id
@@ -12,9 +9,7 @@ class Group(models.Model):
     # 群名
     group_name = models.CharField(max_length=50, blank=False)
     # 群管理员
-    creator = models.CharField(max_length=50, blank=False)
-    # 群文件夹
-    folder = models.ForeignKey(Folder, on_delete=models.CASCADE, related_name='group_folder')
+    creator = models.ForeignKey(User, on_delete=models.CASCADE, related_name="my_groups")
     # 群成员(多对多)
-    member = models.ManyToManyField(User)
+    member = models.ManyToManyField(User, related_name="joined_groups")