Customizei meus códigos para os demostrados no curso do Gileno Alves Santa
Cruz Filho e ficou muito mais limpo e organizado a parte de customização da
minha model User. O que falta pra mim? Eu criei mais um atributo(campo) de
nome "Role" na minha models.py "Class User" e gostaria de gravar um ou mais
valores, via minha views.py. Para minha views.py eu passo um parâmetro de
nome "origin" que contém por vezes o valor 'Client' ou 'Provider' e é esta
informação que quero atribiu a 'role'. Não consigo!

E anexo os arquivos citados acima. Acredito que uma passada de olho na
views.py vocês vão poder me ajudar

*Marcos Alves*

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAMwkWTP96FRW-BBNtb3uL4j1wDgnCE3EvM6Nhcxhs1JHZnb2zQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
from django.test import TestCase

# Create your tests here.
from django.contrib import admin
from django.urls import path, include
from django.contrib.auth.views import LoginView,LogoutView
from . import views


app_name = 'qnow_user'

urlpatterns = [
    #Trabalhando com a view de login do django
    path('login_client/',   LoginView.as_view(template_name='../templates/login.html',
                                     extra_context={'next':'qnow_client:client',
                                                    'origin':'client',
                                                    'active_page_client_provider':'active'
                                                    }
                                    ), name="login_client"),
    path('login_provider/', LoginView.as_view(template_name='../templates/login.html',
                                     extra_context={'next':'qnow_provider:provider',
                                                    'origin':'provider',
                                                    'active_page_client_provider':'active'
                                                    }
                                    ), name="login_provider"),

    path('logout/', LogoutView.as_view(template_name='../templates/index.html',
                                    extra_context={'next_page':'qnow_site:site',
                                                   'active_page_site': 'active',
                                    }),name='logout'),

    path('register_client/', views.register, kwargs={'origin': 'client' }, name='register_client'),
    path('register_provider/', views.register, kwargs={'origin': 'provider' }, name='register_provider'),
]
from django.contrib import admin
from qnow_user.models import User

admin.site.register(User)
from django.apps import AppConfig


class QnowUserConfig(AppConfig):
    name = 'qnow_user'
from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm, PasswordChangeForm
from django.contrib.auth import authenticate, login
from django.contrib.auth.decorators import login_required
from django.conf import settings

from .forms import RegisterForm, EditAccountForm

def register(request, origin, *args, **kwargs):
    template_name = '../templates/register.html'
    if request.method == 'POST':
        form = RegisterForm(request.POST)
        if form.is_valid():
            user = form.save()
            user = authenticate(
                username=user.username, password=form.cleaned_data['password1']
            )
            login(request, user)
            return redirect('qnow_client:quotation_client')
    else:
        form = RegisterForm()
    context = {
        'active_page_client_provider':'active',
        'origin': origin,
        'form': form
    }
    return render(request, template_name, context)

import re
from django.db import models
#from django.contrib.localflavor.br.forms import BRStateSelect
from django.core import validators
from django.contrib.auth.models import (AbstractBaseUser, PermissionsMixin,
    UserManager)

class User(AbstractBaseUser, PermissionsMixin):

    username = models.CharField(
        'Usuário', max_length=30, unique=True, 
        validators=[validators.RegexValidator(re.compile('^[\w.@+-]+$'),
            'O nome de usuário só pode conter letras, digitos ou os '
            'seguintes caracteres: @/./+/-/_', 'invalid')]
    )
    email = models.EmailField('E-mail', unique=True)
    name = models.CharField('Nome de Contato', unique=True, max_length=100, blank=False)
    is_active = models.BooleanField('Está ativo?', blank=True, default=True)
    is_staff = models.BooleanField('É da equipe?', blank=True, default=False)
    date_joined = models.DateTimeField('Data de Entrada', auto_now_add=True)
    role = models.CharField('Role', max_length=10, blank=True, default='Indefinido')
    phone = models.CharField('Telefone', max_length=50, blank=False)
    city = models.CharField('Cidade', max_length=50, blank=False)
    state = models.CharField('Estado', max_length=50, blank=False)
	
    objects = UserManager()

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['email']

    def __str__(self):
        return self.name or self.username

    def get_short_name(self):
        return self.username

    def get_full_name(self):
        return str(self)

    class Meta:
        verbose_name = 'Usuário'
        verbose_name_plural = 'Usuários'
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth import get_user_model

User = get_user_model()


class RegisterForm(forms.ModelForm):

    password1 = forms.CharField(label='Senha', widget=forms.PasswordInput)
    password2 = forms.CharField(
        label='Confirmação de Senha', widget=forms.PasswordInput
    )

    def clean_password2(self):
        password1 = self.cleaned_data.get("password1")
        password2 = self.cleaned_data.get("password2")
        if password1 and password2 and password1 != password2:
            raise forms.ValidationError('A confirmação não está correta')
        return password2

    def save(self, commit=True):
        user = super(RegisterForm, self).save(commit=False)
        user.set_password(self.cleaned_data['password1'])
        if commit:
            user.save()
        return user

    class Meta:
        model = User
        fields = ['username', 'email', 'name','phone','city','state']


class EditAccountForm(forms.ModelForm):

    class Meta:
        model = User
        fields = ['username', 'email', 'name','phone','city','state']

Reply via email to