Fixing is_private attribute
parent
44e6f7c42d
commit
cff56f1d86
|
@ -105,7 +105,12 @@ def get_user_project_permissions(user, project):
|
||||||
return set(owner_permissions + members_permissions + public_permissions + anon_permissions)
|
return set(owner_permissions + members_permissions + public_permissions + anon_permissions)
|
||||||
|
|
||||||
|
|
||||||
def set_base_permissions_for_public_project(project):
|
def set_base_permissions_for_project(project):
|
||||||
|
if project.is_private:
|
||||||
|
project.anon_permissions = []
|
||||||
|
project.public_permissions = []
|
||||||
|
|
||||||
|
else:
|
||||||
"""
|
"""
|
||||||
If a project is public anonymous and registered users should have at least visualization permissions
|
If a project is public anonymous and registered users should have at least visualization permissions
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -168,6 +168,20 @@ class ProjectViewSet(ModelCrudViewSet):
|
||||||
services.remove_user_from_project(request.user, project)
|
services.remove_user_from_project(request.user, project)
|
||||||
return response.Ok()
|
return response.Ok()
|
||||||
|
|
||||||
|
def _set_base_permissions(self, obj):
|
||||||
|
update_permissions = False
|
||||||
|
if not obj.id:
|
||||||
|
if not obj.is_private:
|
||||||
|
# Creating a public project
|
||||||
|
update_permissions = True
|
||||||
|
else:
|
||||||
|
if self.get_object().is_private != obj.is_private:
|
||||||
|
# Changing project public state
|
||||||
|
update_permissions = True
|
||||||
|
|
||||||
|
if update_permissions:
|
||||||
|
permissions_service.set_base_permissions_for_project(obj)
|
||||||
|
|
||||||
def pre_save(self, obj):
|
def pre_save(self, obj):
|
||||||
if not obj.id:
|
if not obj.id:
|
||||||
obj.owner = self.request.user
|
obj.owner = self.request.user
|
||||||
|
@ -176,10 +190,7 @@ class ProjectViewSet(ModelCrudViewSet):
|
||||||
if not obj.id:
|
if not obj.id:
|
||||||
obj.template = self.request.QUERY_PARAMS.get('template', None)
|
obj.template = self.request.QUERY_PARAMS.get('template', None)
|
||||||
|
|
||||||
# Update anon permissions if the project is public
|
self._set_base_permissions(obj)
|
||||||
if obj.is_private == False:
|
|
||||||
permissions_service.set_base_permissions_for_public_project(obj)
|
|
||||||
|
|
||||||
super().pre_save(obj)
|
super().pre_save(obj)
|
||||||
|
|
||||||
def destroy(self, request, *args, **kwargs):
|
def destroy(self, request, *args, **kwargs):
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
def update_existing_projects(apps, schema_editor):
|
||||||
|
Project = apps.get_model("projects", "Project")
|
||||||
|
Project.objects.filter(is_private=False).update(is_private=True)
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('projects', '0016_fix_json_field_not_null'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='project',
|
||||||
|
name='is_private',
|
||||||
|
field=models.BooleanField(verbose_name='is private', default=True),
|
||||||
|
preserve_default=True,
|
||||||
|
),
|
||||||
|
migrations.RunPython(update_existing_projects),
|
||||||
|
]
|
|
@ -160,7 +160,7 @@ class Project(ProjectDefaults, TaggedMixin, models.Model):
|
||||||
default=[],
|
default=[],
|
||||||
verbose_name=_("user permissions"),
|
verbose_name=_("user permissions"),
|
||||||
choices=USER_PERMISSIONS)
|
choices=USER_PERMISSIONS)
|
||||||
is_private = models.BooleanField(default=False, null=False, blank=True,
|
is_private = models.BooleanField(default=True, null=False, blank=True,
|
||||||
verbose_name=_("is private"))
|
verbose_name=_("is private"))
|
||||||
|
|
||||||
tags_colors = TextArrayField(dimension=2, null=False, blank=True, verbose_name=_("tags colors"), default=[])
|
tags_colors = TextArrayField(dimension=2, null=False, blank=True, verbose_name=_("tags colors"), default=[])
|
||||||
|
|
Loading…
Reference in New Issue