From 102d861dec83108aff90afeefbccbe5f80d8c16b Mon Sep 17 00:00:00 2001
From: your_name
Date: Mon, 21 Sep 2015 16:20:57 +0530
Subject: Subject:video tile, minute-range and second-range auto selected.
Description:
1) click on link post questions on forum from spoken-website.
2) current time of video will get fetch and set as minute and sec
---
forums/settings.py | 4 +--
static/website/js/custom.js | 20 ++++++++---
website/forms.py | 82 +++++++++++++++++++++++++++++----------------
website/views.py | 21 +++++++-----
4 files changed, 84 insertions(+), 43 deletions(-)
diff --git a/forums/settings.py b/forums/settings.py
index 774617a..3134444 100644
--- a/forums/settings.py
+++ b/forums/settings.py
@@ -19,7 +19,7 @@ MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
- 'NAME': 'forums', # Or path to database file if using sqlite3.
+ 'NAME': db, # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': db_user,
'PASSWORD': db_pass,
@@ -28,7 +28,7 @@ DATABASES = {
},
'spoken': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
- 'NAME': 'spoken', # Or path to database file if using sqlite3.
+ 'NAME': sdb, # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': db_user,
'PASSWORD': db_pass,
diff --git a/static/website/js/custom.js b/static/website/js/custom.js
index 5565683..d60e1d5 100644
--- a/static/website/js/custom.js
+++ b/static/website/js/custom.js
@@ -3,7 +3,16 @@ $(document).ready(function() {
$tutorial = $("#id_tutorial");
$minute_range = $("#id_minute_range");
$second_range = $("#id_second_range");
-
+ var tutorial = $tutorial.val();
+ var category = $category.val();
+
+ if (tutorial == "Select a Tutorial" || tutorial =="General"){
+ $minute_range.attr("disabled", true);
+ $second_range.attr("disabled", true);
+ }else{
+ $minute_range.removeAttr("disabled");
+ $second_range.removeAttr("disabled");
+ }
function reset() {
for (var i = 0, l = arguments.length; i < l; i ++) {
switch(arguments[i]) {
@@ -41,7 +50,7 @@ $(document).ready(function() {
$minute_range.removeAttr("disabled");
$second_range.html("");
$second_range.removeAttr("disabled");
- } else {
+ }else {
$.ajax({
url: "/ajax-tutorials/",
type: "POST",
@@ -67,12 +76,15 @@ $(document).ready(function() {
$minute_range.removeAttr("disabled");
$second_range.html("");
$second_range.removeAttr("disabled");
- } else {
+ } else if (tutorial == "Select a Tutorial"){
+ $minute_range.attr("disabled");
+ $second_range.attr("disabled");
+ }else {
$.ajax({
url: "/ajax-duration/",
type: "POST",
data: {
- category: category,
+ category: category,
tutorial: tutorial
},
success: function(data){
diff --git a/website/forms.py b/website/forms.py
index 32a21a8..8d2242a 100644
--- a/website/forms.py
+++ b/website/forms.py
@@ -6,39 +6,63 @@ from django.db.models import Q
tutorials = (
("", "Select a Tutorial"),
)
-minutes = (
- ("", "min"),
-)
-seconds= (
- ("", "sec"),
-)
-
+minutes = ( )
+seconds = ( )
class NewQuestionForm(forms.Form):
category = forms.ChoiceField(choices = [('', 'Select a Category'),] + list(TutorialResources.objects.filter(Q(status = 1) | Q(status = 2), language__name = 'English').values('tutorial_detail__foss__foss').order_by('tutorial_detail__foss__foss').values_list('tutorial_detail__foss__foss', 'tutorial_detail__foss__foss').distinct()), widget=forms.Select(attrs = {}), required = True, error_messages = {'required':'State field is required.'})
- def __init__(self, *args, **kwargs):
- category = kwargs.pop('category', None)
- selecttutorial = kwargs.pop('tutorial', None)
- super(NewQuestionForm, self).__init__(*args, **kwargs)
- tutorial_choices = (
- ("", "Select a Tutorial"),
- )
- if not category and args and 'category' in args[0] and args[0]['category']:
- category = args[0]['category']
- if FossCategory.objects.filter(foss=category).exists():
- self.fields['category'].initial = category
- tutorials = TutorialDetails.objects.using('spoken').filter(foss__foss=category)
- for tutorial in tutorials:
- tutorial_choices += ((tutorial.tutorial, tutorial.tutorial),)
- self.fields['tutorial'] = forms.CharField(widget=forms.Select(choices=tutorial_choices))
- if TutorialDetails.objects.using('spoken').filter(tutorial=selecttutorial).exists():
- self.fields['tutorial'].initial = selecttutorial
- else:
- self.fields['tutorial'] = forms.CharField(widget=forms.Select(choices=tutorial_choices))
-
- minute_range = forms.CharField(widget=forms.Select(choices=minutes))
- second_range = forms.CharField(widget=forms.Select(choices=seconds))
title = forms.CharField(max_length=200)
body = forms.CharField(widget=forms.Textarea())
+ def __init__(self, *args, **kwargs):
+ category = kwargs.pop('category', None)
+ selecttutorial = kwargs.pop('tutorial', None)
+
+ select_min = kwargs.pop('minute_range', None)
+ select_sec = kwargs.pop('second_range', None)
+ super(NewQuestionForm, self).__init__(*args, **kwargs)
+ tutorial_choices = (
+ ("", "Select a Tutorial"),
+ )
+ # check minute_range, secpnd_range coming from spoken website
+ # user clicks on post question link through website
+ if (select_min != None and select_sec != None):
+ minutes = (
+
+ (select_min,select_min),
+ )
+ seconds= (
+ (select_sec, select_sec),
+ )
+ else:
+
+ minutes = (
+
+ ("","min"),
+ )
+ seconds= (
+ ("","sec"),
+ )
+
+ if not category and args and 'category' in args[0] and args[0]['category']:
+ category = args[0]['category']
+ if FossCategory.objects.filter(foss=category).exists():
+ self.fields['category'].initial = category
+ tutorials = TutorialDetails.objects.using('spoken').filter(foss__foss=category)
+ for tutorial in tutorials:
+ tutorial_choices += ((tutorial.tutorial, tutorial.tutorial),)
+ self.fields['tutorial'] = forms.CharField(widget=forms.Select(choices=tutorial_choices))
+ if TutorialDetails.objects.using('spoken').filter(tutorial=selecttutorial).exists():
+ self.fields['tutorial'].initial = selecttutorial
+
+ self.fields['minute_range'] = forms.CharField(widget=forms.Select(choices=minutes))
+ self.fields['second_range'] = forms.CharField(widget=forms.Select(choices=seconds))
+ else:
+ self.fields['minute_range'] = forms.CharField(widget=forms.Select(choices=minutes))
+ self.fields['second_range'] = forms.CharField(widget=forms.Select(choices=seconds))
+ else:
+ self.fields['tutorial'] = forms.CharField(widget=forms.Select(choices=tutorial_choices))
+ self.fields['minute_range'] = forms.CharField(widget=forms.Select(choices=minutes))
+ self.fields['second_range'] = forms.CharField(widget=forms.Select(choices=seconds))
+
class AnswerQuesitionForm(forms.Form):
question = forms.IntegerField(widget=forms.HiddenInput())
diff --git a/website/views.py b/website/views.py
index 0c625c8..299fa06 100644
--- a/website/views.py
+++ b/website/views.py
@@ -265,12 +265,15 @@ def new_question(request):
return HttpResponseRedirect('/')
else:
- #fix dirty code
- category = request.GET.get('category', None)
- tutorial = request.GET.get('tutorial', None)
- form = NewQuestionForm(category=category, tutorial=tutorial)
- context['category'] = category
-
+ # get values from URL.
+ category = request.GET.get('category', None)
+ tutorial = request.GET.get('tutorial', None)
+ minute_range = request.GET.get('minute_range', None)
+ second_range = request.GET.get('second_range', None)
+ # pass minute_range and second_range value to NewQuestionForm to populate on select
+ form = NewQuestionForm(category=category, tutorial=tutorial, minute_range=minute_range,second_range=second_range)
+ context['category'] = category
+
context['form'] = form
context.update(csrf(request))
return render(request, 'website/templates/new-question.html', context)
@@ -366,12 +369,14 @@ def ajax_duration(request):
Q(tutorial_detail_id=video_detail.id),
Q(language__name='English')
)
- video_path = '/home/sanmugam/devel/spoken/media/videos/{0}/{1}/{2}'.format(
+ # comment while pushing to git and un-comment on local
+ # on local machine give your local path of videos folder
+ video_path = '/home/fossee/devel/spoken/media/videos/{0}/{1}/{2}'.format(
str(video_detail.foss_id),
str(video_detail.id),
video_resource.video
)
- # video_path = '/home/cheese/test-video.ogv'
+
video_info = get_video_info(video_path)
# convert minutes to 1 if less than 0
--
cgit