fix bug in processing local service missed .css files.
This commit is contained in:
		
							parent
							
								
									1e046b5b24
								
							
						
					
					
						commit
						99601197c1
					
				@ -33,10 +33,10 @@ from .context import config
 | 
				
			|||||||
from .lang import _, _sl
 | 
					from .lang import _, _sl
 | 
				
			||||||
from .progress import ProgressWindow
 | 
					from .progress import ProgressWindow
 | 
				
			||||||
from .service import service_manager, service_pool, QueryResult, copy_static_file
 | 
					from .service import service_manager, service_pool, QueryResult, copy_static_file
 | 
				
			||||||
 | 
					from .service.base import LocalService
 | 
				
			||||||
from .utils import Empty, MapDict, Queue, wrap_css
 | 
					from .utils import Empty, MapDict, Queue, wrap_css
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
def inspect_note(note):
 | 
					def inspect_note(note):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    inspect the note, and get necessary input parameters
 | 
					    inspect the note, and get necessary input parameters
 | 
				
			||||||
@ -88,9 +88,9 @@ class QueryThread(QThread):
 | 
				
			|||||||
                continue
 | 
					                continue
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
                results, success_num = query_all_flds(note)
 | 
					                results, success_num, missed_css = query_all_flds(note)
 | 
				
			||||||
                if not self.exit and self.manager:
 | 
					                if not self.exit and self.manager:
 | 
				
			||||||
                    if self.manager.update(note, results, success_num):
 | 
					                    if self.manager.update(note, results, success_num, missed_css):
 | 
				
			||||||
                        self.note_flush.emit(note)
 | 
					                        self.note_flush.emit(note)
 | 
				
			||||||
            except InvalidWordException:
 | 
					            except InvalidWordException:
 | 
				
			||||||
                # only show error info on single query
 | 
					                # only show error info on single query
 | 
				
			||||||
@ -117,6 +117,7 @@ class QueryWorkerManager(object):
 | 
				
			|||||||
        self.counter = 0
 | 
					        self.counter = 0
 | 
				
			||||||
        self.fails = 0
 | 
					        self.fails = 0
 | 
				
			||||||
        self.fields = 0
 | 
					        self.fields = 0
 | 
				
			||||||
 | 
					        self.missed_css = list()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_worker(self):
 | 
					    def get_worker(self):
 | 
				
			||||||
        worker = QueryThread(self)
 | 
					        worker = QueryThread(self)
 | 
				
			||||||
@ -137,7 +138,7 @@ class QueryWorkerManager(object):
 | 
				
			|||||||
            worker = self.get_worker()
 | 
					            worker = self.get_worker()
 | 
				
			||||||
            worker.run()
 | 
					            worker.run()
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
    def update(self, note, results, success_num):
 | 
					    def update(self, note, results, success_num, missed_css):
 | 
				
			||||||
        self.mutex.lock()
 | 
					        self.mutex.lock()
 | 
				
			||||||
        if success_num > 0:
 | 
					        if success_num > 0:
 | 
				
			||||||
            self.counter += 1
 | 
					            self.counter += 1
 | 
				
			||||||
@ -145,6 +146,7 @@ class QueryWorkerManager(object):
 | 
				
			|||||||
            self.fails += 1
 | 
					            self.fails += 1
 | 
				
			||||||
        val = update_note_fields(note, results)
 | 
					        val = update_note_fields(note, results)
 | 
				
			||||||
        self.fields += val
 | 
					        self.fields += val
 | 
				
			||||||
 | 
					        self.missed_css += missed_css
 | 
				
			||||||
        self.mutex.unlock()
 | 
					        self.mutex.unlock()
 | 
				
			||||||
        if self.total > 1:
 | 
					        if self.total > 1:
 | 
				
			||||||
            return val > 0
 | 
					            return val > 0
 | 
				
			||||||
@ -236,7 +238,7 @@ def query_all(notes):
 | 
				
			|||||||
    work_manager.join()
 | 
					    work_manager.join()
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    #progress.finish()
 | 
					    #progress.finish()
 | 
				
			||||||
    promot_choose_css()
 | 
					    promot_choose_css(work_manager.missed_css)
 | 
				
			||||||
    tooltip(u'{0} {1} {2}, {3} {4}'.format(_('UPDATED'), work_manager.counter, _('CARDS'), work_manager.fields, _('FIELDS')))
 | 
					    tooltip(u'{0} {1} {2}, {3} {4}'.format(_('UPDATED'), work_manager.counter, _('CARDS'), work_manager.fields, _('FIELDS')))
 | 
				
			||||||
    #work_manager.clean()
 | 
					    #work_manager.clean()
 | 
				
			||||||
    service_pool.clean()
 | 
					    service_pool.clean()
 | 
				
			||||||
@ -277,21 +279,33 @@ def update_note_field(note, fld_index, fld_result):
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    return 0
 | 
					    return 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def promot_choose_css():
 | 
					def promot_choose_css(missed_css):
 | 
				
			||||||
    for local_service in service_manager.local_services:
 | 
					    '''
 | 
				
			||||||
 | 
					    Choose missed css file and copy to user folder
 | 
				
			||||||
 | 
					    '''
 | 
				
			||||||
 | 
					    checked = set()
 | 
				
			||||||
 | 
					    for css in missed_css:
 | 
				
			||||||
 | 
					            filename = u'_' + css['file']
 | 
				
			||||||
 | 
					            if not os.path.exists(filename) and not css['file'] in checked:
 | 
				
			||||||
 | 
					                checked.add(css['file'])
 | 
				
			||||||
 | 
					                showInfo(
 | 
				
			||||||
 | 
					                    Template.miss_css.format(
 | 
				
			||||||
 | 
					                        dict = css['title'],
 | 
				
			||||||
 | 
					                        css = css['file']
 | 
				
			||||||
 | 
					                    )
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
                try:
 | 
					                try:
 | 
				
			||||||
            service = service_pool.get(local_service.__unique__)
 | 
					                    filepath = css['dict_path'][:css['dict_path'].rindex(os.path.sep)+1]
 | 
				
			||||||
            missed_css = service.missed_css.pop()
 | 
					 | 
				
			||||||
            showInfo(Template.miss_css.format(
 | 
					 | 
				
			||||||
                dict=service.title, css=missed_css))
 | 
					 | 
				
			||||||
                    filepath = QFileDialog.getOpenFileName(
 | 
					                    filepath = QFileDialog.getOpenFileName(
 | 
				
			||||||
                caption=u'Choose css file', filter=u'CSS (*.css)')
 | 
					                        directory = filepath,
 | 
				
			||||||
 | 
					                        caption = u'Choose css file',
 | 
				
			||||||
 | 
					                        filter = u'CSS (*.css)'
 | 
				
			||||||
 | 
					                    )
 | 
				
			||||||
                    if filepath:
 | 
					                    if filepath:
 | 
				
			||||||
                shutil.copy(filepath, u'_' + missed_css)
 | 
					                        shutil.copy(filepath, filename)
 | 
				
			||||||
                wrap_css(u'_' + missed_css)
 | 
					                        wrap_css(filename)
 | 
				
			||||||
                service.missed_css.clear()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        except KeyError as e:
 | 
					                except KeyError:
 | 
				
			||||||
                    pass
 | 
					                    pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -366,7 +380,15 @@ def query_all_flds(note):
 | 
				
			|||||||
        #    showInfo(_("NO_QUERY_WORD"))
 | 
					        #    showInfo(_("NO_QUERY_WORD"))
 | 
				
			||||||
        #    pass
 | 
					        #    pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    missed_css = list()
 | 
				
			||||||
    for service in services.values():
 | 
					    for service in services.values():
 | 
				
			||||||
 | 
					        if isinstance(service, LocalService):
 | 
				
			||||||
 | 
					            for css in service.missed_css:
 | 
				
			||||||
 | 
					                missed_css.append({
 | 
				
			||||||
 | 
					                    'dict_path': service.dict_path,
 | 
				
			||||||
 | 
					                    'title': service.title,
 | 
				
			||||||
 | 
					                    'file': css
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
        service_pool.put(service)
 | 
					        service_pool.put(service)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    return result, success_num
 | 
					    return result, success_num, missed_css
 | 
				
			||||||
 | 
				
			|||||||
@ -468,6 +468,10 @@ class LocalService(Service):
 | 
				
			|||||||
    def _filename(self):
 | 
					    def _filename(self):
 | 
				
			||||||
        return os.path.splitext(os.path.basename(self.dict_path))[0]
 | 
					        return os.path.splitext(os.path.basename(self.dict_path))[0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def active(self, action_label, word):
 | 
				
			||||||
 | 
					        self.missed_css.clear()
 | 
				
			||||||
 | 
					        return super(LocalService, self).active(action_label, word)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MdxService(LocalService):
 | 
					class MdxService(LocalService):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user