def handle_T_key(self): # Get the File objects corresponding to the selected thumbnails files = File.select().where( File.md5 << [item.Text for item in self.get_selected_thumbs()]) # Determine the existing tags for these files. old_tags = Metadata.filter(Metadata.file << files, Metadata.field.not_in(['import-time'])) old_tags = sorted( list(set(['%s:"%s"' % (t.field, t.value) for t in old_tags]))) dialog = wx.TextEntryDialog(None, "Tags:", "Modifiy Tags", value=", ".join(old_tags)) if dialog.ShowModal() == wx.ID_OK: # Determine the new tags for these files. new_tags = dialog.GetValue() new_tags = [t.strip() for t in new_tags.split(",")] # Add any new tags that have been added. for token in set(new_tags) - set(old_tags): # Determine the actual field and tags if ':' in token: field, value = token.split(':', 1) else: field, value = 'tag', token value = value.strip('"') # Create records for all selected files. for file in files: try: Metadata(file=file, field=field, value=value).save() except IntegrityError: pass # Remove any tags that were removed. removed_tags = list(set(old_tags) - set(new_tags)) # Add any new tags that have been added. for token in set(old_tags) - set(new_tags): # Determine the actual field and tags if ':' in token: field, value = token.split(':', 1) else: field, value = 'tag', token # Create records for all selected files. value = value.strip('"') Metadata.delete().where(Metadata.file << files, Metadata.field == field, Metadata.value == value).execute() # Repaint the tag list. self.update_tags()
def handle_T_key(self): # Get the File objects corresponding to the selected thumbnails files = File.select().where(File.md5 << [item.Text for item in self.get_selected_thumbs()]) # Determine the existing tags for these files. old_tags = Metadata.filter(Metadata.file << files, Metadata.field.not_in(['import-time'])) old_tags = sorted(list(set(['%s:"%s"' % (t.field, t.value) for t in old_tags]))) dialog = wx.TextEntryDialog(None, "Tags:", "Modifiy Tags", value=", ".join(old_tags)) if dialog.ShowModal() == wx.ID_OK: # Determine the new tags for these files. new_tags = dialog.GetValue() new_tags = [t.strip() for t in new_tags.split(",")] # Add any new tags that have been added. for token in set(new_tags) - set(old_tags): # Determine the actual field and tags if ':' in token: field, value = token.split(':', 1) else: field, value = 'tag', token value = value.strip('"') # Create records for all selected files. for file in files: try: Metadata(file=file, field=field, value=value).save() except IntegrityError: pass # Remove any tags that were removed. removed_tags = list(set(old_tags) - set(new_tags)) # Add any new tags that have been added. for token in set(old_tags) - set(new_tags): # Determine the actual field and tags if ':' in token: field, value = token.split(':', 1) else: field, value = 'tag', token # Create records for all selected files. value = value.strip('"') Metadata.delete().where(Metadata.file << files, Metadata.field == field, Metadata.value == value).execute() # Repaint the tag list. self.update_tags()