diff --git a/Main/migrations/0013_set_editors.py b/Main/migrations/0013_set_editors.py new file mode 100644 index 0000000..320230f --- /dev/null +++ b/Main/migrations/0013_set_editors.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.4 on 2022-01-20 13:29 + +import django.contrib.postgres.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('Main', '0012_auto_20220120_0047'), + ] + + operations = [ + migrations.AddField( + model_name='set', + name='editors', + field=django.contrib.postgres.fields.ArrayField(base_field=models.TextField(), default=list, size=None), + ), + ] diff --git a/Main/models/set.py b/Main/models/set.py index 9713aff..b20aeae 100644 --- a/Main/models/set.py +++ b/Main/models/set.py @@ -1,6 +1,7 @@ from functools import cached_property from django.contrib.auth.models import User +from django.contrib.postgres.fields import ArrayField from django.db import models from django.utils import timezone @@ -14,6 +15,8 @@ class Set(models.Model): opened = models.BooleanField(default=False) start_time = models.DateTimeField(default=timezone.now) end_time = models.DateTimeField(default=timezone.now) + editors = ArrayField(models.TextField(), default=list) + @property def available(self): diff --git a/Main/models/userinfo.py b/Main/models/userinfo.py index b6ad3ee..b238208 100644 --- a/Main/models/userinfo.py +++ b/Main/models/userinfo.py @@ -49,30 +49,13 @@ class UserInfo(models.Model): return None return languages[self.favourite_language_id] - def _append_task(self, task, tasks): - if task.creator == self.user or task.public or self.user.is_superuser: - tasks.append(task) - return - for st in SetTask.objects.filter(task=task): - if st.set.public: - tasks.append(task) - return - for group in Group.objects.filter(sets=st.set): - for sub in Subscription.objects.filter(group=group): - if sub.user == self.user: - tasks.append(task) - return - - @property + @cached_property def available_tasks(self): - tasks = [] - for task in Task.objects.all(): - self._append_task(task, tasks) - return sorted(tasks, key=lambda x: x.time_estimation) + return Task.objects.filter(Q(public=True) | Q(creator=self.user) | Q(editors__in=self.user.username)).order_by('name') @property def available_sets(self): - return Set.objects.all() + return Set.objects.filter(Q(public=True) | Q(creator=self.user) | Q(editors__in=self.user.username)).order_by('name') @property def place(self): diff --git a/Main/views/SetSettingsView.py b/Main/views/SetSettingsView.py index fcf3ef5..51f4531 100644 --- a/Main/views/SetSettingsView.py +++ b/Main/views/SetSettingsView.py @@ -11,7 +11,6 @@ class SetSettingsView(BaseView): def get(self): self.context['settasks'] = SetTask.objects.filter(set=self.entities.set).order_by('name') - self.context['tasks'] = Task.objects.filter(Q(public=True) | Q(creator=self.request.user) | Q(editors__in=self.request.user.username)).order_by('name') def post_save(self): for key, value in self.request.POST.items(): diff --git a/templates/set_settings.html b/templates/set_settings.html index 4607e78..6ca182f 100644 --- a/templates/set_settings.html +++ b/templates/set_settings.html @@ -29,7 +29,7 @@