Skip to content
Snippets Groups Projects
Commit ecb44c44 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Merge branch 'issue26' into 'master'

Add list of groups and view for group. Advances #26.

See merge request Teckids/BiscuIT/BiscuIT-ng!13
parents 2c958cec 66cd3ce1
No related branches found
No related tags found
1 merge request!13Add list of groups and view for group. Advances #26.
......@@ -14,3 +14,7 @@ Menu.add_item('main', MenuItem('Logout',
Menu.add_item('main', MenuItem(_('Persons'),
reverse('persons'),
check=lambda request: request.user.is_authenticated))
Menu.add_item('main', MenuItem(_('Groups'),
reverse('groups'),
check=lambda request: request.user.is_authenticated))
......@@ -9,3 +9,10 @@ class PersonsTable(tables.Table):
first_name = tables.LinkColumn('person_by_id', args=[A('id')])
last_name = tables.LinkColumn('person_by_id', args=[A('id')])
class GroupsTable(tables.Table):
class Meta:
attrs = {'class': 'table table-striped table-bordered table-hover table-responsive-xl'}
name = tables.LinkColumn('group_by_id', args=[A('id')])
short_name = tables.LinkColumn('group_by_id', args=[A('id')])
{% extends "core/base.html" %}
{% load bootstrap4 font_awesome i18n staticfiles %}
{% block content %}
<div class="col-sm-12 col-md-12">
{% if group %}
<h2>{{ group.name }} <small>{{ group.short_name }}</small></h2>
<p>
<a href="{{ '#' }}">
{% blocktrans %}Edit group{% endblocktrans %}
</a>
</p>
<h3>{% blocktrans %}Details{% endblocktrans %}</h3>
<table class="table table-responsive-xl table-border table-striped">
<tr>
<td>{% fa 'users' %}</td>
<td>{{ group.name }}</td>
<td>{{ group.short_name }}</td>
</tr>
</table>
<h3>Members</h3>
{% render_table persons_table %}
{% else %}
<h2>{% blocktrans %}Person not found{% endblocktrans %}</h2>
<p>
{% blocktrans %}
There is no group with this id.
{% endblocktrans %}
</p>
{% endif %}
</div>
{% endblock %}
{% extends "core/base.html" %}
{% load bootstrap4 i18n %}
{% load render_table from django_tables2 %}
{% block page_title %}{% blocktrans %}Groups{% endblocktrans %}{% endblock %}
{% block content %}
<h2>
{% blocktrans %}List of all groups{% endblocktrans %}
</h2>
{% render_table groups_table %}
{% endblock %}
......@@ -15,6 +15,9 @@ urlpatterns = [
{'template': 'full'}, name='person_by_id'),
path('person/<int:id_>/card', views.person,
{'template': 'card'}, name='person_by_id_card'),
path('groups', views.groups, name='groups'),
path('group/<int:id_>', views.group,
{'template': 'full'}, name='group_by_id'),
path('', views.index, name='index'),
]
......
......@@ -2,8 +2,8 @@ from django.contrib.auth.decorators import login_required
from django.http import Http404
from django.shortcuts import render
from django_tables2 import RequestConfig
from .models import Person
from .tables import PersonsTable
from .models import Person, Group
from .tables import PersonsTable, GroupsTable
def index(request):
......@@ -40,3 +40,43 @@ def person(request, id_, template):
context['person'] = person
return render(request, 'core/person_%s.html' % template, context)
@login_required
def group(request, id_, template):
context = {}
# Get group and check if it exist
try:
group = Group.objects.get(pk=id_)
except Group.DoesNotExist as e:
# Turn not-found object into a 404 error
raise Http404 from e
context['group'] = group
# Get group
group = Group.objects.get(pk=id_)
# Get members
persons = group.members
# Build table
persons_table = PersonsTable(persons)
RequestConfig(request).configure(persons_table)
context['persons_table'] = persons_table
return render(request, 'core/group_%s.html' % template, context)
@login_required
def groups(request):
context = {}
# Get all groups
groups = Group.objects.all()
# Build table
groups_table = GroupsTable(groups)
RequestConfig(request).configure(groups_table)
context['groups_table'] = groups_table
return render(request, 'core/groups.html', context)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment