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 From 81c3d0b77de2f6cd131ab8c60729f7e2e4947559 Mon Sep 17 00:00:00 2001 From: ashwini shinde Date: Wed, 23 Sep 2015 13:13:27 +0530 Subject: added value for "Select a Tutorial" for tutorial choice To Get a "Select a Tutorial" value in cutom.js--- website/forms.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/forms.py b/website/forms.py index 8d2242a..d6159a4 100644 --- a/website/forms.py +++ b/website/forms.py @@ -4,7 +4,7 @@ from website.models import * from spoken_auth.models import TutorialDetails, TutorialResources, FossCategory from django.db.models import Q tutorials = ( - ("", "Select a Tutorial"), + ("Select a Tutorial", "Select a Tutorial"), ) minutes = ( ) seconds = ( ) @@ -20,7 +20,7 @@ class NewQuestionForm(forms.Form): select_sec = kwargs.pop('second_range', None) super(NewQuestionForm, self).__init__(*args, **kwargs) tutorial_choices = ( - ("", "Select a Tutorial"), + ("Select a Tutorial", "Select a Tutorial"), ) # check minute_range, secpnd_range coming from spoken website # user clicks on post question link through website -- cgit