Skip to content
Snippets Groups Projects
Commit 0c392d02 authored by James Graham's avatar James Graham
Browse files

Rename Institution to OrganisationalUnit - #30

Accounts for them to be created to manage e.g. research projects
parent 79055a79
No related branches found
No related tags found
No related merge requests found
...@@ -7,6 +7,6 @@ from . import models ...@@ -7,6 +7,6 @@ from . import models
admin.site.register(models.User, UserAdmin) admin.site.register(models.User, UserAdmin)
@admin.register(models.Institution) @admin.register(models.OrganisationalUnit)
class InstitutionAdmin(admin.ModelAdmin): class OrganisationalUnitAdmin(admin.ModelAdmin):
pass pass
# Generated by Django 2.0.8 on 2018-11-15 09:45
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('profiles', '0002_add_institution'),
]
operations = [
migrations.RenameModel(
old_name='Institution',
new_name='OrganisationalUnit',
),
migrations.RenameField(
model_name='user',
old_name='institution',
new_name='organisational_unit',
),
]
...@@ -7,12 +7,12 @@ from django.urls import reverse ...@@ -7,12 +7,12 @@ from django.urls import reverse
from core.models import MAX_LENGTH_NAME from core.models import MAX_LENGTH_NAME
class Institution(models.Model): class OrganisationalUnit(models.Model):
""" """
Model representing the institution with which a user is associated. Model representing the organisational unit with which a user is associated.
""" """
@enum.unique @enum.unique
class InstitutionType(enum.Enum): class OrganisationalUnitType(enum.Enum):
ACADEMIC = 'aca' ACADEMIC = 'aca'
BUSINESS = 'bus' BUSINESS = 'bus'
CHARITY = 'cha' CHARITY = 'cha'
...@@ -23,18 +23,24 @@ class Institution(models.Model): ...@@ -23,18 +23,24 @@ class Institution(models.Model):
def choices(cls): def choices(cls):
return tuple((i.value, i.name.title()) for i in cls) return tuple((i.value, i.name.title()) for i in cls)
#: Name of the institution #: Name of the organisational unit
name = models.CharField(max_length=MAX_LENGTH_NAME, name = models.CharField(max_length=MAX_LENGTH_NAME,
blank=False, null=False) blank=False, null=False)
#: Type of institution - e.g. academic, business, etc. #: Type of organisational_unit - e.g. academic, business, etc.
type = models.CharField(max_length=3, type = models.CharField(max_length=3,
choices=InstitutionType.choices(), choices=OrganisationalUnitType.choices(),
blank=False, null=False) blank=False, null=False)
@property
def all_auditors(self):
return self.auditors.union(
User.objects.filter(is_superauditor=True)
)
@property @property
def auditors(self): def auditors(self):
return self.users.filter(is_auditor=True) + User.objects.filter(is_superauditor=True) return self.users.filter(is_auditor=True)
def __str__(self): def __str__(self):
return self.name return self.name
...@@ -44,12 +50,12 @@ class User(AbstractUser): ...@@ -44,12 +50,12 @@ class User(AbstractUser):
""" """
Model representing a user of PEDASI. Model representing a user of PEDASI.
""" """
#: Institution to which this user belongs #: Organisational unit to which this user belongs
institution = models.ForeignKey(Institution, related_name='users', organisational_unit = models.ForeignKey(OrganisationalUnit, related_name='users',
on_delete=models.SET_NULL, on_delete=models.SET_NULL,
blank=True, null=True) blank=True, null=True)
#: Is this user an auditor of their institution? #: Is this user an auditor of their organisational unit?
is_auditor = models.BooleanField(default=False, is_auditor = models.BooleanField(default=False,
blank=False, null=False) blank=False, null=False)
......
...@@ -8,14 +8,32 @@ ...@@ -8,14 +8,32 @@
<a href="{% url 'index' %}">Home</a> <a href="{% url 'index' %}">Home</a>
</li> </li>
<li class="breadcrumb-item" aria-current="page"> <li class="breadcrumb-item" aria-current="page">
Institutions Organisational Units
</li> </li>
<li class="breadcrumb-item active" aria-current="page"> <li class="breadcrumb-item active" aria-current="page">
{{ institution.name }} {{ organisational_unit.name }}
</li> </li>
</ol> </ol>
</nav> </nav>
<h2>{{ institution.name }}</h2> <h2>{{ organisational_unit.name }}</h2>
<h4 class="pt-3">Auditors</h4>
<table class="table">
<thead>
<tr>
<th scope="col">Name</th>
</tr>
</thead>
<tbody>
{% for auditor in organisational_unit.auditors.all %}
<tr>
<td>{{ auditor.get_full_name }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %} {% endblock %}
\ No newline at end of file
...@@ -22,12 +22,12 @@ ...@@ -22,12 +22,12 @@
</thead> </thead>
<tbody> <tbody>
{% if request.user.institution %} {% if request.user.organisational_unit %}
<tr> <tr>
<td>Institution</td> <td>Organisational Unit</td>
<td> <td>
{{ request.user.institution.name }} {{ request.user.organisational_unit.name }}
<a href="{% url 'profiles:institution.detail' pk=request.user.institution_id %}" <a href="{% url 'profiles:organisational_unit.detail' pk=request.user.organisational_unit_id %}"
class="btn btn-info">Detail</a> class="btn btn-info">Detail</a>
</td> </td>
</tr> </tr>
......
...@@ -19,7 +19,7 @@ urlpatterns = [ ...@@ -19,7 +19,7 @@ urlpatterns = [
views.user.UserUriView.as_view(), views.user.UserUriView.as_view(),
name='uri'), name='uri'),
path('institutions/<int:pk>', path('orgunit/<int:pk>',
views.institution.InstitutionDetailView.as_view(), views.organisational_unit.OrganisationalUnitDetailView.as_view(),
name='institution.detail'), name='organisational_unit.detail'),
] ]
...@@ -3,9 +3,9 @@ from django.views.generic import TemplateView ...@@ -3,9 +3,9 @@ from django.views.generic import TemplateView
from applications.models import Application from applications.models import Application
from datasources.models import DataSource from datasources.models import DataSource
from . import institution, user from . import organisational_unit, user
__all__ = ['IndexView', 'institution', 'user'] __all__ = ['IndexView', 'organisational_unit', 'user']
class IndexView(TemplateView): class IndexView(TemplateView):
......
from django.views.generic.detail import DetailView
from profiles import models
class InstitutionDetailView(DetailView):
model = models.Institution
template_name = 'profiles/institution/detail.html'
context_object_name = 'institution'
from django.views.generic.detail import DetailView
from profiles import models
class OrganisationalUnitDetailView(DetailView):
model = models.OrganisationalUnit
template_name = 'profiles/organisational_unit/detail.html'
context_object_name = 'organisational_unit'
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment