add services
This commit is contained in:
parent
b4074005b4
commit
d9ec205c4e
|
@ -1,6 +1,5 @@
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from idhub.models import Membership
|
|
||||||
|
|
||||||
|
|
||||||
class ProfileForm(forms.ModelForm):
|
class ProfileForm(forms.ModelForm):
|
||||||
|
@ -18,3 +17,7 @@ class MembershipForm(forms.ModelForm):
|
||||||
class RolForm(forms.ModelForm):
|
class RolForm(forms.ModelForm):
|
||||||
MANDATORY_FIELDS = ['name']
|
MANDATORY_FIELDS = ['name']
|
||||||
|
|
||||||
|
|
||||||
|
class ServiceForm(forms.ModelForm):
|
||||||
|
MANDATORY_FIELDS = ['domain', 'rol']
|
||||||
|
|
||||||
|
|
|
@ -7,9 +7,9 @@ from django.contrib.auth.models import User
|
||||||
from django.shortcuts import get_object_or_404, redirect
|
from django.shortcuts import get_object_or_404, redirect
|
||||||
from django.urls import reverse_lazy
|
from django.urls import reverse_lazy
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from idhub.models import Membership, Rol
|
from idhub.models import Membership, Rol, Service
|
||||||
from idhub.mixins import AdminView
|
from idhub.mixins import AdminView
|
||||||
from idhub.admin.forms import ProfileForm, MembershipForm, RolForm
|
from idhub.admin.forms import ProfileForm, MembershipForm, RolForm, ServiceForm
|
||||||
|
|
||||||
|
|
||||||
class AdminDashboardView(AdminView, TemplateView):
|
class AdminDashboardView(AdminView, TemplateView):
|
||||||
|
@ -224,42 +224,18 @@ class AdminRolesView(AccessControl):
|
||||||
class AdminRolRegisterView(AccessControl, CreateView):
|
class AdminRolRegisterView(AccessControl, CreateView):
|
||||||
template_name = "idhub/admin_rol_register.html"
|
template_name = "idhub/admin_rol_register.html"
|
||||||
subtitle = _('Add Rol')
|
subtitle = _('Add Rol')
|
||||||
icon = 'bi bi-person'
|
icon = ''
|
||||||
model = Rol
|
model = Rol
|
||||||
from_class = RolForm
|
from_class = RolForm
|
||||||
fields = ('name',)
|
fields = ('name',)
|
||||||
success_url = reverse_lazy('idhub:admin_roles')
|
success_url = reverse_lazy('idhub:admin_roles')
|
||||||
object = None
|
object = None
|
||||||
|
|
||||||
# class AdminPeopleMembershipRegisterView(People, CreateView):
|
|
||||||
# template_name = "idhub/admin_people_membership_register.html"
|
|
||||||
|
|
||||||
# def get(self, request, *args, **kwargs):
|
|
||||||
# self.pk = kwargs['pk']
|
|
||||||
# self.user = get_object_or_404(User, pk=self.pk)
|
|
||||||
# return super().get(request, *args, **kwargs)
|
|
||||||
|
|
||||||
# def post(self, request, *args, **kwargs):
|
|
||||||
# self.pk = kwargs['pk']
|
|
||||||
# self.user = get_object_or_404(User, pk=self.pk)
|
|
||||||
# return super().post(request, *args, **kwargs)
|
|
||||||
|
|
||||||
# def get_form(self):
|
|
||||||
# form = super().get_form()
|
|
||||||
# form.fields['start_date'].widget.input_type = 'date'
|
|
||||||
# form.fields['end_date'].widget.input_type = 'date'
|
|
||||||
# return form
|
|
||||||
|
|
||||||
# def get_form_kwargs(self):
|
|
||||||
# self.object = self.model(user=self.user)
|
|
||||||
# kwargs = super().get_form_kwargs()
|
|
||||||
# return kwargs
|
|
||||||
|
|
||||||
|
|
||||||
class AdminRolEditView(AccessControl, CreateView):
|
class AdminRolEditView(AccessControl, CreateView):
|
||||||
template_name = "idhub/admin_rol_register.html"
|
template_name = "idhub/admin_rol_register.html"
|
||||||
subtitle = _('Add Rol')
|
subtitle = _('Edit Rol')
|
||||||
icon = 'bi bi-person'
|
icon = ''
|
||||||
model = Rol
|
model = Rol
|
||||||
from_class = RolForm
|
from_class = RolForm
|
||||||
fields = ('name',)
|
fields = ('name',)
|
||||||
|
@ -284,12 +260,56 @@ class AdminRolDeleteView(AccessControl):
|
||||||
return redirect('idhub:admin_roles')
|
return redirect('idhub:admin_roles')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class AdminServicesView(AccessControl):
|
class AdminServicesView(AccessControl):
|
||||||
template_name = "idhub/admin_services.html"
|
template_name = "idhub/admin_services.html"
|
||||||
subtitle = _('Service Management')
|
subtitle = _('Service Management')
|
||||||
icon = ''
|
icon = ''
|
||||||
|
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
context = super().get_context_data(**kwargs)
|
||||||
|
context.update({
|
||||||
|
'services': Service.objects,
|
||||||
|
})
|
||||||
|
return context
|
||||||
|
|
||||||
|
class AdminServiceRegisterView(AccessControl, CreateView):
|
||||||
|
template_name = "idhub/admin_service_register.html"
|
||||||
|
subtitle = _('Add Service')
|
||||||
|
icon = ''
|
||||||
|
model = Service
|
||||||
|
from_class = ServiceForm
|
||||||
|
fields = ('domain', 'description', 'rol')
|
||||||
|
success_url = reverse_lazy('idhub:admin_services')
|
||||||
|
object = None
|
||||||
|
|
||||||
|
|
||||||
|
class AdminServiceEditView(AccessControl, CreateView):
|
||||||
|
template_name = "idhub/admin_service_register.html"
|
||||||
|
subtitle = _('Edit Service')
|
||||||
|
icon = ''
|
||||||
|
model = Service
|
||||||
|
from_class = ServiceForm
|
||||||
|
fields = ('domain', 'description', 'rol')
|
||||||
|
success_url = reverse_lazy('idhub:admin_services')
|
||||||
|
|
||||||
|
def get_form_kwargs(self):
|
||||||
|
pk = self.kwargs.get('pk')
|
||||||
|
if pk:
|
||||||
|
self.object = get_object_or_404(self.model, pk=pk)
|
||||||
|
kwargs = super().get_form_kwargs()
|
||||||
|
return kwargs
|
||||||
|
|
||||||
|
|
||||||
|
class AdminServiceDeleteView(AccessControl):
|
||||||
|
model = Service
|
||||||
|
|
||||||
|
def get(self, request, *args, **kwargs):
|
||||||
|
self.pk = kwargs['pk']
|
||||||
|
self.object = get_object_or_404(self.model, pk=self.pk)
|
||||||
|
|
||||||
|
self.object.delete()
|
||||||
|
return redirect('idhub:admin_services')
|
||||||
|
|
||||||
|
|
||||||
class AdminCredentialsView(Credentials):
|
class AdminCredentialsView(Credentials):
|
||||||
template_name = "idhub/admin_credentials.html"
|
template_name = "idhub/admin_credentials.html"
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
# Generated by Django 4.2.5 on 2023-10-17 11:28
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("idhub", "0001_initial"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name="Rol",
|
||||||
|
fields=[
|
||||||
|
(
|
||||||
|
"id",
|
||||||
|
models.BigAutoField(
|
||||||
|
auto_created=True,
|
||||||
|
primary_key=True,
|
||||||
|
serialize=False,
|
||||||
|
verbose_name="ID",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("name", models.CharField(max_length=250)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,37 @@
|
||||||
|
# Generated by Django 4.2.5 on 2023-10-17 13:29
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("idhub", "0002_rol"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name="Service",
|
||||||
|
fields=[
|
||||||
|
(
|
||||||
|
"id",
|
||||||
|
models.BigAutoField(
|
||||||
|
auto_created=True,
|
||||||
|
primary_key=True,
|
||||||
|
serialize=False,
|
||||||
|
verbose_name="ID",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("domain", models.CharField(max_length=250)),
|
||||||
|
("description", models.CharField(max_length=250)),
|
||||||
|
(
|
||||||
|
"rol",
|
||||||
|
models.ForeignKey(
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
related_name="services",
|
||||||
|
to="idhub.rol",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
|
@ -84,3 +84,16 @@ class Membership(models.Model):
|
||||||
|
|
||||||
class Rol(models.Model):
|
class Rol(models.Model):
|
||||||
name = models.CharField(max_length=250)
|
name = models.CharField(max_length=250)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
|
class Service(models.Model):
|
||||||
|
domain = models.CharField(max_length=250)
|
||||||
|
description = models.CharField(max_length=250)
|
||||||
|
rol = models.ForeignKey(
|
||||||
|
Rol,
|
||||||
|
on_delete=models.CASCADE,
|
||||||
|
related_name='services',
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
{% extends "idhub/base_admin.html" %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h3>
|
||||||
|
<i class="{{ icon }}"></i>
|
||||||
|
{{ subtitle }}
|
||||||
|
</h3>
|
||||||
|
{% load django_bootstrap5 %}
|
||||||
|
<form role="form" method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
{% if form.errors %}
|
||||||
|
<div class="alert alert-danger alert-icon alert-icon-border alert-dismissible" role="alert">
|
||||||
|
<div class="icon"><span class="mdi mdi-close-circle-o"></span></div>
|
||||||
|
<div class="message">
|
||||||
|
{% for field, error in form.errors.items %}
|
||||||
|
{{ error }}<br />
|
||||||
|
{% endfor %}
|
||||||
|
<button class="btn-close" type="button" data-dismiss="alert" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-4">
|
||||||
|
{% bootstrap_form form %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-actions-no-box">
|
||||||
|
<a class="btn btn-grey" href="{% url 'idhub:admin_services' %}">{% translate "Cancel" %}</a>
|
||||||
|
<input class="btn btn-green-admin" type="submit" name="submit" value="{% translate 'Save' %}" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
{% endblock %}
|
|
@ -6,4 +6,35 @@
|
||||||
<i class="{{ icon }}"></i>
|
<i class="{{ icon }}"></i>
|
||||||
{{ subtitle }}
|
{{ subtitle }}
|
||||||
</h3>
|
</h3>
|
||||||
|
<div class="row mt-5">
|
||||||
|
<div class="col">
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table table-striped table-sm">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Service' %}</button></th>
|
||||||
|
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Description' %}</button></th>
|
||||||
|
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Rol' %}</button></th>
|
||||||
|
<th scope="col"></th>
|
||||||
|
<th scope="col"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for service in services.all %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ service.domain }}</td>
|
||||||
|
<td>{{ service.description }}</td>
|
||||||
|
<td>{{ service.rol.name }}</td>
|
||||||
|
<td><a href="{% url 'idhub:admin_service_edit' service.id %}" title="{% trans 'Edit' %}"><i class="bi bi-pencil-square"></i></a></td>
|
||||||
|
<td><a href="{% url 'idhub:admin_service_del' service.id %}" title="{% trans 'Delete' %}"><i class="bi bi-trash"></i></a></td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<div class="form-actions-no-box">
|
||||||
|
<a class="btn btn-green-admin" href="{% url 'idhub:admin_service_new' %}">{% translate "Add Service" %} <i class="bi bi-plus"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -80,6 +80,12 @@ urlpatterns = [
|
||||||
name='admin_rol_del'),
|
name='admin_rol_del'),
|
||||||
path('admin/services/', views_admin.AdminServicesView.as_view(),
|
path('admin/services/', views_admin.AdminServicesView.as_view(),
|
||||||
name='admin_services'),
|
name='admin_services'),
|
||||||
|
path('admin/services/new', views_admin.AdminServiceRegisterView.as_view(),
|
||||||
|
name='admin_service_new'),
|
||||||
|
path('admin/services/<int:pk>', views_admin.AdminServiceEditView.as_view(),
|
||||||
|
name='admin_service_edit'),
|
||||||
|
path('admin/services/<int:pk>/del', views_admin.AdminServiceDeleteView.as_view(),
|
||||||
|
name='admin_service_del'),
|
||||||
path('admin/credentials/', views_admin.AdminCredentialsView.as_view(),
|
path('admin/credentials/', views_admin.AdminCredentialsView.as_view(),
|
||||||
name='admin_credentials'),
|
name='admin_credentials'),
|
||||||
path('admin/credentials/new/', views_admin.AdminIssueCredentialsView.as_view(),
|
path('admin/credentials/new/', views_admin.AdminIssueCredentialsView.as_view(),
|
||||||
|
|
Loading…
Reference in New Issue