Browse Source

Corrige formulário antigo de Autor

pull/2962/head
Cesar Carvalho 6 years ago
parent
commit
6d69fd321f
  1. 245
      sapl/base/forms.py
  2. 8
      sapl/templates/base/autor_detail.html

245
sapl/base/forms.py

@ -411,10 +411,10 @@ class AutorForm(ModelForm):
required=False, required=False,
label=_('Confirmar Email')) label=_('Confirmar Email'))
username = forms.CharField(label=get_user_model()._meta.get_field( # username = forms.CharField(label=get_user_model()._meta.get_field(
get_user_model().USERNAME_FIELD).verbose_name.capitalize(), # get_user_model().USERNAME_FIELD).verbose_name.capitalize(),
required=False, # required=False,
max_length=50) # max_length=50)
q = forms.CharField( q = forms.CharField(
max_length=50, required=False, max_length=50, required=False,
@ -425,10 +425,10 @@ class AutorForm(ModelForm):
required=False, required=False,
widget=forms.RadioSelect()) widget=forms.RadioSelect())
action_user = forms.ChoiceField( # action_user = forms.ChoiceField(
label=_('Usuário com acesso ao Sistema para este Autor'), # label=_('Usuário com acesso ao Sistema para este Autor'),
choices=ACTION_CREATE_USERS_AUTOR_CHOICE, # choices=ACTION_CREATE_USERS_AUTOR_CHOICE,
widget=forms.RadioSelect()) # widget=forms.RadioSelect())
class Meta: class Meta:
model = Autor model = Autor
@ -437,8 +437,7 @@ class AutorForm(ModelForm):
'cargo', 'cargo',
'autor_related', 'autor_related',
'q', 'q',
'action_user', ]
'username']
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -465,34 +464,11 @@ class AutorForm(ModelForm):
css_class='radiogroup-autor-related hidden'), css_class='radiogroup-autor-related hidden'),
12))) 12)))
row2 = Row(to_column((InlineRadios('action_user'), 8)),
to_column((Div('username'), 4)))
row3 = Row(to_column(('senha', 3)),
to_column(('senha_confirma', 3)),
to_column(('email', 3)),
to_column(('confirma_email', 3)),
css_class='new_user_fields hidden')
row4 = Row(to_column((
Div(InlineRadios('status_user'),
css_class='radiogroup-status hidden'),
12))) if 'status_user' in self.Meta.fields else None
controle_acesso = [row2, row3]
if row4:
controle_acesso.append(row4)
controle_acesso = Fieldset(_('Controle de Acesso do Autor'),
*controle_acesso)
self.helper = SaplFormHelper() self.helper = SaplFormHelper()
self.helper.layout = SaplFormLayout(autor_select, controle_acesso) self.helper.layout = SaplFormLayout(autor_select)
super(AutorForm, self).__init__(*args, **kwargs) super(AutorForm, self).__init__(*args, **kwargs)
self.fields['action_user'].initial = 'N'
if self.instance.pk: if self.instance.pk:
if self.instance.autor_related: if self.instance.autor_related:
self.fields['autor_related'].choices = [ self.fields['autor_related'].choices = [
@ -502,39 +478,7 @@ class AutorForm(ModelForm):
self.fields['q'].initial = '' self.fields['q'].initial = ''
self.fields['autor_related'].initial = self.instance.autor_related self.fields['autor_related'].initial = self.instance.autor_related
if self.instance.user:
self.fields['username'].initial = getattr(
self.instance.user,
get_user_model().USERNAME_FIELD)
self.fields['action_user'].initial = 'A'
self.fields['username'].label = string_concat(
self.fields['username'].label,
' (', getattr(
self.instance.user,
get_user_model().USERNAME_FIELD), ')')
if 'status_user' in self.Meta.fields:
self.fields['status_user'].initial = 'R'
self.fields['status_user'].label = string_concat(
self.fields['status_user'].label,
' (', getattr(
self.instance.user,
get_user_model().USERNAME_FIELD), ')')
self.fields['username'].widget.attrs.update({
'data': getattr(
self.instance.user,
get_user_model().USERNAME_FIELD)
if self.instance.user else ''})
if 'status_user' in self.Meta.fields:
self.fields['status_user'].widget.attrs.update({
'data': getattr(
self.instance.user,
get_user_model().USERNAME_FIELD)
if self.instance.user else ''})
def valida_igualdade(self, texto1, texto2, msg): def valida_igualdade(self, texto1, texto2, msg):
if texto1 != texto2: if texto1 != texto2:
@ -545,65 +489,65 @@ class AutorForm(ModelForm):
def clean(self): def clean(self):
super(AutorForm, self).clean() super(AutorForm, self).clean()
# import ipdb; ipdb.set_trace()
if not self.is_valid(): if not self.is_valid():
return self.cleaned_data return self.cleaned_data
User = get_user_model() # User = get_user_model()
cd = self.cleaned_data cd = self.cleaned_data
if 'action_user' not in cd or not cd['action_user']: # if 'action_user' not in cd or not cd['action_user']:
self.logger.error('Não Informado se o Autor terá usuário ' # self.logger.error('Não Informado se o Autor terá usuário '
'vinculado para acesso ao Sistema.') # 'vinculado para acesso ao Sistema.')
raise ValidationError(_('Informe se o Autor terá usuário ' # raise ValidationError(_('Informe se o Autor terá usuário '
'vinculado para acesso ao Sistema.')) # 'vinculado para acesso ao Sistema.'))
if 'status_user' in self.Meta.fields: # if 'status_user' in self.Meta.fields:
if self.instance.pk and self.instance.user_id: # if self.instance.pk and self.instance.user_id:
if getattr( # if getattr(
self.instance.user, # self.instance.user,
get_user_model().USERNAME_FIELD) != cd['username']: # get_user_model().USERNAME_FIELD) != cd['username']:
if 'status_user' not in cd or not cd['status_user']: # if 'status_user' not in cd or not cd['status_user']:
self.logger.error('Foi trocado ou removido o usuário deste Autor ({}), ' # self.logger.error('Foi trocado ou removido o usuário deste Autor ({}), '
'mas não foi informado como se deve proceder ' # 'mas não foi informado como se deve proceder '
'com o usuário que está sendo desvinculado? ({})' # 'com o usuário que está sendo desvinculado? ({})'
.format(cd['username'], get_user_model().USERNAME_FIELD)) # .format(cd['username'], get_user_model().USERNAME_FIELD))
raise ValidationError( # raise ValidationError(
_('Foi trocado ou removido o usuário deste Autor, ' # _('Foi trocado ou removido o usuário deste Autor, '
'mas não foi informado como se deve proceder ' # 'mas não foi informado como se deve proceder '
'com o usuário que está sendo desvinculado?')) # 'com o usuário que está sendo desvinculado?'))
qs_user = User.objects.all() qs_user = User.objects.all()
qs_autor = Autor.objects.all() qs_autor = Autor.objects.all()
if self.instance.pk: if self.instance.pk:
qs_autor = qs_autor.exclude(pk=self.instance.pk) qs_autor = qs_autor.exclude(pk=self.instance.pk)
if self.instance.user: # if self.instance.user:
qs_user = qs_user.exclude(pk=self.instance.user.pk) # qs_user = qs_user.exclude(pk=self.instance.user.pk)
if cd['action_user'] == 'A': # if cd['action_user'] == 'A':
param_username = {get_user_model().USERNAME_FIELD: cd['username']} # param_username = {get_user_model().USERNAME_FIELD: cd['username']}
if not User.objects.filter(**param_username).exists(): # if not User.objects.filter(**param_username).exists():
self.logger.error( # self.logger.error(
'Não existe usuário com username "%s". ' % cd['username']) # 'Não existe usuário com username "%s". ' % cd['username'])
raise ValidationError( # raise ValidationError(
_('Não existe usuário com username "%s". ' # _('Não existe usuário com username "%s". '
'Para utilizar esse username você deve selecionar ' # 'Para utilizar esse username você deve selecionar '
'"Criar novo Usuário".') % cd['username']) # '"Criar novo Usuário".') % cd['username'])
if cd['action_user'] != 'N': # if cd['action_user'] != 'N':
if 'username' not in cd or not cd['username']: # if 'username' not in cd or not cd['username']:
self.logger.error('Username não informado.') # self.logger.error('Username não informado.')
raise ValidationError(_('O username deve ser informado.')) # raise ValidationError(_('O username deve ser informado.'))
param_username = { # param_username = {
'user__' + get_user_model().USERNAME_FIELD: cd['username']} # 'user__' + get_user_model().USERNAME_FIELD: cd['username']}
if qs_autor.filter(**param_username).exists(): # if qs_autor.filter(**param_username).exists():
self.logger.error( # self.logger.error(
'Já existe um Autor para este usuário ({}).'.format(cd['username'])) # 'Já existe um Autor para este usuário ({}).'.format(cd['username']))
raise ValidationError( # raise ValidationError(
_('Já existe um usuário vinculado a esse autor')) # _('Já existe um usuário vinculado a esse autor'))
""" """
'if' não é necessário por ser campo obrigatório e o framework 'if' não é necessário por ser campo obrigatório e o framework
@ -659,18 +603,18 @@ class AutorForm(ModelForm):
def save(self, commit=False): def save(self, commit=False):
autor = super(AutorForm, self).save(commit) autor = super(AutorForm, self).save(commit)
user_old = autor.user if autor.user_id else None # user_old = autor.user if autor.user_id else None
u = None # u = None
param_username = { # param_username = {
get_user_model().USERNAME_FIELD: self.cleaned_data['username']} # get_user_model().USERNAME_FIELD: self.cleaned_data['username']}
if self.cleaned_data['action_user'] == 'A': # if self.cleaned_data['action_user'] == 'A':
u = get_user_model().objects.get(**param_username) # u = get_user_model().objects.get(**param_username)
if not u.is_active: # if not u.is_active:
u.is_active = settings.DEBUG # u.is_active = settings.DEBUG
u.save() # u.save()
autor.user = u # autor.user = u
if not autor.tipo.content_type: if not autor.tipo.content_type:
autor.content_type = None autor.content_type = None
@ -685,29 +629,29 @@ class AutorForm(ModelForm):
# FIXME melhorar captura de grupo de Autor, levando em conta, # FIXME melhorar captura de grupo de Autor, levando em conta,
# no mínimo, a tradução. # no mínimo, a tradução.
grupo = Group.objects.filter(name='Autor')[0] # grupo = Group.objects.filter(name='Autor')[0]
if self.cleaned_data['action_user'] != 'N': # if self.cleaned_data['action_user'] != 'N':
autor.user.groups.add(grupo) # autor.user.groups.add(grupo)
if user_old and user_old != autor.user: # if user_old and user_old != autor.user:
user_old.groups.remove(grupo) # user_old.groups.remove(grupo)
else: # else:
if 'status_user' in self.Meta.fields: # if 'status_user' in self.Meta.fields:
if 'status_user' in self.cleaned_data and user_old: # if 'status_user' in self.cleaned_data and user_old:
if self.cleaned_data['status_user'] == 'X': # if self.cleaned_data['status_user'] == 'X':
user_old.delete() # user_old.delete()
elif self.cleaned_data['status_user'] == 'D': # elif self.cleaned_data['status_user'] == 'D':
user_old.groups.remove(grupo) # user_old.groups.remove(grupo)
user_old.is_active = False # user_old.is_active = False
user_old.save() # user_old.save()
elif self.cleaned_data['status_user'] == 'R': # elif self.cleaned_data['status_user'] == 'R':
user_old.groups.remove(grupo) # user_old.groups.remove(grupo)
elif user_old: # elif user_old:
user_old.groups.remove(grupo) # user_old.groups.remove(grupo)
elif user_old: # elif user_old:
user_old.groups.remove(grupo) # user_old.groups.remove(grupo)
return autor return autor
@ -729,9 +673,10 @@ class AutorFormForAdmin(AutorForm):
'cargo', 'cargo',
'autor_related', 'autor_related',
'q', 'q',
'action_user', # 'action_user',
'username', # 'username',
'status_user'] # 'status_user'
]
class RelatorioDocumentosAcessoriosFilterSet(django_filters.FilterSet): class RelatorioDocumentosAcessoriosFilterSet(django_filters.FilterSet):

8
sapl/templates/base/autor_detail.html

@ -49,6 +49,14 @@
location.reload(); location.reload();
} }
$(document).ready(function(){
// Esconde cargo se o mesmo for vazio
if(!$('.form-control-static').last().text())
$('#div_id_cargo').hide();
else
$('#div_id_cargo').show();
})
</script> </script>
{% endblock %} {% endblock %}
Loading…
Cancel
Save