Erstellte Funktion von auth/models.py in das Projektverzeichnis übernehmen
Verfasst: Montag 23. Oktober 2017, 14:24
Hallo Forum,
um einem Prüfer Wert True bei is_staff und Wert False bei is_superuser zu vergeben habe ich eine zusätliche Funktion namens "create_controller" in dem Djangoverzeichnis bzw. django.contrib.auth.models in der Classe UserManager geschrieben.
So weit so gut, alles funktioniert wie gewünscht.
Aber:
- Funktion "create_controller" soll in das projekt/models.py übernommen werden, um später von Versionskotrollsystem erkannt zu werden.
PS:
- "create_controller" Funktion wird in der fill_db.py angesprochen(siehe Ausschnitt von fill_db.py)
- Funktion "create_controller" hat return self._create_user. Funktion "_create_user" soll weiterhin in django.contrib.auth.models bleiben
Ich bin Anfänger und brauche eure Unterstüzung. Eine fertige Lösung ist nicht notwendig. Ich brauche einfach nur Tipps, um das Problem zu lösen.
Ich habe schon sehr viel mit dem import ausprobiert, leider ohne Erfolg :K
Weiss jemand was und wie ich importieren muss, wenn ich Funktion "create_controller" im Projetverzeichnis projekt/models.py haben möchte?
Und wie muss ggf. fill_db.py verändert werden?
Vielen Dank im Voraus
Auschnitt django.contrib.auth.models
Ausschnitt fill_db.py
um einem Prüfer Wert True bei is_staff und Wert False bei is_superuser zu vergeben habe ich eine zusätliche Funktion namens "create_controller" in dem Djangoverzeichnis bzw. django.contrib.auth.models in der Classe UserManager geschrieben.
So weit so gut, alles funktioniert wie gewünscht.
Aber:
- Funktion "create_controller" soll in das projekt/models.py übernommen werden, um später von Versionskotrollsystem erkannt zu werden.
PS:
- "create_controller" Funktion wird in der fill_db.py angesprochen(siehe Ausschnitt von fill_db.py)
- Funktion "create_controller" hat return self._create_user. Funktion "_create_user" soll weiterhin in django.contrib.auth.models bleiben
Ich bin Anfänger und brauche eure Unterstüzung. Eine fertige Lösung ist nicht notwendig. Ich brauche einfach nur Tipps, um das Problem zu lösen.
Ich habe schon sehr viel mit dem import ausprobiert, leider ohne Erfolg :K
Weiss jemand was und wie ich importieren muss, wenn ich Funktion "create_controller" im Projetverzeichnis projekt/models.py haben möchte?
Und wie muss ggf. fill_db.py verändert werden?
Vielen Dank im Voraus
Auschnitt django.contrib.auth.models
Code: Alles auswählen
class UserManager(BaseUserManager):
use_in_migrations = True
def _create_user(self, username, email, password, **extra_fields):
"""
Creates and saves a User with the given username, email and password.
"""
if not username:
raise ValueError('The given username must be set')
email = self.normalize_email(email)
username = self.model.normalize_username(username)
user = self.model(username=username, email=email, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_user(self, username, email=None, password=None, **extra_fields):
# heir für python-forum rausgeschnitten, um Platz zu sparen
def create_superuser(self, username, email, password, **extra_fields):
# heir für python-forum rausgeschnitten, um Platz zu sparen
def create_controller(self, username, email, password, **extra_fields):
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_superuser', False)
if extra_fields.get('is_staff') is not True:
raise ValueError('Controller must have is_staff=True.')
return self._create_user(username, email, password, **extra_fields)
Ausschnitt fill_db.py
Code: Alles auswählen
# Create Pruefer1
pruefer1 = User.objects.create_controller(username='pruefer',
first_name="vorname_pruefer1",
last_name="nachname_pruefer1",
password='django_test',
email="test@web.de")
pruefer1.save()