Erstellte Funktion von auth/models.py in das Projektverzeichnis übernehmen

Django, Flask, Bottle, WSGI, CGI…
Lostinpy
User
Beiträge: 1
Registriert: Donnerstag 19. Oktober 2017, 22:30

Erstellte Funktion von auth/models.py in das Projektverzeichnis übernehmen

Beitragvon Lostinpy » 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
  1. class UserManager(BaseUserManager):
  2.     use_in_migrations = True
  3.  
  4.     def _create_user(self, username, email, password, **extra_fields):
  5.         """
  6.        Creates and saves a User with the given username, email and password.
  7.        """
  8.         if not username:
  9.             raise ValueError('The given username must be set')
  10.         email = self.normalize_email(email)
  11.         username = self.model.normalize_username(username)
  12.         user = self.model(username=username, email=email, **extra_fields)
  13.         user.set_password(password)
  14.         user.save(using=self._db)
  15.         return user
  16.  
  17.     def create_user(self, username, email=None, password=None, **extra_fields):
  18.         # heir für python-forum rausgeschnitten, um Platz zu sparen
  19.  
  20.     def create_superuser(self, username, email, password, **extra_fields):
  21.         # heir für python-forum rausgeschnitten, um Platz zu sparen
  22.  
  23.     def create_controller(self, username, email, password, **extra_fields):
  24.         extra_fields.setdefault('is_staff', True)
  25.         extra_fields.setdefault('is_superuser', False)
  26.  
  27.         if extra_fields.get('is_staff') is not True:
  28.             raise ValueError('Controller must have is_staff=True.')
  29.  
  30.         return self._create_user(username, email, password, **extra_fields)



Ausschnitt fill_db.py
  1. # Create Pruefer1
  2. pruefer1 = User.objects.create_controller(username='pruefer',
  3.                                     first_name="vorname_pruefer1",
  4.                                     last_name="nachname_pruefer1",
  5.                                     password='django_test',
  6.                                     email="test@web.de")
  7. pruefer1.save()
Benutzeravatar
noisefloor
User
Beiträge: 1947
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Re: Erstellte Funktion von auth/models.py in das Projektverzeichnis übernehmen

Beitragvon noisefloor » Dienstag 24. Oktober 2017, 14:23

Hallo,

das ganze klingt ziemlich wirr, sorry...

Grundsätzlich solltest du alle Datei, die du erstelt hast, ins Projektverzeichnis bzw. das passende App-Verzeichnis legen - und nicht in eine Verzeichnis, in dem die Dateien von Django liegen.

Was in deinem Post noch fehlt, sind Angaben zun den Importen, die du machst. Nach eigenen Angaben hast du ja ein Problem mit dem import-Statement - dann solltest du das auch zeigen, was die aktuell machst. Und die Verzeichnisstruktur deines Projekts wäre auch hilfreich.

Gruß, noisefloor

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder