web2py 401 (НЕАВТОРИЗОВАННАЯ) функция доступа, определенная в другом модуле приложений - PullRequest
1 голос
/ 07 мая 2020

У меня работают 2 приложения с общей базой данных в mysql. 1) Приложение для выставления счетов 2) Приложение для бухгалтерского учета

, поэтому после того, как я сделаю запись в приложении 1, его результаты необходимо будет опубликовать в базе данных приложения 2 в форме бухгалтерского ваучера. так что я сделал

Я создал модуль в app2 и попытался импортировать его в app1, используя follwing,

из приложений.Accounting.modules.default1 import bill_ledger_processing

где bill_ledger_processing - это только функция i, определенная с помощью @ auth.requires_login (), код этой функции выглядит следующим образом: `########################## ######. app2 / modules / default1.py ################################## ####

import requests


from gluon import current
#from gluon.tools import Auth
auth=current.auth
cache=current.cache
import os
from uuid import getnode as get_mac

print("ok")
request = current.request


def exists(path):
    r = requests.head(path)
    return r.status_code == requests.codes.ok

from datetime import datetime
from dateutil.relativedelta import relativedelta

@auth.requires_login()
def bill_ledger_processing(sessionpid,sessionjt,sessionldate,
                           sessionDescription.....................):
#def bill_ledger_processing():#https://groups.google.com/forum/#!topic/web2py/fnN3qa6brzA
   
   

    print(auth.user)
    import datetime
    from gluon import SQLFORM
    #db = DAL('sqlite://storage.sqlite')
    db = current.dba

    dba = current.db
    session=current.session
     .   .
     ....  
     ....    
     ...   
     . . . . .   
     return locals()
#

`

и теперь будет проблема ....

когда я вызываю функцию модуля app2 путем импорта в app1 ...

`

############################# app1/controller/default.py ##################
@auth.requires_login()
def printssss():      
    rows=request.vars.row     
    mode=request.vars.mode
    ...
    .....    


  bill_ledger_processing(sessionpid,sessionjt,sessionldate,sessionDescription.....................)     return dict(rows=rows,mode=mode)
#############################################################################

`

`
##################################### app1/views/print.html ###########################################
<script>

    jQuery('#printbutton').click(function(){

            ajax('{{=URL('default', 'printssss')}}',['rec','mode'],function(html) {
                     jQuery('#callback-target').html(html);

                       printWindow = window.open("http://print.com", "_blank");
                       printWindow.document.write('<html><head>');
                       printWindow.document.write('<style type="text/css"> @media print{ th, td {font-size: 14px;  } body {display:inline;font-family:"Consolas"; font-size: 14px;}  @page{ size: 6in 6in; margin:auto; margin-left: 10mm; margin-right: 10px; margin-top: 0mm; margin-bottom: 0px;padding-top:0px;  }}</style>');
                       printWindow.document.write('</head><body>');
                       printWindow.document.write('<p>');
                       printWindow.document.write(document.getElementById('callback-target').innerHTML);
                       printWindow.document.write('</p>');
                       printWindow.document.write('</body></html>');
                       printWindow.print();
                       printWindow.close();
                       $("#callback-target").html("");
               });

        });
});

</script>


#################################################################################`

при нажатии кнопки печати он распечатает счет-фактуру из def printssss () приложения1: и затем выполнит bill_ledger_processing (.. ...)

ТЕПЕРЬ ИНОГДА ПРИ ВЫПОЛНЕНИИ bill_ledger_processing выдаст ошибку как 401 unauthorized? т.е.

jquery.js:4 

POST http://127.0.0.1:8000/printssss 401 (UNAUTHORIZED)
XHR failed loading: POST "http://127.0.0.1:8000/printssss".

эта ошибка кажется настолько случайной, что каждый раз, когда я убиваю сервер и перезапускаю его, он работает в течение некоторого времени или дней без вмешательства, и внезапно появляется ошибка. ТАКЖЕ очистка кеша в админке или браузере web2py не помогла, также иногда перезапуск решает проблему или иногда проект размещается в pythonanywhere, где я столкнулся с аналогичной проблемой, как у моего ноутбука.

я могу не отлаживать это, поскольку нажатие на сообщение об ошибке вызовет printssss () с пустыми значениями формы ...

Невозможно продолжить с ошибкой. пожалуйста, помогите мне. С уважением и уважением

...