def get_dashboard_export(dashboard_export_id): """Retrieve an export of the user's current dashboard.""" dashboard_export_json = _DB.dashboard_exports.find_one( {'_id': _safe_object_id(dashboard_export_id)}) dashboard_export = export_pb2.DashboardExport() if not proto.parse_from_mongo(dashboard_export_json, dashboard_export): flask.abort(404, 'Export "%s" introuvable.' % dashboard_export_id) dashboard_export.dashboard_export_id = dashboard_export_id return dashboard_export
def _create_dashboard_export(user_id): """Create an export of the user's current dashboard.""" user_proto = _get_user_data(user_id) dashboard_export = export_pb2.DashboardExport() all_chantiers = _chantiers() for project in user_proto.projects: if not project.is_incomplete: dashboard_export.projects.add().CopyFrom(project) for chantier_id, active in project.activated_chantiers.items(): if not active or chantier_id in dashboard_export.chantiers: continue chantier = all_chantiers.get(chantier_id) if chantier: dashboard_export.chantiers[chantier_id].CopyFrom(chantier) dashboard_export.created_at.FromDatetime(now.get()) export_json = json_format.MessageToDict(dashboard_export) export_json['_id'] = _get_unguessable_object_id() result = _DB.dashboard_exports.insert_one(export_json) dashboard_export.dashboard_export_id = str(result.inserted_id) return dashboard_export