[SP-pm] Data::Manager, alguém utiliza este troço ?!
Blabos de Blebe
blabos at gmail.com
Tue Sep 3 14:30:41 PDT 2013
Opa,
O meu caso é muito simples (pequeno) e o meu tempo é curto. O que foi mais
rápido pra mim foi essa tosqueria aqui:
No controller:
...
my $errors = [];
## not null
foreach my $field ( keys %{$fields} ) {
push @{$errors}, 'empty_' . $field
unless $fields->{$field};
}
## unique
foreach my $field (qw{ username email }) {
push @{$errors}, 'already_' . $field
if $rs_user->find( { $field => $fields->{$field} } );
}
## invalid email
push @{$errors}, 'invalid_email'
unless Email::Valid->address( $fields->{email} );
if ( @{$errors} > 0 ) {
$c->stash->{user} = $fields;
$c->stash->{errors} = $errors;
return;
}
...
No template:
[% IF errors.size > 0 %]
<div data-alert class="alert-box alert">
[% FOREACH error IN errors %]
[% msg_block = 'msg_' _ error %]
[% PROCESS $msg_block %]<br>
[% END %]
<a href="#" class="close">×</a>
</div>
[% END %]
...
[% BLOCK msg_empty_full_name %]
Você precisa preencher o seu nome completo.
[% END %]
[% BLOCK msg_empty_username %]
Você precisa preencher o seu username.
[% END %]
...
Deve ter formas mais inteligentes de fazer isso, mas no momento, a mais
inteligente pra mim, é a que eu consigo fazer mais rápido. Esse é meu
"único" form.
[]'s
2013/9/3 Solli Honorio <shonorio em gmail.com>
> Blabos, o que você está imaginando para validar ? Estilo old-school com um
> encadeamento de if ? Dispatch table ? NDA ?
>
> Abraços,
>
> Solli Honorio
>
>
> Em 3 de setembro de 2013 16:35, Blabos de Blebe <blabos em gmail.com>escreveu:
>
> Em alguns casos, complexidade é um pouco ponto de vista.
>>
>> Acho que entendi a abordagem do mantovani, mas pro meu caso específico,
>> acho que é também o overhead, já que eu só valido 4 campos em uma situação
>> eventual. Estou cogitando nem usar o Data::Manager.
>>
>> Se fosse um cazilhao de campos sendo validados constantemente, acho que
>> valeira a pena.
>>
>> Mantovani, cuidado pra não ficar aparafusando pregos, certo!?
>>
>> []'s
>>
>>
>> 2013/9/3 Solli Honorio <shonorio em gmail.com>
>>
>>> Sério mesmo Mantovani que vc acha que um sistema de fila é a solução
>>> para eu validar se todos os campos de um formulário estão dentro do
>>> aguardado para trabalhar no banco de dados ?
>>>
>>> Mantovani, só posso dizer que estou orgulhoso de você... vejo que você
>>> terá um excelente futuro na industria de tecnologia (coisa que eu não
>>> tive), pois este é bem o comportamento dos vendedores de TI. Você está
>>> agregando complexidade numa lugar que estou tentando agregar simplicidade
>>> :D !!!
>>>
>>> Abraços,
>>>
>>> Solli Honorio
>>>
>>>
>>>
>>> Em 3 de setembro de 2013 14:58, Daniel de Oliveira Mantovani <
>>> daniel.oliveira.mantovani em gmail.com> escreveu:
>>>
>>> 2013/9/3 Solli Honorio <shonorio em gmail.com>:
>>>> > Lucas,
>>>> >
>>>> > Obrigado pelo retorno. Ontem a noite estudei o código do
>>>> Data::Manager e ví
>>>> > que realmente não rola fazer o que eu estava querendo fazer (passar
>>>> uma
>>>> > pilha de mensagem e receber de acordo com o contexto) e ai estou
>>>> > encaminhando para a mesma solução que você.
>>>>
>>>> " o que eu estava querendo fazer (passar uma pilha de mensagem e
>>>> receber de acordo com o contexto)"
>>>>
>>>> Shonorio, repetindo o AMQP se encaixa perfeitamente. Eu sugiro que
>>>> você leia o link que eu te enviei. Se um serviço na sua máquina vai te
>>>> poupar centenas de linhas de código, talvez nessa situação, nesse
>>>> contexto obscuro no qual não foi definido pelo interlocutor seja uma
>>>> boa.
>>>>
>>>> Se você acha que isso é demais para você, eu sinto muito que alguém
>>>> com pelo menos 15/20 anos de experiência ainda não saiba formular uma
>>>> pergunta. Perguntas genéricas, respostas genéricas. E ainda acho
>>>> extremamente desnecessário o seu ataque gratuito, mas se você ainda
>>>> não percebeu isso afasta as pessoas da lista.
>>>>
>>>> >
>>>> > Como vc faz com o I18N ?
>>>> >
>>>> > O Renato Cron publicou um 'template' (
>>>> https://github.com/AwareTI/MyApp )
>>>> > de como eles estão utilizando o Data::Manager. Estudei o código e
>>>> achei
>>>> > engenhoso, mas ainda quero manter um melhor controle do ResultSet
>>>> porquê
>>>> > quero devolver uma estrutura mais complexa de informação.
>>>> >
>>>> > Abraços,
>>>> >
>>>> > Solli Honorio
>>>> >
>>>> >
>>>> >
>>>> > 2013/9/3 Lucas Oliveira <lucasmateus.oliveira em gmail.com>
>>>> >>
>>>> >>
>>>> >> Normalmente eu uso sempre com I18N mas da pra quebrar o galho assim
>>>> >>
>>>> >> <code>
>>>> >> #!/usr/bin/env perl
>>>> >>
>>>> >> use common::sense;
>>>> >> use Data::Manager;
>>>> >> use Data::Verifier;
>>>> >>
>>>> >> my %msg_data = (
>>>> >> missing_name_last => 'Nao foi informado o campo name_last, seu
>>>> idiota
>>>> >> !',
>>>> >> );
>>>> >>
>>>> >> sub messages { $msg_data{$_[0]} || $_[0] }
>>>> >>
>>>> >> my $dm = Data::Manager->new;
>>>> >> my $dv = Data::Verifier->new(
>>>> >> filters => [ qw(trim) ],
>>>> >> profile => {
>>>> >> name_first => {
>>>> >> required => 1,
>>>> >> type => 'Str',
>>>> >> filters => [ qw(collapse) ]
>>>> >> },
>>>> >> name_last => {
>>>> >> required => 1,
>>>> >> type => 'Str',
>>>> >> filters => [ qw(collapse) ]
>>>> >> },
>>>> >> age => {
>>>> >> type => 'Int'
>>>> >> },
>>>> >> sign => {
>>>> >> required => 1,
>>>> >> type => 'Str'
>>>> >> }
>>>> >> }
>>>> >> );
>>>> >>
>>>> >> $dm->set_verifier( name => $dv );
>>>> >> $dm->verify( name => { name_first => 'Solli' });
>>>> >>
>>>> >> if (!$dm->success) {
>>>> >> print &messages( $_->msgid ).$/
>>>> >> foreach (@{ $dm->messages->messages });
>>>> >> }
>>>> >> </code>
>>>> >>
>>>> >>
>>>> >> Em 02/09/2013, às 11:10, Solli Honorio <shonorio em gmail.com>
>>>> escreveu:
>>>> >>
>>>> >> Pessoal,
>>>> >>
>>>> >> Estou tentando configurar uma mensagem padronização no
>>>> Data::Manager, mas
>>>> >> não está funcionando. Alguém aqui já utilizou o Data::Manager para
>>>> saber se
>>>> >> é possível fazer isto que eu quero ?
>>>> >>
>>>> >> O código abaixo, estou criando uma mensagem e adicionando no
>>>> Data::Manger,
>>>> >> porquê eu imaginei que quando ocorrer o problema dentro do escopo e
>>>> msgid,
>>>> >> eu teria o texto padronizado, mas o que estou recebendo é mais uma
>>>> pilha de
>>>> >> mensagem, mesmo quando não existe o erro.
>>>> >>
>>>> >> <code>
>>>> >> #!/usr/bin/env perl
>>>> >> use common::sense;
>>>> >> use Data::Manager;
>>>> >> use Data::Verifier;
>>>> >> use Data::Printer;
>>>> >>
>>>> >> my $msg = Message::Stack->new;
>>>> >> $msg->add({
>>>> >> msgid => 'missing_name_last',
>>>> >> level => 'error',
>>>> >> scope => 'name1',
>>>> >> subject => 'name_last',
>>>> >> text => 'Não foi informado o campo name_last, seu idiota !'}
>>>> );
>>>> >>
>>>> >> my $dm = Data::Manager->new( { messages => $msg } );
>>>> >> my $dv = Data::Verifier->new(
>>>> >> filters => [ qw(trim) ],
>>>> >> profile => {
>>>> >> name => {
>>>> >> required => 1,
>>>> >> type => 'Str',
>>>> >> filters => [ qw(collapse) ]
>>>> >> },
>>>> >> age => {
>>>> >> type => 'Int'
>>>> >> },
>>>> >> sign => {
>>>> >> required => 1,
>>>> >> type => 'Str'
>>>> >> }
>>>> >> }
>>>> >> );
>>>> >>
>>>> >>
>>>> >> };
>>>> >>
>>>> >>
>>>> >> $dm->set_verifier('name1', $verifier);
>>>> >> $dm->verify('name1', { name_last => 'Honorio', name_first => 'Solli'
>>>> });
>>>> >>
>>>> >> my $results = $dm->get_results('name1');
>>>> >> my $stack = $dm->messages_for_scope('name1');
>>>> >>
>>>> >> say $results->success;
>>>> >>
>>>> >> say "Is invalid name_first ", $results->is_invalid('name_first');
>>>> >> say "Is invalid name_last ", $results->is_invalid('name_last'); #
>>>> yes
>>>> >>
>>>> >> say "Is missing name_first ", $results->is_missing('name_first'); #
>>>> no
>>>> >> say "Is missing is_missing ", $results->is_missing('name_last'); #
>>>> yes
>>>> >>
>>>> >> say "Missing count ", $results->missing_count;
>>>> >>
>>>> >> say "Count : ", $stack->count ;
>>>> >> p $stack->get_message( 0 );
>>>> >> p $stack->get_message( 1 );
>>>> >>
>>>> >> </code>
>>>> >>
>>>> >>
>>>> >> --
>>>> >> "o animal satisfeito dorme". - Guimarães Rosa
>>>> >> =begin disclaimer
>>>> >> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>> >> SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>>> >> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>> >> =end disclaimer
>>>> >>
>>>> >>
>>>> >>
>>>> >> =begin disclaimer
>>>> >> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>> >> SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>>> >> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>> >> =end disclaimer
>>>> >>
>>>> >
>>>> >
>>>> >
>>>> > --
>>>> > "o animal satisfeito dorme". - Guimarães Rosa
>>>> >
>>>> > =begin disclaimer
>>>> > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>> > SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>>> > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>> > =end disclaimer
>>>> >
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> -dom
>>>>
>>>> --
>>>>
>>>> Daniel de Oliveira Mantovani
>>>> Business Analytic Specialist
>>>> Perl Evangelist /Astrophysics hobbyist.
>>>> +55 11 9 8538-9897
>>>> XOXO
>>>> =begin disclaimer
>>>> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>> SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>> =end disclaimer
>>>>
>>>
>>>
>>>
>>> --
>>> "o animal satisfeito dorme". - Guimarães Rosa
>>>
>>> =begin disclaimer
>>> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>> SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>> =end disclaimer
>>>
>>>
>>
>> =begin disclaimer
>> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>> SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>>
>
>
> --
> "o animal satisfeito dorme". - Guimarães Rosa
>
> =begin disclaimer
> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
> SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
-------------- Pr�xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130903/27b06937/attachment-0001.html>
More information about the SaoPaulo-pm
mailing list