Exemplo n.º 1
0
  def handle(self, **options):
    if not options['site']:
      raise CommandError('Must give --site')

    if not (bool(options['dump']) ^ bool(options['restore'])):
      raise CommandError('Must give exactly one of: --dump=<filename>, --restore=<filename>')

    try:
      kbsite = models.GatebotSite.objects.get(name=options['site'])
    except models.GatebotSite.DoesNotExist:
      raise CommandError('Site does not exist')

    if options['restore']:
      input_fp = open(options['restore'], 'r')
      backup.restore(input_fp, kbsite, self.debug)
      input_fp.close()
    else:
      indent = None
      if options['indent']:
        indent = 2
      output_fp = open(options['dump'], 'w')
      backup.dump(output_fp, kbsite, indent, self.debug)
      output_fp.close()
Exemplo n.º 2
0
def generate_backup(request):
  context = RequestContext(request)

  indent = None
  indent_param = request.GET.get('indent', None)
  if indent_param:
    try:
      indent = int(indent_param)
    except ValueError:
      pass

  kbsite = request.kbsite
  datestr = datetime.datetime.now().strftime('%Y%m%d-%H%M%S')
  filename = 'gatebot-%s.%s.json.txt' % (kbsite.name, datestr)

  output_fp = cStringIO.StringIO()
  backup.dump(output_fp, kbsite, indent=indent)

  response = HttpResponse(output_fp.getvalue(),
      mimetype="application/octet-stream")
  response['Content-Disposition'] = 'attachment; filename=%s' % filename
  output_fp.close()
  return response