def archive(self): if self.name == '': raise AdminException("Instance not precise!") if not isfile(self.setting_path) or not isfile(self.instance_conf): raise AdminException("Instance not exists!") if self.filename == '': raise AdminException("Archive file not precise!") self.read() from lucterios.framework.filetools import get_tmp_dir, get_user_dir from django.core.management import call_command from django.db import connection output_filename = join(get_tmp_dir(), 'dump.json') with open(output_filename, 'w') as output: call_command('dumpdata', stdout=output) target_filename = join(get_tmp_dir(), 'target') with open(target_filename, 'w') as output: with connection.cursor() as curs: curs.execute( "SELECT app,name FROM django_migrations ORDER BY applied") output.write(six.text_type(curs.fetchall())) import tarfile with tarfile.open(self.filename, "w:gz") as tar: tar.add(output_filename, arcname="dump.json") tar.add(target_filename, arcname="target") user_dir = get_user_dir() if isdir(user_dir): tar.add(user_dir, arcname="usr") delete_path(target_filename) delete_path(output_filename) return isfile(self.filename)
def archive(self): if self.name == '': raise AdminException("Instance not precise!") if not isfile(self.setting_path) or not isfile(self.instance_conf): raise AdminException("Instance not exists!") if self.filename == '': raise AdminException("Archive file not precise!") self.read() from lucterios.framework.filetools import get_tmp_dir, get_user_dir from django.core.management import call_command from django.db import connection output_filename = join(get_tmp_dir(), 'dump.json') with open(output_filename, 'w') as output: call_command('dumpdata', stdout=output) target_filename = join(get_tmp_dir(), 'target') with open(target_filename, 'w') as output: with connection.cursor() as curs: curs.execute( "SELECT app,name FROM django_migrations ORDER BY applied") output.write(six.text_type(curs.fetchall())) import tarfile with tarfile.open(self.filename, "w:gz") as tar: tar.add(output_filename, arcname="dump.json") tar.add(target_filename, arcname="target") user_dir = get_user_dir() if isdir(user_dir): tar.add(user_dir, arcname="usr") delete_path(target_filename) delete_path(output_filename) if isfile(self.filename): self.print_info_("Instance '%s' saved as '%s'." % (self.name, self.filename)) return True else: return False
def write(self): import json self.file_name = join(get_tmp_dir(), 'list.cmd') if isfile(self.file_name): unlink(self.file_name) with open(self.file_name, 'w') as f: json.dump(self.commands, f, ensure_ascii=False)
def restore(self): if self.name == '': raise AdminException("Instance not precise!") if not isfile(self.setting_path) or not isfile(self.instance_conf): raise AdminException("Instance not exists!") if self.filename == '': raise AdminException("Archive file not precise!") self.read() from lucterios.framework.filetools import get_tmp_dir, get_user_dir import tarfile tmp_path = join(get_tmp_dir(), 'tmp_resore') delete_path(tmp_path) mkdir(tmp_path) with tarfile.open(self.filename, "r:gz") as tar: for item in tar: tar.extract(item, tmp_path) output_filename = join(tmp_path, 'dump.json') success = False if isfile(output_filename): self._migrate_from_old_targets(tmp_path) self.clear_info_() from django.core.management import call_command call_command('loaddata', output_filename) self.run_new_migration(tmp_path) self.print_info_("instance restored with '%s'" % self.filename) if isdir(join(tmp_path, 'usr')): target_dir = get_user_dir() if isdir(target_dir): delete_path(target_dir) move(join(tmp_path, 'usr'), target_dir) success = True delete_path(tmp_path) self.refresh() return success
def restore(self): if self.name == '': raise AdminException("Instance not precise!") if not isfile(self.setting_path) or not isfile(self.instance_conf): raise AdminException("Instance not exists!") if self.filename == '': raise AdminException("Archive file not precise!") self.read() from lucterios.framework.filetools import get_tmp_dir, get_user_dir import tarfile tmp_path = join(get_tmp_dir(), 'tmp_resore') delete_path(tmp_path) mkdir(tmp_path) with tarfile.open(self.filename, "r:gz") as tar: for item in tar: tar.extract(item, tmp_path) output_filename = join(tmp_path, 'dump.json') success = False if isfile(output_filename): self._migrate_from_old_targets(tmp_path) self.clear_info_() from django.core.management import call_command call_command('loaddata', output_filename) self.run_new_migration(tmp_path) self.print_info_("instance restored with '%s'" % self.filename) if isdir(join(tmp_path, 'usr')): target_dir = get_user_dir() if isdir(target_dir): delete_path(target_dir) move(join(tmp_path, 'usr'), target_dir) success = True delete_path(tmp_path) self.refresh() return success
def import_file(self, file): content = '' try: try: with ZipFile(file, 'r') as zip_ref: content = zip_ref.extract('printmodel', path=get_tmp_dir()) except (KeyError, BadZipFile): raise LucteriosException(IMPORTANT, _('Model file is invalid!')) return self.load_model(content, check=True) finally: if isfile(content): unlink(content)
def import_file(self, file): content = '' try: try: with ZipFile(file, 'r') as zip_ref: content = zip_ref.extract('printmodel', path=get_tmp_dir()) except (KeyError, BadZipFile): raise LucteriosException(IMPORTANT, _('Model file is invalid!')) return self.load_model(content, check=True) finally: if isfile(content): unlink(content)
def run_archive(self): tmp_dir = join(get_tmp_dir(), 'zipfile') download_file = join(get_user_dir(), 'extract.zip') if exists(tmp_dir): rmtree(tmp_dir) makedirs(tmp_dir) try: self.item.extract_files(tmp_dir) with ZipFile(download_file, 'w') as zip_ref: for (dirpath, _dirs, filenames) in walk(tmp_dir): for filename in filenames: zip_ref.write( join(dirpath, filename), join(dirpath[len(tmp_dir):], filename)) finally: if exists(tmp_dir): rmtree(tmp_dir) self.open_zipfile('extract.zip')
def run_archive(self): tmp_dir = join(get_tmp_dir(), 'zipfile') download_file = join(get_user_dir(), 'extract.zip') if exists(tmp_dir): rmtree(tmp_dir) makedirs(tmp_dir) try: self.item.extract_files(tmp_dir) with ZipFile(download_file, 'w') as zip_ref: for (dirpath, _dirs, filenames) in walk(tmp_dir): for filename in filenames: zip_ref.write(join(dirpath, filename), join(dirpath[len(tmp_dir):], filename)) finally: if exists(tmp_dir): rmtree(tmp_dir) self.open_zipfile('extract.zip')
def run_archive(self): viewerids = self.getparam("viewer", ()) modifierids = self.getparam("modifier", ()) if 'zipfile' in self.request.FILES.keys(): upload_file = self.request.FILES['zipfile'] tmp_dir = join(get_tmp_dir(), 'zipfile') if exists(tmp_dir): rmtree(tmp_dir) makedirs(tmp_dir) try: with ZipFile(upload_file, 'r') as zip_ref: zip_ref.extractall(tmp_dir) viewers = LucteriosGroup.objects.filter(id__in=viewerids) modifiers = LucteriosGroup.objects.filter(id__in=modifierids) self.item.import_files( tmp_dir, viewers, modifiers, self.request.user) finally: if exists(tmp_dir): rmtree(tmp_dir)
def run_archive(self): viewerids = self.getparam("viewer", ()) modifierids = self.getparam("modifier", ()) if 'zipfile' in self.request.FILES.keys(): upload_file = self.request.FILES['zipfile'] tmp_dir = join(get_tmp_dir(), 'zipfile') if exists(tmp_dir): rmtree(tmp_dir) makedirs(tmp_dir) try: with ZipFile(upload_file, 'r') as zip_ref: zip_ref.extractall(tmp_dir) viewers = LucteriosGroup.objects.filter(id__in=viewerids) modifiers = LucteriosGroup.objects.filter(id__in=modifierids) self.item.import_files(tmp_dir, viewers, modifiers, self.request.user) finally: if exists(tmp_dir): rmtree(tmp_dir)
def extract_file(self): tmp_dir = join(get_tmp_dir(), 'zipfile') download_file = join(get_user_dir(), 'extract-%d.mdl' % self.id) if exists(tmp_dir): rmtree(tmp_dir) makedirs(tmp_dir) try: content_model = "# -*- coding: utf-8 -*-\n\n" content_model += "from __future__ import unicode_literals\n\n" content_model += 'name = "%s"\n' % self.name content_model += 'kind = %d\n' % int(self.kind) content_model += 'modelname = "%s"\n' % self.modelname content_model += 'value = """%s"""\n' % self.value content_model += 'mode = %d\n' % int(self.mode) with ZipFile(download_file, 'w') as zip_ref: zip_ref.writestr('printmodel', content_model) finally: if exists(tmp_dir): rmtree(tmp_dir) return 'extract-%d.mdl' % self.id
def extract_file(self): tmp_dir = join(get_tmp_dir(), 'zipfile') download_file = join(get_user_dir(), 'extract-%d.mdl' % self.id) if exists(tmp_dir): rmtree(tmp_dir) makedirs(tmp_dir) try: content_model = "# -*- coding: utf-8 -*-\n\n" content_model += "from __future__ import unicode_literals\n\n" content_model += 'name = "%s"\n' % self.name content_model += 'kind = %d\n' % int(self.kind) content_model += 'modelname = "%s"\n' % self.modelname content_model += 'value = """%s"""\n' % self.value content_model += 'mode = %d\n' % int(self.mode) with ZipFile(download_file, 'w') as zip_ref: zip_ref.writestr('printmodel', content_model) finally: if exists(tmp_dir): rmtree(tmp_dir) return 'extract-%d.mdl' % self.id