+1  A: 

First, this is all a lot to work with in a week. But here it goes.

Tools for the backend:

  1. SQLAlchemy - This is an ORM toolkit that is plenty powerful for most smaller tasks when using a MySQL database built with Python. To my knowledge, it is the best for this job. http://www.sqlalchemy.org/
  2. Django - "...is a high-level Python Web framework..." This might be better for rapid development of a site with login/logout methods included and a minimal learning curve for someone with web/Python understanding.

Tools in building the frontend:

If you already plan on using Django for the backend, I'd recommend using it for the frontend as well.

Things about which you are uncertain:

  1. The users can be specified in MySQL and their permissions can be set accordingly.
  2. From some of the requirements you listed, most of these sound like they can be contained within the capabilities of Django.
Thank you for your answer! I did not know that I can use SQLAlchemy for databases, while Django in building up the login -system.
Masi
+1  A: 

I'm guessing that you wouldn't be allowed to use an ORM, since you call this a "MySQL project".

If this is an incorrect assumption, I'd agree with N Arnold's recommendation of using Django. Rather than using SQLAlchemy, I think you'd find that Django's ORM is good enough (especially if you use v1.1rc or trunk).

Like some of the comments to your initial question, this does seem like a large amount of work if you have to learn a framework as well as produce a project in it. On the other hand, someone who knew Django could crack out the base of such a project in a day or two.

SmileyChris
I need to some database system from Oracle/PostGre/MySQL. I aim to use MySQL because it is the one which I have used before. --- @ **Do you mean that Django does not uses MySQL as its database system? --- Is ORM Python's database system built into the language?**
Masi
The Django ORM can use a multitude of database engines, one of which is MySQL. Django uses the Python database connector for the db engine you want to use.At the start of the tutorial it explains how to set up your Django project for a specific database: http://docs.djangoproject.com/en/dev/intro/tutorial01/#database-setup
SmileyChris
+1  A: 

Use the django Model to create the Object-Relational Mapping (ORM) that injects and retrieve your data.

For login/logout, django has an AuthenticationMiddleware feature you can probably use, although I am not sure if you can solve your problem with it.

In any case, your project, with the given deadlines is totally unrealistic. Be prepared to miss the deadline, and hear the whooshing sound they do as they fly by.

Stefano Borini
Can I use ORM such that I need to use MySQL too? --- I need to prove my skills in MySQL for them.
Masi
an ORM is a layer that decomposes an object and store it into a relational database (and viceversa: recover from a relational and recreate the object). django already has an ORM which creates the SQL tables and do all the SQL for you. If you want to reinvent the wheel and create your own ORM so they can see your SQL-fu at work you are free to do so, but it's boring.
Stefano Borini
+1  A: 

You can build your database with MySQL, go read the official docs. It really doesn't matter what language you use to program a front-end whether it be a website, command line interface, gui interface, most languages handle this pretty well but it seems you're set on building a web application and this can be achieved very easily with Django, which is a Python web framework.

Doing what I've told you, if you keep at it you'll be done in under 16 hours. Good luck. Btw. your project seems to focus on a lot of irrelevant things. You're creating a database application, unless you already know CSS and JQuery, why don't you just create it in simple unstyled XHTML; that way you have less work to do!

fivetwentysix
Thank you for pointing them out! --- I removed the languages which I already know well in my plan.
Masi
A: 

About Moderators and Users

What is the difference between moderators and users? Moderators can modify text, but how? Are they planning you to practise permissions, fs or some open-source system to differentiate users from moderators?

Very odd that they do not allow Google products, but they allow open-source. Interestingly, USFCA encourages Google products in similar projects. Perhaps, there are some users, who could help you with userspaces.

Good luck!

Masi
+1  A: 

Django can use many different database backends one of which is MySQL, to help support this it provides an ORM (Object Relational Mapping) layer which abstracts away the SQL code and storage medium and allows you to write Models containing storage fields and logic as necessary without worrying about how they are stored in the persistence layer.

Django also contains basic authentication (login/logout) functionality and has the concept of users and admin-users built into it.

As an example using the built in user models and the ORM would allow you to get all questions asked by a user with something like the following code:

Question.objects.all.filter(asker=request.user)

Where Questions is the model you have defined to hold your questions (with a field called 'asker' which is a foreign key to the user) and the request.user is the user logged into the website.

I suggest you read up on the Django ORM.

As far as hosting it, you could use Ubuntu on a desktop computer, or if you need an external host then would recommend Webfaction or Djangohosting.ch as two of the most 'Django Friendly' Hosts.

Frozenskys
A: 

They give us only this example of the web app. The code is not useful for me, since the code is in Finnish and it is written in PHP. It is also not open-source such that I cannot paste the code here.

I would like to see similar examples in Python. Please, put links to the comments.

Masi
+1  A: 

I think this can all be accomplished in django. See the official tutorial.

Tamás Szelei
+1  A: 

Ehh, what is the purpose of this development? To build a real production-ready system, or to pass an exam by building a mini-project that will never see real use?

If your purpose is to pass an exam, then build what your teachers like to see. Take you cues from the material they have been using in classes, and also ask them outright what they think is good.

If you want to build a production system, then Django would be a great choice. Respectfully however, given the limited understanding of Django you demonstrate, you will most likely not complete the project in time.

Django has pre-existing functionality for:

  • Building the database schema. The DB tables will be buildt when you define your model classes in Django and run manage.py syncdb.
  • A login system. Django has a login system with cookies etc build into it; and several 3rd party Django addons extend this system.
  • Encrypting passwords in the database, Django uses SHA-1 with a salt if memory serves.

Thus your teachers could legitimately say that you haven't demonstrated your own skills at modeling a DB schema, you have just used Djangos pre-existing functionality. Will they be OK with this, or will they fail you on this exam?

If you need to demonstrate understanding of the core concepts, perhaps you would be better off by staying with a system you know well already, instead of mixing in Django as another complexity, another thing you'll need to learn in very little time...

Jesper Mortensen
I agree with you. I will not use Django in this project.
Masi
If you agree, is this answer then your chosen, accepted answer? :-)
Jesper Mortensen