Rough website for Scipy.
authorShantanu <shantanu@fossee.in>
Thu, 24 Sep 2009 15:20:30 +0530
changeset 5 7358eeae14d8
parent 4 22e66e1ed995
child 6 4e819dd96e1f
Rough website for Scipy.
content/__init__.py
content/forms.py
content/models.py
content/views.py
manage.py
participants
settings.py
site-content/default.css
site-content/images/img01.jpg
site-content/images/img02.jpg
site-content/images/img03.jpg
site-content/images/img04.jpg
site-content/images/img05.gif
site-content/images/img06.gif
site-content/images/img07.gif
site-content/images/img08.gif
site-content/images/img09.gif
site-content/images/img10.gif
site-content/images/img11.gif
site-content/images/img12.gif
site-content/images/img13.gif
site-content/images/img14.gif
site-content/images/img15.gif
site-content/images/img16.gif
site-content/images/img17.gif
site-content/images/img18.gif
site-content/images/img19.gif
site-content/images/img20.gif
site-content/images/spacer.gif
template/homepage.html
template/index.html
template/register.html
template/regthank.html
urls.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/content/forms.py	Thu Sep 24 15:20:30 2009 +0530
@@ -0,0 +1,63 @@
+from django import forms
+from django.utils.translation import ugettext_lazy as _
+from content.models import Participant
+from django.contrib.auth.models import User
+
+class Participantform(forms.ModelForm):
+  class Meta:
+    model = Participant
+
+class Registerform(forms.Form):
+  """
+  Temporary Registration Form.
+  """   
+  PARTICIPANT_CATEGORY = (
+		('Student','Student'),
+    ('Corporate Staff','Corporate Staff'),
+    ('Teacher','Teacher'),
+    ('Others','Others'),
+	)
+  username = forms.CharField(max_length=30,
+                                 label="User Name")
+  email = forms.EmailField(max_length=75,
+                            label=u'Email address')
+  pass1 = forms.CharField(max_length=50,widget=forms.PasswordInput,
+                            label=_("Enter New Password"),
+                            )
+  pass2 = forms.CharField(max_length=50,widget=forms.PasswordInput,
+                            label=_("Enter New Password Again"),
+                            )
+  category = forms.ChoiceField(label=_("Category"),
+                                   choices=PARTICIPANT_CATEGORY)
+  organiztion = forms.CharField(max_length=200,
+                               label=_("Organisation"),
+                               required=False)  
+  attending_conf = forms.BooleanField(label=_("Will you attend conference?"))
+  attending_tut = forms.BooleanField(label=_("Will you attend tutorial session?"),
+                     required=False)
+  attending_sprint = forms.BooleanField(label=_("Will you attend sprint?"),
+                    required=False)              
+  
+  def save(self):
+    '''To create a user and save additional information
+    related to user.
+    '''
+    profile=self.cleaned_data        
+    new_user = User.objects.create_user(username=profile.get('username'),
+                          password=profile.get('pass1'),
+                          email=profile.get('email'))
+    participant = Participantform()
+    participant.username = profile.get('username')
+    participant.category = profile.get('category')
+    participant.organiztion = profile.get('organization')
+    participant.attending_conf = profile.get('attending_conf')
+    participant.attending_tut = profile.get('attending_tut')
+    participant.attending_sprint = profile.get('attending_sprint')
+    participant.save()
+    return new_user
+    
+class LoginForm(forms.Form):
+	username = forms.CharField(max_length=30, label=_(u'username'))
+	password = forms.CharField(max_length=50,widget=forms.PasswordInput,
+                            label=_("Enter New Password")
+                            )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/content/models.py	Thu Sep 24 15:20:30 2009 +0530
@@ -0,0 +1,39 @@
+from django.db import models
+from django.forms import ModelForm
+from django.contrib.auth.models import User, UserManager
+
+from django.utils.translation import ugettext_lazy as _
+
+from datetime import datetime
+
+# Create your models here.
+
+class Participant(models.Model):  
+  '''model for holding details of participants
+  '''
+  PARTICIPANT_CATEGORY = (
+		('Student','Student'),
+    ('Corporate Staff','Corporate Staff'),
+    ('Teacher','Teacher'),
+    ('Others','Others'),
+	)
+  username = models.ForeignKey(User, unique=True, related_name='profile') 
+  category = models.CharField(max_length = 80, choices=PARTICIPANT_CATEGORY,)
+  organisation = models.CharField(_("Organisation"),max_length=200,blank = True,null = True)
+  attending_conf = models.BooleanField(verbose_name="Will you attend conference?")
+  attending_tut = models.BooleanField(verbose_name="Will you attend tutorial session?")
+  attending_sprint = models.BooleanField(verbose_name="Will you attend sprint?")
+  paper_submission = models.BooleanField(verbose_name="Do you want to Submit paper?")
+
+class ParticipantForm(ModelForm):
+    class Meta:
+        model = Participant        
+        #model = User
+        #fields = ['username','email','password']
+
+  
+class Tempreg(models.Model):
+  username = models.CharField(_("User Name"),max_length=30,unique=True)
+  email    = models.EmailField(_("Email Address"),unique=True)  
+  
+  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/content/views.py	Thu Sep 24 15:20:30 2009 +0530
@@ -0,0 +1,98 @@
+# Create your views here.
+from django.shortcuts import render_to_response
+from django.template import Context, RequestContext, loader
+from django.contrib.auth.models import User
+from django.http import HttpResponse, HttpResponseRedirect
+from django.contrib.auth import authenticate, login
+from django.utils.translation import gettext_lazy as _
+import time, datetime
+
+from models import *
+from content.forms import *
+import re
+
+def makemsg(username,url):
+  """
+  Email body to be sent to user.
+  """
+  msg = _("\
+Dear %(username)s,\n\n\
+\
+Thank you for registering with us. Please visit this url:\n\n\
+%(url)s\n\n\
+to complete the registration\n\n\
+regards\n\
+PyCon India 2009 Team\
+") %{'username': username,'url': url}
+  return msg
+  
+def home_page(request, template_name='index.html'):
+  return render_to_response(template_name)
+  
+def logout(request):
+  print request.user.username
+  if request.user.is_authenticated():
+    print request.user.username
+    logout(request)		
+  return HttpResponseRedirect('/')
+	
+def register(request):
+  """
+  Register function.
+  """
+  if request.user.is_authenticated():
+    msg = _("You are already registered")
+    return HttpResponseRedirect("/2009/message/%s/" % msg)
+  if request.POST:
+    # On POST method.
+    form = Registerform(request.POST)
+    if form.is_valid():
+      # If form is clean and has no errors.
+      fm = form.cleaned_data
+      if len(fm['username']) > 30 or len(fm['username']) < 4:
+        # Username should be > 4 characters and less that 30 characters.
+        form.errors['username']=[_("User Name must be 4-30 characters long")]
+      else:
+        r = re.compile(r"[A-Za-z0-9_]")
+        for alph in fm['username']:
+          # Check if every character of the username is either an 
+          # alphabet or numeral.
+          if  not r.match(alph):
+            form.errors['username']=[_("Invalid character %s in Username") %(alph)]
+        if not form.errors:
+          test = User.objects.filter(username__iexact=fm['username'])
+          # Check if username already exists.
+          if test:
+            form.errors['username'] = [("Username registered, try something else")]          
+          # Check if the email id has already been in use.
+          teste = User.objects.filter(email__iexact=fm['email'])
+          if teste:
+            form.errors['email'] = [_("Email registered. Try something else")]
+          else:
+            # If username is found in the temporary registration database
+            # then show pending error message.
+            teste1 = User.objects.filter(email__iexact=fm['email'])
+            if teste1:
+              form.errors['email'] = [("Username pending registration. Try tomorrow")]
+    if not form.errors:
+      # If all goes well then push into database.
+      new_reg = form.save()      
+      #new_reg.save()      
+      return HttpResponseRedirect("/regthank/%i/" % new_reg.id)
+  else:
+    # On the GET method.
+    form = Registerform()
+  return render_to_response("register.html",
+    {"form":form.as_table(),
+    }, context_instance=RequestContext(request))
+    
+def regthank(request,id):
+    """
+    Function displayed after registration is successful.
+    """
+    p = Participant.objects.get(pk=id)
+    t = loader.get_template("regthank.html")
+    c = RequestContext(request,
+                {"p":p,
+                 })
+    return HttpResponse(t.render(c))
Binary file participants has changed
--- a/settings.py	Thu Sep 17 18:52:21 2009 -0400
+++ b/settings.py	Thu Sep 24 15:20:30 2009 +0530
@@ -1,16 +1,19 @@
 # Django settings for scipy project.
 
+import os
+
 DEBUG = True
 TEMPLATE_DEBUG = DEBUG
 
 ADMINS = (
+    ('Shantanu Choudary', 'choudhary.shantanu@gmail.com'),
     # ('Your Name', 'your_email@domain.com'),
 )
 
 MANAGERS = ADMINS
 
-DATABASE_ENGINE = ''           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
-DATABASE_NAME = ''             # Or path to database file if using sqlite3.
+DATABASE_ENGINE = 'sqlite3'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
+DATABASE_NAME = 'participants'             # Or path to database file if using sqlite3.
 DATABASE_USER = ''             # Not used with sqlite3.
 DATABASE_PASSWORD = ''         # Not used with sqlite3.
 DATABASE_HOST = ''             # Set to empty string for localhost. Not used with sqlite3.
@@ -21,7 +24,7 @@
 # although not all choices may be available on all operating systems.
 # If running in a Windows environment this must be set to the same as your
 # system time zone.
-TIME_ZONE = 'America/Chicago'
+TIME_ZONE = 'Asia/Kolkata'
 
 # Language code for this installation. All choices can be found here:
 # http://www.i18nguy.com/unicode/language-identifiers.html
@@ -33,14 +36,17 @@
 # to load the internationalization machinery.
 USE_I18N = True
 
+AUTH_PROFILE_MODULE = 'content.model.Participant'
+
+ROOT_PATH = os.path.dirname(__file__)
 # Absolute path to the directory that holds media.
 # Example: "/home/media/media.lawrence.com/"
-MEDIA_ROOT = ''
+MEDIA_ROOT = os.path.join(ROOT_PATH, 'site-content')
 
 # URL that handles the media served from MEDIA_ROOT. Make sure to use a
 # trailing slash if there is a path component (optional in other cases).
 # Examples: "http://media.lawrence.com", "http://example.com/media/"
-MEDIA_URL = ''
+MEDIA_URL = '/site-content/'
 
 # URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
 # trailing slash.
@@ -63,9 +69,10 @@
     'django.contrib.auth.middleware.AuthenticationMiddleware',
 )
 
-ROOT_URLCONF = 'scipy.urls'
+ROOT_URLCONF = 'scipy-in.urls'
 
 TEMPLATE_DIRS = (
+	os.path.join(ROOT_PATH, 'template'),
     # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
     # Always use forward slashes, even on Windows.
     # Don't forget to use absolute paths, not relative paths.
@@ -76,4 +83,5 @@
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.sites',
+    'scipy-in.content',
 )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/site-content/default.css	Thu Sep 24 15:20:30 2009 +0530
@@ -0,0 +1,372 @@
+/*
+Design by Free CSS Templates
+http://www.freecsstemplates.org
+Released for free under a Creative Commons Attribution 2.5 License
+*/
+
+body {
+	margin: 0;
+	padding: 0;
+	background: #FFFFFF url(/site_media/images/img01.jpg) repeat-x;
+	text-align: justify;
+	font: 15px Arial, Helvetica, sans-serif;
+	color: #626262;
+}
+
+form {
+	margin: 0;
+	padding: 0;
+}
+
+input {
+	padding: 5px;
+	background: #FEFEFE url(/site_media/images/img13.gif) repeat-x;
+	border: 1px solid #626262;
+	font: normal 1em Arial, Helvetica, sans-serif;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a {
+	margin: 0;
+	text-decoration: none;
+	font-family: Tahoma, Georgia, "Times New Roman", Times, serif;
+	font-weight: normal;
+	color: #444444;
+}
+
+h1 {
+	letter-spacing: -1px;
+	font-size: 2.2em;
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+}
+
+h2 {
+	letter-spacing: -1px;
+	font-size: 2em;
+}
+
+h3 {
+	font-size: 1em;
+}
+
+p, ol, ul {
+	margin-bottom: 2em;
+	line-height: 200%;
+}
+
+blockquote {
+	margin: 0 0 0 1.5em;
+	padding-left: 1em;
+	border-left: 5px solid #DDDDDD;
+}
+
+a {
+	color: #1692B8;
+}
+
+a:hover {
+	text-decoration: none;
+}
+
+/* Header */
+
+#header {
+	height: 60px;
+}
+
+#logo h1, #logo p {
+	float: left;	
+}
+
+#logo h1 {
+	padding: 30px 0 0 40px;
+}
+
+#logo p {
+	margin: 0;
+	padding: 14px 0 0 4px;
+	line-height: normal;
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 14px;
+}
+
+#logo a {
+	text-decoration: none;
+	color: #D0C7A6;
+}
+
+#menu {
+	float: right;
+}
+
+#menu ul {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+}
+
+#menu li {
+	display: block;
+	float: left;
+	height: 42px;
+}
+
+#menu a {
+	display: block;
+	padding: 40px 20px 0px 20px;
+	text-decoration: none;
+	text-align: center;	
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-weight: normal;
+	font-size: 14px;
+	color: #CEC5A4;
+}
+
+#menu .last {
+	margin-right: 20px;
+}
+
+#menu a:hover {
+	color: #FFFFFF;
+}
+
+#menu .current_page_item {
+}
+
+#menu .current_page_item a {
+}
+
+/* Page */
+
+#page {
+	padding: 40px 40px 0 40px;
+}
+
+/* Content */
+
+#content {
+	margin-right: 340px;
+}
+
+.post {
+	margin-bottom: 2px;
+}
+
+.post .title {
+	border-bottom: 1px #999999 dashed;
+	font-family: Tahoma, Georgia, "Times New Roman", Times, serif;
+}
+
+.post .title h2 {
+	padding: 10px 10px 0 0px;
+	font-weight: normal;
+	font-size: 2.2em;
+}
+
+.post .title p {
+	margin: 0;
+	padding: 0 0 2px 0px;
+	line-height: normal;
+	color: #BABABA;
+}
+
+.post .title p a {
+	color: #BABABA;
+}
+
+.post .entry {
+	padding: 5px 0px 5px 0px;
+}
+
+.post .links {
+	margin: 0;
+	padding: 0 30px 30px 0px;
+}
+
+.post .table td{
+  margin-right: 100px; 
+}
+.post .links a {
+	display: block;
+	float: left;
+	margin-right: 10px;
+	margin-bottom: 5px;
+	text-align: center;
+	text-decoration: none;
+	font-weight: bold;
+	color: #FFFFFF;
+}
+
+.post .links a:hover {
+}
+
+.post .links .more {
+	width: 128px;
+	height: 30px;
+	background: url(/site_media/images/img03.jpg) no-repeat left center;
+}
+
+.post .links .comments {
+	width: 152px;
+	height: 30px;
+	background: url(/site_media/images/img04.jpg) no-repeat left center;
+}
+
+/* Sidebar */
+
+#sidebar {
+	float: right;
+	width: 300px;
+	margin-top: 30px;
+}
+
+#sidebar ul {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+}
+
+#sidebar li {
+	margin-bottom: 10px;
+	background: url(/site_media/images/img10.gif) no-repeat left bottom;
+}
+
+#sidebar li ul {
+	padding: 0 30px 40px 30px;
+}
+
+#sidebar li li {
+	margin: 0;
+	padding-left: 20px;
+	background: url(/site_media/images/img11.gif) no-repeat 5px 50%;
+}
+
+#sidebar h2 {
+	padding: 30px 30px 20px 30px;
+	background: url(/site_media/images/img09.gif) no-repeat;
+	font-weight: normal;
+	font-size: 1.6em;
+	color: #302D26;
+}
+
+
+/* Search */
+
+#search {
+	padding: 20px 30px 40px 30px;
+}
+
+#search input {
+	padding: 0px;	
+	height: 20px;
+	width: auto;
+	background: #DFDFDF url(/site_media/images/img14.gif) repeat-x;
+	font-weight: bold;
+}
+
+#search p {
+	margin: 0;
+	padding: 0;
+}
+
+#search p.btn {
+  padding: 10px;
+}
+
+#search #s {
+	padding: 5px;
+	width: 150px;
+	height: auto;
+	background: #FEFEFE url(/site_media/images/img13.gif) repeat-x;
+	border: 1px solid #626262;
+	font: normal 1em Arial, Helvetica, sans-serif;
+}
+
+#search br {
+	display: none;
+}
+
+/* Categories */
+
+#sidebar #categories li {
+	background: url(/site_media/images/img12.gif) no-repeat left center;
+}
+
+/* Calendar */
+
+#calendar_wrap {
+	padding: 0 30px 40px 30px;
+}
+
+#calendar table {
+	width: 100%;
+	text-align: center;
+}
+
+#calendar thead {
+	background: #F1F1F1;
+}
+
+#calendar tbody td {
+	border: 1px solid #F1F1F1;
+}
+
+#calendar #prev {
+	text-align: left;
+}
+
+#calendar #next {
+	text-align: right;
+}
+
+#calendar tfoot a {
+	text-decoration: none;
+	font-weight: bold;
+}
+
+#calendar #today {
+	background: #FFF3A7;
+	border: 1px solid #EB1400;
+	font-weight: bold;
+	color: #EB1400
+}
+
+/* Footer */
+
+#footer {
+	padding: 50px 0 10px 0;
+	background: #757575 url(/site_media/images/img08.gif) repeat-x;
+}
+
+#footer p {
+	margin-bottom: 1em;
+	text-align: center;
+	line-height: normal;
+	font-size: .9em;
+	color: #BABABA;
+}
+
+#footer a {
+	padding: 0 20px;
+	text-decoration: none;
+	color: #DDDDDD;
+}
+
+#footer a:hover {
+	color: #FFFFFF;
+}
+
+#footer .rss {
+	background: url(/site_media/images/img18.gif) no-repeat left center;
+}
+
+#footer .xhtml {
+	background: url(/site_media/images/img19.gif) no-repeat left center;
+}
+
+#footer .css {
+	background: url(/site_media/images/img20.gif) no-repeat left center;
+}
+
+#footer .legal a {
+	padding: 0;
+}
Binary file site-content/images/img01.jpg has changed
Binary file site-content/images/img02.jpg has changed
Binary file site-content/images/img03.jpg has changed
Binary file site-content/images/img04.jpg has changed
Binary file site-content/images/img05.gif has changed
Binary file site-content/images/img06.gif has changed
Binary file site-content/images/img07.gif has changed
Binary file site-content/images/img08.gif has changed
Binary file site-content/images/img09.gif has changed
Binary file site-content/images/img10.gif has changed
Binary file site-content/images/img11.gif has changed
Binary file site-content/images/img12.gif has changed
Binary file site-content/images/img13.gif has changed
Binary file site-content/images/img14.gif has changed
Binary file site-content/images/img15.gif has changed
Binary file site-content/images/img16.gif has changed
Binary file site-content/images/img17.gif has changed
Binary file site-content/images/img18.gif has changed
Binary file site-content/images/img19.gif has changed
Binary file site-content/images/img20.gif has changed
Binary file site-content/images/spacer.gif has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/template/homepage.html	Thu Sep 24 15:20:30 2009 +0530
@@ -0,0 +1,64 @@
+{% extends "index.html" %}
+{% load i18n %}
+{% block siderbar %}  
+  
+{% endblock %}
+{% block centercontent %}
+  <div class="post">
+		<div class="title">
+			<h2><a href="scope">Scope of the conference:</a></h2>				
+		</div>
+    <div class="entry">
+			<p><strong>Scipy.in </strong>is a conference providing opportunities to spread the use of
+the Python programming language in the Scientific Computing community in
+India. It provides a unique opportunity to interact with the "Who's who"
+of the Python for Scientific Computing fraternity and learn, understand,
+participate and contribute what is happening in the realms of Scientific
+Computing using Python. Attendees of the conference and participants of
+the sprints planned will be able to access and review the tools
+available, apart from learning domain-specific applications and how the
+tools apply to a plethora of application problems.<br>
+
+One of the goals of the conference is to combine education, engineering,
+and science with computing through the medium of Python and thereby
+extrapolate on how powerful Scientific Computing is in various fields
+and among different communities.</p>			
+			<!--<p class="links"> <a href="#" class="more">Read More</a> <a href="#" class="comments">No Comments</a> </p> -->
+			</div>						
+	</div>
+	<div class="post">
+			<div class="title">
+				<h2><a name="theme">Theme</a></h2>
+			</div>
+			<div class="entry">
+				<p>Theme for Conference talks - <strong>"Scientific Python in Action"</strong> with respect to Application and Teaching</p>
+			</div>
+	</div>
+	<div class="post">
+			<div class="title">
+				<h2><a name="venue">Venue:</a></h2>
+			</div>
+			<div class="entry">
+				<p>This conference is organized by <a href="http://fossee.in">"Free/Open source Software in Science and Engineering Education" (FOSSEE)</a> project under the <a href="http://www.sakshat.ac.in/">National Mission on Education (NME)</a> through Information and Communication Technologies (ICT) jointly with <a href="http://fossee.in">SPACE-Kerala </a>. SPACE-Kerala is helping coordinate and organize the conference.<br />
+The conference is proposed to be held at the Technopark in Trivandrum, keeping in mind accessibility, the number of attendees and the location, among other aspects to be considered.</p>
+			</div>
+	</div>
+	<div class="post">
+			<div class="title">
+				<h2><a name="date">Dates</a></h2>
+			</div>
+			<div class="entry">
+				<p>Its a 6-day program between December 12--17, 2009, comprising of 2 days of conference, 2 days of tutorials with 2 parallel tracks (one specifically for teachers and the other for the general
+public), and 2 days of Sprints.</p>
+        <table cellspacing="5">
+        <tr> <td align=center>Date</td><td>Activity</td> </tr>
+        <tr > <td align=right>Saturday, Dec. 12 2009</td><td>Conference</td> </tr>
+        <tr> <td align=right>Sunday, Dec. 13 2009</td><td>Conference</td> </tr>
+        <tr> <td align=right>Monday, Dec. 14 2009</td><td>Tutorials</td> </tr>
+        <tr> <td align=right>Tuesday, Dec. 15 2009</td><td>Tutorials</td> </tr>
+        <tr> <td align=right>Wednesday, Dec. 16 2009</td><td>Sprint</td> </tr>
+        <tr> <td align=right>Thursday, Dec. 17 2009</td><td>Sprint</td> </tr>
+        </table>
+			</div>
+	</div>
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/template/index.html	Thu Sep 24 15:20:30 2009 +0530
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!--
+
+Design by Free CSS Templates
+http://www.freecsstemplates.org
+Released for free under a Creative Commons Attribution 2.5 License
+
+Title      : Concrete
+Version    : 1.0
+Released   : 20080825
+Description: A Web 2.0 design with fluid width suitable for blogs and small websites.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+{% load i18n %}
+<head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<title>{% trans "SciPy India 2009" %}</title>
+<meta name="keywords" content="" />
+<meta name="description" content="" />
+<link href="/site_media/default.css" rel="stylesheet" type="text/css" media="screen" />
+{% block head %}
+{% endblock %}
+</head>
+<body>
+{% block body %}
+{% endblock %}
+<!-- start header -->
+<div id="header">
+	<div id="logo">
+		<h1><a href="#">SciPy.in</a></h1>		
+	</div>
+	<div id="menu">
+		<ul>
+			<li class="current_page_item"><a href="/home">Home</a></li>
+			<li><a href="/register">Register</a></li>
+			<li><a href="#">Photos</a></li>
+			<li><a href="#">About</a></li>
+			<li class="last"><a href="#">Contact</a></li>
+		</ul>
+	</div>
+</div>
+<!-- end header -->
+<!-- start page -->
+<div id="page">	
+  <div id="sidebar">
+		<ul>
+		   <li>
+		   <ul>   
+        {% if request.user.is_anonymous %}
+		    <li><a href="login">login</a> </li>
+		    <li><a href="#">register</a> </li>
+		    {% else %}
+		    <li>{{ request.user.username }}</li>
+		    <li><a href="logout" >{% trans "logout" %}</a></li>
+		    {% endif %}
+	    </ul>
+	    <li id="categories">
+				    <h2>Links</h2>
+				    <ul>
+					    <li><a href="#venue">Venue</a> </li>
+					    <li><a href="#theme">Theme</a> </li>
+					    <li><a href="#date">Dates</a> </li>
+				    </ul>
+	    </li>		
+		  {% block sidebar %}			
+      {% endblock %}			  
+	 	</ul>
+	</div>
+	<!-- end sidebar --> 
+	<!-- start content -->
+	<div id="content">		
+			{% block centercontent %}			
+      {% endblock %}			
+	<!-- end content -->
+	<br style="clear: both;" />
+</div>
+<!-- end page -->
+<!-- start footer -->
+<div id="footer">
+	<p class="links">
+		<a href="http://validator.w3.org/check/referer" class="xhtml" title="This page validates as XHTML">Valid <abbr title="eXtensible HyperText Markup Language">XHTML</abbr></a>
+		&nbsp;&nbsp;&nbsp;
+		<a href="http://jigsaw.w3.org/css-validator/check/referer" class="css" title="This page validates as CSS">Valid <abbr title="Cascading Style Sheets">CSS</abbr></a>
+	</p>
+	<p class="legal">
+		&copy;2007 Concrete. All Rights Reserved.
+		&nbsp;&nbsp;&bull;&nbsp;&nbsp;
+		Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>
+		&nbsp;&nbsp;&bull;&nbsp;&nbsp;
+		Icons by <a href="http://famfamfam.com/">FAMFAMFAM</a>. </p>
+</div>
+<!-- end footer -->
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/template/register.html	Thu Sep 24 15:20:30 2009 +0530
@@ -0,0 +1,31 @@
+{% extends "index.html" %}
+{% load i18n %}
+{% block centercontent %}
+  <div class="post">
+    <div class="title"><h2>{% trans "Register" %}</h2></div>
+    <div id="search">
+    <style type="text/css">
+    ul.errorlist {
+        margin: 0;
+        padding: 0;
+    }
+    .errorlist li {        
+        color: red;
+        display: block;
+        font-size: 10px;
+        margin: 0 1 3px;
+        padding: 0px 45px;
+    }
+</style>
+
+      <form method="POST" action=".">
+        <table>
+          {{ form }}
+        </table>
+        <p><input type="submit" name="Register" value="{% trans "Register" %}" class="btn"></p>
+      </form>
+      <script type="text/javascript">
+	document.getElementById('id_username').focus();
+      </script>
+   </div>
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/template/regthank.html	Thu Sep 24 15:20:30 2009 +0530
@@ -0,0 +1,12 @@
+{% extends "index.html" %}
+{% load i18n %}
+{% block centercontent %}
+    <h2>{% trans "Thank you for registering" %}</h2>
+
+    {% if p %}
+        <p>{% trans "Dear" %} {{ p.username }}, 
+We will keep you posted regarding the latest activity.</p>
+    {% else %}
+        <p>{% trans "something went wrong" %}</p>
+    {% endif %}
+{% endblock %}
--- a/urls.py	Thu Sep 17 18:52:21 2009 -0400
+++ b/urls.py	Thu Sep 24 15:20:30 2009 +0530
@@ -1,4 +1,8 @@
 from django.conf.urls.defaults import *
+from django.conf import settings
+from django.views.generic.simple import direct_to_template
+
+import os.path
 
 # Uncomment the next two lines to enable the admin:
 # from django.contrib import admin
@@ -14,4 +18,9 @@
 
     # Uncomment the next line to enable the admin:
     # (r'^admin/', include(admin.site.urls)),
+    url (r'^$', direct_to_template, {"template": "homepage.html"}, name="home"),
+    (r'^register/','content.views.register'),
+    (r'^logout/','content.views.logout'),
+    (r'^regthank/(?P<id>\d+)/$', 'content.views.regthank'),
+    (r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': 'site-content'}),
 )