Merge pull request 'events' (#76) from events into main

Reviewed-on: https://gitea.pangea.org/trustchain-oc1-orchestral/IdHub/pulls/76
This commit is contained in:
cayop 2023-11-14 16:50:47 +00:00
commit 6636225b7f
30 changed files with 4323 additions and 857 deletions

View file

@ -1,15 +1,18 @@
import csv import csv
import json import json
import copy
import pandas as pd import pandas as pd
from jsonschema import validate from jsonschema import validate
from django import forms from django import forms
from django.utils.translation import gettext_lazy as _
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from idhub.models import ( from idhub.models import (
DID, DID,
File_datas, File_datas,
Membership,
Schemas, Schemas,
Service,
UserRol,
VerificableCredential, VerificableCredential,
) )
from idhub_auth.models import User from idhub_auth.models import User
@ -104,14 +107,14 @@ class ImportForm(forms.Form):
user = User.objects.filter(email=row.get('email')) user = User.objects.filter(email=row.get('email'))
if not user: if not user:
txt = _('The user not exist!') txt = _('The user does not exist!')
msg = "line {}: {}".format(line+1, txt) msg = "line {}: {}".format(line+1, txt)
self.exception(msg) self.exception(msg)
return user.first() return user.first()
def create_credential(self, user, row): def create_credential(self, user, row):
d = copy.copy(self.json_schema) d = self.json_schema.copy()
d['instance'] = row d['instance'] = row
return VerificableCredential( return VerificableCredential(
verified=False, verified=False,
@ -126,3 +129,65 @@ class ImportForm(forms.Form):
class SchemaForm(forms.Form): class SchemaForm(forms.Form):
file_template = forms.FileField() file_template = forms.FileField()
class MembershipForm(forms.ModelForm):
class Meta:
model = Membership
fields = ['type', 'start_date', 'end_date']
def clean_end_date(self):
data = super().clean()
start_date = data['start_date']
end_date = data.get('end_date')
members = Membership.objects.filter(
type=data['type'],
user=self.instance.user
)
if self.instance.id:
members = members.exclude(id=self.instance.id)
if (start_date and end_date):
if start_date > end_date:
msg = _("The end date is less than the start date")
raise forms.ValidationError(msg)
members = members.filter(
start_date__lte=end_date,
end_date__gte=start_date,
)
if members.exists():
msg = _("This membership already exists!")
raise forms.ValidationError(msg)
return end_date
class UserRolForm(forms.ModelForm):
class Meta:
model = UserRol
fields = ['service']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if not self.instance.id:
user = self.instance.user
choices = self.fields['service'].choices
choices.queryset = choices.queryset.exclude(users__user=user)
self.fields['service'].choices = choices
def clean_service(self):
data = super().clean()
service = UserRol.objects.filter(
service=data['service'],
user=self.instance.user
)
if service.exists():
msg = _("Is not possible to have a duplicate role")
raise forms.ValidationError(msg)
return data['service']

View file

@ -1,6 +1,5 @@
import os import os
import json import json
import copy
import logging import logging
import pandas as pd import pandas as pd
from pathlib import Path from pathlib import Path
@ -23,11 +22,18 @@ from django.contrib import messages
from utils.apiregiter import iota from utils.apiregiter import iota
from utils import credtools from utils import credtools
from idhub_auth.models import User from idhub_auth.models import User
from idhub_auth.forms import ProfileForm
from idhub.mixins import AdminView from idhub.mixins import AdminView
from idhub.email.views import NotifyActivateUserByEmail from idhub.email.views import NotifyActivateUserByEmail
from idhub.admin.forms import ImportForm, SchemaForm from idhub.admin.forms import (
ImportForm,
MembershipForm,
SchemaForm,
UserRolForm,
)
from idhub.models import ( from idhub.models import (
DID, DID,
Event,
File_datas, File_datas,
Membership, Membership,
Rol, Rol,
@ -45,34 +51,41 @@ class DashboardView(AdminView, TemplateView):
icon = 'bi bi-bell' icon = 'bi bi-bell'
section = "Home" section = "Home"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({
'events': Event.objects.filter(user=None),
})
return context
class People(AdminView): class People(AdminView):
title = _("People Management") title = _("User Management")
section = "People" section = "People"
class AccessControl(AdminView, TemplateView): class AccessControl(AdminView, TemplateView):
title = _("Access Control Management") title = _("Access control management")
section = "AccessControl" section = "AccessControl"
class Credentials(AdminView, TemplateView): class Credentials(AdminView, TemplateView):
title = _("Credentials Management") title = _("Credential Management")
section = "Credentials" section = "Credential"
class SchemasMix(AdminView, TemplateView): class SchemasMix(AdminView, TemplateView):
title = _("Templates Management") title = _("Template Management")
section = "Templates" section = "Template"
class ImportExport(AdminView): class ImportExport(AdminView):
title = _("Massive Data Management") title = _("Data file management")
section = "ImportExport" section = "ImportExport"
class PeopleListView(People, TemplateView): class PeopleListView(People, TemplateView):
template_name = "idhub/admin/people.html" template_name = "idhub/admin/people.html"
subtitle = _('People list') subtitle = _('View users')
icon = 'bi bi-person' icon = 'bi bi-person'
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
@ -85,7 +98,7 @@ class PeopleListView(People, TemplateView):
class PeopleView(People, TemplateView): class PeopleView(People, TemplateView):
template_name = "idhub/admin/user.html" template_name = "idhub/admin/user.html"
subtitle = _('User Profile') subtitle = _('User personal information')
icon = 'bi bi-person' icon = 'bi bi-person'
model = User model = User
@ -114,8 +127,10 @@ class PeopleActivateView(PeopleView):
if self.object.is_active: if self.object.is_active:
self.object.is_active = False self.object.is_active = False
Event.set_EV_USR_DEACTIVATED_BY_ADMIN(self.object)
else: else:
self.object.is_active = True self.object.is_active = True
Event.set_EV_USR_ACTIVATED_BY_ADMIN(self.object)
self.object.save() self.object.save()
return redirect('idhub:admin_people', self.object.id) return redirect('idhub:admin_people', self.object.id)
@ -128,24 +143,57 @@ class PeopleDeleteView(PeopleView):
self.object = get_object_or_404(self.model, pk=self.pk) self.object = get_object_or_404(self.model, pk=self.pk)
if self.object != self.request.user: if self.object != self.request.user:
Event.set_EV_USR_DELETED_BY_ADMIN(self.object)
self.object.delete() self.object.delete()
else: else:
messages.error(self.request, _('Is not possible delete your account!')) messages.error(self.request, _('Is not possible delete your account!'))
return redirect('idhub:admin_people_list') return redirect('idhub:admin_people_list')
class PeopleEditView(PeopleView, UpdateView):
class PeopleEditView(People, FormView):
template_name = "idhub/admin/user_edit.html" template_name = "idhub/admin/user_edit.html"
fields = ('first_name', 'last_name', 'email') subtitle = _('Update user')
icon = 'bi bi-person'
form_class = ProfileForm
success_url = reverse_lazy('idhub:admin_people_list') success_url = reverse_lazy('idhub:admin_people_list')
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_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs['instance'] = self.user
return kwargs
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({
'object': self.user,
})
return context
def form_valid(self, form):
user = form.save()
messages.success(self.request, _('The account is updated successfully'))
Event.set_EV_USR_UPDATED_BY_ADMIN(user)
Event.set_EV_USR_UPDATED(user)
return super().form_valid(form)
class PeopleRegisterView(NotifyActivateUserByEmail, People, CreateView): class PeopleRegisterView(NotifyActivateUserByEmail, People, CreateView):
template_name = "idhub/admin/people_register.html" template_name = "idhub/admin/people_register.html"
subtitle = _('People Register') subtitle = _('Add user')
icon = 'bi bi-person' icon = 'bi bi-person'
model = User form_class = ProfileForm
fields = ('first_name', 'last_name', 'email')
success_url = reverse_lazy('idhub:admin_people_list') success_url = reverse_lazy('idhub:admin_people_list')
def get_success_url(self): def get_success_url(self):
@ -157,7 +205,10 @@ class PeopleRegisterView(NotifyActivateUserByEmail, People, CreateView):
def form_valid(self, form): def form_valid(self, form):
user = form.save() user = form.save()
messages.success(self.request, _('The account is created successfully')) messages.success(self.request, _('The account was created successfully'))
Event.set_EV_USR_REGISTERED(user)
Event.set_EV_USR_WELCOME(user)
if user.is_active: if user.is_active:
try: try:
self.send_email(user) self.send_email(user)
@ -166,12 +217,12 @@ class PeopleRegisterView(NotifyActivateUserByEmail, People, CreateView):
return super().form_valid(form) return super().form_valid(form)
class PeopleMembershipRegisterView(People, CreateView): class PeopleMembershipRegisterView(People, FormView):
template_name = "idhub/admin/people_membership_register.html" template_name = "idhub/admin/people_membership_register.html"
subtitle = _('People add membership') subtitle = _('Associate a membership to the user')
icon = 'bi bi-person' icon = 'bi bi-person'
form_class = MembershipForm
model = Membership model = Membership
fields = ('type', 'start_date', 'end_date')
success_url = reverse_lazy('idhub:admin_people_list') success_url = reverse_lazy('idhub:admin_people_list')
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
@ -188,12 +239,19 @@ class PeopleMembershipRegisterView(People, CreateView):
form = super().get_form() form = super().get_form()
form.fields['start_date'].widget.input_type = 'date' form.fields['start_date'].widget.input_type = 'date'
form.fields['end_date'].widget.input_type = 'date' form.fields['end_date'].widget.input_type = 'date'
form.fields['start_date'].required = True
return form return form
def get_form_kwargs(self): def get_form_kwargs(self):
self.object = self.model(user=self.user) self.object = self.model(user=self.user)
kwargs = super().get_form_kwargs() kwargs = super().get_form_kwargs()
kwargs['instance'] = self.object
return kwargs return kwargs
def form_valid(self, form):
form.save()
messages.success(self.request, _('Membership created successfully'))
return super().form_valid(form)
def get_success_url(self): def get_success_url(self):
self.success_url = reverse_lazy( self.success_url = reverse_lazy(
@ -203,27 +261,43 @@ class PeopleMembershipRegisterView(People, CreateView):
return self.success_url return self.success_url
class PeopleMembershipEditView(People, CreateView): class PeopleMembershipEditView(People, FormView):
template_name = "idhub/admin/people_membership_register.html" template_name = "idhub/admin/people_membership_register.html"
subtitle = _('People add membership') subtitle = _('Associate a membership to the user')
icon = 'bi bi-person' icon = 'bi bi-person'
form_class = MembershipForm
model = Membership model = Membership
fields = ('type', 'start_date', 'end_date')
success_url = reverse_lazy('idhub:admin_people_list') success_url = reverse_lazy('idhub:admin_people_list')
def get(self, request, *args, **kwargs):
self.pk = kwargs['pk']
self.object = get_object_or_404(self.model, pk=self.pk)
self.user = self.object.user
return super().get(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
self.pk = kwargs['pk']
self.object = get_object_or_404(self.model, pk=self.pk)
self.user = self.object.user
return super().post(request, *args, **kwargs)
def get_form(self): def get_form(self):
form = super().get_form() form = super().get_form()
form.fields['start_date'].widget.input_type = 'date' form.fields['start_date'].widget.input_type = 'date'
form.fields['end_date'].widget.input_type = 'date' form.fields['end_date'].widget.input_type = 'date'
form.fields['start_date'].required = True
return form return form
def get_form_kwargs(self): 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() kwargs = super().get_form_kwargs()
kwargs['instance'] = self.object
return kwargs return kwargs
def form_valid(self, form):
form.save()
messages.success(self.request, _('Membership updated successfully'))
return super().form_valid(form)
class PeopleMembershipDeleteView(PeopleView): class PeopleMembershipDeleteView(PeopleView):
model = Membership model = Membership
@ -241,12 +315,12 @@ class PeopleMembershipDeleteView(PeopleView):
return redirect('idhub:admin_people_edit', user.id) return redirect('idhub:admin_people_edit', user.id)
class PeopleRolRegisterView(People, CreateView): class PeopleRolRegisterView(People, FormView):
template_name = "idhub/admin/people_rol_register.html" template_name = "idhub/admin/people_rol_register.html"
subtitle = _('Add Rol to User') subtitle = _('Add a user role to access a service')
icon = 'bi bi-person' icon = 'bi bi-person'
form_class = UserRolForm
model = UserRol model = UserRol
fields = ('service',)
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
self.pk = kwargs['pk'] self.pk = kwargs['pk']
@ -261,8 +335,14 @@ class PeopleRolRegisterView(People, CreateView):
def get_form_kwargs(self): def get_form_kwargs(self):
self.object = self.model(user=self.user) self.object = self.model(user=self.user)
kwargs = super().get_form_kwargs() kwargs = super().get_form_kwargs()
kwargs['instance'] = self.object
return kwargs return kwargs
def form_valid(self, form):
form.save()
messages.success(self.request, _('Membership created successfully'))
return super().form_valid(form)
def get_success_url(self): def get_success_url(self):
self.success_url = reverse_lazy( self.success_url = reverse_lazy(
'idhub:admin_people_edit', 'idhub:admin_people_edit',
@ -271,20 +351,33 @@ class PeopleRolRegisterView(People, CreateView):
return self.success_url return self.success_url
class PeopleRolEditView(People, CreateView): class PeopleRolEditView(People, FormView):
template_name = "idhub/admin/people_rol_register.html" template_name = "idhub/admin/people_rol_register.html"
subtitle = _('Edit Rol to User') subtitle = _('Modify a user role to access a service')
icon = 'bi bi-person' icon = 'bi bi-person'
form_class = UserRolForm
model = UserRol model = UserRol
fields = ('service',)
def get(self, request, *args, **kwargs):
self.pk = kwargs['pk']
self.object = get_object_or_404(self.model, pk=self.pk)
return super().get(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
self.pk = kwargs['pk']
self.object = get_object_or_404(self.model, pk=self.pk)
return super().post(request, *args, **kwargs)
def get_form_kwargs(self): 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() kwargs = super().get_form_kwargs()
kwargs['instance'] = self.object
return kwargs return kwargs
def form_valid(self, form):
form.save()
messages.success(self.request, _('Membership updated successfully'))
return super().form_valid(form)
def get_success_url(self): def get_success_url(self):
self.success_url = reverse_lazy( self.success_url = reverse_lazy(
'idhub:admin_people_edit', 'idhub:admin_people_edit',
@ -308,7 +401,7 @@ class PeopleRolDeleteView(PeopleView):
class RolesView(AccessControl): class RolesView(AccessControl):
template_name = "idhub/admin/roles.html" template_name = "idhub/admin/roles.html"
subtitle = _('Roles Management') subtitle = _('Manage roles')
icon = '' icon = ''
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
@ -320,20 +413,26 @@ class RolesView(AccessControl):
class RolRegisterView(AccessControl, CreateView): class RolRegisterView(AccessControl, CreateView):
template_name = "idhub/admin/rol_register.html" template_name = "idhub/admin/rol_register.html"
subtitle = _('Add Rol') subtitle = _('Add Role')
icon = '' icon = ''
model = Rol model = Rol
fields = ('name',) fields = ('name', "description")
success_url = reverse_lazy('idhub:admin_roles') success_url = reverse_lazy('idhub:admin_roles')
object = None object = None
def form_valid(self, form):
form.save()
messages.success(self.request, _('Role created successfully'))
Event.set_EV_ROLE_CREATED_BY_ADMIN()
return super().form_valid(form)
class RolEditView(AccessControl, CreateView): class RolEditView(AccessControl, UpdateView):
template_name = "idhub/admin/rol_register.html" template_name = "idhub/admin/rol_register.html"
subtitle = _('Edit Rol') subtitle = _('Edit Role')
icon = '' icon = ''
model = Rol model = Rol
fields = ('name',) fields = ('name', "description")
success_url = reverse_lazy('idhub:admin_roles') success_url = reverse_lazy('idhub:admin_roles')
def get_form_kwargs(self): def get_form_kwargs(self):
@ -342,6 +441,12 @@ class RolEditView(AccessControl, CreateView):
self.object = get_object_or_404(self.model, pk=pk) self.object = get_object_or_404(self.model, pk=pk)
kwargs = super().get_form_kwargs() kwargs = super().get_form_kwargs()
return kwargs return kwargs
def form_valid(self, form):
form.save()
messages.success(self.request, _('Role updated successfully'))
Event.set_EV_ROLE_MODIFIED_BY_ADMIN()
return super().form_valid(form)
class RolDeleteView(AccessControl): class RolDeleteView(AccessControl):
@ -352,12 +457,14 @@ class RolDeleteView(AccessControl):
self.object = get_object_or_404(self.model, pk=self.pk) self.object = get_object_or_404(self.model, pk=self.pk)
self.object.delete() self.object.delete()
messages.success(self.request, _('Role deleted successfully'))
Event.set_EV_ROLE_DELETED_BY_ADMIN()
return redirect('idhub:admin_roles') return redirect('idhub:admin_roles')
class ServicesView(AccessControl): class ServicesView(AccessControl):
template_name = "idhub/admin/services.html" template_name = "idhub/admin/services.html"
subtitle = _('Service Management') subtitle = _('Manage services')
icon = '' icon = ''
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
@ -369,17 +476,28 @@ class ServicesView(AccessControl):
class ServiceRegisterView(AccessControl, CreateView): class ServiceRegisterView(AccessControl, CreateView):
template_name = "idhub/admin/service_register.html" template_name = "idhub/admin/service_register.html"
subtitle = _('Add Service') subtitle = _('Add service')
icon = '' icon = ''
model = Service model = Service
fields = ('domain', 'description', 'rol') fields = ('domain', 'description', 'rol')
success_url = reverse_lazy('idhub:admin_services') success_url = reverse_lazy('idhub:admin_services')
object = None object = None
def get_form(self):
form = super().get_form()
form.fields['rol'].required = False
return form
def form_valid(self, form):
form.save()
messages.success(self.request, _('Service created successfully'))
Event.set_EV_SERVICE_CREATED_BY_ADMIN()
return super().form_valid(form)
class ServiceEditView(AccessControl, CreateView): class ServiceEditView(AccessControl, UpdateView):
template_name = "idhub/admin/service_register.html" template_name = "idhub/admin/service_register.html"
subtitle = _('Edit Service') subtitle = _('Modify service')
icon = '' icon = ''
model = Service model = Service
fields = ('domain', 'description', 'rol') fields = ('domain', 'description', 'rol')
@ -392,6 +510,17 @@ class ServiceEditView(AccessControl, CreateView):
kwargs = super().get_form_kwargs() kwargs = super().get_form_kwargs()
return kwargs return kwargs
def get_form(self):
form = super().get_form()
form.fields['rol'].required = False
return form
def form_valid(self, form):
form.save()
messages.success(self.request, _('Service updated successfully'))
Event.set_EV_SERVICE_MODIFIED_BY_ADMIN()
return super().form_valid(form)
class ServiceDeleteView(AccessControl): class ServiceDeleteView(AccessControl):
model = Service model = Service
@ -401,12 +530,14 @@ class ServiceDeleteView(AccessControl):
self.object = get_object_or_404(self.model, pk=self.pk) self.object = get_object_or_404(self.model, pk=self.pk)
self.object.delete() self.object.delete()
messages.success(self.request, _('Service deleted successfully'))
Event.set_EV_SERVICE_DELETED_BY_ADMIN()
return redirect('idhub:admin_services') return redirect('idhub:admin_services')
class CredentialsView(Credentials): class CredentialsView(Credentials):
template_name = "idhub/admin/credentials.html" template_name = "idhub/admin/credentials.html"
subtitle = _('Credentials list') subtitle = _('View credentials')
icon = '' icon = ''
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
@ -462,6 +593,8 @@ class RevokeCredentialsView(Credentials):
self.object.status = VerificableCredential.Status.REVOKED self.object.status = VerificableCredential.Status.REVOKED
self.object.save() self.object.save()
messages.success(self.request, _('Credential revoked successfully')) messages.success(self.request, _('Credential revoked successfully'))
Event.set_EV_CREDENTIAL_REVOKED_BY_ADMIN(self.object)
Event.set_EV_CREDENTIAL_REVOKED(self.object)
return redirect(self.success_url) return redirect(self.success_url)
@ -482,13 +615,15 @@ class DeleteCredentialsView(Credentials):
if self.object.status in status: if self.object.status in status:
self.object.delete() self.object.delete()
messages.success(self.request, _('Credential deleted successfully')) messages.success(self.request, _('Credential deleted successfully'))
Event.set_EV_CREDENTIAL_DELETED(self.object)
Event.set_EV_CREDENTIAL_DELETED_BY_ADMIN(self.object)
return redirect(self.success_url) return redirect(self.success_url)
class DidsView(Credentials): class DidsView(Credentials):
template_name = "idhub/admin/dids.html" template_name = "idhub/admin/dids.html"
subtitle = _('Organization Identities (DID)') subtitle = _('Manage Identities (DID)')
icon = 'bi bi-patch-check-fill' icon = 'bi bi-patch-check-fill'
wallet = True wallet = True
@ -514,6 +649,7 @@ class DidRegisterView(Credentials, CreateView):
form.instance.did = iota.issue_did() form.instance.did = iota.issue_did()
form.save() form.save()
messages.success(self.request, _('DID created successfully')) messages.success(self.request, _('DID created successfully'))
Event.set_EV_ORG_DID_CREATED_BY_ADMIN(form.instance)
return super().form_valid(form) return super().form_valid(form)
@ -547,29 +683,29 @@ class DidDeleteView(Credentials, DeleteView):
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
self.pk = kwargs['pk'] self.pk = kwargs['pk']
self.object = get_object_or_404(self.model, pk=self.pk) self.object = get_object_or_404(self.model, pk=self.pk)
Event.set_EV_ORG_DID_DELETED_BY_ADMIN(self.object)
self.object.delete() self.object.delete()
messages.success(self.request, _('DID delete successfully')) messages.success(self.request, _('DID delete successfully'))
return redirect(self.success_url) return redirect(self.success_url)
class WalletCredentialsView(Credentials): class WalletCredentialsView(Credentials):
template_name = "idhub/admin/wallet_credentials.html" template_name = "idhub/admin/wallet_credentials.html"
subtitle = _('Credentials') subtitle = _('View org. credentials')
icon = 'bi bi-patch-check-fill' icon = 'bi bi-patch-check-fill'
wallet = True wallet = True
class WalletConfigIssuesView(Credentials): class WalletConfigIssuesView(Credentials):
template_name = "idhub/admin/wallet_issues.html" template_name = "idhub/admin/wallet_issues.html"
subtitle = _('Configure Issues') subtitle = _('Configure credential issuance')
icon = 'bi bi-patch-check-fill' icon = 'bi bi-patch-check-fill'
wallet = True wallet = True
class SchemasView(SchemasMix): class SchemasView(SchemasMix):
template_name = "idhub/admin/schemas.html" template_name = "idhub/admin/schemas.html"
subtitle = _('Template List') subtitle = _('View credential templates')
icon = '' icon = ''
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
@ -603,7 +739,7 @@ class SchemasDownloadView(SchemasMix):
class SchemasNewView(SchemasMix): class SchemasNewView(SchemasMix):
template_name = "idhub/admin/schemas_new.html" template_name = "idhub/admin/schemas_new.html"
subtitle = _('Upload Template') subtitle = _('Upload template')
icon = '' icon = ''
success_url = reverse_lazy('idhub:admin_schemas') success_url = reverse_lazy('idhub:admin_schemas')
@ -648,7 +784,7 @@ class SchemasNewView(SchemasMix):
class SchemasImportView(SchemasMix): class SchemasImportView(SchemasMix):
template_name = "idhub/admin/schemas_import.html" template_name = "idhub/admin/schemas_import.html"
subtitle = _('Import Template') subtitle = _('Import template')
icon = '' icon = ''
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
@ -676,7 +812,7 @@ class SchemasImportAddView(SchemasMix):
schema = self.create_schema(file_name) schema = self.create_schema(file_name)
if schema: if schema:
messages.success(self.request, _("The schema add successfully!")) messages.success(self.request, _("The schema was added sucessfully"))
return redirect('idhub:admin_schemas_import') return redirect('idhub:admin_schemas_import')
def create_schema(self, file_name): def create_schema(self, file_name):
@ -701,7 +837,7 @@ class SchemasImportAddView(SchemasMix):
class ImportView(ImportExport, TemplateView): class ImportView(ImportExport, TemplateView):
template_name = "idhub/admin/import.html" template_name = "idhub/admin/import.html"
subtitle = _('Import') subtitle = _('Import data')
icon = '' icon = ''
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
@ -738,9 +874,12 @@ class ImportAddView(ImportExport, FormView):
return kwargs return kwargs
def form_valid(self, form): def form_valid(self, form):
cred = form.save() creds = form.save()
if cred: if creds:
messages.success(self.request, _("The file import was successfully!")) messages.success(self.request, _("The file import was successfully!"))
for cred in creds:
Event.set_EV_CREDENTIAL_ENABLED(cred)
Event.set_EV_CREDENTIAL_CAN_BE_REQUESTED(cred)
else: else:
messages.error(self.request, _("Error importing the file!")) messages.error(self.request, _("Error importing the file!"))
return super().form_valid(form) return super().form_valid(form)

View file

@ -1,4 +1,4 @@
# Generated by Django 4.2.5 on 2023-11-02 15:08 # Generated by Django 4.2.5 on 2023-11-14 16:32
from django.conf import settings from django.conf import settings
from django.db import migrations, models from django.db import migrations, models
@ -63,7 +63,13 @@ class Migration(migrations.Migration):
verbose_name='ID', verbose_name='ID',
), ),
), ),
('name', models.CharField(max_length=250)), ('name', models.CharField(max_length=250, verbose_name='name')),
(
'description',
models.CharField(
max_length=250, null=True, verbose_name='Description'
),
),
], ],
), ),
migrations.CreateModel( migrations.CreateModel(
@ -95,8 +101,11 @@ class Migration(migrations.Migration):
verbose_name='ID', verbose_name='ID',
), ),
), ),
('domain', models.CharField(max_length=250)), ('domain', models.CharField(max_length=250, verbose_name='Domain')),
('description', models.CharField(max_length=250)), (
'description',
models.CharField(max_length=250, verbose_name='Description'),
),
('rol', models.ManyToManyField(to='idhub.rol')), ('rol', models.ManyToManyField(to='idhub.rol')),
], ],
), ),
@ -131,7 +140,7 @@ class Migration(migrations.Migration):
('id_string', models.CharField(max_length=250)), ('id_string', models.CharField(max_length=250)),
('verified', models.BooleanField()), ('verified', models.BooleanField()),
('created_on', models.DateTimeField(auto_now=True)), ('created_on', models.DateTimeField(auto_now=True)),
('issuer_on', models.DateTimeField(null=True)), ('issued_on', models.DateTimeField(null=True)),
('did_issuer', models.CharField(max_length=250)), ('did_issuer', models.CharField(max_length=250)),
('did_subject', models.CharField(max_length=250)), ('did_subject', models.CharField(max_length=250)),
('data', models.TextField()), ('data', models.TextField()),
@ -157,6 +166,141 @@ class Migration(migrations.Migration):
), ),
], ],
), ),
migrations.CreateModel(
name='Membership',
fields=[
(
'id',
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name='ID',
),
),
(
'type',
models.PositiveSmallIntegerField(
choices=[(1, 'Beneficiary'), (2, 'Employee'), (3, 'Member')],
verbose_name='Type of membership',
),
),
(
'start_date',
models.DateField(
blank=True,
help_text='What date did the membership start?',
null=True,
verbose_name='Start date',
),
),
(
'end_date',
models.DateField(
blank=True,
help_text='What date will the membership end?',
null=True,
verbose_name='End date',
),
),
(
'user',
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name='memberships',
to=settings.AUTH_USER_MODEL,
),
),
],
),
migrations.CreateModel(
name='Event',
fields=[
(
'id',
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name='ID',
),
),
('created', models.DateTimeField(auto_now=True)),
('message', models.CharField(max_length=350)),
(
'type',
models.PositiveSmallIntegerField(
choices=[
(1, 'EV_USR_REGISTERED'),
(2, 'EV_USR_WELCOME'),
(3, 'EV_DATA_UPDATE_REQUESTED_BY_USER'),
(4, 'EV_DATA_UPDATE_REQUESTED'),
(5, 'EV_USR_UPDATED_BY_ADMIN'),
(6, 'EV_USR_UPDATED'),
(7, 'EV_USR_DELETED_BY_ADMIN'),
(8, 'EV_DID_CREATED_BY_USER'),
(9, 'EV_DID_CREATED'),
(10, 'EV_DID_DELETED'),
(11, 'EV_CREDENTIAL_DELETED_BY_ADMIN'),
(12, 'EV_CREDENTIAL_DELETED'),
(13, 'EV_CREDENTIAL_ISSUED_FOR_USER'),
(14, 'EV_CREDENTIAL_ISSUED'),
(15, 'EV_CREDENTIAL_PRESENTED_BY_USER'),
(16, 'EV_CREDENTIAL_PRESENTED'),
(17, 'EV_CREDENTIAL_ENABLED'),
(18, 'EV_CREDENTIAL_CAN_BE_REQUESTED'),
(19, 'EV_CREDENTIAL_REVOKED_BY_ADMIN'),
(20, 'EV_CREDENTIAL_REVOKED'),
(21, 'EV_ROLE_CREATED_BY_ADMIN'),
(22, 'EV_ROLE_MODIFIED_BY_ADMIN'),
(23, 'EV_ROLE_DELETED_BY_ADMIN'),
(24, 'EV_SERVICE_CREATED_BY_ADMIN'),
(25, 'EV_SERVICE_MODIFIED_BY_ADMIN'),
(26, 'EV_SERVICE_DELETED_BY_ADMIN'),
(27, 'EV_ORG_DID_CREATED_BY_ADMIN'),
(28, 'EV_ORG_DID_DELETED_BY_ADMIN'),
(29, 'EV_USR_DEACTIVATED_BY_ADMIN'),
(30, 'EV_USR_ACTIVATED_BY_ADMIN'),
]
),
),
(
'user',
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name='events',
to=settings.AUTH_USER_MODEL,
),
),
],
),
migrations.CreateModel(
name='DID',
fields=[
(
'id',
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name='ID',
),
),
('created_at', models.DateTimeField(auto_now=True)),
('did', models.CharField(max_length=250, unique=True)),
('label', models.CharField(max_length=50)),
(
'user',
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name='dids',
to=settings.AUTH_USER_MODEL,
),
),
],
),
migrations.CreateModel( migrations.CreateModel(
name='UserRol', name='UserRol',
fields=[ fields=[
@ -186,78 +330,8 @@ class Migration(migrations.Migration):
), ),
), ),
], ],
), options={
migrations.CreateModel( 'unique_together': {('user', 'service')},
name='Membership', },
fields=[
(
'id',
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name='ID',
),
),
(
'type',
models.PositiveSmallIntegerField(
choices=[(1, 'Beneficiary'), (2, 'Employee'), (3, 'Partner')],
verbose_name='Type of membership',
),
),
(
'start_date',
models.DateField(
blank=True,
help_text='What date did the membership start?',
null=True,
verbose_name='Start date',
),
),
(
'end_date',
models.DateField(
blank=True,
help_text='What date did the membership end?',
null=True,
verbose_name='End date',
),
),
(
'user',
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name='memberships',
to=settings.AUTH_USER_MODEL,
),
),
],
),
migrations.CreateModel(
name='DID',
fields=[
(
'id',
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name='ID',
),
),
('created_at', models.DateTimeField(auto_now=True)),
('did', models.CharField(max_length=250, unique=True)),
('label', models.CharField(max_length=50)),
(
'user',
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name='dids',
to=settings.AUTH_USER_MODEL,
),
),
],
), ),
] ]

View file

@ -1,16 +1,398 @@
import json import json
import requests import requests
import datetime
from django.db import models from django.db import models
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from idhub_auth.models import User from idhub_auth.models import User
# class Event(models.Model): class Event(models.Model):
# Para los "audit logs" que se requieren en las pantallas. class Types(models.IntegerChoices):
# timestamp = models.DateTimeField() EV_USR_REGISTERED = 1, "EV_USR_REGISTERED"
# Los eventos no tienen relación con otros objetos a nivel de BBDD. EV_USR_WELCOME = 2, "EV_USR_WELCOME"
# event_data = models.CharField(max_length=250) EV_DATA_UPDATE_REQUESTED_BY_USER = 3, "EV_DATA_UPDATE_REQUESTED_BY_USER"
EV_DATA_UPDATE_REQUESTED = 4, "EV_DATA_UPDATE_REQUESTED"
EV_USR_UPDATED_BY_ADMIN = 5, "EV_USR_UPDATED_BY_ADMIN"
EV_USR_UPDATED = 6, "EV_USR_UPDATED"
EV_USR_DELETED_BY_ADMIN = 7, "EV_USR_DELETED_BY_ADMIN"
EV_DID_CREATED_BY_USER = 8, "EV_DID_CREATED_BY_USER"
EV_DID_CREATED = 9, "EV_DID_CREATED"
EV_DID_DELETED = 10, "EV_DID_DELETED"
EV_CREDENTIAL_DELETED_BY_ADMIN = 11, "EV_CREDENTIAL_DELETED_BY_ADMIN"
EV_CREDENTIAL_DELETED = 12, "EV_CREDENTIAL_DELETED"
EV_CREDENTIAL_ISSUED_FOR_USER = 13, "EV_CREDENTIAL_ISSUED_FOR_USER"
EV_CREDENTIAL_ISSUED = 14, "EV_CREDENTIAL_ISSUED"
EV_CREDENTIAL_PRESENTED_BY_USER = 15, "EV_CREDENTIAL_PRESENTED_BY_USER"
EV_CREDENTIAL_PRESENTED = 16, "EV_CREDENTIAL_PRESENTED"
EV_CREDENTIAL_ENABLED = 17, "EV_CREDENTIAL_ENABLED"
EV_CREDENTIAL_CAN_BE_REQUESTED = 18, "EV_CREDENTIAL_CAN_BE_REQUESTED"
EV_CREDENTIAL_REVOKED_BY_ADMIN = 19, "EV_CREDENTIAL_REVOKED_BY_ADMIN"
EV_CREDENTIAL_REVOKED = 20, "EV_CREDENTIAL_REVOKED"
EV_ROLE_CREATED_BY_ADMIN = 21, "EV_ROLE_CREATED_BY_ADMIN"
EV_ROLE_MODIFIED_BY_ADMIN = 22, "EV_ROLE_MODIFIED_BY_ADMIN"
EV_ROLE_DELETED_BY_ADMIN = 23, "EV_ROLE_DELETED_BY_ADMIN"
EV_SERVICE_CREATED_BY_ADMIN = 24, "EV_SERVICE_CREATED_BY_ADMIN"
EV_SERVICE_MODIFIED_BY_ADMIN = 25, "EV_SERVICE_MODIFIED_BY_ADMIN"
EV_SERVICE_DELETED_BY_ADMIN = 26, "EV_SERVICE_DELETED_BY_ADMIN"
EV_ORG_DID_CREATED_BY_ADMIN = 27, "EV_ORG_DID_CREATED_BY_ADMIN"
EV_ORG_DID_DELETED_BY_ADMIN = 28, "EV_ORG_DID_DELETED_BY_ADMIN"
EV_USR_DEACTIVATED_BY_ADMIN = 29, "EV_USR_DEACTIVATED_BY_ADMIN"
EV_USR_ACTIVATED_BY_ADMIN = 30, "EV_USR_ACTIVATED_BY_ADMIN"
created = models.DateTimeField(auto_now=True)
message = models.CharField(max_length=350)
type = models.PositiveSmallIntegerField(
choices=Types.choices,
)
user = models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name='events',
null=True,
)
def get_type(self):
return self.Types(self.type).label
@classmethod
def set_EV_USR_REGISTERED(cls, user):
msg = _("The user {username} was registered: name: {first_name}, last name: {last_name}").format(
username=user.username,
first_name=user.first_name,
last_name=user.last_name
)
cls.objects.create(
type=cls.Types.EV_USR_REGISTERED,
message=msg
)
@classmethod
def set_EV_USR_WELCOME(cls, user):
msg = _("Welcome. You has been registered: name: {first_name}, last name: {last_name}").format(
first_name=user.first_name,
last_name=user.last_name
)
cls.objects.create(
type=cls.Types.EV_USR_WELCOME,
message=msg,
user=user
)
# Is required?
@classmethod
def set_EV_DATA_UPDATE_REQUESTED_BY_USER(cls, user):
msg = _("The user '{username}' has request the update of the following information: ")
msg += "['field1':'value1', 'field2':'value2'>,...]".format(
username=user.username,
)
cls.objects.create(
type=cls.Types.EV_DATA_UPDATE_REQUESTED_BY_USER,
message=msg,
)
# Is required?
@classmethod
def set_EV_DATA_UPDATE_REQUESTED(cls, user):
msg = _("You have requested the update of the following information: ")
msg += "['field1':'value1', 'field2':'value2'>,...]"
cls.objects.create(
type=cls.Types.EV_DATA_UPDATE_REQUESTED,
message=msg,
user=user
)
@classmethod
def set_EV_USR_UPDATED_BY_ADMIN(cls, user):
msg = "The admin has updated the following user 's information: "
msg += "name: {first_name}, last name: {last_name}"
msg = _(msg).format(
first_name=user.first_name,
last_name=user.last_name
)
cls.objects.create(
type=cls.Types.EV_USR_UPDATED_BY_ADMIN,
message=msg
)
@classmethod
def set_EV_USR_UPDATED(cls, user):
msg = "The admin has updated your personal information: "
msg += "name: {first_name}, last name: {last_name}"
msg = _(msg).format(
first_name=user.first_name,
last_name=user.last_name
)
cls.objects.create(
type=cls.Types.EV_USR_UPDATED,
message=msg,
user=user
)
@classmethod
def set_EV_USR_DELETED_BY_ADMIN(cls, user):
msg = _("The admin has deleted the user: username: {username}").format(
username=user.username,
)
cls.objects.create(
type=cls.Types.EV_USR_DELETED_BY_ADMIN,
message=msg
)
@classmethod
def set_EV_DID_CREATED_BY_USER(cls, did):
msg = _("New DID with DID-ID: '{did}' created by user '{username}'").format(
did=did.did,
username=did.user.username
)
cls.objects.create(
type=cls.Types.EV_DID_CREATED_BY_USER,
message=msg,
)
@classmethod
def set_EV_DID_CREATED(cls, did):
msg = _("New DID with label: '{label}' and DID-ID: '{did}' was created'").format(
label=did.label,
did=did.did
)
cls.objects.create(
type=cls.Types.EV_DID_CREATED,
message=msg,
user=did.user
)
@classmethod
def set_EV_DID_DELETED(cls, did):
msg = _("The DID with label '{label}' and DID-ID: '{did}' was deleted from your wallet").format(
label=did.label,
did=did.did
)
cls.objects.create(
type=cls.Types.EV_DID_DELETED,
message=msg,
user=did.user
)
@classmethod
def set_EV_CREDENTIAL_DELETED_BY_ADMIN(cls, cred):
msg = _("The credential of type '{type}' and ID: '{id}' was deleted").format(
type=cred.type(),
id=cred.id,
)
cls.objects.create(
type=cls.Types.EV_CREDENTIAL_DELETED_BY_ADMIN,
message=msg,
)
@classmethod
def set_EV_CREDENTIAL_DELETED(cls, cred):
msg = _("The credential of type '{type}' and ID: '{id}' was deleted from your wallet").format(
type=cred.type(),
id=cred.id
)
cls.objects.create(
type=cls.Types.EV_CREDENTIAL_DELETED,
message=msg,
user=cred.user
)
@classmethod
def set_EV_CREDENTIAL_ISSUED_FOR_USER(cls, cred):
msg = _("The credential of type '{type}' and ID: '{id}' was issued for user {username}").format(
type=cred.type(),
id=cred.id,
username=cred.user.username
)
cls.objects.create(
type=cls.Types.EV_CREDENTIAL_ISSUED_FOR_USER,
message=msg,
)
@classmethod
def set_EV_CREDENTIAL_ISSUED(cls, cred):
msg = _("The credential of type '{type}' and ID: '{id}' was issued and stored in your wallet").format(
type=cred.type(),
id=cred.id
)
cls.objects.create(
type=cls.Types.EV_CREDENTIAL_ISSUED,
message=msg,
user=cred.user
)
@classmethod
def set_EV_CREDENTIAL_PRESENTED_BY_USER(cls, cred, verifier):
msg = "The credential of type '{type}' and ID: '{id}' "
msg += "was presented by user {username} to verifier '{verifier}"
msg = _(msg).format(
type=cred.type(),
id=cred.id,
username=cred.user.username,
verifier=verifier
)
cls.objects.create(
type=cls.Types.EV_CREDENTIAL_PRESENTED_BY_USER,
message=msg,
)
@classmethod
def set_EV_CREDENTIAL_PRESENTED(cls, cred, verifier):
msg = "The credential of type '{type}' and ID: '{id}' "
msg += "was presented to verifier '{verifier}'"
msg = _(msg).format(
type=cred.type(),
id=cred.id,
verifier=verifier
)
cls.objects.create(
type=cls.Types.EV_CREDENTIAL_PRESENTED,
message=msg,
user=cred.user
)
@classmethod
def set_EV_CREDENTIAL_ENABLED(cls, cred):
msg = _("The credential of type '{type}' was enabled for user {username}").format(
type=cred.type(),
username=cred.user.username
)
cls.objects.create(
type=cls.Types.EV_CREDENTIAL_ENABLED,
message=msg,
)
@classmethod
def set_EV_CREDENTIAL_CAN_BE_REQUESTED(cls, cred):
msg = _("You can request the '{type}' credential").format(
type=cred.type()
)
cls.objects.create(
type=cls.Types.EV_CREDENTIAL_CAN_BE_REQUESTED,
message=msg,
user=cred.user
)
@classmethod
def set_EV_CREDENTIAL_REVOKED_BY_ADMIN(cls, cred):
msg = _("The credential of type '{type}' and ID: '{id}' was revoked for ").format(
type=cred.type(),
id=cred.id
)
cls.objects.create(
type=cls.Types.EV_CREDENTIAL_REVOKED_BY_ADMIN,
message=msg,
)
@classmethod
def set_EV_CREDENTIAL_REVOKED(cls, cred):
msg = _("The credential of type '{type}' and ID: '{id}' was revoked by admin").format(
type=cred.type(),
id=cred.id
)
cls.objects.create(
type=cls.Types.EV_CREDENTIAL_REVOKED,
message=msg,
user=cred.user
)
@classmethod
def set_EV_ROLE_CREATED_BY_ADMIN(cls):
msg = _('A new role was created by admin')
cls.objects.create(
type=cls.Types.EV_ROLE_CREATED_BY_ADMIN,
message=msg,
)
@classmethod
def set_EV_ROLE_MODIFIED_BY_ADMIN(cls):
msg = _('The role was modified by admin')
cls.objects.create(
type=cls.Types.EV_ROLE_MODIFIED_BY_ADMIN,
message=msg,
)
@classmethod
def set_EV_ROLE_DELETED_BY_ADMIN(cls):
msg = _('The role was removed by admin')
cls.objects.create(
type=cls.Types.EV_ROLE_DELETED_BY_ADMIN,
message=msg,
)
@classmethod
def set_EV_SERVICE_CREATED_BY_ADMIN(cls):
msg = _('A new service was created by admin')
cls.objects.create(
type=cls.Types.EV_SERVICE_CREATED_BY_ADMIN,
message=msg,
)
@classmethod
def set_EV_SERVICE_MODIFIED_BY_ADMIN(cls):
msg = _('The service was modified by admin')
cls.objects.create(
type=cls.Types.EV_SERVICE_MODIFIED_BY_ADMIN,
message=msg,
)
@classmethod
def set_EV_SERVICE_DELETED_BY_ADMIN(cls):
msg = _('The service was removed by admin')
cls.objects.create(
type=cls.Types.EV_SERVICE_DELETED_BY_ADMIN,
message=msg,
)
@classmethod
def set_EV_ORG_DID_CREATED_BY_ADMIN(cls, did):
msg = _("New Organisational DID with label: '{label}' and DID-ID: '{did}' was created").format(
label=did.label,
did=did.did
)
cls.objects.create(
type=cls.Types.EV_ORG_DID_CREATED_BY_ADMIN,
message=msg,
)
@classmethod
def set_EV_ORG_DID_DELETED_BY_ADMIN(cls, did):
msg = _("Organisational DID with label: '{label}' and DID-ID: '{did}' was removed").format(
label=did.label,
did=did.did
)
cls.objects.create(
type=cls.Types.EV_ORG_DID_DELETED_BY_ADMIN,
message=msg,
)
@classmethod
def set_EV_USR_DEACTIVATED_BY_ADMIN(cls, user):
msg = "The user '{username}' was temporarily deactivated: "
msg += "[name:'{first_name}', last name:'{last_name}']"
msg = _(msg).format(
username=user.username,
first_name=user.first_name,
last_name=user.last_name
)
cls.objects.create(
type=cls.Types.EV_USR_DEACTIVATED_BY_ADMIN,
message=msg,
)
@classmethod
def set_EV_USR_ACTIVATED_BY_ADMIN(cls, user):
msg = "The user '{username}' was activated: "
msg += "name:'{first_name}', last name:'{last_name}']"
msg = _(msg).format(
username=user.username,
first_name=user.first_name,
last_name=user.last_name
)
cls.objects.create(
type=cls.Types.EV_USR_ACTIVATED_BY_ADMIN,
message=msg,
)
class DID(models.Model): class DID(models.Model):
created_at = models.DateTimeField(auto_now=True) created_at = models.DateTimeField(auto_now=True)
@ -62,7 +444,7 @@ class VerificableCredential(models.Model):
id_string = models.CharField(max_length=250) id_string = models.CharField(max_length=250)
verified = models.BooleanField() verified = models.BooleanField()
created_on = models.DateTimeField(auto_now=True) created_on = models.DateTimeField(auto_now=True)
issuer_on = models.DateTimeField(null=True) issued_on = models.DateTimeField(null=True)
did_issuer = models.CharField(max_length=250) did_issuer = models.CharField(max_length=250)
did_subject = models.CharField(max_length=250) did_subject = models.CharField(max_length=250)
data = models.TextField() data = models.TextField()
@ -95,9 +477,13 @@ class VerificableCredential(models.Model):
data = json.loads(self.data).get('instance').items() data = json.loads(self.data).get('instance').items()
return data return data
def get_issued(self, did): def issue(self, did):
self.status = self.Status.ISSUED self.status = self.Status.ISSUED
self.did_subject = did self.did_subject = did
self.issued_on = datetime.datetime.now()
def get_issued_on(self):
return self.issued_on.strftime("%m/%d/%Y")
class VCTemplate(models.Model): class VCTemplate(models.Model):
wkit_template_id = models.CharField(max_length=250) wkit_template_id = models.CharField(max_length=250)
@ -117,7 +503,7 @@ class Membership(models.Model):
class Types(models.IntegerChoices): class Types(models.IntegerChoices):
BENEFICIARY = 1, _('Beneficiary') BENEFICIARY = 1, _('Beneficiary')
EMPLOYEE = 2, _('Employee') EMPLOYEE = 2, _('Employee')
PARTNER = 3, _('Partner') MEMBER = 3, _('Member')
type = models.PositiveSmallIntegerField(_('Type of membership'), choices=Types.choices) type = models.PositiveSmallIntegerField(_('Type of membership'), choices=Types.choices)
start_date = models.DateField( start_date = models.DateField(
@ -128,7 +514,7 @@ class Membership(models.Model):
) )
end_date = models.DateField( end_date = models.DateField(
_('End date'), _('End date'),
help_text=_('What date did the membership end?'), help_text=_('What date will the membership end?'),
blank=True, blank=True,
null=True null=True
) )
@ -144,21 +530,24 @@ class Membership(models.Model):
class Rol(models.Model): class Rol(models.Model):
name = models.CharField(max_length=250) name = models.CharField(_("name"), max_length=250)
description = models.CharField(_("Description"), max_length=250, null=True)
def __str__(self): def __str__(self):
return self.name return self.name
class Service(models.Model): class Service(models.Model):
domain = models.CharField(max_length=250) domain = models.CharField(_("Domain"), max_length=250)
description = models.CharField(max_length=250) description = models.CharField(_("Description"), max_length=250)
rol = models.ManyToManyField( rol = models.ManyToManyField(
Rol, Rol,
) )
def get_roles(self): def get_roles(self):
return ", ".join([x.name for x in self.rol.all()]) if self.rol.exists():
return ", ".join([x.name for x in self.rol.all()])
return _("None")
def __str__(self): def __str__(self):
return "{} -> {}".format(self.domain, self.get_roles()) return "{} -> {}".format(self.domain, self.get_roles())
@ -176,6 +565,9 @@ class UserRol(models.Model):
related_name='users', related_name='users',
) )
class Meta:
unique_together = ('user', 'service',)
class Organization(models.Model): class Organization(models.Model):
name = models.CharField(max_length=250) name = models.CharField(max_length=250)

View file

@ -14,8 +14,8 @@
<tr> <tr>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Type' %}</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Type' %}</button></th>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Details' %}</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Details' %}</button></th>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Issue' %}</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Issued' %}</button></th>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Status' %}</button></th> <th scope="col" class="text-center"><button type="button" class="btn btn-grey border border-dark">{% trans 'Status' %}</button></th>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'User' %}</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'User' %}</button></th>
<th scope="col"></th> <th scope="col"></th>
</tr> </tr>
@ -25,8 +25,8 @@
<tr style="font-size:15px;"> <tr style="font-size:15px;">
<td>{{ f.type }}</td> <td>{{ f.type }}</td>
<td>{{ f.description }}</td> <td>{{ f.description }}</td>
<td>{{ f.issue_on }}</td> <td>{{ f.get_issued_on }}</td>
<td>{{ f.get_status }}</td> <td class="text-center">{{ f.get_status }}</td>
<td>{{ f.user.email }}</td> <td>{{ f.user.email }}</td>
<td><a href="{% url 'idhub:admin_credential' f.id %}" class="btn btn-green-admin">{% trans 'View' %}</a></td> <td><a href="{% url 'idhub:admin_credential' f.id %}" class="btn btn-green-admin">{% trans 'View' %}</a></td>
</tr> </tr>

View file

@ -10,131 +10,20 @@
<table class="table table-striped table-sm"> <table class="table table-striped table-sm">
<thead> <thead>
<tr> <tr>
<th scope="col">#</th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Type' %}</button></th>
<th scope="col"><button type="button" class="btn btn-green-admin border border-dark">Header</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">Header</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Date' %}</button></th>
<th scope="col"><button type="button" class="btn btn-green-admin">Header</button></th>
<th scope="col"><button type="button" class="btn btn-grey ">Header</button></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% for ev in events %}
<tr> <tr>
<td>1,001</td> <td>{{ ev.get_type }}</td>
<td>random</td> <td>{{ ev.message }}</td>
<td>data</td> <td>{{ ev.created }}</td>
<td>placeholder</td>
<td>text</td>
</tr>
<tr>
<td>1,002</td>
<td>placeholder</td>
<td>irrelevant</td>
<td>visual</td>
<td>layout</td>
</tr>
<tr>
<td>1,003</td>
<td>data</td>
<td>rich</td>
<td>dashboard</td>
<td>tabular</td>
</tr>
<tr>
<td>1,003</td>
<td>information</td>
<td>placeholder</td>
<td>illustrative</td>
<td>data</td>
</tr>
<tr>
<td>1,004</td>
<td>text</td>
<td>random</td>
<td>layout</td>
<td>dashboard</td>
</tr>
<tr>
<td>1,005</td>
<td>dashboard</td>
<td>irrelevant</td>
<td>text</td>
<td>placeholder</td>
</tr>
<tr>
<td>1,006</td>
<td>dashboard</td>
<td>illustrative</td>
<td>rich</td>
<td>data</td>
</tr>
<tr>
<td>1,007</td>
<td>placeholder</td>
<td>tabular</td>
<td>information</td>
<td>irrelevant</td>
</tr>
<tr>
<td>1,008</td>
<td>random</td>
<td>data</td>
<td>placeholder</td>
<td>text</td>
</tr>
<tr>
<td>1,009</td>
<td>placeholder</td>
<td>irrelevant</td>
<td>visual</td>
<td>layout</td>
</tr>
<tr>
<td>1,010</td>
<td>data</td>
<td>rich</td>
<td>dashboard</td>
<td>tabular</td>
</tr>
<tr>
<td>1,011</td>
<td>information</td>
<td>placeholder</td>
<td>illustrative</td>
<td>data</td>
</tr>
<tr>
<td>1,012</td>
<td>text</td>
<td>placeholder</td>
<td>layout</td>
<td>dashboard</td>
</tr>
<tr>
<td>1,013</td>
<td>dashboard</td>
<td>irrelevant</td>
<td>text</td>
<td>visual</td>
</tr>
<tr>
<td>1,014</td>
<td>dashboard</td>
<td>illustrative</td>
<td>rich</td>
<td>data</td>
</tr>
<tr>
<td>1,015</td>
<td>random</td>
<td>tabular</td>
<td>information</td>
<td>text</td>
</tr> </tr>
{% endfor %}
</tbody> </tbody>
</table> </table>
</div> </div>
<div class="row">
<div class="col-6"><button type="button" class="btn btn-grey rounded-pill">Cancel</button></div>
<div class="col-6"><button type="button" class="btn btn-green-admin rounded-pill">Revoke</button></div>
<div>
{% endblock %} {% endblock %}

View file

@ -32,7 +32,7 @@
</tbody> </tbody>
</table> </table>
<div class="form-actions-no-box"> <div class="form-actions-no-box">
<a class="btn btn-green-admin" href="{% url 'idhub:admin_dids_new' %}">{% translate "Add Identity" %} <i class="bi bi-plus"></i></a> <a class="btn btn-green-admin" href="{% url 'idhub:admin_dids_new' %}">{% translate "Add identity" %} <i class="bi bi-plus"></i></a>
</div> </div>
</div> </div>
</div> </div>

View file

@ -14,7 +14,7 @@
<tr> <tr>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Created at' %}</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Created at' %}</button></th>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'File' %}</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'File' %}</button></th>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'success' %}</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Success' %}</button></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -28,7 +28,7 @@
</tbody> </tbody>
</table> </table>
<div class="form-actions-no-box"> <div class="form-actions-no-box">
<a class="btn btn-green-admin" href="{% url 'idhub:admin_import_add' %}">{% translate "Import Datas" %} <i class="bi bi-plus"></i></a> <a class="btn btn-green-admin" href="{% url 'idhub:admin_import_add' %}">{% translate "Import data" %} <i class="bi bi-plus"></i></a>
</div> </div>
</div> </div>
</div> </div>

View file

@ -13,26 +13,22 @@
<th scope="col"><button type="button" class="btn btn-green-admin border border-dark">{% trans 'Last name' %}</button></th> <th scope="col"><button type="button" class="btn btn-green-admin border border-dark">{% trans 'Last name' %}</button></th>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'First name' %}</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'First name' %}</button></th>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">Email</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">Email</button></th>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Membership' %}</button></th> <th scope="col" class="text-center"><button type="button" class="btn btn-grey border border-dark">{% trans 'Membership' %}</button></th>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Role' %}</button></th> <th scope="col" class="text-center"><button type="button" class="btn btn-grey border border-dark">{% trans 'Role' %}</button></th>
<th scope="col"></th> <th scope="col"></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% for user in users %} {% for user in users %}
<tr> <tr>
<td>{{ user.last_name }}</td> <td>{{ user.last_name|default:'' }}</td>
<td>{{ user.first_name }}</td> <td>{{ user.first_name|default:'' }}</td>
<td>{{ user.email }}</td> <td>{{ user.email }}</td>
<td> <td class="text-center">
{% for m in user.memberships.all %} {{ user.get_memberships }}
{{ m.get_type }}
{% endfor %}
</td> </td>
<td> <td class="text-center">
{% for r in user.roles.all %} {{ user.get_roles }}
{{ r.service.get_roles }}
{% endfor %}
</td> </td>
<td><a type="button" class="btn btn-green-admin rounded-pill" href="{% url 'idhub:admin_people' user.id %}">{% trans 'View' %}</td> <td><a type="button" class="btn btn-green-admin rounded-pill" href="{% url 'idhub:admin_people' user.id %}">{% trans 'View' %}</td>
</tr> </tr>

View file

@ -12,7 +12,8 @@
<table class="table table-striped table-sm"> <table class="table table-striped table-sm">
<thead> <thead>
<tr> <tr>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Rol' %}</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Role' %}</button></th>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Description' %}</button></th>
<th scope="col"></th> <th scope="col"></th>
<th scope="col"></th> <th scope="col"></th>
</tr> </tr>
@ -21,6 +22,7 @@
{% for rol in roles.all %} {% for rol in roles.all %}
<tr> <tr>
<td>{{ rol.name }}</td> <td>{{ rol.name }}</td>
<td>{{ rol.description|default:""}}</td>
<td><a href="{% url 'idhub:admin_rol_edit' rol.id %}" title="{% trans 'Edit' %}"><i class="bi bi-pencil-square"></i></a></td> <td><a href="{% url 'idhub:admin_rol_edit' rol.id %}" title="{% trans 'Edit' %}"><i class="bi bi-pencil-square"></i></a></td>
<td><a href="{% url 'idhub:admin_rol_del' rol.id %}" title="{% trans 'Delete' %}"><i class="bi bi-trash"></i></a></td> <td><a href="{% url 'idhub:admin_rol_del' rol.id %}" title="{% trans 'Delete' %}"><i class="bi bi-trash"></i></a></td>
</tr> </tr>
@ -28,7 +30,7 @@
</tbody> </tbody>
</table> </table>
<div class="form-actions-no-box"> <div class="form-actions-no-box">
<a class="btn btn-green-admin" href="{% url 'idhub:admin_rol_new' %}">{% translate "Add Rol" %} <i class="bi bi-plus"></i></a> <a class="btn btn-green-admin" href="{% url 'idhub:admin_rol_new' %}">{% translate "Add Role" %} <i class="bi bi-plus"></i></a>
</div> </div>
</div> </div>
</div> </div>

View file

@ -34,7 +34,7 @@
</tbody> </tbody>
</table> </table>
<div class="form-actions-no-box"> <div class="form-actions-no-box">
<a class="btn btn-green-admin" href="{% url 'idhub:admin_schemas_import' %}">{% translate "Add Template" %} <i class="bi bi-plus"></i></a> <a class="btn btn-green-admin" href="{% url 'idhub:admin_schemas_import' %}">{% translate "Add template" %} <i class="bi bi-plus"></i></a>
</div> </div>
</div> </div>
</div> </div>
@ -45,7 +45,7 @@
<div class="modal-dialog"> <div class="modal-dialog">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">{% trans 'Delete Template' %} {{ schema.file_schema }}</h5> <h5 class="modal-title" id="exampleModalLabel">{% trans 'Delete template' %} {{ schema.file_schema }}</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div> </div>
<div class="modal-body"> <div class="modal-body">

View file

@ -12,7 +12,7 @@
<table class="table table-striped table-sm"> <table class="table table-striped table-sm">
<thead> <thead>
<tr> <tr>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Template available' %}</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Available templates' %}</button></th>
<th scope="col"></th> <th scope="col"></th>
</tr> </tr>
</thead> </thead>

View file

@ -14,7 +14,7 @@
<tr> <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 '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 'Description' %}</button></th>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Rol' %}</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Role' %}</button></th>
<th scope="col"></th> <th scope="col"></th>
<th scope="col"></th> <th scope="col"></th>
</tr> </tr>

View file

@ -24,7 +24,7 @@
First Name: First Name:
</div> </div>
<div class="col-9 text-secondary"> <div class="col-9 text-secondary">
{{ object.first_name }} {{ object.first_name|default:'' }}
</div> </div>
</div> </div>
<div class="row border-bottom mt-3"> <div class="row border-bottom mt-3">
@ -32,7 +32,7 @@
Last Name: Last Name:
</div> </div>
<div class="col-9 text-secondary"> <div class="col-9 text-secondary">
{{ object.last_name }} {{ object.last_name|default:'' }}
</div> </div>
</div> </div>
<div class="row mt-3"> <div class="row mt-3">
@ -84,7 +84,7 @@
<table class="table table-striped table-sm"> <table class="table table-striped table-sm">
<thead> <thead>
<tr> <tr>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Rol' %}</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Role' %}</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 'Description' %}</button></th>
<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 'Service' %}</button></th>
</tr> </tr>

View file

@ -70,7 +70,7 @@
<table class="table table-striped table-sm"> <table class="table table-striped table-sm">
<thead> <thead>
<tr> <tr>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Rol' %}</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Role' %}</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 'Description' %}</button></th>
<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 'Service' %}</button></th>
<th scope="col"></th> <th scope="col"></th>
@ -90,7 +90,7 @@
</tbody> </tbody>
</table> </table>
<div class="form-actions-no-box"> <div class="form-actions-no-box">
<a class="btn btn-green-admin" href="{% url 'idhub:admin_people_rol_new' object.id %}">{% translate "Add Rol" %} <i class="bi bi-plus"></i></a> <a class="btn btn-green-admin" href="{% url 'idhub:admin_people_rol_new' object.id %}">{% translate "Add Role" %} <i class="bi bi-plus"></i></a>
</div> </div>
</div> </div>
</div> </div>

View file

@ -66,29 +66,29 @@
<li class="nav-item"> <li class="nav-item">
<a class="nav-link {% if section == 'Home' %}active {% endif %}fw-bold" aria-current="page" href="{% url 'idhub:user_dashboard' %}"> <a class="nav-link {% if section == 'Home' %}active {% endif %}fw-bold" aria-current="page" href="{% url 'idhub:user_dashboard' %}">
<i class="bi bi-house-door icon_sidebar"></i> <i class="bi bi-house-door icon_sidebar"></i>
Home {% trans 'Dashboard' %}
</a> </a>
<hr /> <hr />
</li> </li>
<li class="nav-item"> <li class="nav-item">
<span class="nav-link {% if section == 'MyProfile' %}active {% endif %}fw-bold"> <span class="nav-link {% if section == 'MyProfile' %}active {% endif %}fw-bold">
<i class="fa-regular fa-user icon_sidebar"></i> <i class="fa-regular fa-user icon_sidebar"></i>
My datas {% trans 'My information' %}
</span> </span>
<ul class="flex-column mb-2 ul_sidebar"> <ul class="flex-column mb-2 ul_sidebar">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link {% if path == 'user_profile' %}active2{% endif %}" href="{% url 'idhub:user_profile' %}"> <a class="nav-link {% if path == 'user_profile' %}active2{% endif %}" href="{% url 'idhub:user_profile' %}">
My personal data {% trans 'My personal information' %}
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link {% if path == 'user_roles' %}active2{% endif %}" href="{% url 'idhub:user_roles' %}"> <a class="nav-link {% if path == 'user_roles' %}active2{% endif %}" href="{% url 'idhub:user_roles' %}">
My roles {% trans 'My roles' %}
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link {% if path == 'user_gdpr' %}active2{% endif %}" href="{% url 'idhub:user_gdpr' %}"> <a class="nav-link {% if path == 'user_gdpr' %}active2{% endif %}" href="{% url 'idhub:user_gdpr' %}">
GDPR info {% trans 'GDPR info' %}
</a> </a>
</li> </li>
</ul> </ul>
@ -96,27 +96,27 @@
<li class="nav-item"> <li class="nav-item">
<span class="nav-link {% if section == 'MyWallet' %}active {% endif %}fw-bold" href="#"> <span class="nav-link {% if section == 'MyWallet' %}active {% endif %}fw-bold" href="#">
<i class="bi bi-patch-check icon_sidebar"></i> <i class="bi bi-patch-check icon_sidebar"></i>
My Wallet {% trans 'My wallet' %}
</span> </span>
<ul class="flex-column mb-2 ul_sidebar"> <ul class="flex-column mb-2 ul_sidebar">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link {% if path == 'user_dids' %}active2{% endif %}" href="{% url 'idhub:user_dids' %}"> <a class="nav-link {% if path == 'user_dids' %}active2{% endif %}" href="{% url 'idhub:user_dids' %}">
Identities (DID) {% trans 'Identities (DIDs)' %}
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link {% if path == 'user_credentials' %}active2{% endif %}" href="{% url 'idhub:user_credentials' %}"> <a class="nav-link {% if path == 'user_credentials' %}active2{% endif %}" href="{% url 'idhub:user_credentials' %}">
Credentials {% trans 'My credentials' %}
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link {% if path == 'user_credentials_request' %}active2{% endif %}" href="{% url 'idhub:user_credentials_request' %}"> <a class="nav-link {% if path == 'user_credentials_request' %}active2{% endif %}" href="{% url 'idhub:user_credentials_request' %}">
Credentials request {% trans 'Request a credential' %}
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link {% if path == 'user_credentials_presentation' %}active2{% endif %}" href="{% url 'idhub:user_credentials_presentation' %}"> <a class="nav-link {% if path == 'user_credentials_presentation' %}active2{% endif %}" href="{% url 'idhub:user_credentials_presentation' %}">
Credentials Presentation {% trans 'Present a credential' %}
</a> </a>
</li> </li>
</ul> </ul>

View file

@ -66,24 +66,24 @@
<li class="nav-item"> <li class="nav-item">
<a class="admin nav-link {% if section == 'Home' %}active {% endif %}fw-bold" href="{% url 'idhub:admin_dashboard' %}"> <a class="admin nav-link {% if section == 'Home' %}active {% endif %}fw-bold" href="{% url 'idhub:admin_dashboard' %}">
<i class="bi bi-house-door icon_sidebar"></i> <i class="bi bi-house-door icon_sidebar"></i>
Home {% trans 'Dashboard' %}
</a> </a>
<hr /> <hr />
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="admin {% if section == 'People' %}active {% endif %}nav-link fw-bold" data-bs-toggle="collapse" data-bs-target="#people" aria-expanded="false" aria-controls="people" href="javascript:void()"> <a class="admin {% if section == 'People' %}active {% endif %}nav-link fw-bold" data-bs-toggle="collapse" data-bs-target="#people" aria-expanded="false" aria-controls="people" href="javascript:void()">
<i class="bi bi-people icon_sidebar"></i> <i class="bi bi-people icon_sidebar"></i>
People {% trans 'User managament' %}
</a> </a>
<ul class="flex-column mb-2 ul_sidebar accordion-collapse {% if section == 'People' %}expanded{% else %}collapse{% endif %}" id="people" data-bs-parent="#sidebarMenu"> <ul class="flex-column mb-2 ul_sidebar accordion-collapse {% if section == 'People' %}expanded{% else %}collapse{% endif %}" id="people" data-bs-parent="#sidebarMenu">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link{% if path == 'admin_people_list' %} active2{% endif %}" href="{% url 'idhub:admin_people_list' %}"> <a class="nav-link{% if path == 'admin_people_list' %} active2{% endif %}" href="{% url 'idhub:admin_people_list' %}">
People list {% trans 'View users' %}
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link{% if path == 'admin_people_new' %} active2{% endif %}" href="{% url 'idhub:admin_people_new' %}"> <a class="nav-link{% if path == 'admin_people_new' %} active2{% endif %}" href="{% url 'idhub:admin_people_new' %}">
Register a new user {% trans 'Add user' %}
</a> </a>
</li> </li>
</ul> </ul>
@ -91,50 +91,50 @@
<li class="nav-item"> <li class="nav-item">
<a class="admin nav-link {% if section == 'AccessControl' %}active {% endif %}fw-bold" data-bs-toggle="collapse" data-bs-target="#control-access" aria-expanded="false" aria-controls="control-access" href="javascript:void()"> <a class="admin nav-link {% if section == 'AccessControl' %}active {% endif %}fw-bold" data-bs-toggle="collapse" data-bs-target="#control-access" aria-expanded="false" aria-controls="control-access" href="javascript:void()">
<i class="fa-solid fa-arrow-right-from-bracket icon_sidebar"></i> <i class="fa-solid fa-arrow-right-from-bracket icon_sidebar"></i>
Access Control {% trans 'Access control managament' %}
</a> </a>
<ul class="flex-column mb-2 ul_sidebar accordion-collapse {% if section == 'AccessControl' %}expanded{% else %}collapse{% endif %}" id="control-access" data-bs-parent="#sidebarMenu"> <ul class="flex-column mb-2 ul_sidebar accordion-collapse {% if section == 'AccessControl' %}expanded{% else %}collapse{% endif %}" id="control-access" data-bs-parent="#sidebarMenu">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link{% if path == 'admin_roles' %} active2{% endif %}" href="{% url 'idhub:admin_roles' %}"> <a class="nav-link{% if path == 'admin_roles' %} active2{% endif %}" href="{% url 'idhub:admin_roles' %}">
roles {% trans 'Manage roles' %}
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link{% if path == 'admin_services' %} active2{% endif %}" href="{% url 'idhub:admin_services' %}"> <a class="nav-link{% if path == 'admin_services' %} active2{% endif %}" href="{% url 'idhub:admin_services' %}">
Services {% trans 'Manage services' %}
</a> </a>
</li> </li>
</ul> </ul>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="admin nav-link {% if section == 'Credentials' %}active {% endif %}fw-bold" data-bs-toggle="collapse" data-bs-target="#credentials" aria-expanded="false" aria-controls="credentials" href="javascript:void()"> <a class="admin nav-link {% if section == 'Credential' %}active {% endif %}fw-bold" data-bs-toggle="collapse" data-bs-target="#credential" aria-expanded="false" aria-controls="credential" href="javascript:void()">
<i class="bi bi-patch-check icon_sidebar"></i> <i class="bi bi-patch-check icon_sidebar"></i>
Credentials {% trans 'Credential management' %}
</a> </a>
<ul class="flex-column mb-2 ul_sidebar accordion-collapse {% if section == 'Credentials' %}expanded{% else %}collapse{% endif %}" id="credentials" data-bs-parent="#sidebarMenu"> <ul class="flex-column mb-2 ul_sidebar accordion-collapse {% if section == 'Credential' %}expanded{% else %}collapse{% endif %}" id="credential" data-bs-parent="#sidebarMenu">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link{% if path == 'admin_credentials' %} active2{% endif %}" href="{% url 'idhub:admin_credentials' %}"> <a class="nav-link{% if path == 'admin_credentials' %} active2{% endif %}" href="{% url 'idhub:admin_credentials' %}">
Credentials list {% trans 'View credentials' %}
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a id="wallet" class="nav-link" data-bs-toggle="collapse" data-bs-target="#lwallet" aria-expanded="false" aria-controls="lwallet" href="javascript:void()"> <a id="wallet" class="nav-link" data-bs-toggle="collapse" data-bs-target="#lwallet" aria-expanded="false" aria-controls="lwallet" href="javascript:void()">
Wallet {% trans "Organization's wallet" %}
</a> </a>
<ul class="flex-column mb-2 accordion-collapse {% if wallet %}expanded{% else %}collapse{% endif %}" id="lwallet" data-bs-parent="#wallet"> <ul class="flex-column mb-2 accordion-collapse {% if wallet %}expanded{% else %}collapse{% endif %}" id="lwallet" data-bs-parent="#wallet">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link{% if path == 'admin_dids' %} active2{% endif %}" href="{% url 'idhub:admin_dids' %}"> <a class="nav-link{% if path == 'admin_dids' %} active2{% endif %}" href="{% url 'idhub:admin_dids' %}">
Identities (DID) {% trans 'Manage Identities (DIDs)' %}
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link{% if path == 'admin_wallet_credentials' %} active2{% endif %}" href="{% url 'idhub:admin_wallet_credentials' %}"> <a class="nav-link{% if path == 'admin_wallet_credentials' %} active2{% endif %}" href="{% url 'idhub:admin_wallet_credentials' %}">
Credentials {% trans 'View org. credentials' %}
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link{% if path == 'admin_wallet_config_issue' %} active2{% endif %}" href="{% url 'idhub:admin_wallet_config_issue' %}"> <a class="nav-link{% if path == 'admin_wallet_config_issue' %} active2{% endif %}" href="{% url 'idhub:admin_wallet_config_issue' %}">
Configure Issue {% trans 'Configure credential issuance' %}
</a> </a>
</li> </li>
</ul> </ul>
@ -144,13 +144,13 @@
<li class="nav-item"> <li class="nav-item">
<a class="admin nav-link {% if section == 'Templates' %}active {% endif %}fw-bold" href="{% url 'idhub:admin_schemas' %}"> <a class="admin nav-link {% if section == 'Templates' %}active {% endif %}fw-bold" href="{% url 'idhub:admin_schemas' %}">
<i class="bi bi-file-earmark-text icon_sidebar"></i> <i class="bi bi-file-earmark-text icon_sidebar"></i>
Templates {% trans 'Credential template management' %}
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="admin nav-link {% if section == 'ImportExport' %}active {% endif %}fw-bold" href="{% url 'idhub:admin_import' %}"> <a class="admin nav-link {% if section == 'ImportExport' %}active {% endif %}fw-bold" href="{% url 'idhub:admin_import' %}">
<i class="bi bi-arrow-down-square icon_sidebar"></i> <i class="bi bi-arrow-down-square icon_sidebar"></i>
Import Datas {% trans 'Import data' %}
</a> </a>
</li> </li>
</ul> </ul>

View file

@ -14,8 +14,8 @@
<tr> <tr>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Type' %}</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Type' %}</button></th>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Details' %}</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Details' %}</button></th>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Issue' %}</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Issued' %}</button></th>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Status' %}</button></th> <th scope="col" class="text-center"><button type="button" class="btn btn-grey border border-dark">{% trans 'Status' %}</button></th>
<th scope="col"></th> <th scope="col"></th>
</tr> </tr>
</thead> </thead>
@ -24,8 +24,8 @@
<tr style="font-size:15px;"> <tr style="font-size:15px;">
<td>{{ f.type }}</td> <td>{{ f.type }}</td>
<td>{{ f.description }}</td> <td>{{ f.description }}</td>
<td>{{ f.issue_on }}</td> <td>{{ f.get_issued_on }}</td>
<td>{{ f.get_status }}</td> <td class="text-center">{{ f.get_status }}</td>
<td> <td>
<a href="{% url 'idhub:user_credential' f.id %}" class="text-primary"> <a href="{% url 'idhub:user_credential' f.id %}" class="text-primary">
<i class="bi bi-eye"></i> <i class="bi bi-eye"></i>

View file

@ -10,131 +10,20 @@
<table class="table table-striped table-sm"> <table class="table table-striped table-sm">
<thead> <thead>
<tr> <tr>
<th scope="col">#</th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Type' %}</button></th>
<th scope="col"><button type="button" class="btn btn-green-user border border-dark">Header</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">Header</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Date' %}</button></th>
<th scope="col"><button type="button" class="btn btn-green-user">Header</button></th>
<th scope="col"><button type="button" class="btn btn-grey">Header</button></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% for ev in user.events.all %}
<tr> <tr>
<td>1,001</td> <td>{{ ev.get_type }}</td>
<td>random</td> <td>{{ ev.message }}</td>
<td>data</td> <td>{{ ev.created }}</td>
<td>placeholder</td>
<td>text</td>
</tr>
<tr>
<td>1,002</td>
<td>placeholder</td>
<td>irrelevant</td>
<td>visual</td>
<td>layout</td>
</tr>
<tr>
<td>1,003</td>
<td>data</td>
<td>rich</td>
<td>dashboard</td>
<td>tabular</td>
</tr>
<tr>
<td>1,003</td>
<td>information</td>
<td>placeholder</td>
<td>illustrative</td>
<td>data</td>
</tr>
<tr>
<td>1,004</td>
<td>text</td>
<td>random</td>
<td>layout</td>
<td>dashboard</td>
</tr>
<tr>
<td>1,005</td>
<td>dashboard</td>
<td>irrelevant</td>
<td>text</td>
<td>placeholder</td>
</tr>
<tr>
<td>1,006</td>
<td>dashboard</td>
<td>illustrative</td>
<td>rich</td>
<td>data</td>
</tr>
<tr>
<td>1,007</td>
<td>placeholder</td>
<td>tabular</td>
<td>information</td>
<td>irrelevant</td>
</tr>
<tr>
<td>1,008</td>
<td>random</td>
<td>data</td>
<td>placeholder</td>
<td>text</td>
</tr>
<tr>
<td>1,009</td>
<td>placeholder</td>
<td>irrelevant</td>
<td>visual</td>
<td>layout</td>
</tr>
<tr>
<td>1,010</td>
<td>data</td>
<td>rich</td>
<td>dashboard</td>
<td>tabular</td>
</tr>
<tr>
<td>1,011</td>
<td>information</td>
<td>placeholder</td>
<td>illustrative</td>
<td>data</td>
</tr>
<tr>
<td>1,012</td>
<td>text</td>
<td>placeholder</td>
<td>layout</td>
<td>dashboard</td>
</tr>
<tr>
<td>1,013</td>
<td>dashboard</td>
<td>irrelevant</td>
<td>text</td>
<td>visual</td>
</tr>
<tr>
<td>1,014</td>
<td>dashboard</td>
<td>illustrative</td>
<td>rich</td>
<td>data</td>
</tr>
<tr>
<td>1,015</td>
<td>random</td>
<td>tabular</td>
<td>information</td>
<td>text</td>
</tr> </tr>
{% endfor %}
</tbody> </tbody>
</table> </table>
</div> </div>
<div class="row">
<div class="col-6"><button type="button" class="btn btn-yellow rounded-pill">Cancel</button></div>
<div class="col-6"><button type="button" class="btn btn-green-user rounded-pill">Revoke</button></div>
<div>
{% endblock %} {% endblock %}

View file

@ -31,11 +31,6 @@
</div> </div>
{% endif %} {% endif %}
{% bootstrap_form form %} {% bootstrap_form form %}
<div class="form-actions-no-box">
<a class="btn btn-secondary" href="{% url 'idhub:user_profile' %}">{% translate "Cancel" %}</a>
<input class="btn btn-success" type="submit" name="submit" value="{% translate 'Save' %}" />
</div>
</form> </form>
<hr /> <hr />

View file

@ -12,7 +12,7 @@
<table class="table table-striped table-sm"> <table class="table table-striped table-sm">
<thead> <thead>
<tr> <tr>
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Rol' %}</button></th> <th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Role' %}</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 'Description' %}</button></th>
<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 'Service' %}</button></th>
</tr> </tr>

View file

@ -44,7 +44,7 @@ class RequestCredentialForm(forms.Form):
did = did[0].did did = did[0].did
cred = cred[0] cred = cred[0]
cred.get_issued(did) cred.issue(did)
if commit: if commit:
cred.save() cred.save()
@ -72,23 +72,23 @@ class CredentialPresentationForm(forms.Form):
] ]
def save(self, commit=True): def save(self, commit=True):
org = Organization.objects.filter( self.org = Organization.objects.filter(
id=self.data['organization'] id=self.data['organization']
) )
cred = VerificableCredential.objects.filter( self.cred = VerificableCredential.objects.filter(
user=self.user, user=self.user,
id=self.data['credential'], id=self.data['credential'],
status=VerificableCredential.Status.ISSUED status=VerificableCredential.Status.ISSUED
) )
if not all([org.exists(), cred.exists()]): if not all([self.org.exists(), self.cred.exists()]):
return return
org =org[0] self.org = self.org[0]
cred = cred[0] self.cred = self.cred[0]
if commit: if commit:
org.send(cred) self.org.send(self.cred)
return cred return self.cred
return return

View file

@ -15,7 +15,7 @@ from django.contrib import messages
from utils.apiregiter import iota from utils.apiregiter import iota
from idhub.user.forms import ProfileForm, RequestCredentialForm, CredentialPresentationForm from idhub.user.forms import ProfileForm, RequestCredentialForm, CredentialPresentationForm
from idhub.mixins import UserView from idhub.mixins import UserView
from idhub.models import DID, VerificableCredential from idhub.models import DID, VerificableCredential, Event
class MyProfile(UserView): class MyProfile(UserView):
@ -24,7 +24,7 @@ class MyProfile(UserView):
class MyWallet(UserView): class MyWallet(UserView):
title = _("My Wallet") title = _("My wallet")
section = "MyWallet" section = "MyWallet"
@ -38,7 +38,7 @@ class DashboardView(UserView, TemplateView):
class ProfileView(MyProfile, UpdateView): class ProfileView(MyProfile, UpdateView):
template_name = "idhub/user/profile.html" template_name = "idhub/user/profile.html"
subtitle = _('My personal Data') subtitle = _('My personal data')
icon = 'bi bi-person' icon = 'bi bi-person'
from_class = ProfileForm from_class = ProfileForm
fields = ('first_name', 'last_name', 'email') fields = ('first_name', 'last_name', 'email')
@ -47,6 +47,16 @@ class ProfileView(MyProfile, UpdateView):
def get_object(self): def get_object(self):
return self.request.user return self.request.user
def get_form(self):
form = super().get_form()
form.fields['first_name'].disabled = True
form.fields['last_name'].disabled = True
form.fields['email'].disabled = True
return form
def form_valid(self, form):
return super().form_valid(form)
class RolesView(MyProfile, TemplateView): class RolesView(MyProfile, TemplateView):
template_name = "idhub/user/roles.html" template_name = "idhub/user/roles.html"
@ -62,7 +72,7 @@ class GDPRView(MyProfile, TemplateView):
class CredentialsView(MyWallet, TemplateView): class CredentialsView(MyWallet, TemplateView):
template_name = "idhub/user/credentials.html" template_name = "idhub/user/credentials.html"
subtitle = _('Credentials') subtitle = _('Credential management')
icon = 'bi bi-patch-check-fill' icon = 'bi bi-patch-check-fill'
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
@ -111,7 +121,7 @@ class CredentialJsonView(MyWallet, TemplateView):
class CredentialsRequestView(MyWallet, FormView): class CredentialsRequestView(MyWallet, FormView):
template_name = "idhub/user/credentials_request.html" template_name = "idhub/user/credentials_request.html"
subtitle = _('Credentials request') subtitle = _('Credential request')
icon = 'bi bi-patch-check-fill' icon = 'bi bi-patch-check-fill'
form_class = RequestCredentialForm form_class = RequestCredentialForm
success_url = reverse_lazy('idhub:user_credentials') success_url = reverse_lazy('idhub:user_credentials')
@ -124,15 +134,17 @@ class CredentialsRequestView(MyWallet, FormView):
def form_valid(self, form): def form_valid(self, form):
cred = form.save() cred = form.save()
if cred: if cred:
messages.success(self.request, _("The credential was required successfully!")) messages.success(self.request, _("The credential was issued successfully!"))
Event.set_EV_CREDENTIAL_ISSUED_FOR_USER(cred)
Event.set_EV_CREDENTIAL_ISSUED(cred)
else: else:
messages.error(self.request, _("Not exists the credential!")) messages.error(self.request, _("The credential does not exist!"))
return super().form_valid(form) return super().form_valid(form)
class CredentialsPresentationView(MyWallet, FormView): class CredentialsPresentationView(MyWallet, FormView):
template_name = "idhub/user/credentials_presentation.html" template_name = "idhub/user/credentials_presentation.html"
subtitle = _('Credentials Presentation') subtitle = _('Credential presentation')
icon = 'bi bi-patch-check-fill' icon = 'bi bi-patch-check-fill'
form_class = CredentialPresentationForm form_class = CredentialPresentationForm
success_url = reverse_lazy('idhub:user_credentials') success_url = reverse_lazy('idhub:user_credentials')
@ -145,6 +157,8 @@ class CredentialsPresentationView(MyWallet, FormView):
def form_valid(self, form): def form_valid(self, form):
cred = form.save() cred = form.save()
if cred: if cred:
Event.set_EV_CREDENTIAL_PRESENTED_BY_USER(cred, form.org)
Event.set_EV_CREDENTIAL_PRESENTED(cred, form.org)
messages.success(self.request, _("The credential was presented successfully!")) messages.success(self.request, _("The credential was presented successfully!"))
else: else:
messages.error(self.request, _("Error sending credential!")) messages.error(self.request, _("Error sending credential!"))
@ -153,7 +167,7 @@ class CredentialsPresentationView(MyWallet, FormView):
class DidsView(MyWallet, TemplateView): class DidsView(MyWallet, TemplateView):
template_name = "idhub/user/dids.html" template_name = "idhub/user/dids.html"
subtitle = _('Identities (DID)') subtitle = _('Identities (DIDs)')
icon = 'bi bi-patch-check-fill' icon = 'bi bi-patch-check-fill'
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
@ -166,7 +180,7 @@ class DidsView(MyWallet, TemplateView):
class DidRegisterView(MyWallet, CreateView): class DidRegisterView(MyWallet, CreateView):
template_name = "idhub/user/did_register.html" template_name = "idhub/user/did_register.html"
subtitle = _('Add a new Identities (DID)') subtitle = _('Add a new Identity (DID)')
icon = 'bi bi-patch-check-fill' icon = 'bi bi-patch-check-fill'
wallet = True wallet = True
model = DID model = DID
@ -174,24 +188,20 @@ class DidRegisterView(MyWallet, CreateView):
success_url = reverse_lazy('idhub:user_dids') success_url = reverse_lazy('idhub:user_dids')
object = None object = None
# def get_form_kwargs(self):
# kwargs = super().get_form_kwargs()
# kwargs['initial'] = {
# 'user': self.request.user
# }
# return kwargs
def form_valid(self, form): def form_valid(self, form):
form.instance.user = self.request.user form.instance.user = self.request.user
form.instance.did = iota.issue_did() form.instance.did = iota.issue_did()
form.save() form.save()
messages.success(self.request, _('DID created successfully')) messages.success(self.request, _('DID created successfully'))
Event.set_EV_DID_CREATED(form.instance)
Event.set_EV_DID_CREATED_BY_USER(form.instance)
return super().form_valid(form) return super().form_valid(form)
class DidEditView(MyWallet, UpdateView): class DidEditView(MyWallet, UpdateView):
template_name = "idhub/user/did_register.html" template_name = "idhub/user/did_register.html"
subtitle = _('Identities (DID)') subtitle = _('Identities (DIDs)')
icon = 'bi bi-patch-check-fill' icon = 'bi bi-patch-check-fill'
wallet = True wallet = True
model = DID model = DID
@ -210,7 +220,7 @@ class DidEditView(MyWallet, UpdateView):
class DidDeleteView(MyWallet, DeleteView): class DidDeleteView(MyWallet, DeleteView):
subtitle = _('Identities (DID)') subtitle = _('Identities (DIDs)')
icon = 'bi bi-patch-check-fill' icon = 'bi bi-patch-check-fill'
wallet = True wallet = True
model = DID model = DID
@ -219,7 +229,9 @@ class DidDeleteView(MyWallet, DeleteView):
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
self.pk = kwargs['pk'] self.pk = kwargs['pk']
self.object = get_object_or_404(self.model, pk=self.pk) self.object = get_object_or_404(self.model, pk=self.pk)
Event.set_EV_DID_DELETED(self.object)
self.object.delete() self.object.delete()
messages.success(self.request, _('DID delete successfully')) messages.success(self.request, _('DID delete successfully'))
return redirect(self.success_url) return redirect(self.success_url)

32
idhub_auth/forms.py Normal file
View file

@ -0,0 +1,32 @@
import re
from django import forms
from django.utils.translation import gettext_lazy as _
from idhub_auth.models import User
class ProfileForm(forms.ModelForm):
first_name = forms.CharField(required=True)
last_name = forms.CharField(required=True)
class Meta:
model = User
fields = ['first_name', 'last_name', 'email']
def clean_first_name(self):
first_name = super().clean()['first_name']
if not re.match(r'^[a-zA-Z\s]+$', first_name):
txt = _("The string must contain only characters and spaces")
raise forms.ValidationError(txt)
return first_name
def clean_last_name(self):
last_name = super().clean()['last_name']
if not re.match(r'^[a-zA-Z\s]+$', last_name):
txt = _("The string must contain only characters and spaces")
raise forms.ValidationError(txt)
return last_name

View file

@ -1,4 +1,4 @@
# Generated by Django 4.2.5 on 2023-11-02 15:08 # Generated by Django 4.2.5 on 2023-11-14 16:32
from django.db import migrations, models from django.db import migrations, models

View file

@ -72,3 +72,16 @@ class User(AbstractBaseUser):
def username(self): def username(self):
"Is the email of the user" "Is the email of the user"
return self.email return self.email
def get_memberships(self):
members = set(
str(dict(x.Types.choices)[x.type]) for x in self.memberships.all()
)
return ", ".join(members)
def get_roles(self):
roles = []
for s in self.roles.all():
for r in s.service.rol.all():
roles.append(r.name)
return ", ".join(set(roles))

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-07 17:57+0100\n" "POT-Creation-Date: 2023-11-13 11:11+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -1533,233 +1533,400 @@ msgstr ""
msgid "show this help message and exit" msgid "show this help message and exit"
msgstr "" msgstr ""
#: idhub/admin/views.py:39 idhub/user/views.py:33 #: idhub/admin/forms.py:106
msgid "The user does not exist!"
msgstr ""
#: idhub/admin/views.py:43 idhub/templates/idhub/base.html:69
#: idhub/templates/idhub/base_admin.html:69 idhub/user/views.py:33
msgid "Dashboard" msgid "Dashboard"
msgstr "" msgstr ""
#: idhub/admin/views.py:40 idhub/user/views.py:34 #: idhub/admin/views.py:44 idhub/templates/idhub/admin/import.html:17
#: idhub/user/views.py:34
msgid "Success" msgid "Success"
msgstr "" msgstr ""
#: idhub/admin/views.py:45 #: idhub/admin/views.py:56
msgid "People Management" msgid "User Management"
msgstr "" msgstr ""
#: idhub/admin/views.py:50 #: idhub/admin/views.py:61
msgid "Access Control Management" msgid "Access control management"
msgstr "" msgstr ""
#: idhub/admin/views.py:55 #: idhub/admin/views.py:66
msgid "Credentials Management" msgid "Credential Management"
msgstr ""
#: idhub/admin/views.py:60
msgid "Templates Management"
msgstr ""
#: idhub/admin/views.py:65
msgid "Massive Data Management"
msgstr "" msgstr ""
#: idhub/admin/views.py:71 #: idhub/admin/views.py:71
msgid "People list" msgid "Template Management"
msgstr "" msgstr ""
#: idhub/admin/views.py:84 #: idhub/admin/views.py:76
msgid "User Profile" msgid "Data file management"
msgstr "" msgstr ""
#: idhub/admin/views.py:108 #: idhub/admin/views.py:82 idhub/templates/idhub/base_admin.html:81
msgid "View users"
msgstr ""
#: idhub/admin/views.py:95
msgid "User personal information"
msgstr ""
#: idhub/admin/views.py:119
msgid "Is not possible deactivate your account!" msgid "Is not possible deactivate your account!"
msgstr "" msgstr ""
#: idhub/admin/views.py:129 idhub/admin/views.py:235 #: idhub/admin/views.py:143 idhub/admin/views.py:261
msgid "Is not possible delete your account!" msgid "Is not possible delete your account!"
msgstr "" msgstr ""
#: idhub/admin/views.py:141 #: idhub/admin/views.py:155
msgid "People Register" msgid "The account is updated successfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:156 #: idhub/admin/views.py:164 idhub/templates/idhub/base_admin.html:86
msgid "The account is created successfully" msgid "Add user"
msgstr "" msgstr ""
#: idhub/admin/views.py:167 idhub/admin/views.py:204 #: idhub/admin/views.py:179
msgid "The account was created successfully"
msgstr ""
#: idhub/admin/views.py:193
msgid "Associate a membership to the user"
msgstr ""
#: idhub/admin/views.py:230
msgid "People add membership" msgid "People add membership"
msgstr "" msgstr ""
#: idhub/admin/views.py:242 #: idhub/admin/views.py:268
msgid "Add Rol to User" msgid "Add a user role to access a service"
msgstr "" msgstr ""
#: idhub/admin/views.py:272 #: idhub/admin/views.py:298
msgid "Edit Rol to User" msgid "Modify a user role to access a service"
msgstr "" msgstr ""
#: idhub/admin/views.py:307 #: idhub/admin/views.py:333 idhub/templates/idhub/base_admin.html:99
msgid "Roles Management" msgid "Manage roles"
msgstr "" msgstr ""
#: idhub/admin/views.py:319 idhub/templates/idhub/admin/roles.html:31 #: idhub/admin/views.py:345 idhub/templates/idhub/admin/roles.html:31
#: idhub/templates/idhub/admin/user_edit.html:93 #: idhub/templates/idhub/admin/user_edit.html:93
msgid "Add Rol" msgid "Add Role"
msgstr "" msgstr ""
#: idhub/admin/views.py:329 #: idhub/admin/views.py:354
msgid "Edit Rol" msgid "Role created successfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:356 #: idhub/admin/views.py:361
msgid "Service Management" msgid "Edit Role"
msgstr "" msgstr ""
#: idhub/admin/views.py:368 idhub/templates/idhub/admin/services.html:35 #: idhub/admin/views.py:376
msgid "Add Service" msgid "Role updated successfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:378 #: idhub/admin/views.py:389
msgid "Edit Service" msgid "Role deleted successfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:405 #: idhub/admin/views.py:396 idhub/templates/idhub/base_admin.html:104
msgid "Credentials list" msgid "Manage services"
msgstr "" msgstr ""
#: idhub/admin/views.py:418 #: idhub/admin/views.py:408
msgid "Add service"
msgstr ""
#: idhub/admin/views.py:417
msgid "Service created successfully"
msgstr ""
#: idhub/admin/views.py:424
msgid "Modify service"
msgstr ""
#: idhub/admin/views.py:439
msgid "Service updated successfully"
msgstr ""
#: idhub/admin/views.py:452
msgid "Service deleted successfully"
msgstr ""
#: idhub/admin/views.py:459 idhub/templates/idhub/base_admin.html:117
msgid "View credentials"
msgstr ""
#: idhub/admin/views.py:472
msgid "Change status of Credential" msgid "Change status of Credential"
msgstr "" msgstr ""
#: idhub/admin/views.py:460 #: idhub/admin/views.py:514
msgid "Credential revoked successfully" msgid "Credential revoked successfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:480 #: idhub/admin/views.py:536
msgid "Credential deleted successfully" msgid "Credential deleted successfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:487 idhub/admin/views.py:518 idhub/admin/views.py:537 #: idhub/admin/views.py:545
msgid "Organization Identities (DID)" msgid "Manage Identities (DID)"
msgstr "" msgstr ""
#: idhub/admin/views.py:500 #: idhub/admin/views.py:558
msgid "Add a new Organization Identities (DID)" msgid "Add a new Organization Identities (DID)"
msgstr "" msgstr ""
#: idhub/admin/views.py:512 idhub/user/views.py:188 #: idhub/admin/views.py:570 idhub/user/views.py:195
msgid "DID created successfully" msgid "DID created successfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:532 idhub/user/views.py:208 #: idhub/admin/views.py:577 idhub/admin/views.py:596
msgid "Organization Identities (DID)"
msgstr ""
#: idhub/admin/views.py:591 idhub/user/views.py:218
msgid "DID updated successfully" msgid "DID updated successfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:547 idhub/user/views.py:223 #: idhub/admin/views.py:607 idhub/user/views.py:234
msgid "DID delete successfully" msgid "DID delete successfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:554 idhub/templates/idhub/user/profile.html:51 #: idhub/admin/views.py:613 idhub/templates/idhub/base_admin.html:132
#: idhub/user/views.py:65 msgid "View org. credentials"
msgid "Credentials"
msgstr "" msgstr ""
#: idhub/admin/views.py:561 #: idhub/admin/views.py:620 idhub/templates/idhub/base_admin.html:137
msgid "Configure Issues" msgid "Configure credential issuance"
msgstr "" msgstr ""
#: idhub/admin/views.py:568 #: idhub/admin/views.py:627
msgid "Template List" msgid "View credential templates"
msgstr "" msgstr ""
#: idhub/admin/views.py:602 #: idhub/admin/views.py:661
msgid "Upload Template" msgid "Upload template"
msgstr "" msgstr ""
#: idhub/admin/views.py:618 idhub/admin/views.py:744 #: idhub/admin/views.py:677
msgid "There are some errors in the file" msgid "There are some errors in the file"
msgstr "" msgstr ""
#: idhub/admin/views.py:632 #: idhub/admin/views.py:691
msgid "This template already exists!" msgid "This template already exists!"
msgstr "" msgstr ""
#: idhub/admin/views.py:638 idhub/admin/views.py:683 #: idhub/admin/views.py:697 idhub/admin/views.py:742
msgid "This is not a schema valid!" msgid "This is not a schema valid!"
msgstr "" msgstr ""
#: idhub/admin/views.py:647 #: idhub/admin/views.py:706
msgid "Import Template" msgid "Import template"
msgstr "" msgstr ""
#: idhub/admin/views.py:675 #: idhub/admin/views.py:734
msgid "The schema add successfully!" msgid "The schema was added sucessfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:700 idhub/admin/views.py:713 idhub/admin/views.py:726 #: idhub/admin/views.py:759 idhub/templates/idhub/admin/import.html:31
#: idhub/templates/idhub/base_admin.html:153
msgid "Import data"
msgstr ""
#: idhub/admin/views.py:772 idhub/admin/views.py:785
msgid "Import" msgid "Import"
msgstr "" msgstr ""
#: idhub/admin/views.py:755 #: idhub/admin/views.py:798
msgid "There aren't file" msgid "The file import was successfully!"
msgstr "" msgstr ""
#: idhub/admin/views.py:760 #: idhub/admin/views.py:803
msgid "This file already exists!" msgid "Error importing the file!"
msgstr ""
#: idhub/admin/views.py:799
msgid "The user not exist!"
msgstr ""
#: idhub/models.py:57
msgid "Enabled"
msgstr "" msgstr ""
#: idhub/models.py:58 #: idhub/models.py:58
#, python-brace-format
msgid ""
"The user {username} was registered: name: {first_name}, last name: "
"{last_name}"
msgstr ""
#: idhub/models.py:70
#, python-brace-format
msgid ""
"Welcome. You has been registered: name: {first_name}, last name: {last_name}"
msgstr ""
#: idhub/models.py:83
#, python-brace-format
msgid ""
"The user '{username}' has request the update of the following information: "
msgstr ""
#: idhub/models.py:95
msgid "You have requested the update of the following information: "
msgstr ""
#: idhub/models.py:132
#, python-brace-format
msgid "The admin has deleted the user: username: {username}"
msgstr ""
#: idhub/models.py:142
#, python-brace-format
msgid "New DID with DID-ID: '{did}' created by user '{username}'"
msgstr ""
#: idhub/models.py:153
#, python-brace-format
msgid "New DID with label: '{label}' and DID-ID: '{did}' was created'"
msgstr ""
#: idhub/models.py:165
#, python-brace-format
msgid ""
"The DID with label '{label}' and DID-ID: '{did}' was deleted from your wallet"
msgstr ""
#: idhub/models.py:177
#, python-brace-format
msgid "The credential of type '{type}' and ID: '{id}' was deleted"
msgstr ""
#: idhub/models.py:188
#, python-brace-format
msgid ""
"The credential of type '{type}' and ID: '{id}' was deleted from your wallet"
msgstr ""
#: idhub/models.py:200
#, python-brace-format
msgid ""
"The credential of type '{type}' and ID: '{id}' was issued for user {username}"
msgstr ""
#: idhub/models.py:212
#, python-brace-format
msgid ""
"The credential of type '{type}' and ID: '{id}' was issued and stored in your "
"wallet"
msgstr ""
#: idhub/models.py:254
#, python-brace-format
msgid "The credential of type '{type}' was enabled for user {username}"
msgstr ""
#: idhub/models.py:265
#, python-brace-format
msgid "You can request the '{type}' credential"
msgstr ""
#: idhub/models.py:276
#, python-brace-format
msgid "The credential of type '{type}' and ID: '{id}' was revoked for "
msgstr ""
#: idhub/models.py:287
#, python-brace-format
msgid "The credential of type '{type}' and ID: '{id}' was revoked by admin"
msgstr ""
#: idhub/models.py:299
msgid "A new role was created by admin"
msgstr ""
#: idhub/models.py:307
msgid "The role was modified by admin"
msgstr ""
#: idhub/models.py:315
msgid "The role was removed by admin"
msgstr ""
#: idhub/models.py:323
msgid "A new service was created by admin"
msgstr ""
#: idhub/models.py:331
msgid "The service was modified by admin"
msgstr ""
#: idhub/models.py:339
msgid "The service was removed by admin"
msgstr ""
#: idhub/models.py:347
#, python-brace-format
msgid ""
"New Organisational DID with label: '{label}' and DID-ID: '{did}' was created"
msgstr ""
#: idhub/models.py:358
#, python-brace-format
msgid ""
"Organisational DID with label: '{label}' and DID-ID: '{did}' was removed"
msgstr ""
#: idhub/models.py:438
msgid "Enabled"
msgstr ""
#: idhub/models.py:439 idhub/templates/idhub/admin/credentials.html:17
#: idhub/templates/idhub/user/credentials.html:17
msgid "Issued" msgid "Issued"
msgstr "" msgstr ""
#: idhub/models.py:59 #: idhub/models.py:440
msgid "Revoked" msgid "Revoked"
msgstr "" msgstr ""
#: idhub/models.py:60 #: idhub/models.py:441
msgid "Expired" msgid "Expired"
msgstr "" msgstr ""
#: idhub/models.py:118 #: idhub/models.py:499
msgid "Beneficiary" msgid "Beneficiary"
msgstr "" msgstr ""
#: idhub/models.py:119 #: idhub/models.py:500
msgid "Employee" msgid "Employee"
msgstr "" msgstr ""
#: idhub/models.py:120 #: idhub/models.py:501
msgid "Partner" msgid "Member"
msgstr "" msgstr ""
#: idhub/models.py:122 #: idhub/models.py:503
msgid "Type of membership" msgid "Type of membership"
msgstr "" msgstr ""
#: idhub/models.py:124 #: idhub/models.py:505
msgid "Start date" msgid "Start date"
msgstr "" msgstr ""
#: idhub/models.py:125 #: idhub/models.py:506
msgid "What date did the membership start?" msgid "What date did the membership start?"
msgstr "" msgstr ""
#: idhub/models.py:130 #: idhub/models.py:511
msgid "End date" msgid "End date"
msgstr "" msgstr ""
#: idhub/models.py:131 #: idhub/models.py:512
msgid "What date did the membership end?" msgid "What date will the membership end?"
msgstr "" msgstr ""
#: idhub/models.py:183 #: idhub/models.py:564
msgid "Url where to send the presentation" msgid "Url where to send the presentation"
msgstr "" msgstr ""
@ -1889,7 +2056,9 @@ msgid "Password reset on %(site_name)s"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/credentials.html:15 #: idhub/templates/idhub/admin/credentials.html:15
#: idhub/templates/idhub/admin/dashboard.html:13
#: idhub/templates/idhub/user/credentials.html:15 #: idhub/templates/idhub/user/credentials.html:15
#: idhub/templates/idhub/user/dashboard.html:13
#: idhub/templates/templates/musician/billing.html:21 #: idhub/templates/templates/musician/billing.html:21
#: idhub/templates/templates/musician/databases.html:17 #: idhub/templates/templates/musician/databases.html:17
#: idhub/templates/templates/musician/domain_detail.html:17 #: idhub/templates/templates/musician/domain_detail.html:17
@ -1901,11 +2070,6 @@ msgstr ""
msgid "Details" msgid "Details"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/credentials.html:17
#: idhub/templates/idhub/user/credentials.html:17
msgid "Issue"
msgstr ""
#: idhub/templates/idhub/admin/credentials.html:18 #: idhub/templates/idhub/admin/credentials.html:18
#: idhub/templates/idhub/user/credentials.html:18 #: idhub/templates/idhub/user/credentials.html:18
msgid "Status" msgid "Status"
@ -1921,8 +2085,25 @@ msgstr ""
msgid "View" msgid "View"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/dashboard.html:14
#: idhub/templates/idhub/admin/schemas.html:18
#: idhub/templates/idhub/admin/services.html:16
#: idhub/templates/idhub/admin/user.html:88
#: idhub/templates/idhub/admin/user_edit.html:74
#: idhub/templates/idhub/user/dashboard.html:14
#: idhub/templates/idhub/user/roles.html:16
msgid "Description"
msgstr ""
#: idhub/templates/idhub/admin/dashboard.html:15
#: idhub/templates/idhub/admin/dids.html:15
#: idhub/templates/idhub/user/dashboard.html:15
#: idhub/templates/idhub/user/dids.html:15
msgid "Date"
msgstr ""
#: idhub/templates/idhub/admin/did_register.html:29 #: idhub/templates/idhub/admin/did_register.html:29
#: idhub/templates/idhub/admin/import_step3.html:27 #: idhub/templates/idhub/admin/import_add.html:27
#: idhub/templates/idhub/admin/people_membership_register.html:29 #: idhub/templates/idhub/admin/people_membership_register.html:29
#: idhub/templates/idhub/admin/people_register.html:25 #: idhub/templates/idhub/admin/people_register.html:25
#: idhub/templates/idhub/admin/people_rol_register.html:29 #: idhub/templates/idhub/admin/people_rol_register.html:29
@ -1933,7 +2114,6 @@ msgstr ""
#: idhub/templates/idhub/user/credentials_presentation.html:29 #: idhub/templates/idhub/user/credentials_presentation.html:29
#: idhub/templates/idhub/user/credentials_request.html:29 #: idhub/templates/idhub/user/credentials_request.html:29
#: idhub/templates/idhub/user/did_register.html:29 #: idhub/templates/idhub/user/did_register.html:29
#: idhub/templates/idhub/user/profile.html:35
#: idhub/templates/templates/musician/address_check_delete.html:10 #: idhub/templates/templates/musician/address_check_delete.html:10
#: idhub/templates/templates/musician/address_form.html:11 #: idhub/templates/templates/musician/address_form.html:11
#: idhub/templates/templates/musician/mailbox_change_password.html:11 #: idhub/templates/templates/musician/mailbox_change_password.html:11
@ -1943,7 +2123,7 @@ msgid "Cancel"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/did_register.html:30 #: idhub/templates/idhub/admin/did_register.html:30
#: idhub/templates/idhub/admin/import_step3.html:28 #: idhub/templates/idhub/admin/import_add.html:28
#: idhub/templates/idhub/admin/people_membership_register.html:30 #: idhub/templates/idhub/admin/people_membership_register.html:30
#: idhub/templates/idhub/admin/people_register.html:26 #: idhub/templates/idhub/admin/people_register.html:26
#: idhub/templates/idhub/admin/people_rol_register.html:30 #: idhub/templates/idhub/admin/people_rol_register.html:30
@ -1952,18 +2132,12 @@ msgstr ""
#: idhub/templates/idhub/admin/service_register.html:30 #: idhub/templates/idhub/admin/service_register.html:30
#: idhub/templates/idhub/admin/user_edit.html:28 #: idhub/templates/idhub/admin/user_edit.html:28
#: idhub/templates/idhub/user/did_register.html:30 #: idhub/templates/idhub/user/did_register.html:30
#: idhub/templates/idhub/user/profile.html:36
#: idhub/templates/templates/musician/address_form.html:12 #: idhub/templates/templates/musician/address_form.html:12
#: idhub/templates/templates/musician/mailbox_change_password.html:12 #: idhub/templates/templates/musician/mailbox_change_password.html:12
#: idhub/templates/templates/musician/mailbox_form.html:21 #: idhub/templates/templates/musician/mailbox_form.html:21
msgid "Save" msgid "Save"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/dids.html:15
#: idhub/templates/idhub/user/dids.html:15
msgid "Date"
msgstr ""
#: idhub/templates/idhub/admin/dids.html:16 #: idhub/templates/idhub/admin/dids.html:16
#: idhub/templates/idhub/user/dids.html:16 #: idhub/templates/idhub/user/dids.html:16
msgid "Label" msgid "Label"
@ -1985,8 +2159,7 @@ msgid "Remove"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/dids.html:35 #: idhub/templates/idhub/admin/dids.html:35
#: idhub/templates/idhub/user/dids.html:35 msgid "Add identity"
msgid "Add Identity"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/dids.html:46 #: idhub/templates/idhub/admin/dids.html:46
@ -2000,28 +2173,10 @@ msgid "Are you sure that you want delete this DID?"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/import.html:15 #: idhub/templates/idhub/admin/import.html:15
#: idhub/templates/idhub/admin/import_step2.html:15
#: idhub/templates/idhub/admin/schemas.html:15 #: idhub/templates/idhub/admin/schemas.html:15
msgid "Created at" msgid "Created at"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/import.html:17
msgid "success"
msgstr ""
#: idhub/templates/idhub/admin/import.html:31
msgid "Import Datas"
msgstr ""
#: idhub/templates/idhub/admin/import_step2.html:16
#: idhub/templates/idhub/admin/schemas.html:16
msgid "Template file"
msgstr ""
#: idhub/templates/idhub/admin/import_step2.html:26
msgid "Import Dates"
msgstr ""
#: idhub/templates/idhub/admin/issue_credentials.html:14 #: idhub/templates/idhub/admin/issue_credentials.html:14
#: idhub/templates/idhub/admin/issue_credentials.html:72 #: idhub/templates/idhub/admin/issue_credentials.html:72
msgid "Revoke" msgid "Revoke"
@ -2059,11 +2214,16 @@ msgstr ""
#: idhub/templates/idhub/admin/people.html:16 #: idhub/templates/idhub/admin/people.html:16
#: idhub/templates/idhub/admin/user.html:62 #: idhub/templates/idhub/admin/user.html:62
#: idhub/templates/idhub/admin/user_edit.html:41 #: idhub/templates/idhub/admin/user_edit.html:41
#: idhub/templates/idhub/user/profile.html:48 #: idhub/templates/idhub/user/profile.html:43
msgid "Membership" msgid "Membership"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/people.html:17 #: idhub/templates/idhub/admin/people.html:17
#: idhub/templates/idhub/admin/roles.html:15
#: idhub/templates/idhub/admin/services.html:17
#: idhub/templates/idhub/admin/user.html:87
#: idhub/templates/idhub/admin/user_edit.html:73
#: idhub/templates/idhub/user/roles.html:15
msgid "Role" msgid "Role"
msgstr "" msgstr ""
@ -2105,12 +2265,8 @@ msgstr ""
msgid "User activation on %(site)s" msgid "User activation on %(site)s"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/roles.html:15 #: idhub/templates/idhub/admin/schemas.html:16
#: idhub/templates/idhub/admin/services.html:17 msgid "Template file"
#: idhub/templates/idhub/admin/user.html:87
#: idhub/templates/idhub/admin/user_edit.html:73
#: idhub/templates/idhub/user/roles.html:15
msgid "Rol"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/schemas.html:17 #: idhub/templates/idhub/admin/schemas.html:17
@ -2118,20 +2274,13 @@ msgstr ""
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/schemas.html:18
#: idhub/templates/idhub/admin/services.html:16
#: idhub/templates/idhub/admin/user.html:88
#: idhub/templates/idhub/admin/user_edit.html:74
#: idhub/templates/idhub/user/roles.html:16
msgid "Description"
msgstr ""
#: idhub/templates/idhub/admin/schemas.html:37 #: idhub/templates/idhub/admin/schemas.html:37
msgid "Add Template" #: idhub/templates/idhub/admin/schemas_import.html:29
msgid "Add template"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/schemas.html:48 #: idhub/templates/idhub/admin/schemas.html:48
msgid "Delete Template" msgid "Delete template"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/schemas.html:52 #: idhub/templates/idhub/admin/schemas.html:52
@ -2139,17 +2288,13 @@ msgid "Are you sure that you want delete this template?"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/schemas_import.html:15 #: idhub/templates/idhub/admin/schemas_import.html:15
msgid "Template available" msgid "Available templates"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/schemas_import.html:23 #: idhub/templates/idhub/admin/schemas_import.html:23
msgid "Add" msgid "Add"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/schemas_import.html:29
msgid "Add template"
msgstr ""
#: idhub/templates/idhub/admin/services.html:15 #: idhub/templates/idhub/admin/services.html:15
#: idhub/templates/idhub/admin/user.html:89 #: idhub/templates/idhub/admin/user.html:89
#: idhub/templates/idhub/admin/user_edit.html:75 #: idhub/templates/idhub/admin/user_edit.html:75
@ -2157,6 +2302,10 @@ msgstr ""
msgid "Service" msgid "Service"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/services.html:35
msgid "Add Service"
msgstr ""
#: idhub/templates/idhub/admin/user.html:13 #: idhub/templates/idhub/admin/user.html:13
msgid "Modify" msgid "Modify"
msgstr "" msgstr ""
@ -2171,13 +2320,13 @@ msgstr ""
#: idhub/templates/idhub/admin/user.html:63 #: idhub/templates/idhub/admin/user.html:63
#: idhub/templates/idhub/admin/user_edit.html:42 #: idhub/templates/idhub/admin/user_edit.html:42
#: idhub/templates/idhub/user/profile.html:49 #: idhub/templates/idhub/user/profile.html:44
msgid "From" msgid "From"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/user.html:64 #: idhub/templates/idhub/admin/user.html:64
#: idhub/templates/idhub/admin/user_edit.html:43 #: idhub/templates/idhub/admin/user_edit.html:43
#: idhub/templates/idhub/user/profile.html:50 #: idhub/templates/idhub/user/profile.html:45
msgid "To" msgid "To"
msgstr "" msgstr ""
@ -2193,6 +2342,67 @@ msgstr ""
msgid "Add membership" msgid "Add membership"
msgstr "" msgstr ""
#: idhub/templates/idhub/base.html:76
msgid "My information"
msgstr ""
#: idhub/templates/idhub/base.html:81
msgid "My personal information"
msgstr ""
#: idhub/templates/idhub/base.html:86 idhub/user/views.py:63
msgid "My roles"
msgstr ""
#: idhub/templates/idhub/base.html:91 idhub/user/views.py:69
msgid "GDPR info"
msgstr ""
#: idhub/templates/idhub/base.html:99 idhub/user/views.py:27
msgid "My wallet"
msgstr ""
#: idhub/templates/idhub/base.html:104 idhub/user/views.py:170
#: idhub/user/views.py:204 idhub/user/views.py:223
msgid "Identities (DIDs)"
msgstr ""
#: idhub/templates/idhub/base.html:109
msgid "My credentials"
msgstr ""
#: idhub/templates/idhub/base.html:114
msgid "Request a credential"
msgstr ""
#: idhub/templates/idhub/base.html:119
msgid "Present a credential"
msgstr ""
#: idhub/templates/idhub/base_admin.html:76
msgid "User managament"
msgstr ""
#: idhub/templates/idhub/base_admin.html:94
msgid "Access control managament"
msgstr ""
#: idhub/templates/idhub/base_admin.html:112 idhub/user/views.py:75
msgid "Credential management"
msgstr ""
#: idhub/templates/idhub/base_admin.html:122
msgid "Organization's wallet"
msgstr ""
#: idhub/templates/idhub/base_admin.html:127
msgid "Manage Identities (DIDs)"
msgstr ""
#: idhub/templates/idhub/base_admin.html:147
msgid "Credential template management"
msgstr ""
#: idhub/templates/idhub/user/credentials_presentation.html:30 #: idhub/templates/idhub/user/credentials_presentation.html:30
msgid "Send" msgid "Send"
msgstr "" msgstr ""
@ -2201,6 +2411,10 @@ msgstr ""
msgid "Request" msgid "Request"
msgstr "" msgstr ""
#: idhub/templates/idhub/user/dids.html:35
msgid "Add Identity"
msgstr ""
#: idhub/templates/idhub/user/profile.html:13 #: idhub/templates/idhub/user/profile.html:13
msgid "ARCO Forms" msgid "ARCO Forms"
msgstr "" msgstr ""
@ -2209,6 +2423,10 @@ msgstr ""
msgid "Notice of Privacy" msgid "Notice of Privacy"
msgstr "" msgstr ""
#: idhub/templates/idhub/user/profile.html:46
msgid "Credentials"
msgstr ""
#: idhub/templates/templates/musician/address_check_delete.html:7 #: idhub/templates/templates/musician/address_check_delete.html:7
#, python-format #, python-format
msgid "Are you sure that you want remove the address: \"%(address_name)s\"?" msgid "Are you sure that you want remove the address: \"%(address_name)s\"?"
@ -2510,54 +2728,38 @@ msgstr ""
msgid "My profile" msgid "My profile"
msgstr "" msgstr ""
#: idhub/user/views.py:27
msgid "My Wallet"
msgstr ""
#: idhub/user/views.py:41 #: idhub/user/views.py:41
msgid "My personal Data" msgid "My personal data"
msgstr "" msgstr ""
#: idhub/user/views.py:53 #: idhub/user/views.py:88
msgid "My roles"
msgstr ""
#: idhub/user/views.py:59
msgid "GDPR info"
msgstr ""
#: idhub/user/views.py:78
msgid "Credential" msgid "Credential"
msgstr "" msgstr ""
#: idhub/user/views.py:114 #: idhub/user/views.py:124
msgid "Credentials request" msgid "Credential request"
msgstr "" msgstr ""
#: idhub/user/views.py:127 #: idhub/user/views.py:137
msgid "The credential was required successfully!" msgid "The credential was issued successfully!"
msgstr "" msgstr ""
#: idhub/user/views.py:129 #: idhub/user/views.py:141
msgid "Not exists the credential!" msgid "The credential does not exist!"
msgstr "" msgstr ""
#: idhub/user/views.py:135 #: idhub/user/views.py:147
msgid "Credentials Presentation" msgid "Credential presentation"
msgstr "" msgstr ""
#: idhub/user/views.py:148 #: idhub/user/views.py:162
msgid "The credential was presented successfully!" msgid "The credential was presented successfully!"
msgstr "" msgstr ""
#: idhub/user/views.py:150 #: idhub/user/views.py:164
msgid "Error sending credential!" msgid "Error sending credential!"
msgstr "" msgstr ""
#: idhub/user/views.py:156 idhub/user/views.py:194 idhub/user/views.py:213 #: idhub/user/views.py:183
msgid "Identities (DID)" msgid "Add a new Identity (DID)"
msgstr ""
#: idhub/user/views.py:169
msgid "Add a new Identities (DID)"
msgstr "" msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-07 17:54+0100\n" "POT-Creation-Date: 2023-11-13 11:12+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -1533,233 +1533,400 @@ msgstr ""
msgid "show this help message and exit" msgid "show this help message and exit"
msgstr "" msgstr ""
#: idhub/admin/views.py:39 idhub/user/views.py:33 #: idhub/admin/forms.py:106
msgid "The user does not exist!"
msgstr ""
#: idhub/admin/views.py:43 idhub/templates/idhub/base.html:69
#: idhub/templates/idhub/base_admin.html:69 idhub/user/views.py:33
msgid "Dashboard" msgid "Dashboard"
msgstr "" msgstr ""
#: idhub/admin/views.py:40 idhub/user/views.py:34 #: idhub/admin/views.py:44 idhub/templates/idhub/admin/import.html:17
#: idhub/user/views.py:34
msgid "Success" msgid "Success"
msgstr "" msgstr ""
#: idhub/admin/views.py:45 #: idhub/admin/views.py:56
msgid "People Management" msgid "User Management"
msgstr "" msgstr ""
#: idhub/admin/views.py:50 #: idhub/admin/views.py:61
msgid "Access Control Management" msgid "Access control management"
msgstr "" msgstr ""
#: idhub/admin/views.py:55 #: idhub/admin/views.py:66
msgid "Credentials Management" msgid "Credential Management"
msgstr ""
#: idhub/admin/views.py:60
msgid "Templates Management"
msgstr ""
#: idhub/admin/views.py:65
msgid "Massive Data Management"
msgstr "" msgstr ""
#: idhub/admin/views.py:71 #: idhub/admin/views.py:71
msgid "People list" msgid "Template Management"
msgstr "" msgstr ""
#: idhub/admin/views.py:84 #: idhub/admin/views.py:76
msgid "User Profile" msgid "Data file management"
msgstr "" msgstr ""
#: idhub/admin/views.py:108 #: idhub/admin/views.py:82 idhub/templates/idhub/base_admin.html:81
msgid "View users"
msgstr ""
#: idhub/admin/views.py:95
msgid "User personal information"
msgstr ""
#: idhub/admin/views.py:119
msgid "Is not possible deactivate your account!" msgid "Is not possible deactivate your account!"
msgstr "" msgstr ""
#: idhub/admin/views.py:129 idhub/admin/views.py:235 #: idhub/admin/views.py:143 idhub/admin/views.py:261
msgid "Is not possible delete your account!" msgid "Is not possible delete your account!"
msgstr "" msgstr ""
#: idhub/admin/views.py:141 #: idhub/admin/views.py:155
msgid "People Register" msgid "The account is updated successfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:156 #: idhub/admin/views.py:164 idhub/templates/idhub/base_admin.html:86
msgid "The account is created successfully" msgid "Add user"
msgstr "" msgstr ""
#: idhub/admin/views.py:167 idhub/admin/views.py:204 #: idhub/admin/views.py:179
msgid "The account was created successfully"
msgstr ""
#: idhub/admin/views.py:193
msgid "Associate a membership to the user"
msgstr ""
#: idhub/admin/views.py:230
msgid "People add membership" msgid "People add membership"
msgstr "" msgstr ""
#: idhub/admin/views.py:242 #: idhub/admin/views.py:268
msgid "Add Rol to User" msgid "Add a user role to access a service"
msgstr "" msgstr ""
#: idhub/admin/views.py:272 #: idhub/admin/views.py:298
msgid "Edit Rol to User" msgid "Modify a user role to access a service"
msgstr "" msgstr ""
#: idhub/admin/views.py:307 #: idhub/admin/views.py:333 idhub/templates/idhub/base_admin.html:99
msgid "Roles Management" msgid "Manage roles"
msgstr "" msgstr ""
#: idhub/admin/views.py:319 idhub/templates/idhub/admin/roles.html:31 #: idhub/admin/views.py:345 idhub/templates/idhub/admin/roles.html:31
#: idhub/templates/idhub/admin/user_edit.html:93 #: idhub/templates/idhub/admin/user_edit.html:93
msgid "Add Rol" msgid "Add Role"
msgstr "" msgstr ""
#: idhub/admin/views.py:329 #: idhub/admin/views.py:354
msgid "Edit Rol" msgid "Role created successfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:356 #: idhub/admin/views.py:361
msgid "Service Management" msgid "Edit Role"
msgstr "" msgstr ""
#: idhub/admin/views.py:368 idhub/templates/idhub/admin/services.html:35 #: idhub/admin/views.py:376
msgid "Add Service" msgid "Role updated successfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:378 #: idhub/admin/views.py:389
msgid "Edit Service" msgid "Role deleted successfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:405 #: idhub/admin/views.py:396 idhub/templates/idhub/base_admin.html:104
msgid "Credentials list" msgid "Manage services"
msgstr "" msgstr ""
#: idhub/admin/views.py:418 #: idhub/admin/views.py:408
msgid "Add service"
msgstr ""
#: idhub/admin/views.py:417
msgid "Service created successfully"
msgstr ""
#: idhub/admin/views.py:424
msgid "Modify service"
msgstr ""
#: idhub/admin/views.py:439
msgid "Service updated successfully"
msgstr ""
#: idhub/admin/views.py:452
msgid "Service deleted successfully"
msgstr ""
#: idhub/admin/views.py:459 idhub/templates/idhub/base_admin.html:117
msgid "View credentials"
msgstr ""
#: idhub/admin/views.py:472
msgid "Change status of Credential" msgid "Change status of Credential"
msgstr "" msgstr ""
#: idhub/admin/views.py:460 #: idhub/admin/views.py:514
msgid "Credential revoked successfully" msgid "Credential revoked successfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:480 #: idhub/admin/views.py:536
msgid "Credential deleted successfully" msgid "Credential deleted successfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:487 idhub/admin/views.py:518 idhub/admin/views.py:537 #: idhub/admin/views.py:545
msgid "Organization Identities (DID)" msgid "Manage Identities (DID)"
msgstr "" msgstr ""
#: idhub/admin/views.py:500 #: idhub/admin/views.py:558
msgid "Add a new Organization Identities (DID)" msgid "Add a new Organization Identities (DID)"
msgstr "" msgstr ""
#: idhub/admin/views.py:512 idhub/user/views.py:188 #: idhub/admin/views.py:570 idhub/user/views.py:195
msgid "DID created successfully" msgid "DID created successfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:532 idhub/user/views.py:208 #: idhub/admin/views.py:577 idhub/admin/views.py:596
msgid "Organization Identities (DID)"
msgstr ""
#: idhub/admin/views.py:591 idhub/user/views.py:218
msgid "DID updated successfully" msgid "DID updated successfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:547 idhub/user/views.py:223 #: idhub/admin/views.py:607 idhub/user/views.py:234
msgid "DID delete successfully" msgid "DID delete successfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:554 idhub/templates/idhub/user/profile.html:51 #: idhub/admin/views.py:613 idhub/templates/idhub/base_admin.html:132
#: idhub/user/views.py:65 msgid "View org. credentials"
msgid "Credentials"
msgstr "" msgstr ""
#: idhub/admin/views.py:561 #: idhub/admin/views.py:620 idhub/templates/idhub/base_admin.html:137
msgid "Configure Issues" msgid "Configure credential issuance"
msgstr "" msgstr ""
#: idhub/admin/views.py:568 #: idhub/admin/views.py:627
msgid "Template List" msgid "View credential templates"
msgstr "" msgstr ""
#: idhub/admin/views.py:602 #: idhub/admin/views.py:661
msgid "Upload Template" msgid "Upload template"
msgstr "" msgstr ""
#: idhub/admin/views.py:618 idhub/admin/views.py:744 #: idhub/admin/views.py:677
msgid "There are some errors in the file" msgid "There are some errors in the file"
msgstr "" msgstr ""
#: idhub/admin/views.py:632 #: idhub/admin/views.py:691
msgid "This template already exists!" msgid "This template already exists!"
msgstr "" msgstr ""
#: idhub/admin/views.py:638 idhub/admin/views.py:683 #: idhub/admin/views.py:697 idhub/admin/views.py:742
msgid "This is not a schema valid!" msgid "This is not a schema valid!"
msgstr "" msgstr ""
#: idhub/admin/views.py:647 #: idhub/admin/views.py:706
msgid "Import Template" msgid "Import template"
msgstr "" msgstr ""
#: idhub/admin/views.py:675 #: idhub/admin/views.py:734
msgid "The schema add successfully!" msgid "The schema was added sucessfully"
msgstr "" msgstr ""
#: idhub/admin/views.py:700 idhub/admin/views.py:713 idhub/admin/views.py:726 #: idhub/admin/views.py:759 idhub/templates/idhub/admin/import.html:31
#: idhub/templates/idhub/base_admin.html:153
msgid "Import data"
msgstr ""
#: idhub/admin/views.py:772 idhub/admin/views.py:785
msgid "Import" msgid "Import"
msgstr "" msgstr ""
#: idhub/admin/views.py:755 #: idhub/admin/views.py:798
msgid "There aren't file" msgid "The file import was successfully!"
msgstr "" msgstr ""
#: idhub/admin/views.py:760 #: idhub/admin/views.py:803
msgid "This file already exists!" msgid "Error importing the file!"
msgstr ""
#: idhub/admin/views.py:799
msgid "The user not exist!"
msgstr ""
#: idhub/models.py:57
msgid "Enabled"
msgstr "" msgstr ""
#: idhub/models.py:58 #: idhub/models.py:58
#, python-brace-format
msgid ""
"The user {username} was registered: name: {first_name}, last name: "
"{last_name}"
msgstr ""
#: idhub/models.py:70
#, python-brace-format
msgid ""
"Welcome. You has been registered: name: {first_name}, last name: {last_name}"
msgstr ""
#: idhub/models.py:83
#, python-brace-format
msgid ""
"The user '{username}' has request the update of the following information: "
msgstr ""
#: idhub/models.py:95
msgid "You have requested the update of the following information: "
msgstr ""
#: idhub/models.py:132
#, python-brace-format
msgid "The admin has deleted the user: username: {username}"
msgstr ""
#: idhub/models.py:142
#, python-brace-format
msgid "New DID with DID-ID: '{did}' created by user '{username}'"
msgstr ""
#: idhub/models.py:153
#, python-brace-format
msgid "New DID with label: '{label}' and DID-ID: '{did}' was created'"
msgstr ""
#: idhub/models.py:165
#, python-brace-format
msgid ""
"The DID with label '{label}' and DID-ID: '{did}' was deleted from your wallet"
msgstr ""
#: idhub/models.py:177
#, python-brace-format
msgid "The credential of type '{type}' and ID: '{id}' was deleted"
msgstr ""
#: idhub/models.py:188
#, python-brace-format
msgid ""
"The credential of type '{type}' and ID: '{id}' was deleted from your wallet"
msgstr ""
#: idhub/models.py:200
#, python-brace-format
msgid ""
"The credential of type '{type}' and ID: '{id}' was issued for user {username}"
msgstr ""
#: idhub/models.py:212
#, python-brace-format
msgid ""
"The credential of type '{type}' and ID: '{id}' was issued and stored in your "
"wallet"
msgstr ""
#: idhub/models.py:254
#, python-brace-format
msgid "The credential of type '{type}' was enabled for user {username}"
msgstr ""
#: idhub/models.py:265
#, python-brace-format
msgid "You can request the '{type}' credential"
msgstr ""
#: idhub/models.py:276
#, python-brace-format
msgid "The credential of type '{type}' and ID: '{id}' was revoked for "
msgstr ""
#: idhub/models.py:287
#, python-brace-format
msgid "The credential of type '{type}' and ID: '{id}' was revoked by admin"
msgstr ""
#: idhub/models.py:299
msgid "A new role was created by admin"
msgstr ""
#: idhub/models.py:307
msgid "The role was modified by admin"
msgstr ""
#: idhub/models.py:315
msgid "The role was removed by admin"
msgstr ""
#: idhub/models.py:323
msgid "A new service was created by admin"
msgstr ""
#: idhub/models.py:331
msgid "The service was modified by admin"
msgstr ""
#: idhub/models.py:339
msgid "The service was removed by admin"
msgstr ""
#: idhub/models.py:347
#, python-brace-format
msgid ""
"New Organisational DID with label: '{label}' and DID-ID: '{did}' was created"
msgstr ""
#: idhub/models.py:358
#, python-brace-format
msgid ""
"Organisational DID with label: '{label}' and DID-ID: '{did}' was removed"
msgstr ""
#: idhub/models.py:438
msgid "Enabled"
msgstr ""
#: idhub/models.py:439 idhub/templates/idhub/admin/credentials.html:17
#: idhub/templates/idhub/user/credentials.html:17
msgid "Issued" msgid "Issued"
msgstr "" msgstr ""
#: idhub/models.py:59 #: idhub/models.py:440
msgid "Revoked" msgid "Revoked"
msgstr "" msgstr ""
#: idhub/models.py:60 #: idhub/models.py:441
msgid "Expired" msgid "Expired"
msgstr "" msgstr ""
#: idhub/models.py:118 #: idhub/models.py:499
msgid "Beneficiary" msgid "Beneficiary"
msgstr "" msgstr ""
#: idhub/models.py:119 #: idhub/models.py:500
msgid "Employee" msgid "Employee"
msgstr "" msgstr ""
#: idhub/models.py:120 #: idhub/models.py:501
msgid "Partner" msgid "Member"
msgstr "" msgstr ""
#: idhub/models.py:122 #: idhub/models.py:503
msgid "Type of membership" msgid "Type of membership"
msgstr "" msgstr ""
#: idhub/models.py:124 #: idhub/models.py:505
msgid "Start date" msgid "Start date"
msgstr "" msgstr ""
#: idhub/models.py:125 #: idhub/models.py:506
msgid "What date did the membership start?" msgid "What date did the membership start?"
msgstr "" msgstr ""
#: idhub/models.py:130 #: idhub/models.py:511
msgid "End date" msgid "End date"
msgstr "" msgstr ""
#: idhub/models.py:131 #: idhub/models.py:512
msgid "What date did the membership end?" msgid "What date will the membership end?"
msgstr "" msgstr ""
#: idhub/models.py:183 #: idhub/models.py:564
msgid "Url where to send the presentation" msgid "Url where to send the presentation"
msgstr "" msgstr ""
@ -1889,7 +2056,9 @@ msgid "Password reset on %(site_name)s"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/credentials.html:15 #: idhub/templates/idhub/admin/credentials.html:15
#: idhub/templates/idhub/admin/dashboard.html:13
#: idhub/templates/idhub/user/credentials.html:15 #: idhub/templates/idhub/user/credentials.html:15
#: idhub/templates/idhub/user/dashboard.html:13
#: idhub/templates/templates/musician/billing.html:21 #: idhub/templates/templates/musician/billing.html:21
#: idhub/templates/templates/musician/databases.html:17 #: idhub/templates/templates/musician/databases.html:17
#: idhub/templates/templates/musician/domain_detail.html:17 #: idhub/templates/templates/musician/domain_detail.html:17
@ -1901,11 +2070,6 @@ msgstr ""
msgid "Details" msgid "Details"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/credentials.html:17
#: idhub/templates/idhub/user/credentials.html:17
msgid "Issue"
msgstr ""
#: idhub/templates/idhub/admin/credentials.html:18 #: idhub/templates/idhub/admin/credentials.html:18
#: idhub/templates/idhub/user/credentials.html:18 #: idhub/templates/idhub/user/credentials.html:18
msgid "Status" msgid "Status"
@ -1921,8 +2085,25 @@ msgstr ""
msgid "View" msgid "View"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/dashboard.html:14
#: idhub/templates/idhub/admin/schemas.html:18
#: idhub/templates/idhub/admin/services.html:16
#: idhub/templates/idhub/admin/user.html:88
#: idhub/templates/idhub/admin/user_edit.html:74
#: idhub/templates/idhub/user/dashboard.html:14
#: idhub/templates/idhub/user/roles.html:16
msgid "Description"
msgstr ""
#: idhub/templates/idhub/admin/dashboard.html:15
#: idhub/templates/idhub/admin/dids.html:15
#: idhub/templates/idhub/user/dashboard.html:15
#: idhub/templates/idhub/user/dids.html:15
msgid "Date"
msgstr ""
#: idhub/templates/idhub/admin/did_register.html:29 #: idhub/templates/idhub/admin/did_register.html:29
#: idhub/templates/idhub/admin/import_step3.html:27 #: idhub/templates/idhub/admin/import_add.html:27
#: idhub/templates/idhub/admin/people_membership_register.html:29 #: idhub/templates/idhub/admin/people_membership_register.html:29
#: idhub/templates/idhub/admin/people_register.html:25 #: idhub/templates/idhub/admin/people_register.html:25
#: idhub/templates/idhub/admin/people_rol_register.html:29 #: idhub/templates/idhub/admin/people_rol_register.html:29
@ -1933,7 +2114,6 @@ msgstr ""
#: idhub/templates/idhub/user/credentials_presentation.html:29 #: idhub/templates/idhub/user/credentials_presentation.html:29
#: idhub/templates/idhub/user/credentials_request.html:29 #: idhub/templates/idhub/user/credentials_request.html:29
#: idhub/templates/idhub/user/did_register.html:29 #: idhub/templates/idhub/user/did_register.html:29
#: idhub/templates/idhub/user/profile.html:35
#: idhub/templates/templates/musician/address_check_delete.html:10 #: idhub/templates/templates/musician/address_check_delete.html:10
#: idhub/templates/templates/musician/address_form.html:11 #: idhub/templates/templates/musician/address_form.html:11
#: idhub/templates/templates/musician/mailbox_change_password.html:11 #: idhub/templates/templates/musician/mailbox_change_password.html:11
@ -1943,7 +2123,7 @@ msgid "Cancel"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/did_register.html:30 #: idhub/templates/idhub/admin/did_register.html:30
#: idhub/templates/idhub/admin/import_step3.html:28 #: idhub/templates/idhub/admin/import_add.html:28
#: idhub/templates/idhub/admin/people_membership_register.html:30 #: idhub/templates/idhub/admin/people_membership_register.html:30
#: idhub/templates/idhub/admin/people_register.html:26 #: idhub/templates/idhub/admin/people_register.html:26
#: idhub/templates/idhub/admin/people_rol_register.html:30 #: idhub/templates/idhub/admin/people_rol_register.html:30
@ -1952,18 +2132,12 @@ msgstr ""
#: idhub/templates/idhub/admin/service_register.html:30 #: idhub/templates/idhub/admin/service_register.html:30
#: idhub/templates/idhub/admin/user_edit.html:28 #: idhub/templates/idhub/admin/user_edit.html:28
#: idhub/templates/idhub/user/did_register.html:30 #: idhub/templates/idhub/user/did_register.html:30
#: idhub/templates/idhub/user/profile.html:36
#: idhub/templates/templates/musician/address_form.html:12 #: idhub/templates/templates/musician/address_form.html:12
#: idhub/templates/templates/musician/mailbox_change_password.html:12 #: idhub/templates/templates/musician/mailbox_change_password.html:12
#: idhub/templates/templates/musician/mailbox_form.html:21 #: idhub/templates/templates/musician/mailbox_form.html:21
msgid "Save" msgid "Save"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/dids.html:15
#: idhub/templates/idhub/user/dids.html:15
msgid "Date"
msgstr ""
#: idhub/templates/idhub/admin/dids.html:16 #: idhub/templates/idhub/admin/dids.html:16
#: idhub/templates/idhub/user/dids.html:16 #: idhub/templates/idhub/user/dids.html:16
msgid "Label" msgid "Label"
@ -1985,8 +2159,7 @@ msgid "Remove"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/dids.html:35 #: idhub/templates/idhub/admin/dids.html:35
#: idhub/templates/idhub/user/dids.html:35 msgid "Add identity"
msgid "Add Identity"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/dids.html:46 #: idhub/templates/idhub/admin/dids.html:46
@ -2000,28 +2173,10 @@ msgid "Are you sure that you want delete this DID?"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/import.html:15 #: idhub/templates/idhub/admin/import.html:15
#: idhub/templates/idhub/admin/import_step2.html:15
#: idhub/templates/idhub/admin/schemas.html:15 #: idhub/templates/idhub/admin/schemas.html:15
msgid "Created at" msgid "Created at"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/import.html:17
msgid "success"
msgstr ""
#: idhub/templates/idhub/admin/import.html:31
msgid "Import Datas"
msgstr ""
#: idhub/templates/idhub/admin/import_step2.html:16
#: idhub/templates/idhub/admin/schemas.html:16
msgid "Template file"
msgstr ""
#: idhub/templates/idhub/admin/import_step2.html:26
msgid "Import Dates"
msgstr ""
#: idhub/templates/idhub/admin/issue_credentials.html:14 #: idhub/templates/idhub/admin/issue_credentials.html:14
#: idhub/templates/idhub/admin/issue_credentials.html:72 #: idhub/templates/idhub/admin/issue_credentials.html:72
msgid "Revoke" msgid "Revoke"
@ -2059,11 +2214,16 @@ msgstr ""
#: idhub/templates/idhub/admin/people.html:16 #: idhub/templates/idhub/admin/people.html:16
#: idhub/templates/idhub/admin/user.html:62 #: idhub/templates/idhub/admin/user.html:62
#: idhub/templates/idhub/admin/user_edit.html:41 #: idhub/templates/idhub/admin/user_edit.html:41
#: idhub/templates/idhub/user/profile.html:48 #: idhub/templates/idhub/user/profile.html:43
msgid "Membership" msgid "Membership"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/people.html:17 #: idhub/templates/idhub/admin/people.html:17
#: idhub/templates/idhub/admin/roles.html:15
#: idhub/templates/idhub/admin/services.html:17
#: idhub/templates/idhub/admin/user.html:87
#: idhub/templates/idhub/admin/user_edit.html:73
#: idhub/templates/idhub/user/roles.html:15
msgid "Role" msgid "Role"
msgstr "" msgstr ""
@ -2105,12 +2265,8 @@ msgstr ""
msgid "User activation on %(site)s" msgid "User activation on %(site)s"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/roles.html:15 #: idhub/templates/idhub/admin/schemas.html:16
#: idhub/templates/idhub/admin/services.html:17 msgid "Template file"
#: idhub/templates/idhub/admin/user.html:87
#: idhub/templates/idhub/admin/user_edit.html:73
#: idhub/templates/idhub/user/roles.html:15
msgid "Rol"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/schemas.html:17 #: idhub/templates/idhub/admin/schemas.html:17
@ -2118,20 +2274,13 @@ msgstr ""
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/schemas.html:18
#: idhub/templates/idhub/admin/services.html:16
#: idhub/templates/idhub/admin/user.html:88
#: idhub/templates/idhub/admin/user_edit.html:74
#: idhub/templates/idhub/user/roles.html:16
msgid "Description"
msgstr ""
#: idhub/templates/idhub/admin/schemas.html:37 #: idhub/templates/idhub/admin/schemas.html:37
msgid "Add Template" #: idhub/templates/idhub/admin/schemas_import.html:29
msgid "Add template"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/schemas.html:48 #: idhub/templates/idhub/admin/schemas.html:48
msgid "Delete Template" msgid "Delete template"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/schemas.html:52 #: idhub/templates/idhub/admin/schemas.html:52
@ -2139,17 +2288,13 @@ msgid "Are you sure that you want delete this template?"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/schemas_import.html:15 #: idhub/templates/idhub/admin/schemas_import.html:15
msgid "Template available" msgid "Available templates"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/schemas_import.html:23 #: idhub/templates/idhub/admin/schemas_import.html:23
msgid "Add" msgid "Add"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/schemas_import.html:29
msgid "Add template"
msgstr ""
#: idhub/templates/idhub/admin/services.html:15 #: idhub/templates/idhub/admin/services.html:15
#: idhub/templates/idhub/admin/user.html:89 #: idhub/templates/idhub/admin/user.html:89
#: idhub/templates/idhub/admin/user_edit.html:75 #: idhub/templates/idhub/admin/user_edit.html:75
@ -2157,6 +2302,10 @@ msgstr ""
msgid "Service" msgid "Service"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/services.html:35
msgid "Add Service"
msgstr ""
#: idhub/templates/idhub/admin/user.html:13 #: idhub/templates/idhub/admin/user.html:13
msgid "Modify" msgid "Modify"
msgstr "" msgstr ""
@ -2171,13 +2320,13 @@ msgstr ""
#: idhub/templates/idhub/admin/user.html:63 #: idhub/templates/idhub/admin/user.html:63
#: idhub/templates/idhub/admin/user_edit.html:42 #: idhub/templates/idhub/admin/user_edit.html:42
#: idhub/templates/idhub/user/profile.html:49 #: idhub/templates/idhub/user/profile.html:44
msgid "From" msgid "From"
msgstr "" msgstr ""
#: idhub/templates/idhub/admin/user.html:64 #: idhub/templates/idhub/admin/user.html:64
#: idhub/templates/idhub/admin/user_edit.html:43 #: idhub/templates/idhub/admin/user_edit.html:43
#: idhub/templates/idhub/user/profile.html:50 #: idhub/templates/idhub/user/profile.html:45
msgid "To" msgid "To"
msgstr "" msgstr ""
@ -2193,6 +2342,67 @@ msgstr ""
msgid "Add membership" msgid "Add membership"
msgstr "" msgstr ""
#: idhub/templates/idhub/base.html:76
msgid "My information"
msgstr ""
#: idhub/templates/idhub/base.html:81
msgid "My personal information"
msgstr ""
#: idhub/templates/idhub/base.html:86 idhub/user/views.py:63
msgid "My roles"
msgstr ""
#: idhub/templates/idhub/base.html:91 idhub/user/views.py:69
msgid "GDPR info"
msgstr ""
#: idhub/templates/idhub/base.html:99 idhub/user/views.py:27
msgid "My wallet"
msgstr ""
#: idhub/templates/idhub/base.html:104 idhub/user/views.py:170
#: idhub/user/views.py:204 idhub/user/views.py:223
msgid "Identities (DIDs)"
msgstr ""
#: idhub/templates/idhub/base.html:109
msgid "My credentials"
msgstr ""
#: idhub/templates/idhub/base.html:114
msgid "Request a credential"
msgstr ""
#: idhub/templates/idhub/base.html:119
msgid "Present a credential"
msgstr ""
#: idhub/templates/idhub/base_admin.html:76
msgid "User managament"
msgstr ""
#: idhub/templates/idhub/base_admin.html:94
msgid "Access control managament"
msgstr ""
#: idhub/templates/idhub/base_admin.html:112 idhub/user/views.py:75
msgid "Credential management"
msgstr ""
#: idhub/templates/idhub/base_admin.html:122
msgid "Organization's wallet"
msgstr ""
#: idhub/templates/idhub/base_admin.html:127
msgid "Manage Identities (DIDs)"
msgstr ""
#: idhub/templates/idhub/base_admin.html:147
msgid "Credential template management"
msgstr ""
#: idhub/templates/idhub/user/credentials_presentation.html:30 #: idhub/templates/idhub/user/credentials_presentation.html:30
msgid "Send" msgid "Send"
msgstr "" msgstr ""
@ -2201,6 +2411,10 @@ msgstr ""
msgid "Request" msgid "Request"
msgstr "" msgstr ""
#: idhub/templates/idhub/user/dids.html:35
msgid "Add Identity"
msgstr ""
#: idhub/templates/idhub/user/profile.html:13 #: idhub/templates/idhub/user/profile.html:13
msgid "ARCO Forms" msgid "ARCO Forms"
msgstr "" msgstr ""
@ -2209,6 +2423,10 @@ msgstr ""
msgid "Notice of Privacy" msgid "Notice of Privacy"
msgstr "" msgstr ""
#: idhub/templates/idhub/user/profile.html:46
msgid "Credentials"
msgstr ""
#: idhub/templates/templates/musician/address_check_delete.html:7 #: idhub/templates/templates/musician/address_check_delete.html:7
#, python-format #, python-format
msgid "Are you sure that you want remove the address: \"%(address_name)s\"?" msgid "Are you sure that you want remove the address: \"%(address_name)s\"?"
@ -2510,54 +2728,38 @@ msgstr ""
msgid "My profile" msgid "My profile"
msgstr "" msgstr ""
#: idhub/user/views.py:27
msgid "My Wallet"
msgstr ""
#: idhub/user/views.py:41 #: idhub/user/views.py:41
msgid "My personal Data" msgid "My personal data"
msgstr "" msgstr ""
#: idhub/user/views.py:53 #: idhub/user/views.py:88
msgid "My roles"
msgstr ""
#: idhub/user/views.py:59
msgid "GDPR info"
msgstr ""
#: idhub/user/views.py:78
msgid "Credential" msgid "Credential"
msgstr "" msgstr ""
#: idhub/user/views.py:114 #: idhub/user/views.py:124
msgid "Credentials request" msgid "Credential request"
msgstr "" msgstr ""
#: idhub/user/views.py:127 #: idhub/user/views.py:137
msgid "The credential was required successfully!" msgid "The credential was issued successfully!"
msgstr "" msgstr ""
#: idhub/user/views.py:129 #: idhub/user/views.py:141
msgid "Not exists the credential!" msgid "The credential does not exist!"
msgstr "" msgstr ""
#: idhub/user/views.py:135 #: idhub/user/views.py:147
msgid "Credentials Presentation" msgid "Credential presentation"
msgstr "" msgstr ""
#: idhub/user/views.py:148 #: idhub/user/views.py:162
msgid "The credential was presented successfully!" msgid "The credential was presented successfully!"
msgstr "" msgstr ""
#: idhub/user/views.py:150 #: idhub/user/views.py:164
msgid "Error sending credential!" msgid "Error sending credential!"
msgstr "" msgstr ""
#: idhub/user/views.py:156 idhub/user/views.py:194 idhub/user/views.py:213 #: idhub/user/views.py:183
msgid "Identities (DID)" msgid "Add a new Identity (DID)"
msgstr ""
#: idhub/user/views.py:169
msgid "Add a new Identities (DID)"
msgstr "" msgstr ""

View file

@ -143,12 +143,8 @@ AUTH_PASSWORD_VALIDATORS = [
# Internationalization # Internationalization
# https://docs.djangoproject.com/en/4.2/topics/i18n/ # https://docs.djangoproject.com/en/4.2/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = config('TIME_ZONE', 'UTC') TIME_ZONE = config('TIME_ZONE', 'UTC')
USE_I18N = True
USE_TZ = True USE_TZ = True
@ -181,5 +177,8 @@ MESSAGE_TAGS = {
LOCALE_PATHS = [ LOCALE_PATHS = [
os.path.join(BASE_DIR, 'locale'), os.path.join(BASE_DIR, 'locale'),
] ]
LANGUAGE_CODE="es"
USE_I18N = True
USE_L10N = True
AUTH_USER_MODEL = 'idhub_auth.User' AUTH_USER_MODEL = 'idhub_auth.User'