def paste_details(): """ Retrieve details for a particular paste ID. """ data = flask.request.get_json() try: paste = database.paste.get_paste_by_id(util.cryptography.get_decid(data['paste_id']), active_only=True) attachments = database.attachment.get_attachments_for_paste(util.cryptography.get_decid(data['paste_id']), active_only=True) paste_details_dict = paste.as_dict() paste_details_dict['poster_username'] = '******' paste_details_dict['attachments'] = [ attachment.as_dict() for attachment in attachments ] if paste.user_id: poster = database.user.get_user_by_id(paste.user_id) paste_details_dict['poster_username'] = poster.username if not paste.password_hash or (data.get('password') and paste.password_hash == util.cryptography.secure_hash(data.get('password'))): return flask.jsonify({ constants.api.RESULT: constants.api.RESULT_SUCCESS, constants.api.MESSAGE: None, 'details': paste_details_dict, }), constants.api.SUCCESS_CODE else: return flask.jsonify({ constants.api.RESULT: constants.api.RESULT_FAULURE, constants.api.MESSAGE: 'Password-protected paste: either no password or wrong password supplied', constants.api.FAILURE: 'password_mismatch_failure', 'details': {}, }), constants.api.AUTH_FAILURE_CODE except (PasteDoesNotExistException, UserDoesNotExistException, InvalidIDException): return flask.jsonify(constants.api.NONEXISTENT_PASTE_FAILURE), constants.api.NONEXISTENT_PASTE_FAILURE_CODE except: return flask.jsonify(constants.api.UNDEFINED_FAILURE), constants.api.UNDEFINED_FAILURE_CODE
def test_attachment_dict_repr(self): with mock.patch.object(database.attachment, '_store_attachment_file'): paste = util.testing.PasteFactory.generate() attachment = database.attachment.create_new_attachment( paste_id=paste.paste_id, file_name='file_name', file_size=12345, mime_type='image/png', file_data='binary data', ) attachment_dict = attachment.as_dict() self.assertEqual(util.cryptography.get_id_repr(paste.paste_id), attachment_dict['paste_id_repr']) self.assertEqual('file_name', attachment_dict['file_name']) self.assertEqual(12345, attachment_dict['file_size']) self.assertEqual('image/png', attachment_dict['mime_type'])