diff options
-rw-r--r-- | category_names.txt | 10 | ||||
-rw-r--r-- | forums/forms.py | 52 | ||||
-rw-r--r-- | forums/settings.py | 10 | ||||
-rw-r--r-- | forums/urls.py | 1 | ||||
-rw-r--r-- | forums/views.py | 86 | ||||
-rw-r--r-- | issue_names.txt | 6 | ||||
-rw-r--r-- | migrate_spoken/views.py | 2 | ||||
-rw-r--r-- | populate_category.py | 26 | ||||
-rw-r--r-- | populate_issue.py | 24 | ||||
-rw-r--r-- | requirements.txt | 1 | ||||
-rw-r--r-- | static/forums/templates/user-login.html | 6 | ||||
-rw-r--r-- | static/forums/templates/user-register.html | 91 | ||||
-rw-r--r-- | static/website/css/font-awesome.min.css | 4 | ||||
-rw-r--r-- | static/website/css/login.css | 111 | ||||
-rw-r--r-- | static/website/css/yamm-min.css | 1 | ||||
-rw-r--r-- | static/website/css/yamm.css | 29 | ||||
-rw-r--r-- | static/website/templates/base.html | 2 | ||||
-rw-r--r-- | static/website/templates/filter.html | 11 | ||||
-rw-r--r-- | static/website/templates/get-question.html | 13 | ||||
-rw-r--r-- | static/website/templates/index.html | 10 | ||||
-rw-r--r-- | static/website/templates/new-question.html | 4 | ||||
-rw-r--r-- | static/website/templates/questions.html | 6 | ||||
-rw-r--r-- | website/forms.py | 17 | ||||
-rw-r--r-- | website/models.py | 6 | ||||
-rw-r--r-- | website/views.py | 14 |
25 files changed, 490 insertions, 53 deletions
diff --git a/category_names.txt b/category_names.txt new file mode 100644 index 0000000..d716a03 --- /dev/null +++ b/category_names.txt @@ -0,0 +1,10 @@ +Scilab +Python +FreeEDA +OpenFOAM +OR-Tools +Osdag +SBHS +Netbook +Sandhi +DWSIM diff --git a/forums/forms.py b/forums/forms.py index 5a93b5f..6bfb184 100644 --- a/forums/forms.py +++ b/forums/forms.py @@ -1,5 +1,18 @@ from django import forms from django.contrib.auth import login, logout, authenticate +from django.utils.translation import ugettext_lazy as _ +from django.core.validators import MinLengthValidator, MinValueValidator, \ +RegexValidator, URLValidator +from captcha.fields import ReCaptchaField +from django.contrib.auth.models import User +from captcha.fields import ReCaptchaField + +from django.utils.translation import ugettext_lazy as _ +from django.core.validators import MinLengthValidator, MinValueValidator, \ +RegexValidator, URLValidator +from django.template.defaultfilters import filesizeformat + + class UserLoginForm(forms.Form): username = forms.CharField() @@ -8,13 +21,50 @@ class UserLoginForm(forms.Form): def clean(self): cleaned_data = self.cleaned_data username = cleaned_data.get('username') + print username password = cleaned_data.get('password') - if username is None or password is None: + print password + if username is None or password is None: raise forms.ValidationError("Invalid username or password") user = authenticate(username=username, password=password) + if not user: raise forms.ValidationError("Invalid username or password") if not user.is_active: raise forms.ValidationError("User is blocked") cleaned_data['user'] = user return cleaned_data + + +class RegisterForm(forms.Form): + username = forms.CharField( + label = _("Username"), + max_length = 30, + widget = forms.TextInput(), + required = True, + validators = [ + RegexValidator( + regex = '^[a-zA-Z0-9-_+.]*$', + message = 'Username required. 30 characters or fewer. \ + Letters, digits and @/./+/-/_ only.', + code = 'invalid_username' + ), + ] + ) + password = forms.CharField( + label = _("Password"), + widget = forms.PasswordInput(render_value = False), + min_length = 8, + ) + + password_confirm = forms.CharField( + label = _("Password (again)"), + widget = forms.PasswordInput(render_value = False), + min_length = 8, + ) + email = forms.EmailField( + label = _("Email"), + widget = forms.TextInput(), + required=True + ) + captcha = ReCaptchaField() diff --git a/forums/settings.py b/forums/settings.py index 88133d2..63ec9c5 100644 --- a/forums/settings.py +++ b/forums/settings.py @@ -141,6 +141,7 @@ INSTALLED_APPS = ( #'spoken_auth', 'compressor', 'debug_toolbar', + 'captcha', #'migrate_spoken', ) @@ -179,5 +180,10 @@ TEMPLATE_CONTEXT_PROCESSORS += ( ) COMPRESS_ROOT = PROJECT_DIR + "/static/" -COMPRESS_ENABLED = True -HTML_MINIFY = True +COMPRESS_ENABLED = True # disable in production Env +HTML_MINIFY = True # disable in production Env + +HTML_MINIFY = HTML_MINIFY +RECAPTCHA_PUBLIC_KEY = '6LemngMTAAAAAAC0Fkv0CQcavkTIIJ3LTDzi9gMq' +RECAPTCHA_PRIVATE_KEY = '6LemngMTAAAAAHZsIaY-G98QegM3htdGVEWbEJYL' +RECAPTCHA_USE_SSL = True diff --git a/forums/urls.py b/forums/urls.py index 90d61fb..3f257ea 100644 --- a/forums/urls.py +++ b/forums/urls.py @@ -18,5 +18,6 @@ urlpatterns = patterns('', # User account urls url(r'^accounts/login/', 'forums.views.user_login', name='user_login'), url(r'^accounts/logout/', 'forums.views.user_logout', name='user_logout'), + url(r'^accounts/register/', 'forums.views.account_register', name='user_register'), url(r'^migrate', 'migrate_spoken.views.chenage_drupal_userid_spoken', name='chenage_drupal_userid_spoken'), ) diff --git a/forums/views.py b/forums/views.py index b2dae90..3e82a90 100644 --- a/forums/views.py +++ b/forums/views.py @@ -2,16 +2,98 @@ from django.http import HttpResponse, HttpResponseRedirect from django.contrib.auth import login, logout, authenticate from django.shortcuts import render_to_response from django.core.context_processors import csrf +from django.template import RequestContext +from django.contrib.auth.decorators import login_required +from django.contrib.auth import authenticate, login, logout +from django.core.mail import EmailMultiAlternatives +from django.contrib import messages +from django.utils import timezone -from forums.forms import UserLoginForm +from django.conf import settings + + + +import random, string + +from forums.forms import * + +def account_register(request): + context = {} + print "account_registration" + print request.method + if request.method == 'POST': + form = RegisterForm(request.POST) + print form + print form.is_valid + if form.is_valid(): + + username = request.POST['username'] + print username + password = request.POST['password'] + print password + email = request.POST['email'] + print email + user = User.objects.create_user(username, email, password) + user.is_active = True + user.save() + confirmation_code = ''.join(random.choice(string.ascii_uppercase + string.digits + string.ascii_lowercase) for x in range(33)) + #p = Profile(user=user, confirmation_code=confirmation_code) + #p.save() + #send_registration_confirmation(user) + messages.success(request, """ + Please confirm your registration by clicking on the activation link which has been sent to your registered email id. + """) + return HttpResponseRedirect('/') + context = {'form':form} + return render_to_response('forums/templates/user-register.html', context,context_instance = RequestContext(request)) + else: + form = RegisterForm() + context = { + 'form': form + } + context.update(csrf(request)) + return render_to_response('forums/templates/user-register.html', context) + +def send_registration_confirmation(user): + p = Profile.objects.get(user=user) + #user.email = "k.sanmugam2@gmail.com" + # Sending email when an answer is posted + subject = 'Account Active Notification' + message = """Dear {0}, + Thank you for registering at {1}. You may activate your account by clicking on this link or copying and pasting it in your browser + {2} + Regards, + Admin + Spoken Tutorials + IIT Bombay. + """.format( + user.username, + "http://spoken-tutorial.org", + "http://spoken-tutorial.org/accounts/confirm/" + str(p.confirmation_code) + "/" + user.username + ) + email = EmailMultiAlternatives( + subject, message, 'administrator@spoken-tutorial.org', + to = [user.email], bcc = [], cc = [], + headers={'Reply-To': 'no-replay@spoken-tutorial.org', "Content-type":"text/html;charset=iso-8859-1"} + ) + #email.attach_alternative(message, "text/html") + try: + result = email.send(fail_silently=False) + except: + pass def user_login(request): if request.user.is_anonymous(): + if request.method == 'POST': form = UserLoginForm(request.POST) + if form.is_valid(): + cleaned_data = form.cleaned_data + user = cleaned_data.get("user") + login(request, user) if 'next' in request.POST: next_url = request.POST.get('next') @@ -19,12 +101,14 @@ def user_login(request): return HttpResponseRedirect('/') else: form = UserLoginForm() + print form.errors next_url = request.GET.get('next') context = { 'form': form, 'next': next_url } + context.update(csrf(request)) return render_to_response('forums/templates/user-login.html', context) else: diff --git a/issue_names.txt b/issue_names.txt new file mode 100644 index 0000000..fa07da1 --- /dev/null +++ b/issue_names.txt @@ -0,0 +1,6 @@ +Bug +Features +Suggestions +Error +Feedback +Request diff --git a/migrate_spoken/views.py b/migrate_spoken/views.py index fc56c25..bbf81bd 100644 --- a/migrate_spoken/views.py +++ b/migrate_spoken/views.py @@ -1,6 +1,6 @@ from django.shortcuts import render from django.http import HttpResponse, HttpResponseRedirect -from website.models import Question, Answer, AnswerComment, Notification +#from website.models import Question, Answer, AnswerComment, Notification from migrate_spoken.models import OldUsers from spoken_auth.models import Users # Create your views here. diff --git a/populate_category.py b/populate_category.py new file mode 100644 index 0000000..339811c --- /dev/null +++ b/populate_category.py @@ -0,0 +1,26 @@ +import os +import datetime +from datetime import timedelta + +Date = datetime.datetime.now() +def populate(): + #file_obj=open("data_of_rc.csv") + #print file_obj + #file_obj.close() + f=open("category_names.txt") + for line in f: + cname=line.replace("\n","") + cat_added=add_category(cname) + f.close() + +def add_category(cname): + cat = FossCategory.objects.get_or_create(name=cname,description=cname,date_created=Date,date_modified=Date)[0]#for now description is same as category_names + print "category " +str(cname)+" added at "+str(Date) + return cat + +# Start execution here! +if __name__ == '__main__': + print "Starting population script for adding category..." + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'forums.settings') + from website.models import * + populate() diff --git a/populate_issue.py b/populate_issue.py new file mode 100644 index 0000000..8ea103c --- /dev/null +++ b/populate_issue.py @@ -0,0 +1,24 @@ +import os +import datetime +from datetime import timedelta + +Date = datetime.datetime.now() +def populate(): + + f=open("issue_names.txt") + for line in f: + cname=line.replace("\n","") + cat_added=add_category(cname) + f.close() + +def add_category(cname): + cat = Issue.objects.get_or_create(name=cname,date_created=Date,date_modified=Date)[0]#for now description is same as category_names + print "category " +str(cname)+" added at "+str(Date) + return cat + +# Start execution here! +if __name__ == '__main__': + print "Starting population script for adding category..." + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'forums.settings') + from website.models import * + populate() diff --git a/requirements.txt b/requirements.txt index 1acb05c..e7beaee 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ Django==1.5 +django-recaptcha==1.0.2 MySQL-python==1.2.4 argparse==1.2.1 beautifulsoup4==4.3.2 diff --git a/static/forums/templates/user-login.html b/static/forums/templates/user-login.html index 350cce5..cb09a06 100644 --- a/static/forums/templates/user-login.html +++ b/static/forums/templates/user-login.html @@ -5,11 +5,11 @@ <div class="row"> <div class="col-lg-6" style="border-right: 1px dashed #424242;"> <h4>Please login with your <br>Spoken-Tutorial.org account.</h4> - <form action="/accounts/login/" method="POST"> {% csrf_token %} + <form action="accounts/login/" method="POST"> {% csrf_token %} {% if form.errors %} <div class="alert alert-danger"> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - Invalid username or password + <b>Invalid username or password</b> </div> {% endif %} {% with WIDGET_ERROR_CLASS='field_error' %} @@ -40,7 +40,7 @@ </ul> <h4>Dont have a Spoken-Tutorial.org account yet ?</h4> <p> - <a class="btn btn-sm btn-success" href="http://www.spoken-tutorial.org/accounts/register/" target="_blank">Register</a> + <a class="btn btn-sm btn-success" href="/accounts/register/" >Register</a> </p> </div> <!-- /.col --> </div> <!-- /.row --> diff --git a/static/forums/templates/user-register.html b/static/forums/templates/user-register.html new file mode 100644 index 0000000..0d88dcc --- /dev/null +++ b/static/forums/templates/user-register.html @@ -0,0 +1,91 @@ +{% extends 'website/templates/base.html' %} +{% load widget_tweaks %} +{% load static %} +{% block title %}Register{% endblock %} + +{% block cssblock %} + <link rel="stylesheet" href="{% static 'website/css/login.css' %}" type="text/css" media="screen" charset="utf-8" /> +{% endblock %} +{% block search %} +{% endblock %} +{% block content %} + <div id="loggit" class="img-rounded"> + <h1><i class="fa fa-pencil"></i> Register Yourself</h1> + <br> + <form id="logForm" method="post" class="form-horizontal">{% csrf_token %} + <div class="form-group"> + <div class="col-xs-12"> + <div class="input-group"> + <span class="input-group-addon"><i class="fa fa-user fa-fw"></i></span> + {% render_field form.username class+="form-control username" tabindex="1" placeholder="Desired Username" %} + </div> + {{ form.username.errors }} + </div> + </div> + <div class="form-group"> + <div class="col-xs-12"> + <div class="input-group"> + <span class="input-group-addon"><i class="fa fa-envelope fa-fw"></i></span> + {% render_field form.email class+="form-control email" tabindex="1" placeholder="Your Email" %} + </div> + {{ form.email.errors }} + </div> + </div> + <div class="form-group"> + <div class="col-xs-12"> + <div class="input-group"> + <span class="input-group-addon"><i class="fa fa-key fa-fw"></i></span> + {% render_field form.password class+="form-control password" tabindex="1" placeholder="Enter password" %} + </div> + {{ form.password.errors }} + </div> + </div> + <div class="form-group"> + <div class="col-xs-12"> + <div class="input-group"> + <span class="input-group-addon"><i class="fa fa-key fa-fw"></i></span> + {% render_field form.password_confirm class+="form-control password_confirm" tabindex="1" placeholder="Retype Password" %} + </div> + {{ form.password_confirm.errors }} + </div> + </div> + <div class="form-group"> + <div class="col-xs-12"> + <div class="input-group captcha-group"> + {% render_field form.captcha class+="form-control captcha" placeholder="Enter Captcha" %} + </div> + {{ form.captcha.errors }} + </div> + </div> + <div class="form-group formSubmit"> + <div class="col-sm-7"> + <p class="text-center">Already Registered? <span><a href="/accounts/login/">Login here</span></a></p> + </div> + <div class="col-sm-5 submitWrap"> + <button type="submit" class="btn btn-primary btn-lg">Register Me</button> + </div> + </div> + </form> + </div> +{% endblock %} +{% block uncompressjsblock %} + <script> + $(function() { + // Add refresh button after field (this can be done in the template as well) + + // Click-handler for the refresh-link + $('.captcha-refresh').click(function(){ + var $form = $(this).parents('form'); + var url = location.protocol + "//" + window.location.hostname + ":"+ location.port + "/captcha/refresh/"; + + // Make the AJAX-call + $.getJSON(url, {}, function(json) { + $form.find('input[name="captcha_0"]').val(json.key); + $form.find('img.captcha').attr('src', json.image_url); + }); + + return false; + }); + }); + </script> +{% endblock %} diff --git a/static/website/css/font-awesome.min.css b/static/website/css/font-awesome.min.css new file mode 100644 index 0000000..ec53d4d --- /dev/null +++ b/static/website/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.2.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}
\ No newline at end of file diff --git a/static/website/css/login.css b/static/website/css/login.css new file mode 100644 index 0000000..9ec8f43 --- /dev/null +++ b/static/website/css/login.css @@ -0,0 +1,111 @@ +#loggit { + color: #fff; + font-family: "Open Sans",sans-serif; + background: #404040; + width: 480px; + margin: 5% auto; + padding: 20px 40px; +} +#loggit .captcha-refresh{ + margin-left: 10px; +} +#loggit .form-control.captcha{ + margin: 5px 0; +} +#loggit .form-group{ + margin-bottom: 20px; +} +#loggit a{ + color: #20B2AA; +} +#loggit a:hover{ + color: #D26800; +} +#loggit h1 { + text-align: center; + font-size: 26px; + font-weight: 700; + margin: 5px 0 15px; +} +#loggit h3 { + text-align: center; + font-size: 14px; + color: #bbb; + margin: 0 0 20px; +} +#loggit .input-group-addon { + border: 0 none; +} +#loggit .form-control { + border: 0 none; +} +#loggit .form-control:focus { + box-shadow: none; +} +#loggit .formSubmit { + margin-bottom: 25px; +} +#loggit .submitWrap { + text-align: right; +} +#loggit .formNotice { + margin: 0; + font-size: 13px; +} +#loggit .formNotice span { + cursor: pointer; + color: #428BCA; +} +#loggit .formNotice span:hover, +#loggit .formNotice span:focus { + color: #2A6496; + text-decoration: underline; +} +#loggit #regForm { + display: none; +} +.errorlist{ + color: #FF4500; + margin-top: 5px; + margin-bottom: 0px; +} +.input-group.captcha-group{ + background-color: #EEE; + border: 1px solid #eee !important; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +/**********************************************************************/ +/****************** MEDIA QUERIES ************************************/ +/********************************************************************/ + +@media(max-width:979px){ + + +} +@media (max-width: 768px) { + body { + padding-bottom: 0; + } + #loggit { + margin-top: 0; + width: 100%; + } + #loggit .submitWrap { + margin-top: 15px; + text-align: center; + } + footer { + position: relative; + } + footer p{ + font-size: 13px; + } + +} +@media (max-width: 500px) { + #loggit { + width: 100%; + } +} diff --git a/static/website/css/yamm-min.css b/static/website/css/yamm-min.css new file mode 100644 index 0000000..5c9c2fe --- /dev/null +++ b/static/website/css/yamm-min.css @@ -0,0 +1 @@ +.yamm .collapse,.yamm .dropdown,.yamm .dropup,.yamm .nav{position:static}.yamm .container{position:relative}.yamm .dropdown-menu{left:auto}.yamm .nav.navbar-right .dropdown-menu{left:auto;right:0}.yamm .yamm-content{padding:20px 30px}.yamm .dropdown.yamm-fw .dropdown-menu{left:0;right:0} diff --git a/static/website/css/yamm.css b/static/website/css/yamm.css new file mode 100644 index 0000000..8a1aa35 --- /dev/null +++ b/static/website/css/yamm.css @@ -0,0 +1,29 @@ +/*! + * Yamm!3 + * Yet another megamenu for Bootstrap 3 + * + * http://geedmo.github.com/yamm3 + */ +.yamm .nav, +.yamm .collapse, +.yamm .dropup, +.yamm .dropdown { + position: static; +} +.yamm .container { + position: relative; +} +.yamm .dropdown-menu { + left: auto; +} +.yamm .nav.navbar-right .dropdown-menu { + left: auto; + right: 0; +} +.yamm .yamm-content { + padding: 20px 30px; +} +.yamm .dropdown.yamm-fw .dropdown-menu { + left: 0; + right: 0; +} diff --git a/static/website/templates/base.html b/static/website/templates/base.html index 86ca41a..d876c70 100644 --- a/static/website/templates/base.html +++ b/static/website/templates/base.html @@ -1,4 +1,5 @@ {% load compress %} + {% load static %} <html> <head> @@ -12,6 +13,7 @@ <link rel="stylesheet" href="{% static 'website/slick/slick.css' %}" type="text/css" media="screen" charset="utf-8" /> <link rel="stylesheet" href="{% static 'website/css/main.css' %}" type="text/css" media="screen" charset="utf-8" /> <link rel="stylesheet" href="{% static 'website/css/nice-bar.css' %}" type="text/css" media="screen" charset="utf-8" /> + <link rel="stylesheet" href="{% static 'website/css/login.css' %}" type="text/css" media="screen" charset="utf-8" /> {% endcompress %} </head> <body> diff --git a/static/website/templates/filter.html b/static/website/templates/filter.html index 8a54c72..eb42fcb 100644 --- a/static/website/templates/filter.html +++ b/static/website/templates/filter.html @@ -27,7 +27,7 @@ <table class="table table-bordered"> <th> FOSS </th> - <th> Tutorial</th> + <!--<th> Tutorial</th>--> <th> Question</th> <th> Date</th> <th> Views</th> @@ -45,15 +45,6 @@ </td> <td> - <span class="tutorial" data-toggle="tooltip" data-placement="top" title="{{ question.tutorial}}"> - {{ question.tutorial|truncatechars:12 }} - </span> - <a class="pull-right" href="{% url 'website:filter' question.category question.tutorial %}?qid={{ question.id }}"> - <span class="glyphicon glyphicon-search"></span> - </a> - </td> - - <td> <span class="title" data-toggle="tooltip" data-placement="top" title="{{ question.title }}"> <a href="{% url 'website:get_question' question.id %}{% prettify question.title %}">{{ question.title|truncatechars:40 }}</a> </span> diff --git a/static/website/templates/get-question.html b/static/website/templates/get-question.html index 4b37652..18758c9 100644 --- a/static/website/templates/get-question.html +++ b/static/website/templates/get-question.html @@ -38,14 +38,7 @@ </a> </small> </span> - - <span class="tutorial"> - <small> - <a href="{% url 'website:filter' question.category question.tutorial %}"> - {{ question.tutorial}} - </a> - </small> - </span> + <a id="question-details-edit" data-toggle="modal" data-target="#detailsModal" href="#" class="hideme"> <span class="glyphicon glyphicon-edit"></span> @@ -202,14 +195,14 @@ <div class="modal-body"> <h5>The Current question is under:</h5> - {{ question.category }} + {{ question.category }} <!-- --> {{ question.tutorial }} {% if question.minute_range != 'None' %} --> {{ question.minute_range }} {% endif %} {% if question.second_range != 'None' %} --> {{ question.second_range}} - {% endif %} + {% endif %}--> <h5>Move the question to:</h5> <div class="row"> diff --git a/static/website/templates/index.html b/static/website/templates/index.html index 95a5360..bad1d6b 100644 --- a/static/website/templates/index.html +++ b/static/website/templates/index.html @@ -60,7 +60,7 @@ <div class="panel-body"> <table class="table table-bordered table-hover"> <th> FOSS </th> - <th> Tutorial</th> + <!--<th> Tutorial</th>--> <th> Question <span class="glyphicon glyphicon-link"></span></th> <th> Date</th> <th> Views</th> @@ -77,14 +77,6 @@ </a> </td> - <td> - <span class="tutorial" data-toggle="tooltip" data-placement="top" title="{{ question.tutorial}}"> - {{ question.tutorial|truncatechars:12 }} - </span> - <a class="pull-right" href="{% url 'website:filter' question.category question.tutorial %}?qid={{ question.id }}"> - <span class="glyphicon glyphicon-search"></span> - </a> - </td> <td> <span class="title" data-toggle="tooltip" data-placement="top" title="{{ question.title }}"> diff --git a/static/website/templates/new-question.html b/static/website/templates/new-question.html index aa135ca..cb0439d 100644 --- a/static/website/templates/new-question.html +++ b/static/website/templates/new-question.html @@ -17,13 +17,13 @@ <div class="col-lg-3 col-md-3 col-sm-3"> {% render_field form.category class+="form-control"%} </div> - <div class="col-lg-3 col-md-3 col-sm-3"> + <!--<div class="col-lg-3 col-md-3 col-sm-3"> {% if category %} {% render_field form.tutorial class+="form-control" %} {% else %} {% render_field form.tutorial class+="form-control" %} {% endif %} - </div> + </div>--> <div class="col-lg-2 col-md-2 col-sm-2"> <small><strong> <a id="similar-link" data-toggle="modal" data-target="#similarModal" href="#"> diff --git a/static/website/templates/questions.html b/static/website/templates/questions.html index 7a259a9..5242236 100644 --- a/static/website/templates/questions.html +++ b/static/website/templates/questions.html @@ -10,7 +10,7 @@ </h4> <table class="table table-bordered table-hover"> <th> FOSS </th> - <th> Tutorial</th> + <!--<th> Tutorial</th>--> <th> Min </th> <th> Sec </th> <th> Question <span class="glyphicon glyphicon-link"></span></th> @@ -38,7 +38,7 @@ </a> </td> - <td> + <!--<td> <span> <a href="{% url 'website:filter' question.category question.tutorial %}?qid={{ question.id }}"> {{ question.minute_range }} @@ -52,7 +52,7 @@ {{ question.second_range }} </a> </span> - </td> + </td>--> <td> <span class="title" data-toggle="tooltip" data-placement="top" title="{{ question.title }}"> diff --git a/website/forms.py b/website/forms.py index 14f4d2d..d6f281c 100644 --- a/website/forms.py +++ b/website/forms.py @@ -4,11 +4,22 @@ from website.models import * #from spoken_auth.models import TutorialDetails from django.db.models import Q class NewQuestionForm(forms.ModelForm): - category = forms.ModelChoiceField(widget = forms.Select(attrs = {}), queryset = FossCategory.objects.order_by('name'), empty_label = "Select a category", error_messages = {'required':'Categoty field required.'}) - tutorial = forms.ModelChoiceField(widget = forms.Select(attrs = {}), queryset = Issue.objects.order_by('name'), empty_label = "Select a Issue", error_messages = {'required':'Issue field required.'}) + category = forms.ModelChoiceField(widget = forms.Select(attrs = {}), + queryset = FossCategory.objects.order_by('name'), + empty_label = "Select a category", + error_messages = {'required':'Categoty field required.'}) + + '''tutorial = forms.ModelChoiceField(widget = forms.Select(attrs = {}), q + ueryset = Issue.objects.order_by('name'), + empty_label = "Select a Issue", + error_messages = {'required':'Issue field required.'})''' + '''class Meta: + model = Question + fields = ['category', 'tutorial', 'title', 'body']''' + class Meta: model = Question - fields = ['category', 'tutorial', 'title', 'body'] + fields = ['category', 'title', 'body'] def __init__(self, *args, **kwargs): category = kwargs.pop('category', None) diff --git a/website/models.py b/website/models.py index e6816f3..0e11a4c 100644 --- a/website/models.py +++ b/website/models.py @@ -23,14 +23,16 @@ class Issue(models.Model): class Question(models.Model): user = models.ForeignKey(User) category = models.ForeignKey(FossCategory) - tutorial = models.ForeignKey(Issue) + #tutorial = models.ForeignKey(Issue) title = models.CharField(max_length=200) body = models.TextField() date_created = models.DateTimeField(auto_now_add=True) date_modified = models.DateTimeField(auto_now=True) views = models.IntegerField(default=1) # votes = models.IntegerField(default=0) - + def __unicode__(self): + return self.user + class Meta: get_latest_by = "date_created" diff --git a/website/views.py b/website/views.py index d80835d..9b413e5 100644 --- a/website/views.py +++ b/website/views.py @@ -212,7 +212,7 @@ def new_question(request): question = Question() question.user = request.user question.category = cleaned_data['category'] - question.tutorial = cleaned_data['tutorial'] + #question.tutorial = cleaned_data['tutorial'] question.title = cleaned_data['title'] question.body = cleaned_data['body'].encode('unicode_escape') question.views= 1 @@ -224,12 +224,12 @@ def new_question(request): The following new question has been posted in the Spoken Tutorial Forum: <br> Title: <b>{0}</b><br> Category: <b>{1}</b><br> - Tutorial: <b>{2}</b><br> - Link: <a href="{3}">{3}</a><br> + + Link: <a href="{2}">{2}</a><br> """.format( question.title, question.category, - question.tutorial, + #question.tutorial, 'http://forums.spoken-tutorial.org/question/'+str(question.id) ) email = EmailMultiAlternatives( @@ -255,14 +255,16 @@ def new_question(request): # Notification Section @login_required def user_questions(request, user_id): + print "user_id" + print user_id marker = 0 if 'marker' in request.GET: marker = int(request.GET['marker']) if str(user_id) == str(request.user.id): - total = Question.objects.filter(uid=user_id).count() + total = Question.objects.filter(user_id=user_id).count() total = int(total - (total % 10 - 10)) - questions = Question.objects.filter(uid=user_id).order_by('date_created').reverse()[marker:marker+10] + questions = Question.objects.filter(user_id=user_id).order_by('date_created').reverse()[marker:marker+10] context = { 'questions': questions, |