コード例 #1
0
def export_for_group(export_id_or_group, output_dir):
    if isinstance(export_id_or_group, basestring):
        try:
            config = GroupExportConfiguration.get(export_id_or_group)
        except ResourceNotFound:
            raise Exception("Couldn't find an export with id %s" %
                            export_id_or_group)
    else:
        config = export_id_or_group

    for config, schema in config.all_exports:
        try:
            files = schema.get_export_files(format=config.format)
        except SchemaMismatchException, e:
            # fire off a delayed force update to prevent this from happening again
            rebuild_schemas.delay(config.index)
            continue

        payload = files.file.payload
        if output_dir == "couch":
            saved = SavedBasicExport.view("couchexport/saved_exports",
                                          key=json.dumps(config.index),
                                          include_docs=True,
                                          reduce=False).one()
            if not saved:
                saved = SavedBasicExport(configuration=config)
            else:
                saved.configuration = config
            saved.last_updated = datetime.utcnow()
            saved.save()
            saved.set_payload(payload)

        else:
            with open(os.path.join(output_dir, config.filename), "wb") as f:
                f.write(payload)
コード例 #2
0
ファイル: views.py プロジェクト: dimagi/bhoma
def export_data(request):
    # HACK this is hardcoded to something in the DB
    export_group = GroupExportConfiguration.get("export_all_forms") 
    return render_to_response(request, "patient/export_data.html",
                              {"clinic_encounters": CLINIC_ENCOUNTERS,
                               "chw_encounters": CHW_ENCOUNTERS,
                               "group": export_group})
コード例 #3
0
def export_for_group(export_id_or_group, output_dir):
    if isinstance(export_id_or_group, basestring):
        try:
            config = GroupExportConfiguration.get(export_id_or_group)
        except ResourceNotFound:
            raise Exception("Couldn't find an export with id %s" % export_id_or_group)
    else:
        config = export_id_or_group

    for config, schema in config.all_exports:
        try:
            tmp, _ = schema.get_export_files(format=config.format)
        except SchemaMismatchException, e:
            # fire off a delayed force update to prevent this from happening again
            rebuild_schemas.delay(config.index)
            continue

        payload = Temp(tmp).payload
        if output_dir == "couch":
            saved = SavedBasicExport.view("couchexport/saved_exports", 
                                          key=json.dumps(config.index),
                                          include_docs=True,
                                          reduce=False).one()
            if not saved: 
                saved = SavedBasicExport(configuration=config)
            else:
                saved.configuration = config
            saved.last_updated = datetime.utcnow()
            saved.save()
            saved.set_payload(payload)

        else:
            with open(os.path.join(output_dir, config.filename), "wb") as f:
                f.write(payload)
コード例 #4
0
 def handle(self, *args, **options):
     if len(args) < 2: raise CommandError('Please specify %s.' % self.label)
         
     export_id = args[0]
     output_dir = args[1]
     try:
         config = GroupExportConfiguration.get(export_id)
     except ResourceNotFound:
         raise CommandError("Couldn't find an export with id %s" % export_id)
     
     for export_config in config.full_exports:
         print "exporting %s to %s" % (export_config.name, output_dir)
         # special case couch storage
         if output_dir == "couch":
             fd, path = tempfile.mkstemp()
             with os.fdopen(fd, 'wb') as f:
                 export(export_config.index, f, format=export_config.format)
             # got the file, now rewrite it to couch
             saved = SavedBasicExport.view("couchexport/saved_exports", 
                                           key=json.dumps(export_config.index),
                                           include_docs=True,
                                           reduce=False).one()
             if not saved: 
                 saved = SavedBasicExport(configuration=export_config)
                 saved.save()
             with open(path, "rb") as f:
                 saved.put_attachment(f.read(), export_config.filename)
                 saved.last_updated = datetime.utcnow()
                 saved.save()
             os.remove(path)
         else:
             with open(os.path.join(output_dir, export_config.filename), "wb") as f:
                 export(export_config.index, f, format=export_config.format)
コード例 #5
0
ファイル: groupexports.py プロジェクト: ansarbek/commcare-hq
def export_for_group(export_id_or_group, output_dir, last_access_cutoff=None):
    if isinstance(export_id_or_group, basestring):
        try:
            config = GroupExportConfiguration.get(export_id_or_group)
        except ResourceNotFound:
            raise Exception("Couldn't find an export with id %s" % export_id_or_group)
    else:
        config = export_id_or_group

    for subconfig, schema in config.all_exports:
        try:
            rebuild_export(subconfig, schema, output_dir, last_access_cutoff=last_access_cutoff)
        except ExportRebuildError:
            continue
        except Exception, e:
            notify_exception(None, 'Problem building export {} in domain {}: {}'.format(
                subconfig.index, getattr(config, 'domain', 'unknown'), e
            ))
コード例 #6
0
ファイル: groupexports.py プロジェクト: kkrampa/couchexport
def export_for_group(export_id_or_group, output_dir, last_access_cutoff=None):
    if isinstance(export_id_or_group, basestring):
        try:
            config = GroupExportConfiguration.get(export_id_or_group)
        except ResourceNotFound:
            raise Exception("Couldn't find an export with id %s" % export_id_or_group)
    else:
        config = export_id_or_group

    for subconfig, schema in config.all_exports:
        try:
            rebuild_export(subconfig, schema, output_dir, last_access_cutoff=last_access_cutoff)
        except ExportRebuildError:
            continue
        except Exception, e:
            notify_exception(None, 'Problem building export {} in domain {}: {}'.format(
                subconfig.index, getattr(config, 'domain', 'unknown'), e
            ))
コード例 #7
0
def view_export_group(request, group_id):
    group = GroupExportConfiguration.get(group_id)
    return render_to_response('couchexport/export_group.html',
                              {"group": group},
                              context_instance=RequestContext(request))
コード例 #8
0
ファイル: views.py プロジェクト: kennknowles/couchexport
def view_export_group(request, group_id):
    group = GroupExportConfiguration.get(group_id)
    return render_to_response('couchexport/export_group.html',
                              {"group" : group},
                               context_instance=RequestContext(request))