What's the best solution for OpenID with Django? [closed] - python

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
Please note: this is an ancient question with ancient answers. Most of the linked apps are now unmaintained. These days, most people seem to use django-allauth or python-social-auth. I'll leave the original question intact below for posterity's sake.
There are at least half a dozen Django apps that provide OpenID authentication for Django:
django-openid
django-openid-auth
another django-openid-auth, which seems to be dead
django-authopenid
django-socialauth (which also provides authentication with Twitter and Facebook accounts)
django-socialregistration (has Facebook and Twitter authentication, too)
django-openid-consumer, a fork of Simon Willison's original django-openid. Seems more suited for simple blog comments than a full fledged registration workflow
django-social-auth
I played around with a couple of them. Simon Willison's django-openid made a good impression, but as he is at the forefront of trendsetting in Djangoland, I sometimes have difficulties wrapping my head around his trends (e.g. the whole dynamic urlpatterns system in django-openid). What's more, I couldn't get login to work with Google.
django-authopenid made a good impression, and it seems to have good integration with django-registration. django-socialauth and django-socialregistration have support for Twitter and Facebook, which is definitely a plus. Who knows if and when Facebook will start to be an OpenID provider...? socialauth seems to have its share of problems, though.
So, what is the best OpenID app out there? Please share any positive (and negative) experience. Thanks!

The one that has proven to work best for me, and which seems most up-to-date is the one over at launchpad.
It integrated seamlessly with my application that already utilizes the django.auth module.
https://launchpad.net/django-openid-auth
To get a copy run:
bzr branch lp:django-openid-auth
Or install it via PyPI
pip install django-openid-auth

The last post for this thread is in February. It's been almost 8 months and I'm pretty sure a lot of things have been changed.
I am very interested in Django-Socialauth since it supports gmail, yahoo, facebook, twitter, and OpenID.
I found two forks that seem up-to-date:
https://github.com/uswaretech/Django-Socialauth
https://github.com/agiliq/Django-Socialauth
The second fork has been recently updated at this moment.
I was wondering if anyone has recently used any of these forks? I am looking for the most reliable one for my website.
Thanks
Update: The most up-to-date fork appears to be omab/django-social-auth, which is also what the pypi package points at.

I prefer django-authopenid, but I think most of the mature solutions are pretty equal at this point. Still, it is what I see used the most. I've made a handful of customizations to how we use it without having to actually fork it, and that's a huge plus in my book. In other words, its fairly hookable.

Don't forget Elf Sternberg's fork of django-socialauth - he's working to clean up what he sees as a lot of bad implementation decisions in the original socialauth app. Looks clean so far but it's unclear whether his project will have momentum.

django-socialauth is good for me

You could try pinax

Related

Django and Node – how does it work? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
In order to make an web application with RESTful capabilities I have read and watched tons of articles and videos and I still do not get a complete picture of how it works. And which I should chose. Every other answer is the not helpful ”it depends”. I have boiled it down to a first choice between Django and Node. But nowhere I find the whole ”picture” of how the pieces works together and which modules are needed. Therefore I have tried to put all into a rough illustration. Note that I am a complete newbie on this.
I develop an ERP application with accounting modules. Basically it is mainly about CRUD besides viewing diagrams, printing and storing documents. So this is the ”it depends”
The only thing I have managed to make decisions about is to use nginx, Postgresql and Debian 8 as tools/os. These are the fixed stars.
My questions are not really the common Django vs Node.js and it is not just an opinion I want:
Is the picture below correct? Any comments?
Is there any further components that will be needed? To get started?
You have a lot of questions - and on StackOverflow there should be one question that can be answered without generating a lot of debate or have opinions rather than facts.
As such, I think your question might be closed as "too broad"; however I think it deserves an answer.
I am not going to say "it depends", although that's really all it boils down to - but here is my attempt to explain it.
nodejs is a runtime. It is an environment which allows you to develop code on the server using javascript. In order to do anything useful with nodejs, beyond "hello world"; you'll need to use a framework, and there are tons of those around and various stacks have been developed by the community to tie in all the components together. An example of such a stack is MEAN, which is MongoDB for the database, Express for the framework, Angular to assist with the front-end, and Node to run it all.
django is a framework - it is not a runtime. This means that it is one step removed from the node world. The runtime for django is Python. django also is not a "stack" like MEAN, you can develop your own stack on top of it - but since django is a "batteries included" framework, you only really need to add a database to it - it includes everything else you need.
REST is just a way of designing web-services. Its not a language, or a platform or a library. Its a set of rules that describe a way to design APIs such that they take advantage of the semantic verbs of HTTP.
You can use any library and programming language to develop a RESTful service. All you really need is two things [a] a library to communicate over HTTP [b] a way to serialize data, preferably in JSON (but even that's not a requirement).
nginx is just a very fast webserver and a reverse proxy. The reason it is mentioned often - is because it is very expensive for a framework to serve static media. All requests to a framework (either in django world, or in nodejs world) have to go through a large chain of components that help decode the HTTP request and create a data structure that is easy for developers to use. This chain of components is often called middleware. Since each and every request has to go through this middleware, it is better for performance reasons that requests that don't need the "power" of the application to execute (like a request for an image, a stylesheet, a video file) be handled by something else. This is what nginx is used for, since its a very fast webserver.
Now that those are explained, you need to see what stack works best for your application. To do that, you need to know a bit about the philosophy/justification or problem that each stack is trying to solve.
For django - this is easy. Django was created by a team working on multiple newspapers to help them manage content that was published on different sites. As such, it is designed so that the management of content is of primary concern. That is why it has a very robust administration console as a standard component; and a built-in quite robust ORM and its own templating engine. Django leaves it up to you to figure out how best to actually run and deploy it; although they do provide a lot of suggestions and examples - but in the end, its upto you to decide which database to use, which web server to use, and how to deploy the application.
In the nodejs world - the primary focus is nonblocking I/O and speed of response. Nodejs excels at being able to serve a lot of simultaneous requests on limited resources. Therefore, it provides you a very powerful foundation to develop applications that need to quickly respond to requests ... and that's it. When you program in node or any other specialized lower-level library, you need to make sure your code is taking complete advantage of the library. So, if you start writing blocking code in node, you'll find that the performance that you expect hasn't been achieved.
nodejs doesn't care what the application actually does. Think of it like a very fast, very powerful tool. You can build anything with it, but you need to know what the tool is designed to do best in order to know when to use it.
nodejs has you working at a lower level - which is why there are a lot of packages that help you do all sorts of things with node; and multiple ways you can take components and create your own stack - depending on what you are building on top of node. Think of it like Lego building blocks.
nodejs and django are not mutually exclusive. You can utilize both in your application and exploit their strengths and take advantage of what each does best.
As far as your specific questions:
Did I get the picture? Any comments?
I don't know. Did you?
Is there any further components that will be needed? To get started?
The answer to this is yes, because you don't want to build everything from scratch. Each stack has its own libraries components for developing services. For django, there is django rest framework (DRF).
Which framework are best for CRUD?
Which framework are best for RESTful? Any other module needed?
Best report generator for printing?
Best diagram tools?
There is nothing that is "best" for anything. This question is just asking for opinions. Its like asking, what is the best fruit juice?
Which framework are fastest and most reliable for CRUD using Postgresql
People have developed many robust applications on top of postgresql; however as nodejs is bound to javascript - there is still a lot of work being done in this area.
Can I lock the library (trade secrets) in both environments?
Yes.
Is there better tools for creating ERP/Accounting?
ERP and accounting are two very different things. There are tons of accounting packages/applications written in Python. There are very few ERP systems written in Python.
You cannot combine the two and lump it together.
What is the benefits using Angular on top of Node.js?
The same benefit of using Angular on top of _____ (insert your favorite backend). Angular is just a front end library.
An anecdotal benefit is that both Angular and Node use the same programming language.

Drupal or Wordpress CMS as a Social Network? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I am making a community for web-comic artist who will be able to sync their existing website to this site.
However, I am in debate for what CMS I should use: Drupal or Wordpress.
I have heard great things about Drupal, where it is really aimed for Social Networking. I actually got to play a little bit in the back end of Drupal and it seemed quite complicated to me, but I am not going to give up to fully understand how Drupal works.
As for Wordpress, I am very familiar with the Framework. I have the ability to extend it to do what I want, but I am hesitating because I think the framework is not built for communities (I think it may slow down in the future).
I also have a unrelated question as well: Should I go with a Python CMS?
I heard very great things about Python and how much better it is compare to PHP.
Your advice is appreciated.
Difficult decision. Normally I would say 'definitely Drupal' without hesitation, as Drupal was build as a System for community sites from the beginning, whereas Wordpress still shows its heritage as a blogging solution, at least that's what I hear quite often. But then I'm working with Drupal all the time recently and haven't had a closer look at Wordpress for quite a while.
That said, Drupal has grown into a pretty complex system over the years, so there is quite a learning curve for newcomers. Given that you are already familiar with Wordpress, it might be more efficient for you to go with that, provided it can do all that you need.
So I would recommend Drupal, but you should probably get some opinions from people experienced with Wordpress concerning the possibility to turn it into a community site first.
As for the Python vs. PHP CMS question, I'd say that the quality of a CMS is a function of the ability of its developers, the maturity of the system, the surrounding 'ecosystem', etc. and not of the particular language used to build it. (And discussions about the quality of one established language vs. another? Well - let's just not go there ;)
I make websites both using Drupal and Django - sometimes with Pinax (Python). So let me try to set up the differences between Python and PHP, and the different CMS's.
Python - PHP
Pros for Python.
You tend to write more readable code making it easier to maintain. This has a big impact if you are going to do a lot of custom coding, now or in the future. However if you aren't going to make that much custom functionality, this doesn't matters.
Python and Django is buildt on OO, making it easy to reuse code, and is built on the DRY princip.
I find, that python is more intuitive to program in. In many cases it has a less weird / obscure syntax than PHP.
Cons for Python.
PHP is easier to host. More providers will allow you to run PHP and you can generally find PHP hosters a bit more cheaper than python hosters. If you have your own server, this wont matter.
Generally it's easier to code with python in many regards, but this is something that can be overcome simply by using more time with PHP. Also if you don't know python, that means you will have to invest some time learning it, and the things you can do with python. On the other hand it's a bit more difficult to find cheap hosting for Python projects.
Django/Pinax vs Drupal vs Wordpress.
It's always difficult to be able to say, which CMS?CMF to use. Which to choose is dependent on several factors.
How much custom coding are you going to do?
How much customization do you need?
How fine grained control over the system do you want?
Wordpress' strength is it's ease of use, and how you quickly and easily can setup a lot of things. You might be able to get a site like what you want with only a few hours spent. The problem with wordpress however, is when you want to make custom functionality. It doesn't have a strong API like Drupal, and you might have problems changing the output to give you exactly what you want.
Drupal's great strength is it's powerfull API, ability to customize and overwrite anything. In addition to all this, it also has a lot of modules giving you the ability to in many cases build your most/all of your site in a very short time. The problem with Drupal is, that it's not easy to use. You have to spend time learning the system and API before you can take advantage of it. the Drupal AI is also hard to navigate for newcomers, and it takes a while before you learn where the different things are. Drupal is a big machine though, and it can get a bit slow, unless you setup something like Varnish in front of it.
Django is made for rapid development. So once you get into it, which isn't that hard, you can quickly create apps to suite your needs. You have complete control over the urls. The problem with django is that it's not so easy to find the different apps that has been made and figure out which are good. The template system makes it easy to make the markup like you want, but you can't change the functionality of the apps the same way you can with Drupal. One thing to note, is that Pinax doesn't have a 1.0 release yet, while Drupal is on code freeze for it's 7.0 release.
All in all, with all these tools, the biggest challenge is finding out how to use them. If you know wordpress very well and just want to make this one site, you can just use it and be done with it. If however you want to take it further, I would suggest that you use either Django or Drupal. These two has some great development potential.
If you're open to Python, and are building a social / community site, I would check out Pinax for the Django web framework. It provides a lot of common social site features like user accounts, blogging, tagging, friend invites, etc.
Here's an example of a social site built using Pinax.
There's a WordPress extension called BuddyPress that'll give you a ready-to-go social network. If it suits you, it may be an easier solution than a Drupal install. If it doesn't suit you, though, I find Drupal more suited to extending in the long run.
I'd do it Drupal as it's a proven social networking platform and has te ability to be upgraded to do just about anything, from the vast range of modules on offer (read up on cck and views- they basically let you add your own customised page type (cck) and views lets you show data in various different ways, and based on various other parameters.)
I run my own mini social network site in Drupal - Tunstall Communities - Bankeyfields,
Heres a social network/news site using Wordpress, which they've now opted to upgrade to Drupal, as they want more social networking features.
DrupalSN is a social network site designed for showing you how to build Drupal sites, and a lot of the Tutorials on there are focussed on user interaction, so it will be a great resource if you go with Drupal.

Does Django need an IDE? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 2 years ago.
Improve this question
My company is evaluating the possibility of developing a specialized IDE for Django.
So we would like to ask Django users:
Do you feel the need for a specialized IDE for Django?
Would you be willing to pay for it, or would you only consider free a open-source product?
What Django-specific features are you missing currently in your development tools?
I would pay a reasonable amount for a Django-tailored IDE or plug-in. I don't know what I mean by reasonable, but maye it helps to know that I would not pay more than $75, and I would only pay the $75 if the tool was really awesome.
Now, Django specific features:
Seamless integration with Google Apps
(get me the urchin, the license for
Google Maps, and put it in my
templates)
Full support for the templating engine (details in the other answers you have received)
Lorem ipsum generation (Django has it, just make it simpler)
Prepackaged modules for common tasks (e.g. give me a full login page with template an all)
Link within the code for Django documentation and examples (e.g. Django snippets)
One-click for multi-browser comparison
Full CSS support
An object explorer (along the lines of the Django-admin, but off-line)
A color palette with cool combinations (say, blue-based, orange-based)
Wizard for uploading the local project to Webfaction or similar hosting solution
If I can think of anything else I will edit the answer.
Good luck in designing your product!
I am using Komodo Edit and it's very good. There is a lot of good open-sources product so i don't think that I would buy a commercial product.
Maybe a very good and easy-to-use debugger would make me change my mind.
I hope it helps.
You'll likely want an IDE that will provide you with the ability to do source-level debugging of your accompanying Python code. Without it, your productivity will really be below what it could be.
I use Wing IDE, and I find it to be worth every penny.
I use NotePad++, and have yet to need a fully-fledged IDE specifically for Django (though I do wish NotePad++ would stop periodically crashing).
I wouldn't, unless it was really really good (and I have no idea what features it'd need to make me enthusiastic enough to pay for it).
Maybe a neater way to tie together code for a specific app within a project (models, views and template code). NotePad++'s File->Open dialog is the Windows one, which picks up the directory from the currently open file. It'd be nice if it allowed me to switch quickly between related files.
This question comes up a lot in various forms. I suspect it's because there just isn't a Python IDE which is universally accepted to be awesome.
If I could have:
some of the features of PyDev, like like real code completion, module navigation, live syntax checking and pylint
a fantastic (and fast) text editor (like eric4's scintilla-based editor)
support for django templates (maybe with gui support for wx or glade or whatever),
awesome debugging (like C# on Visual Studio)
a reasonable footprint (i.e., not Eclipse/Aptana or NetBeans)
cross platform (Mac OS X, Linux, and Windows)
sane version control support
auto doctests and unit tests
Then I'd buy it.
All of the python IDEs come close, but all miss the mark by a bit.
(Better yet, it would be open source and I'd download it and donate / contribute to it).
It's great that your company wants to contribute to the community, but I have to say that I don't see what a 'Django IDE' would achieve. There are already plugins for all the main editors and IDEs to support Django - from Vim to TextMate to NetBeans - and these provide syntax highlighting, indentation, shortcuts and snippets for both Python source and Django templates. These can always do with more work, of course, so perhaps your efforts would be best focused on improving one of these.
There are some Django aware IDEs already. PyCharm is excelent for Django development. It even allows to debug Django Templates visually.
graphic models builder to models.py :), I mean this but vice-versa.
yes I will donate.
I would definitely pay or donate for a pure Django IDE, even tho there are already some existing plugins, I feel something is always "floating".

Simple non-web based bug tracker [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
There's a ton and and a half of questions and even more answers here concerning people looking for bug trackers. However all of them (that I found) seem to be about web based solutions. Since I'm working on a local project where I don't want to set up a web / DB server, and I don't want to use a hosted tracker either, I'm looking for something that runs locally.
very preferably open-source
pure Python or (at least) Windows executable
no need for a database server (sqlite is obviously fine)
Doesn't have to be fancy, just the basic bug / issue tracking functionality; just a little bit more than my current TODO text file or an Excel table.
Any suggestions?
I'm surprised nobody has mentioned Roundup.
It meets all your criteria, including not requiring a web-based interface (as per your specification, and unlike the accepted answer which suggested Trac).
Roundup is:
Open source
Pure Python
Supports SQLite
Not fancy, focuses on solid bug tracking
And as a significant point of differentiation, it has command-line and email interfaces in addition to a web interface.
It's very easy to get started - I suggest you take it for a spin.
Trac might be a bit too over engineered, but you could still run it locally via tracd on localhost.
It's:
opensource.
pure Python
uses sqlite
But as I said, might be too complex for your use case.
Link: http://trac.edgewall.org
If you don't need to share your bug tracker system with a team (i.e., it's okay to have it isolated to your computer) I would recommend using Tiddlywiki. Technically it's web-based, but it's entirely encapsulated within a single HTML document and requires no database or server whatsoever (only a web browser) so I think it follows the spirit of what you are wanting. It's extremely customizable since it's 100% HTML/CSS/javascript. I have been using a tiddlywiki as a project notebook for years, keeping track of my to-do list, bug list, and general project documentation in one centralized, cross-referenced place. You can also find all sorts of tiddlywikis that you can download pre-configured for productivity (for example, TeamTasks, MonkeyGTD, or GTDTiddlyWiki Plus).
Maybe Fossil is of any use to you?
It is actually a DVCS but it also integrates a bugtracker and wiki, very much like trac (although I like trac, don't get me wrong). And its webbased, on the other hand the installation is supossedly dead simple.
Proprietary TestTrack (http://www.seapine.com/ttpro.html) has a client edition that will those things. We use it at work and I'm very happy using it.
Maybe you can check out this wikipedia article for hints
http://en.wikipedia.org/wiki/Comparison_of_issue_tracking_systems
Do yourself a favor. Get over this "must not be web based" obsession, Install a local WAMP stack on your PC or on a LAN server. Now, you can install your own wiki. And something like Trac. I'd like to find an implementation of google code's bugtracker and integrated wiki thats runnable locally - Trac seems to be the closest.
You have also installed a local SVN server? Even for personal projects the ability to track changes over time. revert etc. and integration with Trac are too good to pass up even for purely 1 man projects.

Is Pylons enterprise-ready? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I am a developer who is looking for an Enterprise-ready web application framework for Python. My main concern is long-term support, extensive feature set and reliability.
I have been experimenting with Pylons and after my horrendous experience with Ruby on Rails on Windows where I even had to compile my own Postgres driver, Pylons and Python have been a godsend.
I believe Python, due to a very strong community and commercial interest, is definitely 'enterprise-ready' due to the number of available libraries and their efforts to maintain some semblance of backward compatibility for Python 3.0. My worry is:
Can we all say the same for Pylons 0.97?
On a side note, I have been figuring out how to get SQLAlchemy working with DB2 on Pylons so that I can automate basic CRUD operations. The current DB2 driver on http://code.google.com is quite useless only supporting SQLAlchemy 0.4. Do you think IBM is committed with making DB2 work with SQLAlchemy for the long term? Or you guys feel it's better to make SQLAlchemy interface with the ODBC driver supplied with DB2. Any disadvantages compared to using IBM's SQLAlchemy driver?
When it comes to enterprise ready, I'm not sure how much more ready a stack using Pylons with SQLAlchemy can be in the Python world. You're ready for massive legacy databases with crazy schemas (totally common in large corporate worlds), something where Django just falls apart at the seams. Sure, in Django, you could still use SQLAlchemy, but then all the Django contrib tools fall apart since they all rely on the assumption that you'd doing things the "Django" way.
Pylons has been around since mid-2005, and it isn't going anywhere. It's actually quite mature, and has a fairly slow and solid release schedule of 6-10 months between releases, with quite a bit of testing. One of the core Pylons developers is also a developer on Jython ensuring that Pylons can run on the JVM (which helps get Pylons based apps into enterprise environments that are hostile to things that can't be packaged up into a WAR file for deployment).
Regarding some of the other 'answers' here, the question is about whether Pylons is enterprise-ready, I have no idea why others were unable to read the question and instead chose to start preaching their own favorite framework. It's quite silly to say that you should use Django/Zope/Grok because it has "bigger uptake" or a "larger community", if that's the criteria the choice should be PHP, which makes the Django and Zope communities look itty bitty in comparison. Pylons definitely has a large enough community to sustain itself, especially as its rather lean and compact code-base don't pick up nearly as many bugs as the "kitchen sink" frameworks of Zope/Django.
I would say that if you're worried about 'enterprise-level' support, you should be looking more at Django. Although you can debate the relative technical merits of the two frameworks, there's no doubt that Django has the bigger uptake, and there are quite a few large companies using it.
One additional reason is that IBM have (just in the last couple of days) released a Django driver for DB2, so you should have no problem using your existing database with the Django ORM.
define enterprise ready.
Also, if we're talking scalability, I would say you have a better shot with sqlalchemy since you can drop down to raw sql when necessary. Whereas the active Record pattern seems to be the cause of a lot of the value of high level frameworks, that can lead to scalability issues if you are throwing stuff together.
Of course "enterprise ready" to some people means complicated and expensive, is this is your definition, than I would say that no python web framework is going to meet your needs.
I consider a piece of software enterprise ready when it has stability and support.
I believe that Pylons/Python is stable. There are a load of sites using Pylons (including one of the highest traffic'ed sites, reddit.com).
Support wise I'd consider aspects like how easy it is to hire people who know Pylons or to purchase support contracts. This is a bit harder. If you plan to support in house Pylons is more than ready to go. If you are looking for support so that you have someone to take liability when the software breaks you might want to look elsewhere.
I'd second the call to use Django. I actually prefer Pylons, because it is much leaner than Django, but considering you specify "enterprise ready" I think you might want to hedge toward the larger framework and carry the kitchen sink around with you.
+1 for Django
Pylons is a good framework, but you will have to match all the components to create your own architecture, so I think it's more appropriate for leaner projects. For something bigger, I suggest Django, that's know to be on production on some large scale sites.
IBM recently released a DB2 back-end for Django, so might fit you well.
If you want frameworks that aren't likely to go away anytime soon look at Django and one of the frameworks in the Zope community (Grok, BFG, Zope3). Zope has a big community and have been around for more than ten years and isn't going away any time soon, and is a breeding ground for many of the new cool Python web technologies. Django is newer and did only recently come in version 1.0, but it has a very large community and is also going to stay around more or less forever.

Categories