diff options
author | parth | 2012-06-01 15:03:13 +0530 |
---|---|---|
committer | parth | 2012-06-01 15:03:13 +0530 |
commit | 2113f66de743877597d24e20df9ac1e828167277 (patch) | |
tree | 77b21ff4414d440aaa672377de796f818b9993c8 /stapp/video | |
download | stproject-2113f66de743877597d24e20df9ac1e828167277.tar.gz stproject-2113f66de743877597d24e20df9ac1e828167277.tar.bz2 stproject-2113f66de743877597d24e20df9ac1e828167277.zip |
Restart of project. Most of the changes have been done by @Jayparikh111
Diffstat (limited to 'stapp/video')
-rw-r--r-- | stapp/video/__init__.py | 0 | ||||
-rw-r--r-- | stapp/video/admin.py | 5 | ||||
-rw-r--r-- | stapp/video/forms.py | 91 | ||||
-rw-r--r-- | stapp/video/models.py | 20 | ||||
-rw-r--r-- | stapp/video/tests.py | 16 | ||||
-rw-r--r-- | stapp/video/urls.py | 11 | ||||
-rw-r--r-- | stapp/video/views.py | 81 |
7 files changed, 224 insertions, 0 deletions
diff --git a/stapp/video/__init__.py b/stapp/video/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/stapp/video/__init__.py diff --git a/stapp/video/admin.py b/stapp/video/admin.py new file mode 100644 index 0000000..8b24e55 --- /dev/null +++ b/stapp/video/admin.py @@ -0,0 +1,5 @@ +from video.models import Video, Module +from django.contrib import admin + +admin.site.register(Video) +admin.site.register(Module) diff --git a/stapp/video/forms.py b/stapp/video/forms.py new file mode 100644 index 0000000..e94a9fd --- /dev/null +++ b/stapp/video/forms.py @@ -0,0 +1,91 @@ +from django import forms +from video.models import Profile + +from django.contrib.auth import authenticate +from django.contrib.auth.models import User +from string import * +import datetime + +UNAME_CHARS = letters + "._" + digits +PWD_CHARS = letters + punctuation + digits + +class UserRegisterForm(forms.Form): + """A Class to create new form for User's Registration. It has the various fields and functions required to register a new user to the system""" + + username = forms.CharField(max_length=30, help_text='Letters, digits, period and underscores only.') + email = forms.EmailField() + password = forms.CharField(max_length=30, widget=forms.PasswordInput()) + confirm_password = forms.CharField(max_length=30, widget=forms.PasswordInput()) + first_name = forms.CharField(max_length=30) + last_name = forms.CharField(max_length=30) + roll_number = forms.CharField(max_length=30, help_text="Use a dummy if you don't have one.") + institute = forms.CharField(max_length=128, help_text='Institute/Organization') + department = forms.CharField(max_length=64, help_text='Department you work/study at') + position = forms.CharField(max_length=64, help_text='Student/Faculty/Researcher/Industry/etc.') + + def clean_username(self): + u_name = self.cleaned_data["username"] + if u_name.strip(UNAME_CHARS): + msg = "Only letters, digits, period and underscore characters are "\ + "allowed in username" + raise forms.ValidationError(msg) + try: + User.objects.get(username__exact = u_name) + raise forms.ValidationError("Username already exists.") + except User.DoesNotExist: + return u_name + + def clean_password(self): + pwd = self.cleaned_data['password'] + if pwd.strip(PWD_CHARS): + raise forms.ValidationError("Only letters, digits and punctuation are \ + allowed in password") + return pwd + + def clean_confirm_password(self): + c_pwd = self.cleaned_data['confirm_password'] + pwd = self.data['password'] + if c_pwd != pwd: + raise forms.ValidationError("Passwords do not match") + + return c_pwd + + def save(self): + u_name = self.cleaned_data["username"] + u_name = u_name.lower() + pwd = self.cleaned_data["password"] + email = self.cleaned_data['email'] + new_user = User.objects.create_user(u_name, email, pwd) + + new_user.first_name = self.cleaned_data["first_name"] + new_user.last_name = self.cleaned_data["last_name"] + new_user.save() + + cleaned_data = self.cleaned_data + new_profile = Profile(user=new_user) + new_profile.roll_number = cleaned_data["roll_number"] + new_profile.institute = cleaned_data["institute"] + new_profile.department = cleaned_data["department"] + new_profile.position = cleaned_data["position"] + new_profile.save() + + return u_name, pwd + +class UserLoginForm(forms.Form): + """Creates a form which will allow the user to log into the system.""" + + username = forms.CharField(max_length = 30) + password = forms.CharField(max_length=30, widget=forms.PasswordInput()) + + def clean(self): + super(UserLoginForm, self).clean() + try: + u_name, pwd = self.cleaned_data["username"], self.cleaned_data["password"] + user = authenticate(username = u_name, password = pwd) + except Exception: + raise forms.ValidationError("Username and/or Password is not entered") + if not user: + raise forms.ValidationError("Invalid username/password") + return user + + diff --git a/stapp/video/models.py b/stapp/video/models.py new file mode 100644 index 0000000..9c17a7a --- /dev/null +++ b/stapp/video/models.py @@ -0,0 +1,20 @@ +from django.db import models +from django.contrib.auth.models import User +class Video(models.Model): + """Videos to be uploaded..""" + video_name = models.CharField(max_length=128) + video_file = models.FileField(upload_to="videos") + video_descriotion = models.TextField() + +class Module(models.Model): + name = models.CharField(max_length=128) + description = models.TextField() + vidio_list = models.ManyToManyField(Video) + +class Profile(models.Model): + """User Profile describes data/information about regirstered user.""" + user = models.OneToOneField(User) + roll_number = models.CharField(max_length=20) + institute = models.CharField(max_length=128) + department = models.CharField(max_length=64) + position = models.CharField(max_length=64) diff --git a/stapp/video/tests.py b/stapp/video/tests.py new file mode 100644 index 0000000..501deb7 --- /dev/null +++ b/stapp/video/tests.py @@ -0,0 +1,16 @@ +""" +This file demonstrates writing tests using the unittest module. These will pass +when you run "manage.py test". + +Replace this with more appropriate tests for your application. +""" + +from django.test import TestCase + + +class SimpleTest(TestCase): + def test_basic_addition(self): + """ + Tests that 1 + 1 always equals 2. + """ + self.assertEqual(1 + 1, 2) diff --git a/stapp/video/urls.py b/stapp/video/urls.py new file mode 100644 index 0000000..15d387d --- /dev/null +++ b/stapp/video/urls.py @@ -0,0 +1,11 @@ +from django.conf.urls.defaults import patterns, include, url + +urlpatterns = patterns('video.views', + url(r'^login/$','user_login'), + url(r'^register/$','user_register'), + url(r'^view/$', 'show'), + url(r'^view/(?P<video_id>\d+)/$', 'show'), + url(r'^logout/$','user_logout'), + +) + diff --git a/stapp/video/views.py b/stapp/video/views.py new file mode 100644 index 0000000..9b604be --- /dev/null +++ b/stapp/video/views.py @@ -0,0 +1,81 @@ +from django.http import HttpResponse +from django.template import RequestContext +from django.shortcuts import render_to_response, get_object_or_404, redirect +import os +from video.forms import * +from video.models import * +from django.contrib.auth import login, logout, authenticate + +def user_login(request): + """Take the credentials of the user and log the user in.""" + + user = request.user + if user.is_authenticated(): + return redirect("/video/view/") + + if request.method == "POST": + form = UserLoginForm(request.POST) + if form.is_valid(): + user = form.cleaned_data + login(request, user) + return redirect('/video/view/') + else: + form = UserLoginForm() + context = {"form": form} + return render_to_response('video/login.html', context, + context_instance=RequestContext(request)) + else: + form = UserLoginForm() + context = {"form": form} + return render_to_response('video/login.html', context, + context_instance=RequestContext(request)) + + +def user_register(request): + """ Register a new user. + Create a user and corresponding profile and store roll_number also.""" + + user = request.user + if user.is_authenticated(): + return redirect("/video/view/") + + if request.method == "POST": + form = UserRegisterForm(request.POST) + if form.is_valid(): + data = form.cleaned_data + u_name, pwd = form.save() + + new_user = authenticate(username = u_name, password = pwd) + login(request, new_user) + return redirect("/video/view/") + + else: + return render_to_response('video/register.html', + {'form':form}, + context_instance=RequestContext(request)) + else: + form = UserRegisterForm() + return render_to_response('video/register.html', + {'form':form}, + context_instance=RequestContext(request)) + +def user_logout(request): + user = request.user + logout(request) + return redirect('/video/login/') + +def show(request,video_id=None): + user = request.user + if not user.is_authenticated(): + return redirect('/video/login/') + videos = Video.objects.all() + if len(videos) == 0 : + return HttpResponse("No videos in Database...") + play_video = None + if video_id != None : + play_video = Video.objects.get(id = video_id) + else: + play_video = videos[len(videos)-1] + vids = { 'videos' : videos , 'play' : play_video} + return render_to_response('video/list_videos.html', vids) + |