summaryrefslogtreecommitdiff
path: root/fossee_manim
diff options
context:
space:
mode:
Diffstat (limited to 'fossee_manim')
-rw-r--r--fossee_manim/forms.py114
-rw-r--r--fossee_manim/models.py134
-rw-r--r--fossee_manim/urls.py16
-rw-r--r--fossee_manim/views.py251
4 files changed, 284 insertions, 231 deletions
diff --git a/fossee_manim/forms.py b/fossee_manim/forms.py
index 1860bee..10be5b1 100644
--- a/fossee_manim/forms.py
+++ b/fossee_manim/forms.py
@@ -3,9 +3,9 @@ from django.utils import timezone
from taggit.forms import TagWidget
from .models import (
- Profile, User, Animation,
- Comment, AnimationStats
- )
+ Profile, User, Animation,
+ Comment, AnimationStats
+)
from string import punctuation, digits
try:
from string import letters
@@ -23,7 +23,7 @@ PWD_CHARS = letters + punctuation + digits
position_choices = (
("contributor", "Contributor"),
("reviewer", "Reviewer")
- )
+)
department_choices = (
("computer", "Dept. of Computer Science/Engg."),
@@ -38,7 +38,7 @@ department_choices = (
("electronics", "Dept. of Electronics"),
("energy science and engineering", "Dept. of Energy Science and Engg"),
("others", "Others")
- )
+)
title = (
("Professor", "Prof."),
@@ -49,7 +49,7 @@ title = (
("Mr", "Mr."),
("Mrs", "Mrs."),
("Miss", "Ms."),
- )
+)
source = (
("FOSSEE Email", "FOSSEE Email"),
@@ -58,46 +58,46 @@ source = (
("Social Media", "Social Media"),
("From other College", "From other College"),
("others", "Others")
- )
+)
states = (
- ("IN-AP", "Andhra Pradesh"),
- ("IN-AR", "Arunachal Pradesh"),
- ("IN-AS", "Assam"),
- ("IN-BR", "Bihar"),
- ("IN-CT", "Chhattisgarh"),
- ("IN-GA", "Goa"),
- ("IN-GJ", "Gujarat"),
- ("IN-HR", "Haryana"),
- ("IN-HP", "Himachal Pradesh"),
- ("IN-JK", "Jammu and Kashmir"),
- ("IN-JH", "Jharkhand"),
- ("IN-KA", "Karnataka"),
- ("IN-KL", "Kerala"),
- ("IN-MP", "Madhya Pradesh"),
- ("IN-MH", "Maharashtra"),
- ("IN-MN", "Manipur"),
- ("IN-ML", "Meghalaya"),
- ("IN-MZ", "Mizoram"),
- ("IN-NL", "Nagaland"),
- ("IN-OR", "Odisha"),
- ("IN-PB", "Punjab"),
- ("IN-RJ", "Rajasthan"),
- ("IN-SK", "Sikkim"),
- ("IN-TN", "Tamil Nadu"),
- ("IN-TG", "Telangana"),
- ("IN-TR", "Tripura"),
- ("IN-UT", "Uttarakhand"),
- ("IN-UP", "Uttar Pradesh"),
- ("IN-WB", "West Bengal"),
- ("IN-AN", "Andaman and Nicobar Islands"),
- ("IN-CH", "Chandigarh"),
- ("IN-DN", "Dadra and Nagar Haveli"),
- ("IN-DD", "Daman and Diu"),
- ("IN-DL", "Delhi"),
- ("IN-LD", "Lakshadweep"),
- ("IN-PY", "Puducherry")
- )
+ ("IN-AP", "Andhra Pradesh"),
+ ("IN-AR", "Arunachal Pradesh"),
+ ("IN-AS", "Assam"),
+ ("IN-BR", "Bihar"),
+ ("IN-CT", "Chhattisgarh"),
+ ("IN-GA", "Goa"),
+ ("IN-GJ", "Gujarat"),
+ ("IN-HR", "Haryana"),
+ ("IN-HP", "Himachal Pradesh"),
+ ("IN-JK", "Jammu and Kashmir"),
+ ("IN-JH", "Jharkhand"),
+ ("IN-KA", "Karnataka"),
+ ("IN-KL", "Kerala"),
+ ("IN-MP", "Madhya Pradesh"),
+ ("IN-MH", "Maharashtra"),
+ ("IN-MN", "Manipur"),
+ ("IN-ML", "Meghalaya"),
+ ("IN-MZ", "Mizoram"),
+ ("IN-NL", "Nagaland"),
+ ("IN-OR", "Odisha"),
+ ("IN-PB", "Punjab"),
+ ("IN-RJ", "Rajasthan"),
+ ("IN-SK", "Sikkim"),
+ ("IN-TN", "Tamil Nadu"),
+ ("IN-TG", "Telangana"),
+ ("IN-TR", "Tripura"),
+ ("IN-UT", "Uttarakhand"),
+ ("IN-UP", "Uttar Pradesh"),
+ ("IN-WB", "West Bengal"),
+ ("IN-AN", "Andaman and Nicobar Islands"),
+ ("IN-CH", "Chandigarh"),
+ ("IN-DN", "Dadra and Nagar Haveli"),
+ ("IN-DD", "Daman and Diu"),
+ ("IN-DL", "Delhi"),
+ ("IN-LD", "Lakshadweep"),
+ ("IN-PY", "Puducherry")
+)
def check_upper(uname):
@@ -113,7 +113,8 @@ class UserRegistrationForm(forms.Form):
a new user to the system"""
required_css_class = 'required'
errorlist_css_class = 'errorlist'
- username = forms.CharField(max_length=32, help_text='''lowercase, letters, digits,
+ username = forms.CharField(
+ max_length=32, help_text='''lowercase, letters, digits,
period and underscore only.''')
email = forms.EmailField()
password = forms.CharField(max_length=32, widget=forms.PasswordInput())
@@ -134,7 +135,9 @@ class UserRegistrationForm(forms.Form):
department = forms.ChoiceField(help_text='Department you work/study',
choices=department_choices)
location = forms.CharField(max_length=255, help_text="Place/City")
- pincode = forms.RegexField(regex=r'^.{6}$', error_messages={'invalid': "Please enter valid PINCODE"})
+ pincode = forms.RegexField(
+ regex=r'^.{6}$', error_messages={
+ 'invalid': "Please enter valid PINCODE"})
state = forms.ChoiceField(choices=states)
how_did_you_hear_about_us = forms.ChoiceField(choices=source)
@@ -215,11 +218,11 @@ class UserLoginForm(forms.Form):
super(UserLoginForm, self).clean()
try:
u_name, pwd = self.cleaned_data["username"],\
- self.cleaned_data["password"]
+ self.cleaned_data["password"]
user = authenticate(username=u_name, password=pwd)
except Exception:
- raise forms.ValidationError\
- ("Username and/or Password is not entered")
+ raise forms.ValidationError(
+ "Username and/or Password is not entered")
if not user:
raise forms.ValidationError("Invalid username/password")
return user
@@ -231,7 +234,7 @@ class ProfileForm(forms.ModelForm):
class Meta:
model = Profile
fields = ['first_name', 'last_name', 'institute', 'department',
- ]
+ ]
first_name = forms.CharField(max_length=32)
last_name = forms.CharField(max_length=32)
@@ -255,13 +258,10 @@ class AnimationProposal(forms.ModelForm):
# self.fields['outline'].widget.attrs['placeholder'] = 'NOTE: Do\
# add info about prerequisites (if any), possible textbooks and \
# any other related information'
- self.fields['outline'].widget.attrs={
- 'id': 'custom_editor',
- 'rows': 10,
- 'cols': 50,
- 'placeholder': ('NOTE: Do add info about prerequisites (if any), possible textbooks and '
- 'any other related information')
- }
+ self.fields['outline'].widget.attrs = {
+ 'id': 'custom_editor', 'rows': 10, 'cols': 50, 'placeholder': (
+ 'NOTE: Do add info about prerequisites (if any), possible textbooks and '
+ 'any other related information')}
class Meta:
model = Animation
diff --git a/fossee_manim/models.py b/fossee_manim/models.py
index e49726e..21b2a3c 100644
--- a/fossee_manim/models.py
+++ b/fossee_manim/models.py
@@ -13,7 +13,7 @@ import subprocess
position_choices = (
("contributor", "Contributor"),
("reviewer", "Reviewer")
- )
+)
department_choices = (
("computer", "Computers"),
@@ -29,7 +29,7 @@ department_choices = (
("electronics", "Electronics"),
("energy science and engineering", "Energy Science and Engineering"),
("others", "Others")
- )
+)
title = (
("Professor", "Prof."),
@@ -40,7 +40,7 @@ title = (
("Mr", "Mr."),
("Mrs", "Mrs."),
("Miss", "Ms."),
- )
+)
source = (
("FOSSEE website", "FOSSEE website"),
@@ -48,46 +48,46 @@ source = (
("Social Media", "Social Media"),
("From other College", "From other College"),
("others", "Others")
- )
+)
states = (
- ("IN-AP", "Andhra Pradesh"),
- ("IN-AR", "Arunachal Pradesh"),
- ("IN-AS", "Assam"),
- ("IN-BR", "Bihar"),
- ("IN-CT", "Chhattisgarh"),
- ("IN-GA", "Goa"),
- ("IN-GJ", "Gujarat"),
- ("IN-HR", "Haryana"),
- ("IN-HP", "Himachal Pradesh"),
- ("IN-JK", "Jammu and Kashmir"),
- ("IN-JH", "Jharkhand"),
- ("IN-KA", "Karnataka"),
- ("IN-KL", "Kerala"),
- ("IN-MP", "Madhya Pradesh"),
- ("IN-MH", "Maharashtra"),
- ("IN-MN", "Manipur"),
- ("IN-ML", "Meghalaya"),
- ("IN-MZ", "Mizoram"),
- ("IN-NL", "Nagaland"),
- ("IN-OR", "Odisha"),
- ("IN-PB", "Punjab"),
- ("IN-RJ", "Rajasthan"),
- ("IN-SK", "Sikkim"),
- ("IN-TN", "Tamil Nadu"),
- ("IN-TG", "Telangana"),
- ("IN-TR", "Tripura"),
- ("IN-UT", "Uttarakhand"),
- ("IN-UP", "Uttar Pradesh"),
- ("IN-WB", "West Bengal"),
- ("IN-AN", "Andaman and Nicobar Islands"),
- ("IN-CH", "Chandigarh"),
- ("IN-DN", "Dadra and Nagar Haveli"),
- ("IN-DD", "Daman and Diu"),
- ("IN-DL", "Delhi"),
- ("IN-LD", "Lakshadweep"),
- ("IN-PY", "Puducherry")
- )
+ ("IN-AP", "Andhra Pradesh"),
+ ("IN-AR", "Arunachal Pradesh"),
+ ("IN-AS", "Assam"),
+ ("IN-BR", "Bihar"),
+ ("IN-CT", "Chhattisgarh"),
+ ("IN-GA", "Goa"),
+ ("IN-GJ", "Gujarat"),
+ ("IN-HR", "Haryana"),
+ ("IN-HP", "Himachal Pradesh"),
+ ("IN-JK", "Jammu and Kashmir"),
+ ("IN-JH", "Jharkhand"),
+ ("IN-KA", "Karnataka"),
+ ("IN-KL", "Kerala"),
+ ("IN-MP", "Madhya Pradesh"),
+ ("IN-MH", "Maharashtra"),
+ ("IN-MN", "Manipur"),
+ ("IN-ML", "Meghalaya"),
+ ("IN-MZ", "Mizoram"),
+ ("IN-NL", "Nagaland"),
+ ("IN-OR", "Odisha"),
+ ("IN-PB", "Punjab"),
+ ("IN-RJ", "Rajasthan"),
+ ("IN-SK", "Sikkim"),
+ ("IN-TN", "Tamil Nadu"),
+ ("IN-TG", "Telangana"),
+ ("IN-TR", "Tripura"),
+ ("IN-UT", "Uttarakhand"),
+ ("IN-UP", "Uttar Pradesh"),
+ ("IN-WB", "West Bengal"),
+ ("IN-AN", "Andaman and Nicobar Islands"),
+ ("IN-CH", "Chandigarh"),
+ ("IN-DN", "Dadra and Nagar Haveli"),
+ ("IN-DD", "Daman and Diu"),
+ ("IN-DL", "Delhi"),
+ ("IN-LD", "Lakshadweep"),
+ ("IN-PY", "Puducherry")
+)
status = (
("pending", "Pending Acceptance"),
@@ -107,6 +107,7 @@ def attachments(instance, filename):
instance.animation.title,
str(instance.animation.id), filename)
+
def validate_file_extension(value):
import os
from django.core.exceptions import ValidationError
@@ -124,13 +125,13 @@ class Profile(models.Model):
institute = models.CharField(max_length=150, blank=True)
department = models.CharField(max_length=150, choices=department_choices)
phone_number = models.CharField(
- max_length=10,
- validators=[RegexValidator(
- regex=r'^.{10}$', message=(
- "Phone number must be entered \
+ max_length=10,
+ validators=[RegexValidator(
+ regex=r'^.{10}$', message=(
+ "Phone number must be entered \
in the format: '9999999999'.\
Up to 10 digits allowed.")
- )], null=False)
+ )], null=False)
position = models.CharField(max_length=32, choices=position_choices,
default='contributor')
how_did_you_hear_about_us = models.CharField(max_length=255, blank=True,
@@ -140,21 +141,21 @@ class Profile(models.Model):
state = models.CharField(max_length=255, choices=states, default="IN-MH")
pincode = models.CharField(max_length=6, blank=True,
validators=[RegexValidator(
- regex=r'^.{6}$', message=(
- "Please enter valid PINCODE"
- )
- )])
+ regex=r'^.{6}$', message=(
+ "Please enter valid PINCODE"
+ )
+ )])
is_email_verified = models.BooleanField(default=False)
activation_key = models.CharField(max_length=255, blank=True, null=True)
key_expiry_time = models.DateTimeField(blank=True, null=True)
def __str__(self):
return u"id: {0}| {1} {2} | {3} ".format(
- self.user.id,
- self.user.first_name,
- self.user.last_name,
- self.user.email
- )
+ self.user.id,
+ self.user.first_name,
+ self.user.last_name,
+ self.user.email
+ )
class Category(models.Model):
@@ -175,8 +176,11 @@ class Example(models.Model):
class Animation(models.Model):
title = models.CharField(max_length=255)
contributor = models.ForeignKey(User, on_delete=models.CASCADE)
- reviewer = models.ForeignKey(User, null=True, on_delete=models.CASCADE,
- related_name="%(app_label)s_%(class)s_related")
+ reviewer = models.ForeignKey(
+ User,
+ null=True,
+ on_delete=models.CASCADE,
+ related_name="%(app_label)s_%(class)s_related")
outline = models.TextField()
status = models.CharField(max_length=255, choices=status)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
@@ -209,16 +213,20 @@ class AnimationStats(models.Model):
like = models.PositiveIntegerField(default=0)
dislike = models.PositiveIntegerField(default=0)
thumbnail = models.ImageField(null=True, blank=True, upload_to=attachments)
- video_path = models.FileField(null=True, blank=True, upload_to=attachments, validators=[validate_file_extension])
+ video_path = models.FileField(
+ null=True,
+ blank=True,
+ upload_to=attachments,
+ validators=[validate_file_extension])
def _create_thumbnail(self):
video_path = self.video_path.path
img_output = path.join(
- tempfile.mkdtemp(), "{0}.jpg".format(self.animation.title)
- )
+ tempfile.mkdtemp(), "{0}.jpg".format(self.animation.title)
+ )
file_name = "{0}.jpg".format(self.animation.title)
subprocess.call(['ffmpeg', '-i', video_path, '-ss', '00:00:02.000',
- '-vframes', '1', img_output])
+ '-vframes', '1', img_output])
if path.exists(img_output):
que_file = open(img_output, 'rb')
# Converting to Python file object with
@@ -229,8 +237,8 @@ class AnimationStats(models.Model):
def _create_ogv(self):
video_input = self.video_path.path
vid_output = path.join(
- tempfile.mkdtemp(), "{0}.ogv".format(self.animation.title)
- )
+ tempfile.mkdtemp(), "{0}.ogv".format(self.animation.title)
+ )
file_name = "{0}.ogv".format(self.animation.title)
subprocess.call(['ffmpeg', '-i', video_input, '-r', '24', vid_output])
if path.exists(vid_output):
diff --git a/fossee_manim/urls.py b/fossee_manim/urls.py
index dac61e2..a9af19e 100644
--- a/fossee_manim/urls.py
+++ b/fossee_manim/urls.py
@@ -26,17 +26,17 @@ urlpatterns = [
url(r'^faqs/$', views.faqs, name='faqs'),
url(r'^search_category/(?P<cat>.+)$', views.search_category,
name='search_category'),
- url(r'^about/$',views.about, name='about'),
- url(r'^outreach/$',views.outreach, name='outreach'),
- url(r'^library/$',views.library, name='library'),
- url(r'^libraryMath/$',views.libraryMath, name='libraryMath'),
- url(r'^libraryPhys/$',views.libraryPhys, name='libraryPhys'),
- url(r'^libraryCS/$',views.libraryCS, name='libraryCS'),
+ url(r'^about/$', views.about, name='about'),
+ url(r'^outreach/$', views.outreach, name='outreach'),
+ url(r'^library/$', views.library, name='library'),
+ url(r'^libraryMath/$', views.libraryMath, name='libraryMath'),
+ url(r'^libraryPhys/$', views.libraryPhys, name='libraryPhys'),
+ url(r'^libraryCS/$', views.libraryCS, name='libraryCS'),
url(r'^explore/(?P<category>.+)$', views.explore,
name='explore'),
]
urlpatterns += static(
- settings.MEDIA_URL,
- document_root=settings.MEDIA_ROOT
+ settings.MEDIA_URL,
+ document_root=settings.MEDIA_ROOT
)
diff --git a/fossee_manim/views.py b/fossee_manim/views.py
index 3732ce7..4f3cf44 100644
--- a/fossee_manim/views.py
+++ b/fossee_manim/views.py
@@ -1,14 +1,14 @@
from os import listdir, path, sep, makedirs, remove
from .forms import (
- UserRegistrationForm, UserLoginForm,
- ProfileForm, AnimationProposal,
- CommentForm, UploadAnimationForm
- )
+ UserRegistrationForm, UserLoginForm,
+ ProfileForm, AnimationProposal,
+ CommentForm, UploadAnimationForm
+)
from .models import (
- Profile, User, AnimationStats,
- has_profile, Animation, Comment,
- Category
- )
+ Profile, User, AnimationStats,
+ has_profile, Animation, Comment,
+ Category
+)
from datetime import datetime, date
from django.contrib.auth import login, logout, authenticate
from django.contrib.auth.decorators import login_required
@@ -34,38 +34,44 @@ except ImportError:
from io import BytesIO as string_io
__author__ = "Akshen Doke"
-__credits__ = ["Prabhu Ramachandran", "Aditya P.", "KhushalSingh Rajput",
- "Prathamesh Salunke", "Purusharth Saxsena", "Sharanya Achut", "Ankit Javalkar"
- ]
+__credits__ = [
+ "Prabhu Ramachandran",
+ "Aditya P.",
+ "KhushalSingh Rajput",
+ "Prathamesh Salunke",
+ "Purusharth Saxsena",
+ "Sharanya Achut",
+ "Ankit Javalkar"]
+
def makepath(proposal_data, reject=None):
if not path.exists(path.join(settings.MEDIA_ROOT,
- proposal_data.category.name)):
+ proposal_data.category.name)):
makedirs(path.join(settings.MEDIA_ROOT,
- proposal_data.category.name))
+ proposal_data.category.name))
if reject:
try:
shutil.rmtree(path.join(
- settings.MEDIA_ROOT, proposal_data.category.name,
- proposal_data.title.replace(" ", "_")
- ))
- except:
+ settings.MEDIA_ROOT, proposal_data.category.name,
+ proposal_data.title.replace(" ", "_")
+ ))
+ except BaseException:
logging.info("Proposal rejected")
-
else:
makedirs(path.join(settings.MEDIA_ROOT, proposal_data.category.name,
- proposal_data.title.replace(" ", "_")
- ))
+ proposal_data.title.replace(" ", "_")
+ ))
def check_repo(link):
try:
return (get(link).status_code == 200)
- except:
+ except BaseException:
return False
+
def is_email_checked(user):
if hasattr(user, 'profile'):
return True if user.profile.is_email_verified else False
@@ -85,7 +91,9 @@ def index(request):
categories = Category.objects.all()
if user.is_authenticated() and is_email_checked(user):
return redirect('/proposal_status/')
- return render(request, "fossee_manim/index.html", {"categories": categories})
+ return render(request,
+ "fossee_manim/index.html",
+ {"categories": categories})
def is_reviewer(user):
@@ -116,8 +124,8 @@ def user_login(request):
return render(request, 'fossee_manim/login.html', {"form": form})
else:
form = UserLoginForm()
- return render(request, 'fossee_manim/login.html', {"form": form,
- 'categories': categories })
+ return render(request, 'fossee_manim/login.html',
+ {"form": form, 'categories': categories})
def user_logout(request):
@@ -125,7 +133,7 @@ def user_logout(request):
categories = Category.objects.all()
logout(request)
return render(request, 'fossee_manim/logout.html',
- {'categories': categories })
+ {'categories': categories})
def activate_user(request, key=None):
@@ -133,25 +141,25 @@ def activate_user(request, key=None):
if is_superuser(user):
return redirect("/admin")
if key is None:
- if user.is_authenticated() and user.profile.is_email_verified==0 and \
- timezone.now() > user.profile.key_expiry_time:
+ if user.is_authenticated() and user.profile.is_email_verified == 0 and \
+ timezone.now() > user.profile.key_expiry_time:
status = "1"
Profile.objects.get(user_id=user.profile.user_id).delete()
User.objects.get(id=user.profile.user_id).delete()
return render(request, 'fossee_manim/activation.html',
- {'status':status})
- elif user.is_authenticated() and user.profile.is_email_verified==0:
+ {'status': status})
+ elif user.is_authenticated() and user.profile.is_email_verified == 0:
return render(request, 'fossee_manim/activation.html')
elif user.is_authenticated() and user.profile.is_email_verified:
status = "2"
return render(request, 'fossee_manim/activation.html',
- {'status':status})
+ {'status': status})
else:
return redirect('/register/')
try:
user = Profile.objects.get(activation_key=key)
- except:
+ except BaseException:
return redirect('/register/')
if key == user.activation_key:
@@ -162,7 +170,7 @@ def activate_user(request, key=None):
logout(request)
return redirect('/logout/')
return render(request, 'fossee_manim/activation.html',
- {"status": status})
+ {"status": status})
def user_register(request):
@@ -176,9 +184,9 @@ def user_register(request):
login(request, new_user)
user_position = request.user.profile.position
send_email(
- request, call_on='Registration',
- key=key
- )
+ request, call_on='Registration',
+ key=key
+ )
return render(request, 'fossee_manim/activation.html')
else:
@@ -195,14 +203,19 @@ def user_register(request):
elif request.user.is_authenticated():
return render(request, 'fossee_manim/activation.html')
form = UserRegistrationForm()
- return render(request, "fossee_manim/register.html", {'form': form, 'categories': categories})
+ return render(request, "fossee_manim/register.html",
+ {'form': form, 'categories': categories})
def explore(request, category):
- categories = Category.objects.all() #not related to category below
- videos = AnimationStats.objects.filter(animation__category__name= category , animation__status="released")
+ categories = Category.objects.all() # not related to category below
+ videos = AnimationStats.objects.filter(
+ animation__category__name=category,
+ animation__status="released")
+
+ return render(request, "fossee_manim/explore.html",
+ {"videos": videos, "categories": categories})
- return render(request, "fossee_manim/explore.html", {"videos": videos, "categories": categories})
@login_required
def view_profile(request):
@@ -221,7 +234,7 @@ def view_profile(request):
try:
logout(request)
return redirect('/login/')
- except:
+ except BaseException:
return redirect('/register/')
@@ -242,7 +255,7 @@ def edit_profile(request):
try:
logout(request)
return redirect('/login/')
- except:
+ except BaseException:
return redirect('/register/')
context = {'template': template}
@@ -262,17 +275,16 @@ def edit_profile(request):
form_data.save()
return render(
- request, 'fossee_manim/profile_updated.html',
- {'categories': categories}
- )
+ request, 'fossee_manim/profile_updated.html',
+ {'categories': categories}
+ )
else:
context['form'] = form
return render(request, 'fossee_manim/edit_profile.html', context)
else:
form = ProfileForm(user=user, instance=profile)
- return render(request, 'fossee_manim/edit_profile.html', {'form': form,
- 'categories': categories}
- )
+ return render(request, 'fossee_manim/edit_profile.html',
+ {'form': form, 'categories': categories})
@login_required
@@ -289,12 +301,12 @@ def send_proposal(request):
form.save()
else:
return render(request, 'fossee_manim/send_proposal.html',
- {'form': form, 'categories': categories})
+ {'form': form, 'categories': categories})
return redirect('/proposal_status/')
else:
form = AnimationProposal()
return render(request, 'fossee_manim/send_proposal.html',
- {'form': form, 'categories': categories})
+ {'form': form, 'categories': categories})
else:
return redirect('/register/')
@@ -306,7 +318,8 @@ def proposal_status(request):
profile = Profile.objects.get(user_id=user)
categories = Category.objects.all()
if profile.position == 'contributor':
- animations = Animation.objects.filter(contributor_id=user).order_by('-created')
+ animations = Animation.objects.filter(
+ contributor_id=user).order_by('-created')
else:
animations = Animation.objects.order_by('-created')
# print(animations)
@@ -315,18 +328,18 @@ def proposal_status(request):
paginator = Paginator(list(animations), 9)
page = request.GET.get('page')
try:
- anime = paginator.page(page)
+ anime = paginator.page(page)
print(animations.count(), anime)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
- anime = paginator.page(1)
+ anime = paginator.page(1)
except EmptyPage:
# If page is out of range(e.g 999999), deliver last page.
- anime = paginator.page(paginator.num_pages)
+ anime = paginator.page(paginator.num_pages)
return render(request, 'fossee_manim/proposal_status.html',
- {'anime': anime,
- 'categories': categories})
+ {'anime': anime,
+ 'categories': categories})
else:
return redirect('/login/')
@@ -341,15 +354,16 @@ def edit_proposal(request, proposal_id=None):
upload_form = UploadAnimationForm()
categories = Category.objects.all()
video = AnimationStats.objects.filter(animation=proposal_id)
- if len(video)>0:
- msg = ('Previously a video was uploaded for '+ video[0].animation.title)
+ if len(video) > 0:
+ msg = (
+ 'Previously a video was uploaded for ' +
+ video[0].animation.title)
else:
msg = ('No video uploaded')
try:
- comments = Comment.objects.filter(animation_id=proposal_id).order_by(
- '-created_date'
- )
- except:
+ comments = Comment.objects.filter(
+ animation_id=proposal_id).order_by('-created_date')
+ except BaseException:
comments = None
if request.method == 'POST':
text = request.POST.get('comment')
@@ -361,16 +375,16 @@ def edit_proposal(request, proposal_id=None):
if status1:
proposal.status = 'released'
send_email(request, call_on='released',
- contributor=proposal.contributor)
+ contributor=proposal.contributor)
elif status3:
send_email(request, call_on='proposal_form',
- contributor=proposal.contributor)
+ contributor=proposal.contributor)
return redirect('/proposal_status/')
else:
proposal.status = 'rejected'
makepath(proposal, reject=1)
send_email(request, call_on='rejected',
- contributor=proposal.contributor)
+ contributor=proposal.contributor)
proposal.reviewer = user
proposal.save()
return redirect('/proposal_status/')
@@ -385,8 +399,8 @@ def edit_proposal(request, proposal_id=None):
proposal.status = 'changes'
proposal.save()
send_email(request, call_on='changes',
- contributor=proposal.contributor,
- proposal=proposal)
+ contributor=proposal.contributor,
+ proposal=proposal)
form_data.save()
return redirect('/edit_proposal/{}'.format(proposal_id))
proposal_form = AnimationProposal(request.POST, instance=proposal)
@@ -403,25 +417,25 @@ def edit_proposal(request, proposal_id=None):
return redirect('/register/')
if comments is not None:
- #Show upto 12 Workshops per page
- paginator = Paginator(comments, 9)
- page = request.GET.get('page')
- try:
- comments = paginator.page(page)
- except PageNotAnInteger:
- #If page is not an integer, deliver first page.
- comments = paginator.page(1)
- except EmptyPage:
- #If page is out of range(e.g 999999), deliver last page.
- comments = paginator.page(paginator.num_pages)
+ # Show upto 12 Workshops per page
+ paginator = Paginator(comments, 9)
+ page = request.GET.get('page')
+ try:
+ comments = paginator.page(page)
+ except PageNotAnInteger:
+ # If page is not an integer, deliver first page.
+ comments = paginator.page(1)
+ except EmptyPage:
+ # If page is out of range(e.g 999999), deliver last page.
+ comments = paginator.page(paginator.num_pages)
return render(request, 'fossee_manim/edit_proposal.html',
- {'proposal_form': proposal_form,
- "comments": comments,
- "comment_form": comment_form,
- "upload_form": upload_form,
- 'video': video,
- 'categories': categories,
- 'msg': msg})
+ {'proposal_form': proposal_form,
+ "comments": comments,
+ "comment_form": comment_form,
+ "upload_form": upload_form,
+ 'video': video,
+ 'categories': categories,
+ 'msg': msg})
def search(request):
@@ -429,8 +443,11 @@ def search(request):
if request.method == 'POST':
word = request.POST.get('sbox')
anime_list = AnimationStats.objects.filter(
- Q(animation__title__contains=word) | Q(animation__outline__contains=word)
- | Q(animation__category__name__contains=word) | Q(animation__subcategory__contains=word),
+ Q(
+ animation__title__contains=word) | Q(
+ animation__outline__contains=word) | Q(
+ animation__category__name__contains=word) | Q(
+ animation__subcategory__contains=word),
animation__status='released')
return render(request, 'fossee_manim/search_results.html',
@@ -444,16 +461,16 @@ def upload_animation(request, proposal_id=None):
if request.method == 'POST':
proposal = Animation.objects.get(id=proposal_id)
anim_stats = UploadAnimationForm(request.POST or None,
- request.FILES or None)
+ request.FILES or None)
if anim_stats.is_valid():
try:
anim = AnimationStats.objects.filter(
- animation=proposal)
+ animation=proposal)
if anim.exists():
anobj = anim.first()
try:
remove(anobj.thumbnail.path)
- except:
+ except BaseException:
pass
remove(anobj.video_path.path)
anobj.delete()
@@ -464,7 +481,7 @@ def upload_animation(request, proposal_id=None):
animation=proposal, video_path=request.FILES['video_path'])
anobj._create_thumbnail()
return render(request, 'fossee_manim/upload_success.html')
- except:
+ except BaseException:
messages.warning(request, 'Please Upload a valid File')
return redirect('/edit_proposal/{}'.format(proposal_id))
@@ -480,15 +497,15 @@ def video(request, aid=None):
if len(video):
comment_form = CommentForm()
# if views crosses limit comment the line below
- video.update(views=F('views')+1)
- video.update(like=F('like')+1)
+ video.update(views=F('views') + 1)
+ video.update(like=F('like') + 1)
anim_list = AnimationStats.objects.filter(animation__status="released")
suggestion_list = [x for x in anim_list if (
x.animation.category == video[0].animation.category)]
reviewer_id = video[0].animation.reviewer.id
comment_list = Comment.objects.filter(animation=video[0].animation)
comments = [x for x in comment_list if x.animation_status not in
- ('pending', 'changes')]
+ ('pending', 'changes')]
if request.method == 'POST':
if is_email_checked(user):
comment_form = CommentForm(request.POST)
@@ -503,7 +520,7 @@ def video(request, aid=None):
else:
return redirect('/view_profile/')
- if len(suggestion_list)>3:
+ if len(suggestion_list) > 3:
suggestion_list = sample(suggestion_list, 3)
else:
suggestion_list = [x for x in anim_list if x.id != int(aid)][:3]
@@ -527,34 +544,62 @@ def search_category(request, cat=None):
def guidelines(request):
categories = Category.objects.all()
- return render(request, 'fossee_manim/guidelines.html', {'categories': categories})
+ return render(request,
+ 'fossee_manim/guidelines.html',
+ {'categories': categories})
+
def about(request):
categories = Category.objects.all()
- return render(request, 'fossee_manim/about.html', {'categories': categories})
+ return render(request,
+ 'fossee_manim/about.html',
+ {'categories': categories})
+
def honorarium(request):
categories = Category.objects.all()
- return render(request, 'fossee_manim/honorarium.html', {'categories': categories})
+ return render(request,
+ 'fossee_manim/honorarium.html',
+ {'categories': categories})
+
def faqs(request):
categories = Category.objects.all()
- return render(request, 'fossee_manim/faqs.html', {'categories': categories})
+ return render(request,
+ 'fossee_manim/faqs.html',
+ {'categories': categories})
+
def outreach(request):
categories = Category.objects.all()
- return render(request, 'fossee_manim/outreach.html', {'categories': categories})
+ return render(request,
+ 'fossee_manim/outreach.html',
+ {'categories': categories})
+
def library(request):
categories = Category.objects.all()
- return render(request, 'fossee_manim/library.html', {'categories': categories})
+ return render(request,
+ 'fossee_manim/library.html',
+ {'categories': categories})
+
def libraryMath(request):
categories = Category.objects.all()
- return render(request, 'fossee_manim/libraryMath.html', {'categories': categories})
+ return render(request,
+ 'fossee_manim/libraryMath.html',
+ {'categories': categories})
+
+
def libraryPhys(request):
categories = Category.objects.all()
- return render(request, 'fossee_manim/libraryPhys.html', {'categories': categories})
+ return render(request,
+ 'fossee_manim/libraryPhys.html',
+ {'categories': categories})
+
+
def libraryCS(request):
categories = Category.objects.all()
- return render(request, 'fossee_manim/libraryCS.html', {'categories': categories})
+ return render(request,
+ 'fossee_manim/libraryCS.html',
+ {'categories': categories})