From adcc7801eaa6a4f24f2c01596e82369cc7375b5e Mon Sep 17 00:00:00 2001 From: Cédric Bonhomme Date: Tue, 27 May 2014 17:18:59 +0200 Subject: Updated JSON export. --- pyaggr3g470r/export.py | 9 +++++++- pyaggr3g470r/templates/management.html | 13 ++++++++---- pyaggr3g470r/utils.py | 6 ++++++ pyaggr3g470r/views.py | 38 ++++++++++++++++++++++++---------- 4 files changed, 50 insertions(+), 16 deletions(-) diff --git a/pyaggr3g470r/export.py b/pyaggr3g470r/export.py index 214997d0..812739f2 100644 --- a/pyaggr3g470r/export.py +++ b/pyaggr3g470r/export.py @@ -212,10 +212,17 @@ def export_json(user): "description": feed.description, "link": feed.link, "site_link": feed.site_link, + "email_notification": feed.email_notification, + "enabled": feed.enabled, + "created_date": feed.created_date, "articles": [ { "title": article.title, "link": article.link, - "content": article.content + "content": article.content, + "readed": article.readed, + "like": article.like, + "date": article.date, + "retrieved_date": article.retrieved_date } for article in feed.articles ] diff --git a/pyaggr3g470r/templates/management.html b/pyaggr3g470r/templates/management.html index fb2b8601..afdad9b6 100644 --- a/pyaggr3g470r/templates/management.html +++ b/pyaggr3g470r/templates/management.html @@ -28,19 +28,24 @@
-

{{ _('Import/export feeds') }}

-

{{ _('Import') }}

+

{{ _('OPML import/export') }}

{{ _('Batch import feeds from OPML') }} (*.xml {{ _('or') }} *.opml)
-

{{ _('Export') }}

+
{{ _('Export feeds to OPML') }} +

{{ _('Data liberation') }}

+
+ {{ _('Import account') }} (*.xml {{ _('or') }} *.opml) + +
+
+ Export account to JSON

{{ _('Export articles') }}

HTML - JSON
{% endblock %} diff --git a/pyaggr3g470r/utils.py b/pyaggr3g470r/utils.py index 2ed828f6..6e23e12c 100755 --- a/pyaggr3g470r/utils.py +++ b/pyaggr3g470r/utils.py @@ -130,6 +130,12 @@ def import_opml(email, opml_file): db.session.commit() return nb +def import_json(email, json_file): + """ + Import an account from a JSON file. + """ + user = User.query.filter(User.email == email).first() + def clean_url(url): """ diff --git a/pyaggr3g470r/views.py b/pyaggr3g470r/views.py index ee9ef7a1..e4fa9963 100644 --- a/pyaggr3g470r/views.py +++ b/pyaggr3g470r/views.py @@ -551,18 +551,34 @@ def management(): Display the management page. """ if request.method == 'POST': - # Import an OPML file - data = request.files.get('opmlfile', None) - if None == data or not allowed_file(data.filename): - flash(gettext('File not allowed.'), 'danger') + if None != request.files.get('opmlfile', None): + # Import an OPML file + data = request.files.get('opmlfile', None) + if not allowed_file(data.filename): + flash(gettext('File not allowed.'), 'danger') + else: + opml_path = os.path.join("./pyaggr3g470r/var/", data.filename) + data.save(opml_path) + try: + nb = utils.import_opml(g.user.email, opml_path) + flash(str(nb) + ' ' + gettext('feeds imported.'), "success") + except Exception as e: + flash(gettext("Impossible to import the new feeds."), "danger") + elif None != request.files.get('jsonfile', None): + # Import an account + data = request.files.get('jsonfile', None) + if not allowed_file(data.filename): + flash(gettext('File not allowed.'), 'danger') + else: + json_path = os.path.join("./pyaggr3g470r/var/", data.filename) + data.save(json_path) + try: + utils.import_json(g.user.email, json_path) + flash(gettext('Account imported.'), "success") + except: + flash(gettext("Impossible to import the account."), "danger") else: - opml_path = os.path.join("./pyaggr3g470r/var/", data.filename) - data.save(opml_path) - try: - nb = utils.import_opml(g.user.email, opml_path) - flash(str(nb) + ' ' + gettext('feeds imported.'), "success") - except Exception as e: - flash(gettext("Impossible to import the new feeds."), "danger") + flash(gettext('File not allowed.'), 'danger') form = AddFeedForm() -- cgit