feat: link local library

This commit is contained in:
gabdevele
2026-06-17 20:43:56 +02:00 Unverified
parent 9a770a2af0
commit db59882f33
327 changed files with 22274 additions and 1 deletions
@@ -0,0 +1,74 @@
from django.contrib import admin
from django.utils.translation import gettext_lazy as _
from django.contrib.auth.admin import UserAdmin
from .models import User
@admin.register(User)
class CustomUserAdmin(UserAdmin):
readonly_fields = (
"date_joined",
"last_login",
)
list_display = (
"username",
"email",
"is_active",
"is_staff",
"is_superuser",
)
list_editable = (
"is_active",
"is_staff",
"is_superuser",
)
fieldsets = (
(
None,
{
"fields": (
(
"username",
"is_active",
"is_staff",
"is_superuser",
),
("password"),
("origin"),
)
},
),
(
_("Anagrafica"),
{"fields": (("first_name", "last_name"), "email", ("attributes",))},
),
(
_("Permissions"),
{"fields": ("groups", "user_permissions"), "classes": ("collapse",)},
),
(
_("Date accessi sistema"),
{
"fields": (
(
"date_joined",
"last_login",
)
)
},
),
)
add_fieldsets = (
(
None,
{
"classes": ("wide",),
"fields": ("username", "password1", "password2"),
},
),
)
admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)
@@ -0,0 +1,9 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class AccountsConfig(AppConfig):
name = "spid_cie_oidc.accounts"
verbose_name = _("User accounts")
default_auto_field = "django.db.models.BigAutoField"
label = "spid_cie_oidc_accounts"
@@ -0,0 +1,145 @@
# Generated by Django 4.0.2 on 2022-02-06 15:45
import django.contrib.auth.models
import django.contrib.auth.validators
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
initial = True
dependencies = [
("auth", "0012_alter_user_first_name_max_length"),
]
operations = [
migrations.CreateModel(
name="User",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("password", models.CharField(max_length=128, verbose_name="password")),
(
"last_login",
models.DateTimeField(
blank=True, null=True, verbose_name="last login"
),
),
(
"is_superuser",
models.BooleanField(
default=False,
help_text="Designates that this user has all permissions without explicitly assigning them.",
verbose_name="superuser status",
),
),
(
"username",
models.CharField(
error_messages={
"unique": "A user with that username already exists."
},
help_text="Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.",
max_length=150,
unique=True,
validators=[
django.contrib.auth.validators.UnicodeUsernameValidator()
],
verbose_name="username",
),
),
(
"is_staff",
models.BooleanField(
default=False,
help_text="Designates whether the user can log into this admin site.",
verbose_name="staff status",
),
),
(
"date_joined",
models.DateTimeField(
default=django.utils.timezone.now, verbose_name="date joined"
),
),
(
"first_name",
models.CharField(
blank=True, max_length=96, null=True, verbose_name="Name"
),
),
(
"last_name",
models.CharField(
blank=True, max_length=96, null=True, verbose_name="Surname"
),
),
("is_active", models.BooleanField(default=True, verbose_name="active")),
(
"email",
models.EmailField(
blank=True,
max_length=254,
null=True,
verbose_name="email address",
),
),
(
"taxpayer_id",
models.CharField(
blank=True,
max_length=32,
null=True,
verbose_name="Taxpayer's identification number",
),
),
(
"origin",
models.CharField(
blank=True,
max_length=254,
null=True,
verbose_name="from which connector this user come from",
),
),
(
"groups",
models.ManyToManyField(
blank=True,
help_text="The groups this user belongs to. A user will get all permissions granted to each of their groups.",
related_name="user_set",
related_query_name="user",
to="auth.Group",
verbose_name="groups",
),
),
(
"user_permissions",
models.ManyToManyField(
blank=True,
help_text="Specific permissions for this user.",
related_name="user_set",
related_query_name="user",
to="auth.Permission",
verbose_name="user permissions",
),
),
],
options={
"verbose_name_plural": "Users",
"ordering": ["username"],
},
managers=[
("objects", django.contrib.auth.models.UserManager()),
],
),
]
@@ -0,0 +1,22 @@
# Generated by Django 4.0.2 on 2022-03-02 17:23
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("spid_cie_oidc_accounts", "0001_initial"),
]
operations = [
migrations.RemoveField(
model_name="user",
name="taxpayer_id",
),
migrations.AddField(
model_name="user",
name="attributes",
field=models.JSONField(blank=True, default={}, null=True),
),
]
@@ -0,0 +1,18 @@
# Generated by Django 4.0.2 on 2022-03-02 17:24
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("spid_cie_oidc_accounts", "0002_remove_user_taxpayer_id_user_attributes"),
]
operations = [
migrations.AlterField(
model_name="user",
name="attributes",
field=models.JSONField(blank=True, default=dict, null=True),
),
]
@@ -0,0 +1,35 @@
from django.db import models
from django.contrib.auth.models import AbstractUser
from django.contrib.sessions.models import Session
from django.utils.translation import gettext_lazy as _
class User(AbstractUser):
first_name = models.CharField(_("Name"), max_length=96, blank=True, null=True)
last_name = models.CharField(_("Surname"), max_length=96, blank=True, null=True)
is_active = models.BooleanField(_("active"), default=True)
email = models.EmailField("email address", blank=True, null=True)
origin = models.CharField(
_("from which connector this user come from"),
max_length=254,
blank=True,
null=True,
)
attributes = models.JSONField(default=dict, blank=True, null=True)
class Meta:
ordering = ["username"]
verbose_name_plural = _("Users")
def clear_sessions(self): # pragma: no cover
user_sessions = []
for session in Session.objects.all():
if str(self.pk) == session.get_decoded().get("_auth_user_id"):
user_sessions.append(session.pk)
return Session.objects.filter(pk__in=user_sessions).delete()
def __str__(self): # pragma: no cover
return "{} {}".format(
self.first_name or self.attributes.get('given_name'),
self.last_name or self.attributes.get('family_name', "")
)
@@ -0,0 +1,10 @@
from django import template
from django.contrib.auth.models import Group
register = template.Library()
@register.filter(name="has_group")
def has_group(user, group_name): # pragma: no cover
group = Group.objects.get(name=group_name)
return group in user.groups.all()