Skip to content

Commit

Permalink
* Update the rest of the permissions page to use the new system of ac…
Browse files Browse the repository at this point in the history
…cess control.
  • Loading branch information
bgroff committed Sep 19, 2018
1 parent 070ac0f commit caea292
Show file tree
Hide file tree
Showing 5 changed files with 106 additions and 66 deletions.
5 changes: 5 additions & 0 deletions django_kala/organizations/forms/settings/manage_access.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@ def __init__(self, *args, **kwargs):
except KeyError:
self.permissions_dict[permission.user.pk] = [permission.permission.codename]

try:
self.permissions_dict[self.user.pk]
except KeyError:
self.is_empty = True

super(ManageAccessForm, self).__init__(*args, **kwargs)
self.fields['add_organization_{0}'.format(self.user.pk)] = forms.BooleanField(
required=False,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,7 @@
<thead>
<tr>
<th>{% trans 'Name' %}</th>
<th>{% trans 'Create projects' %}</th>
<th>{% trans 'Manage organization' %}</th>
<th>{% trans 'Delete organization' %}</th>
<th>{% trans 'Permissions' %}</th>
</tr>
</thead>
{% for form in forms %}
Expand All @@ -75,30 +73,23 @@ <h4 class="ui header">
</h4>
</td>
<td>
<div class="ui toggle checkbox">
{% for field in form %}
{% if 'add_organization' in field.name %}
{{ field }}
{% endif %}
{% endfor %}
</div>
</td>
<td>
<div class="ui toggle checkbox">
{% for field in form %}
{% if 'change_organization' in field.name %}
{{ field }}
{% endif %}
{% endfor %}
</div>
</td>
<td>
<div class="ui toggle checkbox">
{% for field in form %}
{% if 'delete_organization' in field.name %}
{{ field }}
{% endif %}
{% endfor %}
<input type="hidden"
id="{% for field in form %}{% if 'add_organization' in field.name %}{{ field.auto_id }}{% endif %}{% endfor %}"
name="{% for field in form %}{% if 'add_organization' in field.name %}{{ field.name }}{% endif %}{% endfor %}"
value="{% for field in form %}{% if 'add_organization' in field.name %}{{ field.initial }}{% endif %}{% endfor %}">
<input type="hidden"
id="{% for field in form %}{% if 'change_organization' in field.name %}{{ field.auto_id }}{% endif %}{% endfor %}"
name="{% for field in form %}{% if 'change_organization' in field.name %}{{ field.name }}{% endif %}{% endfor %}"
value="{% for field in form %}{% if 'change_organization' in field.name %}{{ field.initial }}{% endif %}{% endfor %}">
<input type="hidden"
id="{% for field in form %}{% if 'delete_organization' in field.name %}{{ field.auto_id }}{% endif %}{% endfor %}"
name="{% for field in form %}{% if 'delete_organization' in field.name %}{{ field.name }}{% endif %}{% endfor %}"
value="{% for field in form %}{% if 'delete_organization' in field.name %}{{ field.initial }}{% endif %}{% endfor %}">
<div class="ui buttons">
<button type="button" class="ui button {% if form.is_empty %}active{% endif %}" data-value="none_{% for field in form %}{% if 'add_organization' in field.name %}{{ field.auto_id }}{% endif %}{% endfor %}"><i class="circle slash icon"></i>None</button>
<button type="button" class="ui button {% for field in form %}{% if 'add_organization' in field.name %}{% if field.initial %}active{% endif %}{% endif %}{% endfor %}" data-value="{% for field in form %}{% if 'add_organization' in field.name %}{{ field.auto_id }}{% endif %}{% endfor %}"><i class="plus icon"></i>Create</button>
<button type="button" class="ui button {% for field in form %}{% if 'change_organization' in field.name %}{% if field.initial %}active{% endif %}{% endif %}{% endfor %}" data-value="{% for field in form %}{% if 'change_organization' in field.name %}{{ field.auto_id }}{% endif %}{% endfor %}"><i class="megaphone icon"></i>Invite</button>
<button type="button" class="ui button {% for field in form %}{% if 'delete_organization' in field.name %}{% if field.initial %}active{% endif %}{% endif %}{% endfor %}" data-value="{% for field in form %}{% if 'delete_organization' in field.name %}{{ field.auto_id }}{% endif %}{% endfor %}"><i class="briefcase icon"></i>Manage</button>
</div>
</td>
</tr>
Expand All @@ -114,11 +105,34 @@ <h4 class="ui header">

{% block scripts %}
<script>
{# $('.ui.styled.fluid.accordion')#}
{# .accordion()#}
{# ;#}
$('.ui.checkbox')
.checkbox()
;
var
$buttons = $('.ui.buttons .button'),
handler = {
activate: function () {
$(this)
.addClass('active')
.siblings()
.removeClass('active')
;
let val = $(this).data('value');
let parts = val.split('_');
$("#id_add_organization_" + parts[parts.length - 1]).val("False");
$("#id_change_organization_" + parts[parts.length - 1]).val("False");
$("#id_delete_organization_" + parts[parts.length - 1]).val("False");
if (parts[0] !== "none") {
$("#" + val).val("True")
}
}

}
;

$buttons
.on('click', handler.activate)
;
</script>
{% endblock %}

Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@ def __init__(self, *args, **kwargs):
)

def save(self):
print(self.cleaned_data)
# TODO, this can be sped up by using the permissions dict.
if self.cleaned_data['add_document_{0}'.format(self.user.pk)]:
if 'add_document' not in self.permissions_dict.get(self.user.pk, []):
Expand Down
4 changes: 4 additions & 0 deletions django_kala/projects/forms/projects/settings/manage_access.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ def __init__(self, *args, **kwargs):
self.permissions_dict[permission.user.pk].append(permission.permission.codename)
except KeyError:
self.permissions_dict[permission.user.pk] = [permission.permission.codename]
try:
self.permissions_dict[self.user.pk]
except KeyError:
self.is_empty = True

super(ManageAccessForm, self).__init__(*args, **kwargs)
self.fields['add_project_{0}'.format(self.user.pk)] = forms.BooleanField(
Expand Down
88 changes: 53 additions & 35 deletions django_kala/projects/templates/projects/settings/manage_access.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
<div class="repo ribbon">
<div class="ui container">
<div class="ui big breadcrumb">
<a class="section" href="{% url 'organizations:organization' project.organization.pk %}">{{ project.organization }}</a>
<a class="section"
href="{% url 'organizations:organization' project.organization.pk %}">{{ project.organization }}</a>
<div class="divider"> /</div>
<span class="active section">{{ project }}</span>
</div>
Expand Down Expand Up @@ -48,20 +49,24 @@
<div class="item">
<div class="header">{% trans 'People' %}</div>
<div class="menu">
<a class="active item" href="{% url 'projects:manage_access' project.pk %}">{% trans 'Manage access' %}</a>
<a class="active item"
href="{% url 'projects:manage_access' project.pk %}">{% trans 'Manage access' %}</a>
</div>
</div>
<div class="item">
<div class="header">{% trans 'Organizations' %}</div>
<div class="menu">
<a class="item" href="{% url 'projects:transfer_ownership' project.pk %}">{% trans 'Transfer ownership' %}</a>
<a class="item"
href="{% url 'projects:transfer_ownership' project.pk %}">{% trans 'Transfer ownership' %}</a>
</div>
</div>
<div class="item">
<div class="header">{% trans 'Categories' %}</div>
<div class="menu">
<a class="item" href="{% url 'projects:categories' project.pk %}">{% trans 'Manage categories' %}</a>
<a class="item" href="{% url 'projects:new_category' project.pk %}">{% trans 'New category' %}</a>
<a class="item"
href="{% url 'projects:categories' project.pk %}">{% trans 'Manage categories' %}</a>
<a class="item"
href="{% url 'projects:new_category' project.pk %}">{% trans 'New category' %}</a>
</div>
</div>
</div>
Expand All @@ -83,9 +88,7 @@
<thead>
<tr>
<th>{% trans 'Name' %}</th>
<th>{% trans 'Create documents' %}</th>
<th>{% trans 'Manage people' %}</th>
<th>{% trans 'Delete documents' %}</th>
<th>{% trans 'Manage acess' %}</th>
</tr>
</thead>
{% for form in forms %}
Expand All @@ -98,32 +101,25 @@ <h4 class="ui header">
</h4>
</td>
<td>
<div class="ui toggle checkbox">
{% for field in form %}
{% if 'add_project' in field.name %}
{{ field }}
{% endif %}
{% endfor %}
</div>
</td>
<td>
<div class="ui toggle checkbox">
{% for field in form %}
{% if 'change_project' in field.name %}
{{ field }}
{% endif %}
{% endfor %}
</div>
</td>
<td>
<div class="ui toggle checkbox">
{% for field in form %}
{% if 'delete_project' in field.name %}
{{ field }}
{% endif %}
{% endfor %}
<input type="hidden"
id="{% for field in form %}{% if 'add_project' in field.name %}{{ field.auto_id }}{% endif %}{% endfor %}"
name="{% for field in form %}{% if 'add_project' in field.name %}{{ field.name }}{% endif %}{% endfor %}"
value="{% for field in form %}{% if 'add_project' in field.name %}{{ field.initial }}{% endif %}{% endfor %}">
<input type="hidden"
id="{% for field in form %}{% if 'change_project' in field.name %}{{ field.auto_id }}{% endif %}{% endfor %}"
name="{% for field in form %}{% if 'change_project' in field.name %}{{ field.name }}{% endif %}{% endfor %}"
value="{% for field in form %}{% if 'change_project' in field.name %}{{ field.initial }}{% endif %}{% endfor %}">
<input type="hidden"
id="{% for field in form %}{% if 'delete_project' in field.name %}{{ field.auto_id }}{% endif %}{% endfor %}"
name="{% for field in form %}{% if 'delete_project' in field.name %}{{ field.name }}{% endif %}{% endfor %}"
value="{% for field in form %}{% if 'delete_project' in field.name %}{{ field.initial }}{% endif %}{% endfor %}">
<div class="ui buttons">
<button type="button" class="ui button {% if form.is_empty %}active{% endif %}" data-value="none_{% for field in form %}{% if 'add_project' in field.name %}{{ field.auto_id }}{% endif %}{% endfor %}"><i class="circle slash icon"></i>None</button>
<button type="button" class="ui button {% for field in form %}{% if 'add_project' in field.name %}{% if field.initial %}active{% endif %}{% endif %}{% endfor %}" data-value="{% for field in form %}{% if 'add_project' in field.name %}{{ field.auto_id }}{% endif %}{% endfor %}"><i class="plus icon"></i>Create</button>
<button type="button" class="ui button {% for field in form %}{% if 'change_project' in field.name %}{% if field.initial %}active{% endif %}{% endif %}{% endfor %}" data-value="{% for field in form %}{% if 'change_project' in field.name %}{{ field.auto_id }}{% endif %}{% endfor %}"><i class="megaphone icon"></i>Invite</button>
<button type="button" class="ui button {% for field in form %}{% if 'delete_project' in field.name %}{% if field.initial %}active{% endif %}{% endif %}{% endfor %}" data-value="{% for field in form %}{% if 'delete_project' in field.name %}{{ field.auto_id }}{% endif %}{% endfor %}"><i class="briefcase icon"></i>Manage</button>
</div>
</td>
</tr>
{% endfor %}
</table>
Expand All @@ -137,11 +133,33 @@ <h4 class="ui header">

{% block scripts %}
<script>
$('.ui.styled.fluid.accordion')
.accordion()
;
$('.ui.checkbox')
.checkbox()
;
var
$buttons = $('.ui.buttons .button'),
handler = {
activate: function () {
$(this)
.addClass('active')
.siblings()
.removeClass('active')
;
let val = $(this).data('value');
let parts = val.split('_');
$("#id_add_project_" + parts[parts.length - 1]).val("False");
$("#id_change_project_" + parts[parts.length - 1]).val("False");
$("#id_delete_project_" + parts[parts.length - 1]).val("False");
if (parts[0] !== "none") {
$("#" + val).val("True")
}
}

}
;

$buttons
.on('click', handler.activate)
;
</script>
{% endblock %}

0 comments on commit caea292

Please sign in to comment.