# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import migrations, models import django.db.models.deletion from django.conf import settings import django.contrib.auth.models import django.core.validators import re2o.mixins import re2o.field_permissions import users.models class Migration(migrations.Migration): dependencies = [('auth', '0008_alter_user_username_max_length')] initial = True operations = [ migrations.CreateModel( name="User", bases=( re2o.mixins.RevMixin, re2o.field_permissions.FieldPermissionModelMixin, django.contrib.auth.models.AbstractBaseUser, django.contrib.auth.models.PermissionsMixin, re2o.mixins.AclMixin, ), fields=[ ( "id", models.AutoField( verbose_name="ID", serialize=False, auto_created=True, primary_key=True, ), ), ("surname", models.CharField(max_length=255)), ( "pseudo", models.CharField( max_length=32, unique=True, help_text="Must only contain letters, numerals or dashes.", validators=[users.models.linux_user_validator], ), ), ( "email", models.EmailField( blank=True, default="", help_text="External email address allowing us to contact you.", ), ), ( "local_email_redirect", models.BooleanField( default=False, help_text="Enable redirection of the local email messages to the main email address.", ), ), ( "local_email_enabled", models.BooleanField( default=False, help_text="Enable the local email account." ), ), ( "comment", models.CharField( help_text="Comment, school year.", max_length=255, blank=True ), ), ("pwd_ntlm", models.CharField(max_length=255)), ( "state", models.IntegerField( choices=( (0, "Active"), (1, "Disabled"), (2, "Archived"), (3, "Not yet active"), (4, "Fully archived"), ), default=3, help_text="Account state.", ), ), ( "email_state", models.IntegerField( choices=( (0, "Confirmed"), (1, "Not confirmed"), (2, "Waiting for email confirmation"), ), default=2, ), ), ("registered", models.DateTimeField(auto_now_add=True)), ("telephone", models.CharField(max_length=15, blank=True, null=True)), ( "uid_number", models.PositiveIntegerField( default=users.models.get_fresh_user_uid, unique=True ), ), ( "legacy_uid", models.PositiveIntegerField( unique=True, blank=True, null=True, help_text="Optionnal legacy uid, for import and transition purpose", ), ), ( "shortcuts_enabled", models.BooleanField( verbose_name="enable shortcuts on Re2o website", default=True ), ), ("email_change_date", models.DateTimeField(auto_now_add=True)), ("theme", models.CharField(max_length=255, default="default.css")), ( "is_superuser", models.BooleanField( default=False, help_text="Designates that this user has all permissions without explicitly assigning them.", verbose_name="superuser status", ), ), ( "last_login", models.DateTimeField( blank=True, null=True, verbose_name="last login" ), ), ( "password", models.CharField( max_length=128, verbose_name="password" ), ), ("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={ "permissions": ( ("change_user_password", "Can change the password of a user"), ("change_user_state", "Can edit the state of a user"), ("change_user_force", "Can force the move"), ("change_user_shell", "Can edit the shell of a user"), ("change_user_pseudo", "Can edit the pseudo of a user"), ( "change_user_groups", "Can edit the groups of rights of a user (critical permission)", ), ( "change_all_users", "Can edit all users, including those with rights", ), ("view_user", "Can view a user object"), ), "verbose_name": "user (member or club)", "verbose_name_plural": "users (members or clubs)", }, ), migrations.CreateModel( name="Adherent", fields=[ ( "user_ptr", models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL, ), ), ("name", models.CharField(max_length=255)), ( "gpg_fingerprint", models.CharField(max_length=49, blank=True, null=True), ), ], options={"verbose_name": "member", "verbose_name_plural": "members"}, ), migrations.CreateModel( name="Club", fields=[ ( "user_ptr", models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL, ), ), ("mailing", models.BooleanField(default=False)), ], options={"verbose_name": "club", "verbose_name_plural": "clubs"}, ), migrations.CreateModel( name="ServiceUser", bases=( re2o.mixins.RevMixin, re2o.mixins.AclMixin, django.contrib.auth.models.AbstractBaseUser, ), fields=[ ( "id", models.AutoField( verbose_name="ID", serialize=False, auto_created=True, primary_key=True, ), ), ( "pseudo", models.CharField( max_length=32, unique=True, help_text="Must only contain letters, numerals or dashes.", validators=[users.models.linux_user_validator], ), ), ( "access_group", models.CharField( choices=( ("auth", "auth"), ("readonly", "readonly"), ("usermgmt", "usermgmt"), ), default="readonly", max_length=32, ), ), ( "comment", models.CharField(help_text="Comment.", max_length=255, blank=True), ), ( "last_login", models.DateTimeField( blank=True, null=True, verbose_name="last login" ), ), ( "password", models.CharField( max_length=128, verbose_name="password" ), ), ], options={ "permissions": ( ("view_serviceuser", "Can view a service user object"), ), "verbose_name": "service user", "verbose_name_plural": "service users", }, ), migrations.CreateModel( name="School", bases=(re2o.mixins.RevMixin, re2o.mixins.AclMixin, models.Model), fields=[ ( "id", models.AutoField( verbose_name="ID", serialize=False, auto_created=True, primary_key=True, ), ), ("name", models.CharField(max_length=255)), ], options={ "permissions": (("view_school", "Can view a school object"),), "verbose_name": "school", "verbose_name_plural": "schools", }, ), migrations.CreateModel( name="ListRight", bases=( re2o.mixins.RevMixin, re2o.mixins.AclMixin, django.contrib.auth.models.Group, ), fields=[ ( "group_ptr", models.OneToOneField( parent_link=True, auto_created=True, primary_key=True, on_delete=django.db.models.deletion.CASCADE, serialize=False, to="auth.Group", ), ), ( "unix_name", models.CharField( max_length=255, unique=True, validators=[ django.core.validators.RegexValidator( "^[a-z]+$", message=( "UNIX group names can only contain lower case letters." ), ) ], ), ), ("gid", models.PositiveIntegerField(unique=True, null=True)), ("critical", models.BooleanField(default=False)), ( "details", models.CharField( help_text="Description.", max_length=255, blank=True ), ), ], options={ "permissions": ( ("view_listright", "Can view a group of rights object"), ), "verbose_name": "group of rights", "verbose_name_plural": "groups of rights", }, ), migrations.CreateModel( name="ListShell", bases=(re2o.mixins.RevMixin, re2o.mixins.AclMixin, models.Model), fields=[ ( "id", models.AutoField( verbose_name="ID", serialize=False, auto_created=True, primary_key=True, ), ), ("shell", models.CharField(max_length=255, unique=True)), ], options={ "permissions": (("view_listshell", "Can view a shell object"),), "verbose_name": "shell", "verbose_name_plural": "shells", }, ), migrations.CreateModel( name="Ban", bases=(re2o.mixins.RevMixin, re2o.mixins.AclMixin, models.Model), fields=[ ( "id", models.AutoField( verbose_name="ID", serialize=False, auto_created=True, primary_key=True, ), ), ("raison", models.CharField(max_length=255)), ("date_start", models.DateTimeField(auto_now_add=True)), ("date_end", models.DateTimeField()), ( "state", models.IntegerField( choices=( (0, "HARD (no access)"), (1, "SOFT (local access only)"), (2, "RESTRICTED (speed limitation)"), ), default=0, ), ), ], options={ "permissions": (("view_ban", "Can view a ban object"),), "verbose_name": "ban", "verbose_name_plural": "bans", }, ), migrations.CreateModel( name="Whitelist", bases=(re2o.mixins.RevMixin, re2o.mixins.AclMixin, models.Model), fields=[ ( "id", models.AutoField( verbose_name="ID", serialize=False, auto_created=True, primary_key=True, ), ), ("raison", models.CharField(max_length=255)), ("date_start", models.DateTimeField(auto_now_add=True)), ("date_end", models.DateTimeField()), ], options={ "permissions": (("view_whitelist", "Can view a whitelist object"),), "verbose_name": "whitelist (free of charge access)", "verbose_name_plural": "whitelists (free of charge access)", }, ), migrations.CreateModel( name="Request", bases=(models.Model,), fields=[ ( "id", models.AutoField( verbose_name="ID", serialize=False, auto_created=True, primary_key=True, ), ), ( "type", models.CharField( max_length=2, choices=(("PW", "Password"), ("EM", "Email address")), ), ), ("token", models.CharField(max_length=32)), ("email", models.EmailField(blank=True, null=True)), ("created_at", models.DateTimeField(auto_now_add=True, editable=False)), ("expires_at", models.DateTimeField()), ], ), migrations.CreateModel( name="EMailAddress", bases=(re2o.mixins.RevMixin, re2o.mixins.AclMixin, models.Model), fields=[ ( "id", models.AutoField( verbose_name="ID", serialize=False, auto_created=True, primary_key=True, ), ), ( "local_part", models.CharField( unique=True, max_length=128, help_text="Local part of the email address.", ), ), ], options={ "permissions": ( ("view_emailaddress", "Can view a local email account object"), ), "verbose_name": "local email account", "verbose_name_plural": "local email accounts", }, ), ]