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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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