server/sources/native.py
changeset 9468 39b7a91a3f4c
parent 9467 ad66d7b3fd48
child 9469 032825bbacab
equal deleted inserted replaced
9467:ad66d7b3fd48 9468:39b7a91a3f4c
    33     import pickle
    33     import pickle
    34 from threading import Lock
    34 from threading import Lock
    35 from datetime import datetime
    35 from datetime import datetime
    36 from base64 import b64decode, b64encode
    36 from base64 import b64decode, b64encode
    37 from contextlib import contextmanager
    37 from contextlib import contextmanager
    38 from os.path import abspath, basename
    38 from os.path import basename
    39 import re
    39 import re
    40 import itertools
    40 import itertools
    41 import zipfile
    41 import zipfile
    42 import logging
    42 import logging
    43 import sys
    43 import sys
    50 
    50 
    51 from yams import schema2sql as y2sql
    51 from yams import schema2sql as y2sql
    52 from yams.schema import role_name
    52 from yams.schema import role_name
    53 
    53 
    54 from cubicweb import (UnknownEid, AuthenticationError, ValidationError, Binary,
    54 from cubicweb import (UnknownEid, AuthenticationError, ValidationError, Binary,
    55                       UniqueTogetherError, QueryError, UndoTransactionException)
    55                       UniqueTogetherError, UndoTransactionException)
    56 from cubicweb import transaction as tx, server, neg_role
    56 from cubicweb import transaction as tx, server, neg_role
    57 from cubicweb.utils import QueryCache
    57 from cubicweb.utils import QueryCache
    58 from cubicweb.schema import VIRTUAL_RTYPES
    58 from cubicweb.schema import VIRTUAL_RTYPES
    59 from cubicweb.cwconfig import CubicWebNoAppConfiguration
    59 from cubicweb.cwconfig import CubicWebNoAppConfiguration
    60 from cubicweb.server import hook
    60 from cubicweb.server import hook
  1552     def backup(self, backupfile):
  1552     def backup(self, backupfile):
  1553         archive = zipfile.ZipFile(backupfile, 'w', allowZip64=True)
  1553         archive = zipfile.ZipFile(backupfile, 'w', allowZip64=True)
  1554         self.cnx = self.get_connection()
  1554         self.cnx = self.get_connection()
  1555         try:
  1555         try:
  1556             self.cursor = self.cnx.cursor()
  1556             self.cursor = self.cnx.cursor()
  1557             self.cursor.arraysize=100
  1557             self.cursor.arraysize = 100
  1558             self.logger.info('writing metadata')
  1558             self.logger.info('writing metadata')
  1559             self.write_metadata(archive)
  1559             self.write_metadata(archive)
  1560             for seq in self.get_sequences():
  1560             for seq in self.get_sequences():
  1561                 self.logger.info('processing sequence %s', seq)
  1561                 self.logger.info('processing sequence %s', seq)
  1562                 self.write_sequence(archive, seq)
  1562                 self.write_sequence(archive, seq)
  1595     def write_metadata(self, archive):
  1595     def write_metadata(self, archive):
  1596         archive.writestr('format.txt', '1.0')
  1596         archive.writestr('format.txt', '1.0')
  1597         archive.writestr('tables.txt', '\n'.join(self.get_tables()))
  1597         archive.writestr('tables.txt', '\n'.join(self.get_tables()))
  1598         archive.writestr('sequences.txt', '\n'.join(self.get_sequences()))
  1598         archive.writestr('sequences.txt', '\n'.join(self.get_sequences()))
  1599         versions = self._get_versions()
  1599         versions = self._get_versions()
  1600         versions_str = '\n'.join('%s %s' % (k,v)
  1600         versions_str = '\n'.join('%s %s' % (k, v)
  1601                                  for k,v in versions)
  1601                                  for k, v in versions)
  1602         archive.writestr('versions.txt', versions_str)
  1602         archive.writestr('versions.txt', versions_str)
  1603 
  1603 
  1604     def write_sequence(self, archive, seq):
  1604     def write_sequence(self, archive, seq):
  1605         sql = self.dbhelper.sql_sequence_current_state(seq)
  1605         sql = self.dbhelper.sql_sequence_current_state(seq)
  1606         columns, rows_iterator = self._get_cols_and_rows(sql)
  1606         columns, rows_iterator = self._get_cols_and_rows(sql)