Skip to content

Commit

Permalink
User - Building units
Browse files Browse the repository at this point in the history
  • Loading branch information
berk76 committed Mar 12, 2024
1 parent 6862415 commit e7db0ec
Show file tree
Hide file tree
Showing 8 changed files with 180 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Generated by Django 5.0.2 on 2024-03-12 10:07
# Generated by Django 5.0.2 on 2024-03-12 13:48

import django.db.models.deletion
from django.conf import settings
Expand Down Expand Up @@ -61,6 +61,7 @@ class Migration(migrations.Migration):
('denominator', models.IntegerField(verbose_name='Denominator')),
('building', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='articles.building', verbose_name='Building')),
('entrance', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='articles.buildingentrance', verbose_name='Entrance')),
('owners', models.ManyToManyField(to=settings.AUTH_USER_MODEL)),
],
options={
'ordering': ['description'],
Expand Down
1 change: 1 addition & 0 deletions svjis/articles/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -220,5 +220,6 @@ class BuildingUnit(models.Model):
description = models.CharField(_("Description"), max_length=50, blank=False)
numerator = models.IntegerField(_("Numerator"), blank=False)
denominator = models.IntegerField(_("Denominator"), blank=False)
owners = models.ManyToManyField(User)
class Meta:
ordering = ['description']
2 changes: 2 additions & 0 deletions svjis/articles/templates/admin_building_unit.html
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ <h1 class="page-title" id="tbl-desc">{% trans 'Building units' %}</h1>
<th class="list" scope="col">{% trans 'Denominator' %}</th>
<th class="list" scope="col">&nbsp;</th>
<th class="list" scope="col">&nbsp;</th>
<th class="list" scope="col">&nbsp;</th>
</tr>

{% if object_list %}
Expand All @@ -30,6 +31,7 @@ <h1 class="page-title" id="tbl-desc">{% trans 'Building units' %}</h1>
<td class="list">{{ obj.description }}</td>
<td class="list">{{ obj.numerator }}</td>
<td class="list">{{ obj.denominator }}</td>
<td class="list"><a href="{% url 'admin_building_unit_owners' pk=obj.pk %}"><img src="/static/gfx/user.png" border="0" title="{% trans 'Owners' %}" alt="{% trans 'Owners' %}"></a></td>
<td class="list"><a href="{% url 'admin_building_unit_edit' pk=obj.pk %}"><img src="/static/gfx/pencil.png" border="0" title="{% trans 'Edit' %}" alt="{% trans 'Edit' %}"></a></td>
<td class="list"><a href="{% url 'admin_building_unit_delete' pk=obj.id %}"><img src="/static/gfx/delete.png" border="0" title="{% trans 'Delete' %}" alt="{% trans 'Delete' %}"></a></td>
</tr>
Expand Down
43 changes: 43 additions & 0 deletions svjis/articles/templates/admin_building_unit_owners_edit.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{% extends "base-with-aside-menu-content.html" %}

{% load i18n %}

{% block content %}

<h1 class="page-title" id="tbl-desc">{{ bu.type.description }} - {{ bu.registration_id }} - {{ bu.description }}</h1>

<table class="list" aria-describedby="tbl-desc">
<tr>
<th class="list" scope="col">&nbsp;</th>
<th class="list" scope="col">{% trans 'First Name' %}</th>
<th class="list" scope="col">{% trans 'Last Name' %}</th>
<th class="list" scope="col">&nbsp;</th>
</tr>

{% if bu.owners.all %}
{% for obj in bu.owners.all %}
<tr>
<td class="list">{{ forloop.counter }}</td>
<td class="list">{{ obj.first_name }}</td>
<td class="list">{{ obj.last_name }}</td>
<td class="list"><a href="{% url 'admin_building_unit_owners_delete' pk=pk owner=obj.pk %}"><img src="/static/gfx/delete.png" border="0" title="{% trans 'Delete' %}" alt="{% trans 'Delete' %}"></a></td>
</tr>
{% endfor %}
{% endif %}
</table>

{% if user_list %}
<form action="{% url 'admin_building_unit_owners_save' %}" method="post">
{% csrf_token %}
<input type="hidden" name="pk" value="{{ pk }}" />
<select class="common-input" id="owner-input" name="owner_id">
<option value="0">------</option>
{% for u in user_list %}
<option value="{{ u.id }}">{{ u.last_name }} {{ u.first_name }}</option>
{% endfor %}
</select>
<input id="submit" type="submit" value="{% trans 'Add' %}" />
</form>
{% endif %}

{% endblock %}
2 changes: 2 additions & 0 deletions svjis/articles/templates/admin_user.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ <h1 class="page-title" id="tbl-desc">{% trans 'User' %}</h1>

<table class="list" width="100%" aria-describedby="tbl-desc">
<tr>
<th class="list" scope="col">&nbsp;</th>
<th class="list" scope="col">&nbsp;</th>
<th class="list" scope="col">&nbsp;</th>
<th class="list" scope="col">{% trans 'Last name' %}</th>
Expand All @@ -23,6 +24,7 @@ <h1 class="page-title" id="tbl-desc">{% trans 'User' %}</h1>
<tr>
<td class="list">{{ forloop.counter }}</td>
<td class="list"><a href="{% url 'admin_user_edit' pk=obj.pk %}"><img src="/static/gfx/pencil.png" border="0" title="{% trans 'Edit' %}" alt="{% trans 'Edit' %}"></a></td>
<td class="list"><a href="{% url 'admin_user_owns' pk=obj.pk %}"><img src="/static/gfx/house.png" border="0" title="{% trans 'Units' %}" alt="{% trans 'Units' %}"></a></td>
<td class="list">{{ obj.last_name }}</td>
<td class="list">{{ obj.first_name }}</td>
<td class="list">{{ obj.is_active }}</td>
Expand Down
45 changes: 45 additions & 0 deletions svjis/articles/templates/admin_user_ownes_edit.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{% extends "base-with-aside-menu-content.html" %}

{% load i18n %}

{% block content %}

<h1 class="page-title" id="tbl-desc">{{ u.first_name }} {{ u.last_name }}</h1>

<table class="list" aria-describedby="tbl-desc">
<tr>
<th class="list" scope="col">&nbsp;</th>
<th class="list" scope="col">{% trans 'Type' %}</th>
<th class="list" scope="col">{% trans 'Registration Id' %}</th>
<th class="list" scope="col">{% trans 'Description' %}</th>
<th class="list" scope="col">&nbsp;</th>
</tr>

{% if u.buildingunit_set.all %}
{% for obj in u.buildingunit_set.all %}
<tr>
<td class="list">{{ forloop.counter }}</td>
<td class="list">{{ obj.type.description }}</td>
<td class="list">{{ obj.registration_id }}</td>
<td class="list">{{ obj.description }}</td>
<td class="list"><a href="{% url 'admin_user_owns_delete' pk=pk owner=obj.pk %}"><img src="/static/gfx/delete.png" border="0" title="{% trans 'Delete' %}" alt="{% trans 'Delete' %}"></a></td>
</tr>
{% endfor %}
{% endif %}
</table>

{% if bu_list %}
<form action="{% url 'admin_user_owns_save' %}" method="post">
{% csrf_token %}
<input type="hidden" name="pk" value="{{ pk }}" />
<select class="common-input" id="owner-input" name="owner_id">
<option value="0">------</option>
{% for bu in bu_list %}
<option value="{{ bu.id }}">{{ bu.type.description }} - {{ bu.registration_id }} - {{ bu.description }}</option>
{% endfor %}
</select>
<input id="submit" type="submit" value="{% trans 'Add' %}" />
</form>
{% endif %}

{% endblock %}
6 changes: 6 additions & 0 deletions svjis/articles/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,15 @@
path('admin_building_unit_edit/<int:pk>/', views_admin.admin_building_unit_edit_view, name='admin_building_unit_edit'),
path('admin_building_unit_save/', views_admin.admin_building_unit_save_view, name='admin_building_unit_save'),
path('admin_building_unit_delete/<int:pk>/', views_admin.admin_building_unit_delete_view, name='admin_building_unit_delete'),
path('admin_building_unit_owners/<int:pk>/', views_admin.admin_building_unit_owners_view, name='admin_building_unit_owners'),
path('admin_building_unit_owners_save', views_admin.admin_building_unit_owners_save_view, name='admin_building_unit_owners_save'),
path('admin_building_unit_owners_delete/<int:pk>/<int:owner>/', views_admin.admin_building_unit_owners_delete_view, name='admin_building_unit_owners_delete'),
path('admin_user/', views_admin.admin_user_view, name='admin_user'),
path('admin_user_edit/<int:pk>/', views_admin.admin_user_edit_view, name='admin_user_edit'),
path('admin_user_save/', views_admin.admin_user_save_view, name='admin_user_save'),
path('admin_user_owns/<int:pk>/', views_admin.admin_user_owns_view, name='admin_user_owns'),
path('admin_user_owns_save', views_admin.admin_user_owns_save_view, name='admin_user_owns_save'),
path('admin_user_owns_delete/<int:pk>/<int:owner>/', views_admin.admin_user_owns_delete_view, name='admin_user_owns_delete'),
path('admin_group/', views_admin.admin_group_view, name='admin_group'),
path('admin_group_edit/<int:pk>/', views_admin.admin_group_edit_view, name='admin_group_edit'),
path('admin_group_save/', views_admin.admin_group_save_view, name='admin_group_save'),
Expand Down
79 changes: 79 additions & 0 deletions svjis/articles/views_admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,46 @@ def admin_building_unit_delete_view(request, pk):
return redirect(admin_building_unit_view)


@permission_required("articles.svjis_edit_admin_building")
@require_GET
def admin_building_unit_owners_view(request, pk):
bu = get_object_or_404(models.BuildingUnit, pk=pk)
user_list = [ u for u in User.objects.filter(is_active=True).order_by('last_name') if u not in bu.owners.all()]

ctx = {
'aside_menu_name': _("Administration"),
}
ctx['bu'] = bu
ctx['pk'] = pk
ctx['user_list'] = user_list
ctx['aside_menu_items'] = get_side_menu('units', request.user)
ctx['tray_menu_items'] = utils.get_tray_menu('admin', request.user)
return render(request, "admin_building_unit_owners_edit.html", ctx)


@permission_required("articles.svjis_edit_admin_building")
@require_POST
def admin_building_unit_owners_save_view(request):
pk = int(request.POST['pk'])
owner_id = int(request.POST['owner_id'])

if owner_id > 0:
bu = get_object_or_404(models.BuildingUnit, pk=pk)
u = get_object_or_404(User, pk=owner_id)
bu.owners.add(u)

return redirect(admin_building_unit_owners_view, pk=pk)


@permission_required("articles.svjis_edit_admin_building")
@require_GET
def admin_building_unit_owners_delete_view(request, pk, owner):
bu = get_object_or_404(models.BuildingUnit, pk=pk)
u = get_object_or_404(User, pk=owner)
bu.owners.remove(u)
return redirect(admin_building_unit_owners_view, pk=pk)


# Administration - User
@permission_required("articles.svjis_edit_admin_users")
@require_GET
Expand Down Expand Up @@ -390,6 +430,45 @@ def admin_user_save_view(request):
return redirect(admin_user_view)


@permission_required("articles.svjis_edit_admin_users")
@require_GET
def admin_user_owns_view(request, pk):
u = get_object_or_404(User, pk=pk)
bu_list = [ bu for bu in models.BuildingUnit.objects.all().order_by('description') if bu not in u.buildingunit_set.all()]
ctx = {
'aside_menu_name': _("Administration"),
}
ctx['u'] = u
ctx['pk'] = pk
ctx['bu_list'] = bu_list
ctx['aside_menu_items'] = get_side_menu('users', request.user)
ctx['tray_menu_items'] = utils.get_tray_menu('admin', request.user)
return render(request, "admin_user_ownes_edit.html", ctx)


@permission_required("articles.svjis_edit_admin_users")
@require_POST
def admin_user_owns_save_view(request):
pk = int(request.POST['pk'])
owner_id = int(request.POST['owner_id'])

if owner_id > 0:
u = get_object_or_404(User, pk=pk)
bu = get_object_or_404(models.BuildingUnit, pk=owner_id)
u.buildingunit_set.add(bu)

return redirect(admin_user_owns_view, pk=pk)


@permission_required("articles.svjis_edit_admin_users")
@require_GET
def admin_user_owns_delete_view(request, pk, owner):
u = get_object_or_404(User, pk=pk)
bu = get_object_or_404(models.BuildingUnit, pk=owner)
u.buildingunit_set.remove(bu)
return redirect(admin_user_owns_view, pk=pk)


# Administration - Group
@permission_required("articles.svjis_edit_admin_groups")
@require_GET
Expand Down

0 comments on commit e7db0ec

Please sign in to comment.