From 1809be75fc83fa67d398ae07924a4e69d7b397d7 Mon Sep 17 00:00:00 2001 From: sniper-py Date: Wed, 26 Jun 2019 10:20:35 +0800 Subject: [PATCH] share dtable model --- seahub/dtable/migrations/0002_auto.py | 33 +++++++++++++++++++++++ seahub/dtable/models.py | 39 +++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 seahub/dtable/migrations/0002_auto.py diff --git a/seahub/dtable/migrations/0002_auto.py b/seahub/dtable/migrations/0002_auto.py new file mode 100644 index 0000000000..1da7176cab --- /dev/null +++ b/seahub/dtable/migrations/0002_auto.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.15 on 2019-06-26 02:29 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('dtable', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='ShareDTable', + fields=[ + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('from_user', models.CharField(db_index=True, max_length=255)), + ('to_user', models.CharField(db_index=True, max_length=255)), + ('permission', models.CharField(max_length=15)), + ('dtable', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='dtable.DTables')), + ], + options={ + 'db_table': 'share_dtable', + }, + ), + migrations.AlterUniqueTogether( + name='sharedtable', + unique_together=set([('dtable', 'to_user')]), + ), + ] diff --git a/seahub/dtable/models.py b/seahub/dtable/models.py index c95ea4c74c..d1832d2e9a 100644 --- a/seahub/dtable/models.py +++ b/seahub/dtable/models.py @@ -150,3 +150,42 @@ class DTables(models.Model): 'created_at': datetime_to_isoformat_timestr(self.created_at), 'updated_at': datetime_to_isoformat_timestr(self.updated_at), } + + +class ShareDTableManager(models.Manager): + + def list_by_dtable(self, dtable): + return self.filter(dtable=dtable) + + def list_by_to_user(self, to_user): + return self.filter(to_user=to_user).select_related('dtable') + + def get_by_dtable_and_to_user(self, dtable, to_user): + qs = self.filter(dtable=dtable, to_user=to_user) + if qs.exists(): + return qs[0] + return None + + def add(self, dtable, from_user, to_user, permission): + obj = self.model( + dtable=dtable, from_user=from_user, to_user=to_user, permission=permission) + obj.save() + return obj + + +class ShareDTable(models.Model): + """Model used to share dtable + + from_user, to_user: user email or group_id@seafile_group + """ + id = models.BigAutoField(primary_key=True) + dtable = models.ForeignKey(DTables, on_delete=models.CASCADE) + from_user = models.CharField(max_length=255, db_index=True) + to_user = models.CharField(max_length=255, db_index=True) + permission = models.CharField(max_length=15) + + objects = ShareDTableManager() + + class Meta: + unique_together = (('dtable', 'to_user'),) + db_table = 'share_dtable'