def attachment(self, date, sequence, extension): day = Day.find(date=datetime.datetime.strptime(date, "%Y-%m-%d").date()) page = day.pages[int(sequence)] response = flask.make_response(page.binary) response.headers['Content-Type'] = page.content_type() response.headers['Content-Disposition'] = 'inline; filename="{0}"'.format(page.filename()) return response
def test_newlines(self): "see if a whole horde of weird newlines screws anything up" journal_buffer = TextFileJournalBuffer() journal_buffer.process_list(["tests/data/excessive_newlines.txt"]) journal_buffer.save_entries() a_day = Day.find(date="2012-10-04") self.assertEqual(a_day.render(), self.correct_output)
def test_twodays(self): "ensure journals with several days in them continue to work" journal_buffer = TextFileJournalBuffer() journal_buffer.process_list(["tests/data/two_days.txt"]) journal_buffer.save_entries() self.assertEqual(8, Entry.query.count(), "expected number of objects in DB") # now concatenate some days and verify that it matches buf = Day.find(date="2012-10-04").render() + \ Day.find(date="2012-10-05").render() + \ Day.find(date="2012-10-06").render() + \ Day.find(date="2012-10-07").render() self.assertEqual(buf, self.correct_twodays, "multiple days are output correctly")
def delete_page(self, date, sequence): day = Day.find(date=datetime.datetime.strptime(date, "%Y-%m-%d").date()) idx = int(sequence) active_page = day.pages.pop(idx) active_page.delete() db.session.commit() return flask.redirect(flask.url_for('.day_view', date=date))
def day_view(self, date): day = Day.find(date=datetime.datetime.strptime(date, "%Y-%m-%d").date()) if day: day_str = re.sub(r'(\d\d\d\d)', '<a name="\g<1>"></a>\n\g<1>', day.render()) return self.render('journal_explorer/day_view.html', day=day, day_str=day_str) else: return flask.redirect(flask.url_for('admin.index'))
def test_merge(self): "combine two files with interwoven timestamps" journal_buffer = TextFileJournalBuffer() journal_buffer.process_list( ["tests/data/source_a.txt", "tests/data/source_b.txt"]) journal_buffer.save_entries() a_day = Day.find(date="2012-10-04") self.assertEqual(a_day.render(), self.correct_merge)
def move_page_down(self, date, sequence): day = Day.find(date=datetime.datetime.strptime(date, "%Y-%m-%d").date()) if int(sequence) < len(day.pages)-1: active_page = day.pages.pop(int(sequence)) day.pages.reorder() day.pages.insert(int(sequence)+1, active_page) day.pages.reorder() db.session.commit() return flask.redirect(flask.url_for('.day_view', date=date))
def nearest_day_view(self, date): day = Day.find(date=datetime.datetime.strptime(date, "%Y-%m-%d").date()) if day: return flask.redirect(flask.url_for('.day_view', date=day.date)) else: day = Day.query.order_by(Day.date).filter(Day.date > date).first() if day: return flask.redirect(flask.url_for('.day_view', date=day.date)) # if no dates are found, redirect to home page return flask.redirect(flask.url_for('admin.index'))
def test_textfile_batch_create(self): "Create objects in the database." journal_buffer = TextFileJournalBuffer() journal_buffer.process_list( ["tests/data/source_a.txt", "tests/data/source_b.txt"]) # create objects journal_buffer.save_entries() self.assertEqual(8, Entry.query.count(), "expected number of objects in DB") # use Journal Model to verify that objects were created a_day = Day.find(date="2012-10-04") self.assertEqual(8, a_day.entries.count(), "expected number of entries returned") # and this should not exist a_day = Day.find(date="2012-10-05") self.assertIsNone(a_day, "there are no entries for the 5th")
def download(self, date): day = Day.find(date=datetime.datetime.strptime(date, "%Y-%m-%d").date()) if day: response = flask.make_response(day.render_pdf()) response.headers['Content-Type'] = 'application/pdf' disposition_str = 'attachment; filename="{0}.pdf"'.format(day.date) response.headers['Content-Disposition'] = disposition_str return response else: return flask.redirect(flask.url_for('.day_view', date=date))
def nearest_day_view(self, date): day = Day.find(date=datetime.datetime.strptime(date, "%Y-%m-%d").date()) if day: return flask.redirect(flask.url_for('.day_view', date=day.date)) else: day = Day.query.order_by(Day.date).filter(Day.date > date).first() if day: return flask.redirect(flask.url_for('.day_view', date=day.date)) else: day = Day.query.order_by(Day.date.desc()).filter(Day.date < date).first() if day: return flask.redirect(flask.url_for('.day_view', date=day.date)) # if no dates are found, redirect to home page return flask.redirect(flask.url_for('admin.index'))
def markdown_view(self, date): day = Day.find(date=datetime.datetime.strptime(date, "%Y-%m-%d").date()) if day: return day.render_markdown() else: return flask.redirect(flask.url_for('admin.index'))
def delete_page(self, date, sequence): day = Day.find(date=datetime.datetime.strptime(date, "%Y-%m-%d").date()) active_page = day.pages.pop(int(sequence)) active_page.delete() db.session.commit() return flask.redirect(flask.url_for('.day_view', date=date))
def upload_file(self, date): day = Day.find(date=datetime.datetime.strptime(date, "%Y-%m-%d").date()) file_handle = flask.request.files['file'] if day and file_handle: day.attach(file_handle.read()) return flask.redirect(flask.url_for('.day_view', date=date))
def preview(self, date, sequence): day = Day.find(date=datetime.datetime.strptime(date, "%Y-%m-%d").date()) page = day.pages[int(sequence)] response = flask.make_response(page.preview) response.headers['Content-Type'] = 'image/jpeg' return response