[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