Moved project list to model

This commit is contained in:
Tris Forster
2023-02-23 18:37:21 +11:00
parent 6ec5808275
commit f49ff0fd0e
3 changed files with 22 additions and 12 deletions
+13
View File
@@ -134,6 +134,19 @@ class Project(models.Model):
def auth(self):
return sign_data(f'{self.pk}-{self.nonce}', 12)
@classmethod
def for_user(cls, user, project_keys=[], ensemble_keys=[]):
projects = cls.objects.select_related('ensemble')
if user.is_superuser:
return projects
f = models.Q(pk__in=project_keys) | models.Q(ensemble__slug__in=ensemble_keys)
if user.is_authenticated:
f |= models.Q(ensemble__admins=user.pk)
return projects.filter(f)
def __str__(self):
return self.name
+3 -10
View File
@@ -254,16 +254,9 @@ class ProjectListView(ProjectMixin, ListView):
return True
def get_project_queryset(self):
projects = models.Project.objects.select_related('ensemble')
if self.request.is_admin:
return projects
f = Q(pk__in=self.get_authorized_keys('project').keys()) | Q(ensemble__slug__in=self.get_authorized_keys('ensemble').keys())
if self.request.user.is_authenticated:
f |= Q(ensemble__admins=self.request.user.pk)
return projects.filter(f)
return models.Project.for_user(self.request.user,
self.get_authorized_keys('project'),
self.get_authorized_keys('ensemble'))
def get_queryset(self):
qs = self.get_project_queryset()