Giter Club home page Giter Club logo

newspipe's Introduction

Newspipe

builds.sr.ht status

Presentation

Newspipe is a web news aggregator.

Newspipe Home page

Newspipe is written in Python. The core technologies are Flask, asyncio and SQLAlchemy.

Main features

  • multiple users can use a Newspipe instance.
  • an API to manage feeds (you can connect your own crawler).
  • data liberation: export and import your account with a JSON file.
  • export and import feeds with OPML files.
  • search and favorite articles.
  • detection of inactive feeds.
  • management of bookmarks (with import from Pinboard).
  • optional ldap authentication.
  • user interface available with a light theme and a dark theme.

Deployment

Newspipe is really easy to deploy. Assuming you have already installed git, poetry, npm, and Python >= 3.10, you just have to do the following:

$ git clone https://github.com/cedricbonhomme/newspipe
$ cd newspipe/
$ npm ci
$ poetry install --no-dev
$ poetry shell
$ pybabel compile -d newspipe/translations
$ export NEWSPIPE_CONFIG=sqlite.py
$ export FLASK_DEBUG=1
$ flask db_init
$ flask create_admin --nickname <nickname> --password <password>
$ flask run
 * Debug mode: on

If you want to use PostgreSQL you can customize the provided example configuration file (instance/config.py):

$ sudo apt-get install postgresql
$ cp instance/config.py instance/postgresql.py
$ vim instance/postgresql.py # customize it
$ export NEWSPIPE_CONFIG=postgresql.py
$ flask db_create
$ flask db_init
...

For production you can use Gunicorn or mod_wsgi.

License

Newspipe is under the GNU Affero General Public License version 3.

Donations

If you wish and if you like Newspipe, you can donate:

GitHub Sponsors

Thank you !

Contact

Cédric Bonhomme

newspipe's People

Contributors

bgstack15 avatar cedricbonhomme avatar dependabot[bot] avatar edwardbetts avatar jaesivsm avatar luzpaz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

newspipe's Issues

Import bookmarks

Add the possibility to import a Pinboard JSON bookmark export into Newspipe.

The export of Newspipe should be compatible with Pinboard.

IOError on importing opml without selecting a file

Clicking on ok button for importing opml file without selecting one give the following Traceback:

#!text

 Traceback (most recent call last):
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask_login.py", line 758, in decorated_view
    return func(*args, **kwargs)
  File "/home/benoit/depots/pyaggr3g470r/pyaggr3g470r/views.py", line 487, in management
    data.save(opml_path)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/werkzeug/datastructures.py", line 2576, in save
    dst = open(dst, 'wb')
IOError: [Errno 21] Is a directory: u'./pyaggr3g470r/var/'

IOError on importing opml without selecting a file

Clicking on ok button for importing opml file without selecting one give the following Traceback:

#!text

 Traceback (most recent call last):
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask_login.py", line 758, in decorated_view
    return func(*args, **kwargs)
  File "/home/benoit/depots/pyaggr3g470r/pyaggr3g470r/views.py", line 487, in management
    data.save(opml_path)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/werkzeug/datastructures.py", line 2576, in save
    dst = open(dst, 'wb')
IOError: [Errno 21] Is a directory: u'./pyaggr3g470r/var/'

supporting updated

crawler should be able to edit an article that has been updated, a notification in the ui should also be made available if the user opted in or did not opt out (tbd)

Article-level categorisation?

I just started playing with newspipe.org, nice service overall. I'll keep playing, for now. But, I have noticed a bad abstraction; feeds are categorised, instead of posts. Also, "drop filters" are missing.

For example, what if I want to subscribe to 10 major newspapers, but I only care about posts that mention "bitcoin" or "privacy", or alternatively "biotech" or "diybio" (two areas I have an interest in). I'd like to be able to define filters like:

  1. If (regex '(blockchain|privacy)' then categorise->privacy
  2. else if (regex '(biotech|diybio)') then categorise->biotech
  3. else delete post (drop)

This is because many feeds are totally heterogenous, and you only care about a subset, or several subsets. And with RSS the problem isn't getting information, it's filtering it.

Some feeds are homogenous in topic, and for those there should still be a "feed category", but I feel that under-the-hood this should just mean a default filter for all posts, and that filters should still operate on posts, not feeds.

Thanks!

Home page with javascript

I think the home page would deserve a lifting by transforming into a one page application. Using Reactjs or another framework would allow us many things :

  • reloading article list when selecting another feed from the menu
  • allowing reading article directly on another panel on the front page

`flask db_create` fails on sqlite

With the default sqlite.py config:

  File "/ghq/github.com/cedricbonhomme/newspipe/newspipe/commands.py", line 35, in db_create
    application.config["DB_CONFIG_DICT"],
    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
KeyError: 'DB_CONFIG_DICT'

The code in db_create() is specific to postgres, and won't work with other databases.

def db_create(db, db_config_dict, database_name):
    db_conn_format = "postgresql://{user}:{password}@{host}:{port}/{database}"
    db_conn_uri_default = db_conn_format.format(database="postgres", **db_config_dict)
    engine_default = create_engine(db_conn_uri_default)
    conn = engine_default.connect()
    conn.execute(text("COMMIT"))
    conn.execute(text("CREATE DATABASE %s" % database_name))
    conn.close()

IOError on importing opml without selecting a file

Clicking on ok button for importing opml file without selecting one give the following Traceback:

#!text

 Traceback (most recent call last):
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask_login.py", line 758, in decorated_view
    return func(*args, **kwargs)
  File "/home/benoit/depots/pyaggr3g470r/pyaggr3g470r/views.py", line 487, in management
    data.save(opml_path)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/werkzeug/datastructures.py", line 2576, in save
    dst = open(dst, 'wb')
IOError: [Errno 21] Is a directory: u'./pyaggr3g470r/var/'

file articles as "to read later"

A user requested me a feature which would allow him to dismiss an article from the front page but which would still be accessible for later read. Kinda like the "favorites" page actually but the article would still disappear from there after being read.

Length control on admin password

This can lead to trouble, e.g. if I run:

flask create_admin --nickname admin --password admin

then I can't log-in.

The admin password is only 5 characters long, and the signin for has a constraint on 6 chars min.

class SigninForm(RedirectForm):
    ...
    password = PasswordField(
        lazy_gettext("Password"),
        [
            validators.DataRequired(lazy_gettext("Please enter a password.")),
            validators.Length(min=6, max=500),
        ],
    )

If the constraint is relevant for a sign-in form (not sure it is), then it should also be enforced in flask create_admin. Or it should be dropped altogether.

Using delete feed on feed page give Traceback

Using delete link http://127.0.0.1:5000/delete_feed/20 from a feed page http://127.0.0.1:5000/feed/20 produce error

#!txt

NameError: global name 'flash' is not defined

But feed is effectively deleted.

Full Traceback :

#!txt

Traceback (most recent call last):
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask_login.py", line 758, in decorated_view
    return func(*args, **kwargs)
  File "/home/benoit/depots/pyaggr3g470r/pyaggr3g470r/decorators.py", line 27, in decorated
    flash("This feed do not exist.", "danger")
NameError: global name 'flash' is not defined

supporting failed retreive

http code like 502 / 503 should not make the feed go down, errors should be ignored and the feed rescheduled

Dark theme

It would be great if there was a dark theme.

User edition

Editing a user email will lead to a lot of errors due to the fact that the UI try to reload the user by the old email. Either a fix is made either we prevent users from editing their email.


IOError on importing opml without selecting a file

Clicking on ok button for importing opml file without selecting one give the following Traceback:

#!text

 Traceback (most recent call last):
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask_login.py", line 758, in decorated_view
    return func(*args, **kwargs)
  File "/home/benoit/depots/pyaggr3g470r/pyaggr3g470r/views.py", line 487, in management
    data.save(opml_path)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/werkzeug/datastructures.py", line 2576, in save
    dst = open(dst, 'wb')
IOError: [Errno 21] Is a directory: u'./pyaggr3g470r/var/'

recast the top menu and global ui change

Last time pyagg was discussed on LinuxFR an interesting comment made a series of remarks, most of them I find relevant.

I would like suggest and discuss here some change :

  • the drop down article menu
    • i'd like to remove it all together
    • replace it by a button with a big plus sign leading directly to the form to add a new feed
    • mark all as read should be moved near the feed list (on top of it ?) cause that's where most of the actions on editing feeds takes place
  • the filter menu
    • to give a sens of unity, all view accessible from this menu should be on the shape of the home page (or similar, the feed feed view for example is quite ok)
    • rename it ? or actually apply the selected filters to the home page

As this kinda breaking from the actual ui, I'd like your input so I don't start to mess things up in a way you won't accept to merge upstram.


Using lxml parser for BeautifulSoup

Looking at BeautifulSoup documentation (http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser), they recommend lxml parser. And because lxml is already a dependency of pyaggr3g470r there's no reason to not used it.

Exemple in crawler.py, replace

#!python

description = BeautifulSoup(description, "html.parser").decode()

by

#!python

description = BeautifulSoup(description, "lxml").decode()

IOError on importing opml without selecting a file

Clicking on ok button for importing opml file without selecting one give the following Traceback:

#!text

 Traceback (most recent call last):
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask_login.py", line 758, in decorated_view
    return func(*args, **kwargs)
  File "/home/benoit/depots/pyaggr3g470r/pyaggr3g470r/views.py", line 487, in management
    data.save(opml_path)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/werkzeug/datastructures.py", line 2576, in save
    dst = open(dst, 'wb')
IOError: [Errno 21] Is a directory: u'./pyaggr3g470r/var/'

Implement a feed sorting functionality

This is just to discuss about the need to implement a feed sorting functionality with folders (a feed can be placed in one folder) or categories (a feed can be placed in several categories).

The big impact will be on the UI (the list of feeds from the main page).

This feature has never been important to me (I manage more than 80 feeds with pyAggr3g470r and I really like the current UI). But I am open to the discussion.

IOError on importing opml without selecting a file

Clicking on ok button for importing opml file without selecting one give the following Traceback:

#!text

 Traceback (most recent call last):
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask_login.py", line 758, in decorated_view
    return func(*args, **kwargs)
  File "/home/benoit/depots/pyaggr3g470r/pyaggr3g470r/views.py", line 487, in management
    data.save(opml_path)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/werkzeug/datastructures.py", line 2576, in save
    dst = open(dst, 'wb')
IOError: [Errno 21] Is a directory: u'./pyaggr3g470r/var/'

handling comments

A link the the comments of a publication may be presents in a entry in a RSS file. Storing that link would be easy enough and integrating them into the UI shouldn't be too hard.

This would be especially useful when the actual link of the entry is pointing toward a site which is not the one where the comments are (see lobste.rs powering https://www.journalduhacker.net or other reddit like site).

A nice to have feature would be to allow the user to enable the tracking of those comments if the target site offers a per article RSS feed.


Search: filter user documents at query time

Whoosh give the possibility to filter document before search : https://pythonhosted.org/Whoosh/searching.html#filtering-results

Because user_id is indexed it possible to filter user documents at query time instead of filtering results.

Find attach the small patch to search.py.

The few tests i did looks ok.


IOError on importing opml without selecting a file

Clicking on ok button for importing opml file without selecting one give the following Traceback:

#!text

 Traceback (most recent call last):
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/flask_login.py", line 758, in decorated_view
    return func(*args, **kwargs)
  File "/home/benoit/depots/pyaggr3g470r/pyaggr3g470r/views.py", line 487, in management
    data.save(opml_path)
  File "/home/benoit/depots/pyaggr3g470r/lib/python2.7/site-packages/werkzeug/datastructures.py", line 2576, in save
    dst = open(dst, 'wb')
IOError: [Errno 21] Is a directory: u'./pyaggr3g470r/var/'

Feature: I forgot my username / password

Feature: I forgot my username / password

Actually I really did, I signed up a couple weeks ago and I forgot what I used and now I'm not sure how to proceeded.

User management

User management is kinda sketchy. Reading through that (fr) http://sametmax.com/the-user-is-dead/ I realize i'd be much more nice for any day to day user to rely on an OpenID mechanisme (openid / facebook / google) alongside the current user management, if not in place of it.

It'd make the user management simpler and the application more accessible to new users.


Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.