Example #1
0
        def get_success_url(self):
            pk_autor = self.object.id
            url_reverse = reverse('sapl.base:autor_detail',
                                  kwargs={'pk': pk_autor})
            try:
                kwargs = {}
                user = self.object.user

                if not user:
                    return url_reverse

                kwargs['token'] = default_token_generator.make_token(user)
                kwargs['uidb64'] = urlsafe_base64_encode(force_bytes(user.pk))
                assunto = "SAPL - Confirmação de Conta"
                full_url = self.request.get_raw_uri()
                url_base = full_url[:full_url.find('sistema') - 1]

                mensagem = (
                    "Este e-mail foi utilizado para fazer cadastro no " +
                    "SAPL com o perfil de Autor. Agora você pode " +
                    "criar/editar/enviar Proposições.\n" +
                    "Seu nome de usuário é: " +
                    self.request.POST['username'] + "\n"
                    "Caso você não tenha feito este cadastro, por favor " +
                    "ignore esta mensagem. Caso tenha, clique " +
                    "no link abaixo\n" + url_base +
                    reverse('sapl.base:confirmar_email', kwargs=kwargs))
                remetente = [settings.EMAIL_SEND_USER]
                destinatario = [user.email]
                send_mail(assunto, mensagem, remetente, destinatario,
                          fail_silently=False)
            except:
                sapl_logger.error(
                    _('Erro no envio de email na criação de Autores.'))
            return url_reverse
Example #2
0
        def get_success_url(self):
            pk_autor = self.object.id
            url_reverse = reverse('sapl.base:autor_detail',
                                  kwargs={'pk': pk_autor})
            try:
                kwargs = {}
                user = self.object.user

                if not user:
                    return url_reverse

                kwargs['token'] = default_token_generator.make_token(user)
                kwargs['uidb64'] = urlsafe_base64_encode(force_bytes(user.pk))
                assunto = "SAPL - Confirmação de Conta"
                full_url = self.request.get_raw_uri()
                url_base = full_url[:full_url.find('sistema') - 1]

                mensagem = (
                    "Este e-mail foi utilizado para fazer cadastro no " +
                    "SAPL com o perfil de Autor. Agora você pode " +
                    "criar/editar/enviar Proposições.\n" +
                    "Seu nome de usuário é: " +
                    self.request.POST['username'] + "\n"
                    "Caso você não tenha feito este cadastro, por favor " +
                    "ignore esta mensagem. Caso tenha, clique " +
                    "no link abaixo\n" + url_base +
                    reverse('sapl.base:confirmar_email', kwargs=kwargs))
                remetente = [settings.EMAIL_SEND_USER]
                destinatario = [user.email]
                send_mail(assunto, mensagem, remetente, destinatario,
                          fail_silently=False)
            except:
                sapl_logger.error(
                    _('Erro no envio de email na edição de Autores.'))
            return url_reverse
Example #3
0
def nav_run(context, path=None):
    """Renderiza sub navegação para objetos no padrão Mestre Detalhe

    Existem três possíveis fontes de busca do yaml
    com precedência enumerada abaixo:
        1) Se a variável path não é nula;
        2) Se existe no contexto a chave subnav_template_name;
        3) o path default: <app_name>/subnav.yaml

    Os campos esperados nos arquivos yaml são:
        title
        url
        check_permission - opcional. quando usado
            será realizado o teste de permissão para renderizá-lo.
    """
    menu = None
    root_pk = context.get('root_pk', None)
    if not root_pk:
        obj = context.get('object', None)
        if obj:
            root_pk = obj.pk

    if root_pk or 'subnav_template_name' in context or path:
        request = context['request']

        """
        As implementações das Views de Modelos que são dados auxiliares e
        de diversas app's estão concentradas em urls com prefixo 'sistema'.
        Essas Views não possuem submenu de navegação e são incompativeis com a
        execução deste subnav. Inicialmente, a maneira mais prática encontrada
        de isolar foi com o teste abaixo.
        """

        rm = request.resolver_match
        app_template = rm.app_name.rsplit('.', 1)[-1]

        if path:
            yaml_path = path
        elif 'subnav_template_name' in context:
            yaml_path = context['subnav_template_name']
        else:
            yaml_path = '%s/%s' % (app_template, 'subnav.yaml')

        if not yaml_path:
            return

            """
            Por padrão, são carragados dois Loaders,
            filesystem.Loader - busca em TEMPLATE_DIRS do projeto atual
            app_directories.Loader - busca em todas apps instaladas
            A função nativa abaixo busca em todos os Loaders Configurados.
            """
        try:
            yaml_template = template.loader.get_template(yaml_path)
        except:
            return

        try:
            rendered = yaml_template.render()
            menu = yaml.load(rendered)
            resolve_urls_inplace(menu, root_pk, rm, context)
        except Exception as e:
            sapl_logger.error(_("""Erro na conversão do yaml %s. App: %s.
                                    Erro:
                                      %s
                                """) % (
                yaml_path, rm.app_name, str(e)))

    return {'menu': menu}
Example #4
0
def nav_run(context, path=None):
    """Renderiza sub navegação para objetos no padrão Mestre Detalhe

    Existem três possíveis fontes de busca do yaml
    com precedência enumerada abaixo:
        1) Se a variável path não é nula;
        2) Se existe no contexto a chave subnav_template_name;
        3) o path default: <app_name>/subnav.yaml

    Os campos esperados nos arquivos yaml são:
        title
        url
        check_permission - opcional. quando usado
            será realizado o teste de permissão para renderizá-lo.
    """
    menu = None
    root_pk = context.get('root_pk', None)
    if not root_pk:
        obj = context.get('object', None)
        if obj:
            root_pk = obj.pk

    if root_pk or 'subnav_template_name' in context or path:
        request = context['request']
        """
        As implementações das Views de Modelos que são dados auxiliares e
        de diversas app's estão concentradas em urls com prefixo 'sistema'.
        Essas Views não possuem submenu de navegação e são incompativeis com a
        execução deste subnav. Inicialmente, a maneira mais prática encontrada
        de isolar foi com o teste abaixo.
        """

        rm = request.resolver_match
        app_template = rm.app_name.rsplit('.', 1)[-1]

        if path:
            yaml_path = path
        elif 'subnav_template_name' in context:
            yaml_path = context['subnav_template_name']
        else:
            yaml_path = '%s/%s' % (app_template, 'subnav.yaml')

        if not yaml_path:
            return
            """
            Por padrão, são carragados dois Loaders,
            filesystem.Loader - busca em TEMPLATE_DIRS do projeto atual
            app_directories.Loader - busca em todas apps instaladas
            A função nativa abaixo busca em todos os Loaders Configurados.
            """
        try:
            yaml_template = template.loader.get_template(yaml_path)
        except:
            return

        try:
            rendered = yaml_template.template.render(context)
            menu = yaml.load(rendered)
            resolve_urls_inplace(menu, root_pk, rm, context)
        except Exception as e:
            sapl_logger.error(
                _("""Erro na conversão do yaml %s. App: %s.
                                    Erro:
                                      %s
                                """) % (yaml_path, rm.app_name, str(e)))

    return {'menu': menu}