diff options
-rw-r--r-- | pyaggr3g470r/export.py | 9 | ||||
-rw-r--r-- | pyaggr3g470r/templates/management.html | 13 | ||||
-rwxr-xr-x | pyaggr3g470r/utils.py | 6 | ||||
-rw-r--r-- | 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 @@ </div> </div> <div class="jumbotron"> - <h1>{{ _('Import/export feeds') }}</h1> - <h2 id="import-opml">{{ _('Import') }}</h2> + <h1 id="import-opml">{{ _('OPML import/export') }}</h1> <form action="" method="post" id="formImportOPML" enctype="multipart/form-data"> <span class="btn btn-default btn-file">{{ _('Batch import feeds from OPML') }} (<span class="text-info">*.xml {{ _('or') }} *.opml</span>)<input type="file" name="opmlfile" /></span> <button class="btn btn-default" type="submit">OK</button> </form> - <h2>{{ _('Export') }}</h2> + <br /> <a href="/export_opml/" class="btn btn-default">{{ _('Export feeds to OPML') }}</a> + <h1>{{ _('Data liberation') }}</h1> + <form action="" method="post" id="formImportJSON" enctype="multipart/form-data"> + <span class="btn btn-default btn-file">{{ _('Import account') }} (<span class="text-info">*.xml {{ _('or') }} *.opml</span>)<input type="file" name="jsonfile" /></span> + <button class="btn btn-default" type="submit">OK</button> + </form> + <br /> + <a href="/export/?format=JSON" class="btn btn-default">Export account to JSON</a> </div> <div class="jumbotron"> <h1>{{ _('Export articles') }}</h1> <a href="/export/?format=HTML" class="btn btn-default">HTML</a> - <a href="/export/?format=JSON" class="btn btn-default">JSON</a> </div> </div><!-- /.container --> {% 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() |