summaryrefslogtreecommitdiff
path: root/stapp/video
diff options
context:
space:
mode:
authorparth2012-06-01 15:03:13 +0530
committerparth2012-06-01 15:03:13 +0530
commit2113f66de743877597d24e20df9ac1e828167277 (patch)
tree77b21ff4414d440aaa672377de796f818b9993c8 /stapp/video
downloadstproject-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__.py0
-rw-r--r--stapp/video/admin.py5
-rw-r--r--stapp/video/forms.py91
-rw-r--r--stapp/video/models.py20
-rw-r--r--stapp/video/tests.py16
-rw-r--r--stapp/video/urls.py11
-rw-r--r--stapp/video/views.py81
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)
+