예제 #1
0
 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)
예제 #2
0
 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
예제 #3
0
파일: models.py 프로젝트: Diacamma2/asso
 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)
예제 #4
0
 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
예제 #5
0
 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
예제 #6
0
 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)
예제 #7
0
파일: models.py 프로젝트: Lucterios2/core
 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)
예제 #8
0
 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')
예제 #9
0
 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')
예제 #10
0
 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)
예제 #11
0
 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)
예제 #12
0
파일: models.py 프로젝트: mdanielo44/core
 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
예제 #13
0
파일: models.py 프로젝트: Lucterios2/core
 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