User:GeneaBot/Code/main GeneaBot

From Wikidata
Jump to navigation Jump to search
# -*- coding: utf-8  -*-
from object_display  import *
from module_source   import *
from module_person   import *
from module_function import *
from module_title    import *
    

def DisplayHelp():
    print( "Parameters :" )
    print( " -HELP" )
    print( " -UPDATE" )
    print( " -DEBUG:n" )
    print( " -FILE:filename  (will be in 'request\\' directory)" )



#======================================================
# Fonction ReadRequest                              
# read file 'request.txt' and runs requests
#
# Parameters :
# -simu             : mode simulation
# -file {Filename}  : gives the file that contains requests
#                               (by default:request.txt)
#
def ReadRequest(*args):
    param    = CallParameter(*args)
    Update   = param.GetValue('update', False)
    Help     = param.GetValue('help',   False)
    Filename = param.GetValue('file',   "request.txt")
    
    if Help:
        DisplayHelp()
    else:
        NbReq = 0
        DisplayMessages.SetFileName(Filename)
        DisplayMessages.call("A", "ReadRequest", 2, "call parameters = " + str(param.param))
        DisplayMessages.debug("A", "ReadRequest", 8, "options : Update=" + str(Update) + ", Help=" + str(Help) + ", Filename=" + str(Filename))
        DisplayLog.SetFileName(Filename)
        DisplayLog.AppendLogTitle("List of requests")
        DisplayLog.AppendItem("\n<source>")
        DisplayLog.AppendRequest( "{{/Begin}}" )
        FileRequest = open("request\\" + Filename, "r")
        TextRequest = FileRequest.read()
        FileRequest.close()
        t = Filename.split(".")
        Anchor = t[0]
        #
        bTitleEnd    = False
        bFunctionEnd = False
        bSources     = False
        bPerson      = False
        ListRequest = TextRequest.split("\n")
        i = 0
        while i < len(ListRequest):
            curRequest = ListRequest[i].strip()
            DisplayMessages.debug("A", "ReadRequest", 8, "curRequest=" + curRequest )
            
            #
            Request = '{{/ReferenceSet'
            if curRequest[:len(Request)] == Request :
                NbReq += 1
                if bSources:
                    del Sources
                Sources = ReferenceSet( curRequest )
                bSources = True
            #
            Request = '{{/PersonUpdate'
            if curRequest[:len(Request)] == Request :
                if not bPerson:
                    DisplayLog.AppendRequest( "{{/PersonBegin}}" )
                    bPerson = True
                NbReq += 1
                PersonUpdate( curRequest, Sources)
            #
            Request = '{{/TitleSet'
            if curRequest[:len(Request)] == Request :
                if bTitleEnd:
                    TitleEnd(mngtTitle, Sources)
                    del mngtTitle
                    bTitleEnd= False
                NbReq += 1
                mngtTitle = TitleSet( curRequest)
            #
            Request = '{{/TitleAdd'
            if curRequest[:len(Request)] == Request :
                NbReq += 1
                mngtTitle = TitleAdd( curRequest, mngtTitle, Sources)
                bTitleEnd = True
            #
            Request = '{{/FunctionSet'
            if curRequest[:len(Request)] == Request :
                if bFunctionEnd:
                    FunctionEnd(mngtFunction, Sources)
                    del mngtFunction
                    bFunctionEnd= False
                NbReq += 1
                mngtFunction = FunctionSet( curRequest)
            #
            Request = '{{/FunctionAdd'
            if curRequest[:len(Request)] == Request :
                NbReq += 1
                mngtFunction = FunctionAdd( curRequest, mngtFunction, Sources)
                bFunctionEnd = True
            #
            i += 1
        if bTitleEnd:
            TitleEnd(mngtTitle, Sources)
            del mngtTitle
            bTitleEnd= False
        if bFunctionEnd:
            FunctionEnd(mngtFunction, Sources)
            del mngtFunction
            bFunctionEnd= False
        DisplayLog.AppendRequest( "{{/End}}" )
        DisplayLog.AppendItem("

\n")

       if NbReq == 0:
           DisplayHelp()
       else:
           Item.WikidataUpdate(Update, Anchor)


  1. appel de la fonction

if __name__ == "__main__":

   ReadRequest()

</source>