Added:
trunk/misc/patrick/django_bookmarks/bookmarks/forms.py
trunk/misc/patrick/django_bookmarks/site_media/
trunk/misc/patrick/django_bookmarks/site_media/style.css
trunk/misc/patrick/django_bookmarks/templates/registration/
trunk/misc/patrick/django_bookmarks/templates/registration/login.html
trunk/misc/patrick/django_bookmarks/templates/registration/register.html
trunk/misc/patrick/django_bookmarks/templates/registration/register_success.html
Modified:
trunk/misc/patrick/django_bookmarks/bookmarks/views.py
trunk/misc/patrick/django_bookmarks/settings.py
trunk/misc/patrick/django_bookmarks/sqlite3
trunk/misc/patrick/django_bookmarks/templates/main_page.html
trunk/misc/patrick/django_bookmarks/templates/user_page.html
trunk/misc/patrick/django_bookmarks/urls.py
Log:
django bookmarks
Added: trunk/misc/patrick/django_bookmarks/bookmarks/forms.py
==============================================================================
--- (empty file)
+++ trunk/misc/patrick/django_bookmarks/bookmarks/forms.py Fri Dec 12
17:40:02 2008
@@ -0,0 +1,30 @@
+import re
+from django.contrib.auth.models import User
+from django import forms
+
+class RegistrationForm(forms.Form):
+ username = forms.CharField(label=u'Username', max_length=30)
+ email = forms.EmailField(label=u'Email')
+ password1 = forms.CharField( label=u'Password',
widget=forms.PasswordInput())
+ password2 = forms.CharField( label=u'Password (Again)',
widget=forms.PasswordInput())
+
+ def clean_password2(self):
+ if 'password1' in self.cleaned_data:
+ password1 = self.cleaned_data['password1']
+ password2 = self.cleaned_data['password2']
+ if password1 == password2:
+ return password2
+ raise forms.ValidationError('Passwords do not match.')
+
+ def clean_username(self):
+ username = self.cleaned_data['username']
+ if not re.search(r'^\w+$', username):
+ raise forms.ValidationError('Username can only contain '
+ 'alphanumeric characters and the underscore.')
+ try:
+ User.objects.get(username=username)
+ except User.DoesNotExist:
+ return username
+ raise forms.ValidationError('Username is already taken.')
+
+
Modified: trunk/misc/patrick/django_bookmarks/bookmarks/views.py
==============================================================================
--- trunk/misc/patrick/django_bookmarks/bookmarks/views.py (original)
+++ trunk/misc/patrick/django_bookmarks/bookmarks/views.py Fri Dec 12
17:40:02 2008
@@ -2,6 +2,12 @@
from django.contrib.auth.models import User
from django.template import Context
from django.template.loader import get_template
+from django.http import HttpResponseRedirect
+from django.contrib.auth import logout
+from django.template import RequestContext
+from django.shortcuts import render_to_response
+
+from bookmarks.forms import *
"""
def main_page(request):
@@ -19,15 +25,22 @@
"""
+"""
def main_page(request):
template = get_template('main_page.html')
variables = Context({
+ 'user': request.user,
'head_title': 'Django Bookmarks',
'page_title': 'Welcome to Django Bookmarks',
'page_body': 'Where you can store and share bookmarks!'
})
output = template.render(variables)
return HttpResponse(output)
+"""
+
+def main_page(request):
+ return render_to_response( 'main_page.html', RequestContext(request))
+
def user_page(request, username):
try:
@@ -36,11 +49,31 @@
raise Http404('Requested user not found.')
bookmarks = user.bookmark_set.all()
-
- template = get_template('user_page.html')
- variables = Context({
+ #template = get_template('user_page.html')
+ variables = RequestContext({
'username': username,
'bookmarks': bookmarks
})
- output = template.render(variables)
- return HttpResponse(output)
+ #output = template.render(variables)
+ #return HttpResponse(output)
+ return render_to_response('user_page.html', variables)
+
+def logout_page(request):
+ logout(request)
+ return HttpResponseRedirect('/')
+
+def register_page(request):
+ if request.method == 'POST':
+ form = RegistrationForm(request.POST)
+ if form.is_valid():
+ user = User.objects.create_user(
+ username=form.cleaned_data['username'],
+ password=form.cleaned_data['password1'],
+ email=form.cleaned_data['email']
+ )
+ return HttpResponseRedirect('/register/success/')
+ else:
+ form = RegistrationForm()
+ variables = RequestContext(request, { 'form': form })
+ return render_to_response( 'registration/register.html', variables)
+
Modified: trunk/misc/patrick/django_bookmarks/settings.py
==============================================================================
--- trunk/misc/patrick/django_bookmarks/settings.py (original)
+++ trunk/misc/patrick/django_bookmarks/settings.py Fri Dec 12 17:40:02 2008
@@ -74,6 +74,7 @@
)
INSTALLED_APPS = (
+ 'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
Added: trunk/misc/patrick/django_bookmarks/site_media/style.css
==============================================================================
--- (empty file)
+++ trunk/misc/patrick/django_bookmarks/site_media/style.css Fri Dec 12
17:40:02 2008
@@ -0,0 +1,7 @@
+#nav {
+ float: right;
+}
+
+input {
+ display: block;
+}
Modified: trunk/misc/patrick/django_bookmarks/sqlite3
==============================================================================
Binary files. No diff available.
Modified: trunk/misc/patrick/django_bookmarks/templates/main_page.html
==============================================================================
--- trunk/misc/patrick/django_bookmarks/templates/main_page.html (original)
+++ trunk/misc/patrick/django_bookmarks/templates/main_page.html Fri Dec 12
17:40:02 2008
@@ -1,9 +1,13 @@
-<html>
- <head>
- <title>{{ head_title }}</title>
- </head>
- <body>
- <h1>{{ page_title }}</h1>
- <p>{{ page_body }}</p>
- </body>
-</html>
+{% extends "base.html" %}
+{% block title %}Welcome to Django Bookmarks{% endblock %}
+{% block head %}Welcome to Django Bookmarks{% endblock %}
+{% block content %}
+ {% if user.username %}
+ <p>Welcome {{ user.username }}!
+ Here you can store and share bookmarks!</p>
+ {% else %}
+ <p>Welcome anonymous user!
+ You need to <a href="/login/">login</a>
+ before you can store and share bookmarks.</p>
+ {% endif %}
+{% endblock %}
Added: trunk/misc/patrick/django_bookmarks/templates/registration/login.html
==============================================================================
--- (empty file)
+++ trunk/misc/patrick/django_bookmarks/templates/registration/login.html
Fri Dec 12 17:40:02 2008
@@ -0,0 +1,18 @@
+{% extends "base.html" %}
+{% block title %}User Login{% endblock %}
+{% block head %}User Login{% endblock %}
+{% block content %}
+ {% if form.errors %}
+ <p>Your username and password didn't match.
+ Please try again.</p>
+ {% endif %}
+
+ <form method="post" action=".">
+ <p><label for="id_username">Username:</label>
+ {{ form.username }}</p>
+ <p><label for="id_password">Password:</label>
+ {{ form.password }}</p>
+ <input type="submit" value="login" />
+ <input type="hidden" name="next" value="/" />
+ </form>
+{% endblock %}
Added:
trunk/misc/patrick/django_bookmarks/templates/registration/register.html
==============================================================================
--- (empty file)
+++
trunk/misc/patrick/django_bookmarks/templates/registration/register.html
Fri Dec 12 17:40:02 2008
@@ -0,0 +1,9 @@
+{% extends "base.html" %}
+{% block title %}User Registration{% endblock %}
+{% block head %}User Registration{% endblock %}
+{% block content %}
+<form method="post" action=".">
+ {{ form.as_p }}
+ <input type="submit" value="register" />
+</form>
+{% endblock %}
Added:
trunk/misc/patrick/django_bookmarks/templates/registration/register_success.html
==============================================================================
--- (empty file)
+++
trunk/misc/patrick/django_bookmarks/templates/registration/register_success.html
Fri Dec 12 17:40:02 2008
@@ -0,0 +1,13 @@
+{% extends "base.html" %}
+
+{% block title %}Registration Successful{% endblock %}
+{% block head %}
+ Registration Completed Successfully
+{% endblock %}
+
+{% block content %}
+ Thank you for registering. Your information has been
+ saved in the database. Now you can either
+ <a href="/login/">login</a> or go back to the
+ <a href="/">main page</a>.
+{% endblock %}
Modified: trunk/misc/patrick/django_bookmarks/templates/user_page.html
==============================================================================
--- trunk/misc/patrick/django_bookmarks/templates/user_page.html (original)
+++ trunk/misc/patrick/django_bookmarks/templates/user_page.html Fri Dec 12
17:40:02 2008
@@ -1,18 +1,14 @@
-<html>
- <head>
- <title>Django Bookmarks - User: {{ username }}</title>
- </head>
- <body>
- <h1>Bookmarks for {{ username }}</h1>
- {% if bookmarks %}
- <ul>
- {% for bookmark in bookmarks %}
- <li><a href="{{ bookmark.link.url }}">
- {{ bookmark.title }}</a></li>
- {% endfor %}
- </ul>
- {% else %}
- <p>No bookmarks found.</p>
- {% endif %}
- </body>
-</html>
+{% extends "base.html" %}
+{% block title %}{{ username }}{% endblock %}
+{% block head %}Bookmarks for {{ username }}{% endblock %}
+{% block content %}
+ {% if bookmarks %}
+ <ul>
+ {% for bookmark in bookmarks %}
+ <li><a href="{{ bookmark.link.url }}"> {{ bookmark.title
}}</a></li>
+ {% endfor %}
+ </ul>
+ {% else %}
+ <p>No bookmarks found.</p>
+ {% endif %}
+{% endblock %}
Modified: trunk/misc/patrick/django_bookmarks/urls.py
==============================================================================
--- trunk/misc/patrick/django_bookmarks/urls.py (original)
+++ trunk/misc/patrick/django_bookmarks/urls.py Fri Dec 12 17:40:02 2008
@@ -1,9 +1,17 @@
+import os
from django.conf.urls.defaults import *
+from django.views.generic.simple import direct_to_template
+
+
from bookmarks.views import *
-# Uncomment the next two lines to enable the admin:
-# from django.contrib import admin
-# admin.autodiscover()
+
+site_media = os.path.join(os.path.dirname(__file__), 'site_media')
+
+
+# Uncomment the next two lines to enable the admin
+from django.contrib import admin
+admin.autodiscover()
urlpatterns = patterns('',
# Example:
@@ -19,6 +27,12 @@
)
urlpatterns = patterns('',
+ (r'^admin/(.*)', admin.site.root),
(r'^$', main_page),
(r'^user/(\w+)/$', user_page),
+ (r'^login/$', 'django.contrib.auth.views.login'),
+ (r'^logout/$', logout_page),
+ (r'^site_media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': site_media}),
+ (r'^register/$', register_page),
+ (r'^register/success/$',
direct_to_template,{'template': 'registration/register_success.html'}),
)