added field editors
This commit is contained in:
parent
aee08c937a
commit
7bbdc0956f
19
Main/migrations/0013_set_editors.py
Normal file
19
Main/migrations/0013_set_editors.py
Normal file
@ -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),
|
||||||
|
),
|
||||||
|
]
|
@ -1,6 +1,7 @@
|
|||||||
from functools import cached_property
|
from functools import cached_property
|
||||||
|
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
from django.contrib.postgres.fields import ArrayField
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
@ -14,6 +15,8 @@ class Set(models.Model):
|
|||||||
opened = models.BooleanField(default=False)
|
opened = models.BooleanField(default=False)
|
||||||
start_time = models.DateTimeField(default=timezone.now)
|
start_time = models.DateTimeField(default=timezone.now)
|
||||||
end_time = models.DateTimeField(default=timezone.now)
|
end_time = models.DateTimeField(default=timezone.now)
|
||||||
|
editors = ArrayField(models.TextField(), default=list)
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def available(self):
|
def available(self):
|
||||||
|
@ -49,30 +49,13 @@ class UserInfo(models.Model):
|
|||||||
return None
|
return None
|
||||||
return languages[self.favourite_language_id]
|
return languages[self.favourite_language_id]
|
||||||
|
|
||||||
def _append_task(self, task, tasks):
|
@cached_property
|
||||||
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
|
|
||||||
def available_tasks(self):
|
def available_tasks(self):
|
||||||
tasks = []
|
return Task.objects.filter(Q(public=True) | Q(creator=self.user) | Q(editors__in=self.user.username)).order_by('name')
|
||||||
for task in Task.objects.all():
|
|
||||||
self._append_task(task, tasks)
|
|
||||||
return sorted(tasks, key=lambda x: x.time_estimation)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def available_sets(self):
|
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
|
@property
|
||||||
def place(self):
|
def place(self):
|
||||||
|
@ -11,7 +11,6 @@ class SetSettingsView(BaseView):
|
|||||||
|
|
||||||
def get(self):
|
def get(self):
|
||||||
self.context['settasks'] = SetTask.objects.filter(set=self.entities.set).order_by('name')
|
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):
|
def post_save(self):
|
||||||
for key, value in self.request.POST.items():
|
for key, value in self.request.POST.items():
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input type="hidden" name="action" value="edit">
|
<input type="hidden" name="action" value="edit">
|
||||||
{% for task in tasks %}
|
{% for task in user.userinfo.available_tasks %}
|
||||||
<input type="checkbox" {% if task in set.tasks %}checked{% endif %} name="task_{{ task.id }}"> <a href="/task?task_id={{ task.id }}">{{ task.name }}</a><br>
|
<input type="checkbox" {% if task in set.tasks %}checked{% endif %} name="task_{{ task.id }}"> <a href="/task?task_id={{ task.id }}">{{ task.name }}</a><br>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user