diff options
-rw-r--r-- | pyfoss/settings.py | 10 | ||||
-rw-r--r-- | static/website/templates/page.html | 48 | ||||
-rw-r--r-- | website/models.py | 31 | ||||
-rw-r--r-- | website/views.py | 64 |
4 files changed, 118 insertions, 35 deletions
diff --git a/pyfoss/settings.py b/pyfoss/settings.py index 2eae224..de362a9 100644 --- a/pyfoss/settings.py +++ b/pyfoss/settings.py @@ -1,6 +1,6 @@ #Custom settings for pyfoss project. from os.path import * -from config import DB_NAME_DEFAULT, DB_USER_DEFAULT, DB_PASS_DEFAULT, DB_HOST_DEFAULT, DB_PORT_DEFAULT, DB_NAME_FOSSEEIN, DB_USER_FOSSEEIN, DB_PASS_FOSSEEIN, DB_HOST_FOSSEEIN, DB_PORT_FOSSEEIN +from config import DB_NAME_DEFAULT, DB_USER_DEFAULT, DB_PASS_DEFAULT, DB_HOST_DEFAULT, DB_PORT_DEFAULT, DB_NAME_FOSSEEIN, DB_USER_FOSSEEIN, DB_PASS_FOSSEEIN, DB_HOST_FOSSEEIN, DB_PORT_FOSSEEIN, DB_NAME_TBC_PYTHON, DB_USER_TBC_PYTHON, DB_PASS_TBC_PYTHON, DB_HOST_TBC_PYTHON, DB_PORT_TBC_PYTHON PROJECT_DIR = abspath(dirname(__file__) + '/../') PYFOSS_DIR = PROJECT_DIR + '/pyfoss/' @@ -45,6 +45,14 @@ DATABASES = { 'PASSWORD': DB_PASS_FOSSEEIN, 'HOST': DB_HOST_FOSSEEIN, # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP. 'PORT': DB_PORT_FOSSEEIN, # Set to empty string for default. + }, + 'tbcpython': { + 'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. + 'NAME': DB_NAME_TBC_PYTHON, # Or path to database file if using sqlite3. + 'USER': DB_USER_TBC_PYTHON, + 'PASSWORD': DB_PASS_TBC_PYTHON, + 'HOST': DB_HOST_TBC_PYTHON, # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP. + 'PORT': DB_PORT_TBC_PYTHON, # Set to empty string for default. } } diff --git a/static/website/templates/page.html b/static/website/templates/page.html index f9f3eb0..2d41715 100644 --- a/static/website/templates/page.html +++ b/static/website/templates/page.html @@ -155,7 +155,51 @@ </div> </div> </div> - </div> <!-- /content --> + </div> + {% elif permalink == 'textbook-companions-for-academics' %} + <div id="content" class="col-lg-10 col-md-10 col-sm-10"> + + <h3>Textbook Companions (TBC) for Academics </h3> + <br> + <p> + {% if page.content %} + {{ page.content|safe }} + {% endif %} + </p> + <div class="panel panel-default"> + <div class="panel-heading"> + <h4 class="panel-title"> + <a data-toggle="collapse" data-parent="#accordion" href="#collapsestats"> + List of completed books + </a> + </h4> + </div> + <div id="collapsestats" class="panel-collapse collapse"> + <div class="panel-body"> + <p> + <table id= "tbctable" class="tablesorter table table table-striped table-hover"> + <thead> + <tr> + <th>Sr No.</th> + <th>Book</th> + + </tr> + </thead> + <tbody> + {% for b in obj %} + <tr> + <td>{{ forloop.counter }}</td> + <td><a href="http://tbc-python.fossee.in/book-details/{{ b.id }}" target="_blank">{{ b.title }} by {{ b.author }}</a></td> + </tr> + {% endfor %} + </tbody> + </table> + </p> + </div> + </div> + </div> + </div> + <!-- /content --> {% else %} <div id="content" class="col-lg-10 col-md-10 col-sm-10"> <h3>{{ page.heading }} </h3> @@ -260,7 +304,7 @@ <script type="text/javascript"> $(document).ready(function() { - $("#statstable").tablesorter(); + $("#tbctable").tablesorter(); } ); </script> diff --git a/website/models.py b/website/models.py index 7afce12..8237839 100644 --- a/website/models.py +++ b/website/models.py @@ -72,6 +72,20 @@ Models from fossee_new Database created using inspectdb Use it with the "fossee_in" database eg:using("fossee_in") These models are used only for django orm reference. """ +CATEGORY = (("fluid mechanics", "Fluid Mechanics"), + ("control systems", "Control Theory & Control Systems"), + ("chemical engineering", "Chemical Engineering"), + ("thermodynamics", "Thermodynamics"), + ("mechanical engineering", "Mechanical Engineering"), + ("signal processing", "Signal Processing"), + ("digital communications", "Digital Communications"), + ("electrical technology", "Electrical Technology"), + ("maths & science", "Mathematics & Pure Science"), + ("analog electronics", "Analog Electronics"), + ("digital electronics", "Digital Electronics"), + ("computer programming", "Computer Programming"), + ("others", "Others")) + class FOSSEEStats(models.Model): w_id = models.IntegerField(unique=True, primary_key=True) foss_name = models.CharField(max_length=500) @@ -93,3 +107,20 @@ class FOSSEEStats(models.Model): class Meta: db_table = 'workshop' +class TBCPYTHONBook(models.Model): + title = models.CharField(max_length=500) + author = models.CharField(max_length=300) + category = models.CharField(max_length=32, choices=CATEGORY) + publisher_place = models.CharField(max_length=150) + isbn = models.CharField(max_length=50) + edition = models.CharField(max_length=15) + year_of_pub = models.CharField(max_length=4) + no_chapters = models.IntegerField(default=0, blank=True) + contributor = models.IntegerField(default=0, blank=True) + reviewer = models.IntegerField(default=0, blank=True) + approved = models.BooleanField(default=False) + start_time = models.DateField(null=True, default=None) + end_time = models.DateField(null=True, default=None) + class Meta: + db_table = 'tbc_book' + diff --git a/website/views.py b/website/views.py index c0a61e1..1b9b914 100644 --- a/website/views.py +++ b/website/views.py @@ -1,6 +1,6 @@ from django.http import HttpResponse from django.shortcuts import render, render_to_response, get_object_or_404 -from website.models import FOSSEEStats +from website.models import FOSSEEStats, TBCPYTHONBook from website.models import Nav, Page, Block @@ -20,50 +20,50 @@ def block_sort(obj): return items def get_blocks(): - sidebar = Block.objects.get(block_name = "sidebar") - footer = Block.objects.get(block_name = "footer") - blocks = { - 'navs': Nav.objects.order_by('position'), - 'sidebar': block_sort(sidebar), - 'footer': block_sort(footer) - } - return blocks + sidebar = Block.objects.get(block_name = "sidebar") + footer = Block.objects.get(block_name = "footer") + blocks = { + 'navs': Nav.objects.order_by('position'), + 'sidebar': block_sort(sidebar), + 'footer': block_sort(footer) + } + return blocks def dispatcher(request, permalink=''): + context = {} + if permalink == 'python-workshops': blocks = get_blocks() rows = FOSSEEStats.objects.using('fossee_in').filter(foss_name='Python', type ='Workshop').order_by('-w_id') python_wokshop_page_content = Page.objects.get(permalink='python-workshops-page') - context = { - 'page' : python_wokshop_page_content, - 'navs': blocks['navs'], - 'sidebar': blocks['sidebar'], - 'footer': blocks['footer'], - 'permalink': permalink, - 'obj' : rows, - } + context['page'] = python_wokshop_page_content + context['permalink'] = permalink + context['obj'] = rows + + if permalink == 'textbook-companions-for-academics': + blocks = get_blocks() + textbook_companions_for_academics = Page.objects.get(permalink='textbook-companions-for-academics-page') + completed_books = TBCPYTHONBook.objects.using('tbcpython').values('id', 'title', 'author').filter(approved=True).order_by('id') + + context['page'] = textbook_companions_for_academics + context['permalink'] = permalink + context['obj'] = completed_books if permalink == '' or permalink == 'home' : permalink = 'home' page = get_object_or_404(Page, permalink=permalink) blocks = get_blocks() - context = { - 'page': page, - 'navs': blocks['navs'], - 'sidebar': blocks['sidebar'], - 'footer': blocks['footer'], - 'permalink': permalink - } + context['page'] = page + context['permalink'] = permalink - if permalink != 'home' and permalink != 'python-workshops': + if permalink != 'home' and permalink != 'python-workshops' and permalink != 'textbook-companions-for-academics': page = get_object_or_404(Page, permalink=permalink) blocks = get_blocks() - context = { - 'page': page, - 'navs': blocks['navs'], - 'sidebar': blocks['sidebar'], - 'footer': blocks['footer'], - 'permalink': permalink - } + context['page'] = page + context['permalink'] = permalink + + context['navs'] = blocks['navs'] + context['sidebar'] = blocks['sidebar'] + context['footer'] = blocks['footer'] return render(request, 'website/templates/page.html', context) |