def download_all_files(store, user_id, rtip_id): db_access_rtip(store, user_id, rtip_id) rfiles = store.find(ReceiverFile, ReceiverFile.receivertip_id == unicode(rtip_id)) files_list = [] for sf in rfiles: sf.downloads += 1 files_list.append(serialize_receiver_file(sf)) return files_list
def download_file(store, user_id, rtip_id, file_id): db_access_rtip(store, user_id, rtip_id) rfile = store.find(ReceiverFile, ReceiverFile.id == unicode(file_id)).one() if not rfile or rfile.receivertip.receiver_id != user_id: raise errors.FileIdNotFound log.debug("Download of file %s by receiver %s (%d)" % (rfile.internalfile_id, rfile.receivertip.receiver_id, rfile.downloads)) rfile.downloads += 1 return serialize_receiver_file(rfile)
def get_tip_export(store, user_id, rtip_id): rtip = db_access_rtip(store, user_id, rtip_id) files = [] for rf in store.find(models.ReceiverFile, models.ReceiverFile.receivertip_id == rtip_id): rf.downloads += 1 file_dict = serialize_receiver_file(rf) file_dict['name'] = 'files/' + file_dict['name'] files.append(copy.deepcopy(file_dict)) receiver = rtip.receiver user_language = receiver.user.language export_dict = { 'type': u'export_template', 'node': db_admin_serialize_node(store, user_language), 'notification': db_get_notification(store, user_language), 'tip': serialize_rtip(store, rtip, user_language), 'context': admin_serialize_context(store, rtip.internaltip.context, user_language), 'receiver': admin_serialize_receiver(receiver, user_language), 'comments': db_get_comment_list(rtip), 'messages': db_get_message_list(rtip), 'files': [] } export_template = Templating().format_template(export_dict['notification']['export_template'], export_dict).encode('utf-8') export_dict['files'].append({'buf': export_template, 'name': "data.txt"}) return export_dict
def get_tip_export(store, user_id, rtip_id, language): rtip = db_access_rtip(store, user_id, rtip_id) receiver = rtip.receiver export_dict = { 'type': u'export_template', 'node': db_admin_serialize_node(store, language), 'notification': db_get_notification(store, language), 'tip': serialize_rtip(store, rtip, language), 'context': admin_serialize_context(store, rtip.internaltip.context, language), 'receiver': admin_serialize_receiver(receiver, language), 'comments': db_get_comment_list(rtip), 'messages': db_get_message_list(rtip), 'files': [] } export_template = Templating().format_template(export_dict['notification']['export_template'], export_dict).encode('utf-8') export_dict['files'].append({'buf': export_template, 'name': "data.txt"}) for rf in store.find(models.ReceiverFile, models.ReceiverFile.receivertip_id == rtip_id): rf.downloads += 1 file_dict = serialize_receiver_file(rf) file_dict['name'] = 'files/' + file_dict['name'] export_dict['files'].append(copy.deepcopy(file_dict)) return export_dict
def get_tip_export(session, tid, user_id, rtip_id, language): rtip, itip = db_access_rtip(session, tid, user_id, rtip_id) user, context = session.query(models.User, models.Context) \ .filter(models.User.id == rtip.receiver_id, models.Context.id == models.InternalTip.context_id, models.InternalTip.id == rtip.internaltip_id, models.User.tid == tid).one() rtip_dict = serialize_rtip(session, rtip, itip, language) export_dict = { 'type': 'export_template', 'node': db_admin_serialize_node(session, tid, language), 'notification': db_get_notification(session, tid, language), 'tip': rtip_dict, 'crypto_tip_prv_key': rtip.crypto_tip_prv_key, 'user': user_serialize_user(session, user, language), 'context': admin_serialize_context(session, context, language), 'comments': rtip_dict['comments'], 'messages': rtip_dict['messages'], 'files': [], 'submission_statuses': db_retrieve_all_submission_statuses(session, tid, language) } for rfile in session.query(models.ReceiverFile).filter( models.ReceiverFile.receivertip_id == rtip_id): rfile.last_access = datetime_now() rfile.downloads += 1 file_dict = models.serializers.serialize_rfile(session, tid, rfile) file_dict['name'] = 'files/' + file_dict['name'] file_dict['path'] = os.path.join(Settings.attachments_path, file_dict['filename']) file_dict['forged'] = False export_dict['files'].append(file_dict) for wf in session.query(models.WhistleblowerFile).filter( models.WhistleblowerFile.receivertip_id == models.ReceiverTip.id, models.ReceiverTip.internaltip_id == rtip.internaltip_id, models.InternalTip.id == rtip.internaltip_id): file_dict = models.serializers.serialize_wbfile(session, tid, wf) file_dict['name'] = 'files_from_recipients/' + file_dict['name'] file_dict['path'] = os.path.join(Settings.attachments_path, file_dict['filename']) file_dict[ 'forged'] = True # To be removed as soon it will be encrypted export_dict['files'].append(file_dict) return export_dict
def download_file(store, user_id, rtip_id, file_id): """ Auth temporary disabled, just Tip_id and File_id required """ db_access_rtip(store, user_id, rtip_id) rfile = store.find(ReceiverFile, ReceiverFile.id == unicode(file_id)).one() if not rfile or rfile.receiver_id != user_id: raise errors.FileIdNotFound log.debug("Download of file %s by receiver %s (%d)" % (rfile.internalfile.id, rfile.receiver.id, rfile.downloads)) rfile.downloads += 1 return serialize_receiver_file(rfile)
def get_tip_export(session, tid, user_id, rtip_id, language): rtip, itip = db_access_rtip(session, tid, user_id, rtip_id) user, context = session.query(models.User, models.Context) \ .filter(models.User.id == rtip.receiver_id, models.Context.id == models.InternalTip.context_id, models.InternalTip.id == rtip.internaltip_id, models.UserTenant.user_id == models.User.id, models.UserTenant.tenant_id == tid).one() rtip_dict = serialize_rtip(session, rtip, itip, language) export_dict = { 'type': u'export_template', 'node': db_admin_serialize_node(session, tid, language), 'notification': db_get_notification(session, tid, language), 'tip': rtip_dict, 'user': user_serialize_user(session, user, language), 'context': admin_serialize_context(session, context, language), 'comments': rtip_dict['comments'], 'messages': rtip_dict['messages'], 'files': [] } export_template = Templating().format_template( export_dict['notification']['export_template'], export_dict).encode('utf-8') export_template = msdos_encode(text_type(export_template, 'utf-8')).encode('utf-8') export_dict['files'].append({ 'fo': BytesIO(export_template), 'name': "data.txt" }) for rfile in session.query(models.ReceiverFile).filter( models.ReceiverFile.receivertip_id == rtip_id): rfile.last_access = datetime_now() rfile.downloads += 1 file_dict = models.serializers.serialize_rfile(session, tid, rfile) file_dict['name'] = 'files/' + file_dict['name'] file_dict['path'] = os.path.join(Settings.attachments_path, file_dict['filename']) export_dict['files'].append(file_dict) for wf in session.query(models.WhistleblowerFile).filter( models.WhistleblowerFile.receivertip_id == models.ReceiverTip.id, models.ReceiverTip.internaltip_id == rtip.internaltip_id, models.InternalTip.id == rtip.internaltip_id): file_dict = models.serializers.serialize_wbfile(session, tid, wf) file_dict['name'] = 'files_from_recipients/' + file_dict['name'] file_dict['path'] = os.path.join(Settings.attachments_path, file_dict['filename']) export_dict['files'].append(file_dict) return export_dict
def get_tip_export(store, user_id, rtip_id, language): rtip = db_access_rtip(store, user_id, rtip_id) receiver = rtip.receiver rtip_dict = serialize_rtip(store, rtip, language) export_dict = { 'type': u'export_template', 'node': db_admin_serialize_node(store, language), 'notification': db_get_notification(store, language), 'tip': serialize_rtip(store, rtip, language), 'context': admin_serialize_context(store, rtip.internaltip.context, language), 'receiver': admin_serialize_receiver(store, receiver, language), 'comments': rtip_dict['comments'], 'messages': rtip_dict['messages'], 'files': [] } export_template = Templating().format_template( export_dict['notification']['export_template'], export_dict).encode('utf-8') export_template = msdos_encode(export_template) export_dict['files'].append({'buf': export_template, 'name': "data.txt"}) for rf in store.find(models.ReceiverFile, models.ReceiverFile.receivertip_id == rtip_id): rf.downloads += 1 file_dict = models.serializers.serialize_rfile(rf) file_dict['name'] = 'files/' + file_dict['name'] export_dict['files'].append(file_dict) rtips_ids = [rt.id for rt in rtip.internaltip.receivertips] wfs = store.find(models.WhistleblowerFile, In(models.WhistleblowerFile.receivertip_id, rtips_ids)) for wf in wfs: file_dict = models.serializers.serialize_wbfile(wf) file_dict['name'] = 'files_from_recipients/' + file_dict['name'] export_dict['files'].append(file_dict) return export_dict
def get_tip_export(store, user_id, rtip_id, language): rtip = db_access_rtip(store, user_id, rtip_id) receiver = rtip.receiver rtip_dict = serialize_rtip(store, rtip, language) export_dict = { 'type': u'export_template', 'node': db_admin_serialize_node(store, language), 'notification': db_get_notification(store, language), 'tip': serialize_rtip(store, rtip, language), 'context': admin_serialize_context(store, rtip.internaltip.context, language), 'receiver': admin_serialize_receiver(receiver, language), 'comments': rtip_dict['comments'], 'messages': rtip_dict['messages'], 'files': [] } export_template = Templating().format_template(export_dict['notification']['export_template'], export_dict).encode('utf-8') export_template = msdos_encode(export_template) export_dict['files'].append({'buf': export_template, 'name': "data.txt"}) for rf in store.find(models.ReceiverFile, models.ReceiverFile.receivertip_id == rtip_id): rf.downloads += 1 file_dict = models.serializers.serialize_rfile(rf) file_dict['name'] = 'files/' + file_dict['name'] export_dict['files'].append(copy.deepcopy(file_dict)) rtips_ids = [rt.id for rt in rtip.internaltip.receivertips] wfs = store.find(models.WhistleblowerFile, In(models.WhistleblowerFile.receivertip_id, rtips_ids)) for wf in wfs: file_dict = models.serializers.serialize_wbfile(wf) file_dict['name'] = 'files_from_recipients/' + file_dict['name'] export_dict['files'].append(copy.deepcopy(file_dict)) return export_dict
def get_tip_export(session, tid, user_id, rtip_id, language): rtip, itip = db_access_rtip(session, tid, user_id, rtip_id) user, context = session.query(models.User, models.Context) \ .filter(models.User.id == rtip.receiver_id, models.Context.id == models.InternalTip.context_id, models.InternalTip.id == rtip.internaltip_id, models.User.tid == tid).one() rtip_dict = serialize_rtip(session, rtip, itip, language) return { 'type': 'export_template', 'node': db_admin_serialize_node(session, tid, language), 'notification': db_get_notification(session, tid, language), 'tip': rtip_dict, 'crypto_tip_prv_key': Base64Encoder.decode(rtip.crypto_tip_prv_key), 'user': user_serialize_user(session, user, language), 'context': admin_serialize_context(session, context, language), 'submission_statuses': db_get_submission_statuses(session, tid, language) }
def get_file_collection(store, user_id, rtip_id): rtip = db_access_rtip(store, user_id, rtip_id) archive_dict = {'files': [], 'file_counter': 0, 'total_size': 0} file_list = [] for rf in store.find(models.ReceiverFile, models.ReceiverFile.receivertip_id == rtip_id): rf.downloads += 1 file_list.append(serialize_receiver_file(rf)) archive_dict['file_counter'] += 1 archive_dict['total_size'] += rf.size archive_dict['files'].append(serialize_receiver_file(rf)) receiver = rtip.receiver user_language = receiver.user.language data = { 'type': u'archive_description', 'node': db_admin_serialize_node(store, user_language), 'notification': db_get_notification(store, user_language), 'tip': serialize_rtip(store, rtip, user_language), 'context': admin_serialize_context(store, rtip.internaltip.context, user_language), 'receiver': admin_serialize_receiver(receiver, user_language), 'archive': archive_dict } archive_description = Templating().format_template(data['notification']['archive_description'], data).encode('utf-8') file_list.append( { 'buf': archive_description, 'name': "COLLECTION_INFO.txt" } ) return file_list