def get_log(request, content_type, content_id): if not content_type in reports.all: raise ValueError("Invalid content type '%s'." % content_type) report = reports.all[content_type] obj = report.get(content_id) header_data = \ [report.data[untitle(s)](obj, since='all') for s in report.headers] local_path = os.path.join(settings.NORC_LOG_DIR, obj.log_path) if os.path.isfile(local_path): f = open(local_path, 'r') log = ''.join(f.readlines()) f.close() elif settings.BACKUP_SYSTEM == "AmazonS3": try: log = get_s3_key("norc_logs/" + obj.log_path) except: log = "Error retrieving log from S3." else: log = "Could not retrieve log file from local machine." return render_to_response('norc/log.html', { 'key': content_type, 'log': log, 'headers': report.headers, 'data': header_data, })
def __new__(cls, name, bases, dct): function = type(lambda: None) attr_getter = lambda a: lambda obj, **kws: getattr(obj, a) for k, v in dct.iteritems(): if type(v) == function: dct[k] = staticmethod(v) for h in dct['headers']: k = untitle(h) if not k in dct['data']: dct['data'][k] = attr_getter(k) return type.__new__(cls, name, bases, dct)
def print_report(report): data_objects = report.get_all() data_objects = report.since_filter(data_objects, since) data_objects = report.order_by(data_objects, None) data_list = reports.generate(data_objects, report, dict(since=since)) if options.number > 0: data_list = data_list[:options.number] if len(data_list) > 0: table = [report.headers] + [[str(o[untitle(h)]) for h in report.headers] for o in data_list] pprint_table(sys.stdout, table) else: print 'None found.'