Django: create an internal twitter like wall - django

I'm building a multi user system and I'm creating an somewhat experimental idea for the users to interact.
The site is for professional actors so they can post up their profile and so casting directors can find them. All that is going fine.
What I now want to do it create a wall/twitter group area where people can post short messages just like in twitter.
I'm developing all this in Django and while I have a really good Django developer working on the site, I've decided to take on this part myself. I'm relatively new to django, I have 10 years PHP/Java experience.
I've set up the basics of posting a message and parsing urls etc. What I want to do now is create a reply to and a direct message feature.
Is there any other projects out there that would have done something similar to this that could help me in not re-inventing the wheel completely.
Also on a general note as an idea, any suggestions as to what to do different considering my environment and audience.

Check out Trillr (including considering binning any work you've done and just including this wholesale, open-source licence permitting).

Related

Best way of logging a user in C++

I am trying to get into C++ programming so apologise if this is a bit of a stupid question.
I am attempting to create a program in C++ that is linked to a website via the database, that's all sorted. In this program, the user must log into it to be able to use its features, I've also managed to do this fine. My question is, what is the best way of storing that users session so I can refer to their username, display that users settings from the database e.c.t?
I am unsure, but I don't think c++ has session options like in php so I cannot do it that way. I did some googling before I posted this, spent all night trying to find a solution, I found nothing.
My knowledge if c++ is slim and this may sound like a more complicated or unnecessary route to take, but it was thinking of perhaps when the user logs in, to create a txt file storing that users username and then calling on it when I need to refer to that users username for queries and such, then when the user logs out or closes the program it deletes the file. Is that stupid? Forgive me if it is.
Is there better way to go about this?
Thanks for your time!
EDIT
I read your comments, if it needs to be a stand-alone application, like some sort of client, you could take a look at the C++ libraries I mentioned, but I'd use any higher level language (Java or C# have good documentation and there are many tutorials for creating GUIs, if that's what your're looking for. I think even Python would make a good candidate).
If you really must use C++, your best bet would be to use an existing library to implement your web solution. POCO includes an HTTP server framework, and a library for sockets and other forms of low-level network programming. Boost ASIO can also serve your purposes. But this is hardly something I'd recommend to start learning programming, or C++ for that matter.
If you want to learn about web programming, then you should definitely take a look at other languages. PHP or ASP.NET come to mind. AS you learn, you'll most likely also end up writing some form of Javascript. You can find a lot of info out there, just Google for tutorials. A site to get started is w3Schools, but any site with tutorials will do. Good luck!

CMS+blog+e-commerce: django or web2py [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 6 years ago.
Improve this question
At the moment we are running few smaller PHP sites (small company, private, non-profit org, friends...) and would like to migrate them to Python in order to be able to tweak them more easily and/or extend their functionality due to being familiar with Python although without real experience using some of the Python frameworks.
In order not to write everything from the scratch, we'd need decent CMS, blog and some e-commerce module.
We did some research, installed and tried few apps in Django world and so far have arrived to the two possibilities:
Django-CMS as CMS, Zinnia as blog engine and Django shop as e-commerce or
Mezzanine which integrates CMS+blog and Cartridge as shopping cart application.
Both combinations are nice, although not perfect...At the moment there is problem integrating released versions of django-cms & zinnia due to their usage of non-compatible versions of django-mptt or e.g. Mezzanine is missing some features like linkback support in blog etc.
While playing with the above two sets of apps, we heard about Web2py and must say that we like lot of things there...
We are aware it's younger project with smaller community, less apps etc., but wonder if there is some set of web2py applications which can compare with the two above-mentioned Django sets so that we can choose to start with Web2py, learn it and in that process replace PHP sites with it?
So, we would like to have some capable CMS+blog with the following features:
tag cloud, categories
spam protection
RSS feeds
multiple authors
threaded comments (optional)
linkback (pingback/trackback) support
(easily) theme-able
markdown/reST markup for writing content/posting
multi-lingual support
As far as e-commerce is concerned, besides easy integration with CMS+blog apps we do not need anything spectacular - our 'company' is selling 'services', so no need for thousands of products (only 10s of them), no complicated shipping options so something like:
multi-lingual support
basic infrastructure for payment methods (e.g.) PayPal and we would need to write a custom module for form-based API
simple shopping cart able to handle simple product descriptions
tax calculations and
(optional) PDF support
would be everything what we would need.
Considering the features we would like to have, our (non)experience working with any framework, which one - Django or Web2py - you consider is more suitable in terms of ease of learning, ease of use, application support etc. ?
I've sent two posts to web2py list and (maybe) because my query was not specific-enough (or some other reason) I did not receive any reply there and I saw there are some apps like KPAX CMS which looks old/non-maintained. Otoh, there is Powerpack which incorporates Instant Press but I'm not sure about availability of e-commerce component. Finally, I've found out about plugin_wiki which seems to be new/young app, but, considering we found* out about possibilities in Django-world, we would like to learn about the situation on the Web2py scene in order to be able to evaluate both options better.
p.s. it would be nice if Appliances list would be organized a bit better so that it's easy to find out what is maintained, where is project page etc.
I've had a lot of success with Django-CMS. It's very, very easy to write custom content-type plugins, extend menu nodes with custom nav elements, such as a list of product categories, etc. It's dead-simple to hook custom application code to any page in the navigation hierarchy.
As you mentioned in your question, Zinnia also plugs into Django-CMS for a nice blogging solution that is also extensible. Adding a cart app, whether it's from the DIVIO team or not should be an easy task.
Django, DjangoCMS and Python in general, have very low learning curves in my opinion. In 14 years of development, Django is the only web framework that hasn't gotten in my way, and Python is an absolute pleasure to work with on a daily basis.
I think you'll find that the Django ecosystem is much more holistic than any of the other Python frameworks, it's also very, very well documented and there are literally hundreds of 3rd party apps. Plus, Django admin can potentially save you many weeks of dev time, and you can override, skin and extend it to do just about anything.
My $0.02 :)
-- EDIT --+
Yeah, right after I posted I realized I was heavy on comparison of frameworks but light on suggested solutions to your problem (i.e. existing appliances). I think that Django probably has more matured addins/apps. That being said, crafting your own blog in web2py (a simple blog) is probably only a little harder than configuring one for another framework.
There is the wordpressclone appliance: http://web2py.com/appliances/default/show/36
(you can extract existing wordpress data and get it in here, i'm pretty sure there's a WP export and an import function on this appliance)
There is an e-store (haven't used it): http://web2py.com/appliances/default/show/24
There is KPax CMS, as you said, but i think this one might be out of date, unless it was updated recently. The integration between these should be possible, you can share sessions across apps and I think if you have the same auth_user db, it should work.
I would try installing these and see if they are close to meeting your needs -- especially KPax since I'm not sure the state it's in.
-- END EDIT --
Both Django and Web2py are very good frameworks in my opinion. I think you would be happy with either. That being said, having not used frameworks I would say to with web2py, unless you NEED certain modules that only exist in the django world. Web2py probably has a little more gradual learning curve. Also, it can do RSS out of the box, there's a screencast somewhere showing how to create a blog app in about 5 minutes (including comments), and the community is (usually) very responsive. I don't think there is anything that web2py can do that django can't (except DB migrations -- but i think you can make django do them with some 3rd party code), or vice versa.
Django favors a "explicit is better than implicit" development methodology, which requires to you import various modules and doesn't have all the "magic" of web2py. Using django, you will be more aware of exactly what is going on under the hood. The django templating language is easy to learn and provides a lot of functionality for common markup tasks. Their is a LOT of documentation, a larger user-base and tons of 3rd party modules/plugins/whatever.
Web2py favors a "everything should have a default" approach, and enables to to focus on the big picture without getting bogged down by the minutia of web development. I'm not saying this is in contrast to django, but rather that web2py is very strong on this point. It allows you to rapidly develop applications, and takes the headache out of things like updating a table schema (i.e. it does database migrations). I also prefer web2py's templating language to django's, as it allows pure python and does not require one to learn a separate templating language at all.
I think both frameworks have decent internationalization/localization features. I'm not sure if Django's is still under development or not? Web2py's is easy to use, but I think you might have to provide a lot of the translations yourself.
As for the lack of replies on the web2py list, maybe it's because this topic is becoming more and more frequent? I'm not sure. You could ask people on the web2py freenode channel.
Also, definitely check out this link:
Django vs web2py for a beginner developer
The first response is from the lead developer of web2py, but I think he makes a fairly balanced comparison.
Also, the previous thread includes a link to here (the good and bad of web2py):
http://www.mengu.net/post/django-vs-web2py
web2py is a great framework, but currently light on reusable CMS, blog, and particularly e-commerce applications. It sounds like you have already stumbled upon the main options -- plugin_wiki, Powerpack, and Instant Press.
I don't think there is a mature and currently maintained e-commerce application, but you may be able to make use of web2py-estore. There are also some options for accepting credit card payments (see also).
plugin_wiki includes comment functionality, and there is also plugin_comments. For PDFs, pyfpdf comes with web2py, and there is also web2py_appreport. web2py also includes RSS support.
EDIT: Also, another web2py CMS under development, to be released soon: SimplrCMS

Django vs. Grok / Zope3 vs. Pylons

I am a computer programmer by training but have been away from web development for a while. I am doing a little bit of background research on various Python web development frameworks. I understand that Django, Grok / Zope 3, and Pylons are all good solid frameworks, but have little in the way of background working with them. Can someone explain to me the difference in approach of the each of the frameworks, and where one shines when compared to the others?
My specific use case is in building a web application that will recommend products to users based on a variety of user supplied information. Thus, it will take a fair bit of user input in the shape of a basic profile, product preferences, attempt to establish social relationships between users. It will also need to support staff uploading products into the system with labeled features that can be then matched to users.
On the last point, would parts of Plone help with providing an interface for non-tech people to upload products and descriptions of the products? Are piece of Plone easy to borrow? Seems like I shouldn't have to reinvent the wheel in terms of having a way for people to upload items for sale / recommendation along with some metadata to describe the items. Thanks for the help.
Based on your background and requirements, I'd advise you to go with something like http://pinaxproject.com/ which is based on Django.
Pyramid (the successor to Pylons) is a very low-level framework and you need to either choose the libraries or write all your application code yourself. For someone experienced this makes sense and gives you full control over your code. But it is a bit of a hurdle if you start from scratch and aren't familiar with the available libraries.
Django and Grok are both high level frameworks, with Django being the more popular choice. If you aren't familiar yet with using object databases or URL traversal, Grok is more time consuming to learn.
Plone is not suited for your use-case. It's a content management system and not a general web framework. Very little of the libraries it uses can be reused in a different context, certainly none of its UI. If you want to provide an engaging user experience with personalized content, Plone isn't for you - that's not what its been build to handle.
Disclaimer: I'm a release manager for Plone and Zope 2 / Zope Toolkit and have used Pyramid but not Django.
Dolmen project is a CMS built on top of Grok. Is very simple, but there are very few that use it. If you go with Grok, you could be able to reuse the GUI.
But As Hanno said, Grok is more time-consuming to learn than Django. Also Django has far more users than Grok.
The advantage of using Grok is that you can profit from Zope Component Architecture almost without writing ZCML and using decorators instead.
With Pyramid/Pylons you get a very simple framework and nothing else. It is a decoupled framework, so you are free to use whatever templating enginge you want (Mako, Genshi, Jinja, Cheetah), you are free to choose sqlalchemy, zodb, mongoDb, etc., and you are also free to choose the url mapping scheme (traversal vs. django-style mapping or a combination of both). You can also use ZCA here if you want. For starters this might become quite confusing or verbose.
Django is a kind of monolithic framework that gives you one way to do stuff. That's why it's easy to learn and a very good option. But, in my experience, you sometimes get to a point where you want to deviate from Django standards and it simply cannot be done without patching a bunch of stuff.
And, as for Zope3, I'd recommend you to download a copy of BlueBream and se how it does for you.
As a Plone user I can say that creating Content Objects in Plone is difficult. There is not much documentation on how to do it and it is complicated. Some recommend using UML and specialized Plone products to make it easier but that introduces yet another dependency.
I mention the problem with content objects because your "products" (not the same as a Plone product) would probably be represented in Plone as a content object which you would need to write yourself.
Plone is best when users and editors are entering and approving text in the form of news articles, press releases, photos etc. When that is the use case there are predefined content objects for such things so one does not need to write them oneself.
--Jonathan Mark

Which technology (Spring Roo / Django) to build my 'CMS-like' application on GAE?

I would like to create my company based upon a tourism project (WEB 2.0 / CMS like).
Firstly, I want to argue why I think, in my case, that I should develop it (from scratch, but with a good plateform or tool). Indeed, I think that today (but maybe I am wrong...), some tools (or plateform...) are very powerfull and we can be very productive with it.
Moreover, these requesite 'could' jutify to implement my own software :
- my software may interact with other applications (or other tourism database)
- I need to do an 'inline administration' such as MAGNOLIA (not all CMS have it I think)
- I have no monney to buy one good CMS doing the work I need (such as Alfresco, or Magnolia or Liferay...)
- I think that for a long term project, it could be more rentable to develop it in order to have a better control on its evolution.
- I would like to use GAE because it is a cheaper and more flexible solution for the hosting (I do not think that all CMS work on it)
Secondly, now, if you agree with me (but if I am wrong about the liscence, or other solution, tell me please), I really like some help about the technologies...I think that SPRING ROO is a very good tool to develop my CMS. But maybe I should use DJANGO (can you argue about the choice between these 2 solutions to develop my software ?).
My CMS functionalities needed are mainly :
- versionning of the articles (talking about touristic places...) and a repository for them.
- a search (Solr is include in Spring Roo)
- using the AJAX technology (quick refresh)...I would like to use GWT
- permissions (administrator, visitor, contributor, manager...)
- multi-langage and maybe multi-domain websites (or I should have a big portal that give acces to all countries)
- a Backend management for the adverts (I am not sur if delegating this task to dfp (DoubleClick For Publisher) is a good idea ?
- User authentication (LDAP)...I do not know if SPRING ROO manage this ?
- Having simple workflow (such as editing, validating then publishing the article...)
- Think about Mobile App (Android)...so I think that if I choose JAVA, it will be easier to 'translate' on the Android Plateform...
Then, I am sorry if there is a lot of 'topics' in my thread but it is very complicated for me. So I would like to know if, as supposed, I used SPRING ROO + GAE + GWT, so I should use BIGTABLE (the Google NoSQL) ?
At last but not least, I have not found a website that explain how to create my own CMS...what I want to know is how to do the architecture of the software, because there is a lot of technologies interacting (OSGi, Solr, JPA...) and I do not masterize them, so I would know in what order do I need to process...
For the security part, do you think that taking care about the XSS injection is enought ?
To conclude, I know that it is difficult to help me because I ask a lot of things, but here I am now...and in order to explain in what context I am, I would like to take the time to learn 'interesting technologies' because if my project fail, I would reconvert myself in an 'expert' of the tool I have learned (ready to spend until 6 month, 24/24, 7/7 :D to create my CMS-LIKE).
Thank you,
I would suggest to avoid inserting too much information in your question :) Better throw smaller questions so people answer's are more suitable to your problem.
If you plan to deploy on GAE, well my answer is:
GWT for web-dev platform (I don't use neither GXT nor SmartGWT)
Objectify (for persistence on GAE only, kind of vendor lock-in but a good choice)
Use Google App for business and use their OpenID to handle authentication (will reduce a lot your work stack, and especially security concerns).
Optionally, you could use a framework to assist your presentation layer like GWT-platform which is really great. They also offer a nice command pattern implementation. The framework as it's limitations but the guys working for the project are just great.
Try to stay away from Spring-Roo for production app. I tried a few prototypes, buy going further is hard. At least it was in my experience.

Voice identification for web apps

What libraries / projects is to identify / authenticating to web apps using the voice?
Since there are still no answers for this question and it's been two years, I feel like there should be at least a follow-up.
Authenticating to an app using your voice is a very complex and difficult subject. Each case would probably require severe customization and as of right now I believe there is no out-of-the-box working solution to do it. The subject of speech/speaker recognition is still an academic subject.
One might use HTK or Sphinx to build one's own authentication tool. It is entirely possible, though quite difficult and still prone to false positives and/or rejections.
As for authenticating in the web - it adds some technical difficulties which, however, can be overcome. You would have to somehow get a sample, either by using a java applet or flash (something that can acces the microphone anyway), then submit it for analysis (may happen in the same applet), then pass the results to your web application.
For anyone still thinking about the problem: I'd suggest building a sphinx-4 based Java applet for authentication. It is possible, though time-costly and requiring some advanced knowledge.