Added the handler of the macro password (thanks to denis mourier <denis.mourier2@gmail.com>). Advanced to version 0.8.
This commit is contained in:
		
							
								
								
									
										27
									
								
								bin/obasync
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								bin/obasync
									
									
									
									
									
								
							@@ -102,6 +102,7 @@ LIBRARY         The name of the Basic library.  Default to the same
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
from __future__ import print_function
 | 
					from __future__ import print_function
 | 
				
			||||||
import argparse
 | 
					import argparse
 | 
				
			||||||
 | 
					import getpass
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
import time
 | 
					import time
 | 
				
			||||||
@@ -220,7 +221,7 @@ def parse_args():
 | 
				
			|||||||
              " an \"Untitied 1\" (in your language) if it is a new"
 | 
					              " an \"Untitied 1\" (in your language) if it is a new"
 | 
				
			||||||
              " file."))
 | 
					              " file."))
 | 
				
			||||||
    parser.add_argument(
 | 
					    parser.add_argument(
 | 
				
			||||||
        "-v", "--version", action="version", version="%(prog)s 0.7")
 | 
					        "-v", "--version", action="version", version="%(prog)s 0.8")
 | 
				
			||||||
    args = parser.parse_args()
 | 
					    args = parser.parse_args()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Obtain the absolute path
 | 
					    # Obtain the absolute path
 | 
				
			||||||
@@ -443,6 +444,7 @@ def read_basic_modules(storage, libname):
 | 
				
			|||||||
    modules = {}
 | 
					    modules = {}
 | 
				
			||||||
    if not storage.libs.hasByName(libname):
 | 
					    if not storage.libs.hasByName(libname):
 | 
				
			||||||
        return modules
 | 
					        return modules
 | 
				
			||||||
 | 
					    verify_library_password(storage, libname)
 | 
				
			||||||
    storage.libs.loadLibrary(libname)
 | 
					    storage.libs.loadLibrary(libname)
 | 
				
			||||||
    library = storage.libs.getByName(libname)
 | 
					    library = storage.libs.getByName(libname)
 | 
				
			||||||
    for modname in library.getElementNames():
 | 
					    for modname in library.getElementNames():
 | 
				
			||||||
@@ -464,11 +466,13 @@ def update_basic_modules(storage, libname, modules):
 | 
				
			|||||||
        storage.libs.createLibrary(libname)
 | 
					        storage.libs.createLibrary(libname)
 | 
				
			||||||
        print("Script library %s created." % libname, file=sys.stderr)
 | 
					        print("Script library %s created." % libname, file=sys.stderr)
 | 
				
			||||||
        create_dialog_library(storage, libname)
 | 
					        create_dialog_library(storage, libname)
 | 
				
			||||||
 | 
					        verify_library_password(storage, libname)
 | 
				
			||||||
        library = storage.libs.getByName(libname)
 | 
					        library = storage.libs.getByName(libname)
 | 
				
			||||||
        for modname in sorted(modules.keys()):
 | 
					        for modname in sorted(modules.keys()):
 | 
				
			||||||
            library.insertByName(modname, modules[modname])
 | 
					            library.insertByName(modname, modules[modname])
 | 
				
			||||||
            print("Module %s added." % modname, file=sys.stderr)
 | 
					            print("Module %s added." % modname, file=sys.stderr)
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
 | 
					        verify_library_password(storage, libname)
 | 
				
			||||||
        storage.libs.loadLibrary(libname)
 | 
					        storage.libs.loadLibrary(libname)
 | 
				
			||||||
        library = storage.libs.getByName(libname)
 | 
					        library = storage.libs.getByName(libname)
 | 
				
			||||||
        # As of OpenOffice 4.1.3, when there is no modules in the
 | 
					        # As of OpenOffice 4.1.3, when there is no modules in the
 | 
				
			||||||
@@ -514,6 +518,27 @@ def create_dialog_library(storage, libname):
 | 
				
			|||||||
    libraries.storeLibraries()
 | 
					    libraries.storeLibraries()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def verify_library_password(storage, libname):
 | 
				
			||||||
 | 
					    """Verify the password for the library.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Arguments:
 | 
				
			||||||
 | 
					        storage: The Basic macro storage, as a Storage object.
 | 
				
			||||||
 | 
					        libname: The name of the dialog library.
 | 
				
			||||||
 | 
					        password: The password for the library.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    if not storage.libs.isLibraryPasswordProtected(libname):
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    if storage.libs.isLibraryPasswordVerified(libname):
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    while True:
 | 
				
			||||||
 | 
					        password = getpass.getpass("Password: ")
 | 
				
			||||||
 | 
					        if storage.libs.verifyLibraryPassword(libname, password):
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					        print("ERROR: Failed password for library %s." % libname,
 | 
				
			||||||
 | 
					              file=sys.stderr)
 | 
				
			||||||
 | 
					    return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def run_macro(storage, libname, macro):
 | 
					def run_macro(storage, libname, macro):
 | 
				
			||||||
    """Run a Basic macro.
 | 
					    """Run a Basic macro.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								setup.py
									
									
									
									
									
								
							@@ -29,7 +29,7 @@ if os.path.basename(sys.executable) == "python.bin":
 | 
				
			|||||||
        os.path.dirname(sys.executable), "python")
 | 
					        os.path.dirname(sys.executable), "python")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
setup(name="obasync",
 | 
					setup(name="obasync",
 | 
				
			||||||
      version="0.7",
 | 
					      version="0.8",
 | 
				
			||||||
      description="Office Basic macro source synchronizer",
 | 
					      description="Office Basic macro source synchronizer",
 | 
				
			||||||
      url="https://pypi.python.org/pypi/obasync",
 | 
					      url="https://pypi.python.org/pypi/obasync",
 | 
				
			||||||
      author="imacat",
 | 
					      author="imacat",
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user