diff --git a/.gitignore b/.gitignore index 9badde2..6b2f6ca 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,4 @@ src staticfiles/* cache/ celerybeat-schedule - +celerybeat.pid diff --git a/config/settings/common.py b/config/settings/common.py index 980156d..7ec5bf8 100644 --- a/config/settings/common.py +++ b/config/settings/common.py @@ -81,9 +81,11 @@ THIRD_PARTY_APPS = ( 'stdimage', 'rest_framework', 'draceditor', - 'haystack', 'djconfig', + + 'corsheaders', + 'spirit.core', 'spirit.admin', 'spirit.search', @@ -111,6 +113,16 @@ THIRD_PARTY_APPS = ( 'spirit.comment.history', 'spirit.comment.like', 'spirit.comment.poll', + + 'django_nyt', + 'mptt', + 'sekizai', + 'sorl.thumbnail', + 'wiki', + 'wiki.plugins.attachments', + 'wiki.plugins.notifications', + 'wiki.plugins.images', + 'wiki.plugins.macros', ) # Apps specific for this project go here. @@ -124,6 +136,7 @@ LOCAL_APPS = ( 'mhackspace.contact', 'mhackspace.members', 'mhackspace.blog', + 'mhackspace.core', 'mhackspace.requests', ) @@ -136,6 +149,7 @@ MIDDLEWARE = ( 'django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', + 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', @@ -247,6 +261,7 @@ TEMPLATES = [ 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.contrib.messages.context_processors.messages', + 'sekizai.context_processors.sekizai', # Your stuff: custom template context processors go here 'djconfig.context_processors.config', ], @@ -429,3 +444,9 @@ REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination', 'PAGE_SIZE': 50 } + +# Deprecated need removing, sorl plugin still expects TEMPLATE_DEBUG so for now we need it just for this plugin +TEMPLATE_DEBUG = False +CORS_ORIGIN_WHITELIST = ( + 'matrix.org' +) diff --git a/config/settings/local.py b/config/settings/local.py index 37a23f2..951f960 100644 --- a/config/settings/local.py +++ b/config/settings/local.py @@ -99,3 +99,4 @@ WHITENOISE_AUTOREFRESH = True WHITENOISE_USE_FINDERS = True PAYMENT_PROVIDERS['gocardless']['redirect_url'] = 'http://127.0.0.1:8180' +TEMPLATE_DEBUG = False diff --git a/config/urls.py b/config/urls.py index 56d7cba..4595b9d 100644 --- a/config/urls.py +++ b/config/urls.py @@ -21,8 +21,9 @@ from mhackspace.blog.sitemaps import PostSitemap, CategorySitemap from mhackspace.feeds.views import FeedViewSet, ArticleViewSet from mhackspace.requests.views import RequestsForm, RequestsList +from wiki.urls import get_pattern as get_wiki_pattern +from django_nyt.urls import get_pattern as get_nyt_pattern -# import spirit.urls router = DefaultRouter() router.register(r'posts', PostViewSet) router.register(r'categories', CategoryViewSet) @@ -54,7 +55,7 @@ urlpatterns = [ url(r'^blog/$', PostList.as_view(), name='blog'), url(r'^blog/rss/$', BlogFeed(), name='blog-rss'), url(r'^rss.xml$', RssFeed(), name='main-rss'), - url(r'^blog/(?P[0-9A-Za-z_\-]+)/$', BlogPost.as_view(), name='blog-item'), + url(r'^blog/(?P[0-9A-Za-z_\-]+)/$', BlogPost.as_view, name='blog-item'), url(r'^blog/category/(?P[0-9A-Za-z_\-]+)/$', PostList.as_view(), name='blog-category'), url(r'^blog/category/(?P[0-9A-Za-z_\-]+)/rss/$', BlogCategoryFeed(), name='blog-category-feed'), url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, @@ -84,7 +85,10 @@ urlpatterns = [ url(r'^reset/done/$', auth_views.password_reset_complete, name='password_reset_complete'), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) - +urlpatterns += [ + url(r'^notifications/', get_nyt_pattern()), + url(r'^wiki/', get_wiki_pattern(), name='wiki') +] if settings.DEBUG: # This allows the error pages to be debugged during development, just visit # these url in browser to see how these error pages look like. diff --git a/mhackspace/base/tasks.py b/mhackspace/base/tasks.py index f1718c8..58f1aac 100644 --- a/mhackspace/base/tasks.py +++ b/mhackspace/base/tasks.py @@ -5,12 +5,3 @@ from mhackspace.feeds.helper import import_feeds @shared_task def update_homepage_feeds(): return import_feeds() - -# @task(bind=True) -# @app.on_after_configure.connect -# def setup_periodic_tasks(sender, **kwargs): -# # Executes every Monday morning at 7:30 a.m. -# sender.add_periodic_task( -# crontab(hour=4, minute=0), -# update_homepage_feeds.s(), -# ) diff --git a/mhackspace/core/templatetags/__init__.py b/mhackspace/core/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/mhackspace/core/templatetags/addcss.py b/mhackspace/core/templatetags/addcss.py new file mode 100644 index 0000000..5af5e65 --- /dev/null +++ b/mhackspace/core/templatetags/addcss.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- +from django import template +register = template.Library() + + +@register.filter(name='addcss') +def addcss(field, css): + return field.as_widget(attrs={"class": css}) diff --git a/mhackspace/requests/migrations/0004_auto_20170904_1252.py b/mhackspace/requests/migrations/0004_auto_20170904_1252.py new file mode 100644 index 0000000..394956b --- /dev/null +++ b/mhackspace/requests/migrations/0004_auto_20170904_1252.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.4 on 2017-09-04 12:52 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('requests', '0003_userrequests_request_type'), + ] + + operations = [ + migrations.AlterModelOptions( + name='userrequests', + options={'ordering': ('cost',)}, + ), + migrations.AddField( + model_name='userrequests', + name='cost', + field=models.DecimalField(decimal_places=2, default=0.0, max_digits=4), + preserve_default=False, + ), + ] diff --git a/mhackspace/requests/migrations/0005_auto_20170904_1310.py b/mhackspace/requests/migrations/0005_auto_20170904_1310.py new file mode 100644 index 0000000..614366f --- /dev/null +++ b/mhackspace/requests/migrations/0005_auto_20170904_1310.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.4 on 2017-09-04 13:10 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('requests', '0004_auto_20170904_1252'), + ] + + operations = [ + migrations.AlterField( + model_name='userrequests', + name='cost', + field=models.DecimalField(decimal_places=2, help_text='Leave blank, if no associated cost, or add estimated cost if not sure.', max_digits=4), + ), + migrations.AlterField( + model_name='userrequests', + name='user', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/mhackspace/requests/models.py b/mhackspace/requests/models.py index ed388e4..f46ed23 100644 --- a/mhackspace/requests/models.py +++ b/mhackspace/requests/models.py @@ -6,17 +6,36 @@ from django.utils import timezone REQUEST_TYPES = ( - (1, 'Equipment request'), - (2, 'Educational request'), - (3, 'Training request')) + (0, 'Equipment request'), + (1, 'Educational request'), + (2, 'Training request')) class UserRequests(models.Model): - user = models.OneToOneField( - settings.AUTH_USER_MODEL, related_name='+') - request_type = models.IntegerField(choices=REQUEST_TYPES) + user = models.ForeignKey( + settings.AUTH_USER_MODEL, + related_name='+' + ) + request_type = models.IntegerField(choices=REQUEST_TYPES, null=False) + cost = models.DecimalField( + max_digits=4, + decimal_places=2, + help_text='Leave blank, if no associated cost, or add estimated cost if not sure.' + ) description = models.TextField() created_date = models.DateTimeField(default=timezone.now) class Meta: - ordering = ('pk',) + ordering = ('cost',) + + def request_type_string(self): + return REQUEST_TYPES[self.request_type][1] + +# class UserRequestComments(models.Model): +# user = models.OneToOneField( +# settings.AUTH_USER_MODEL, related_name='+') +# comment = models.TextField() +# created_date = models.DateTimeField(default=timezone.now) + +# class Meta: +# ordering = ('created_date',) diff --git a/mhackspace/templates/base.html b/mhackspace/templates/base.html index b9f4fa3..997c3bc 100644 --- a/mhackspace/templates/base.html +++ b/mhackspace/templates/base.html @@ -1,6 +1,7 @@ {% load sass_tags %} {% load i18n compress %} {% load static from staticfiles %} +{% load sekizai_tags i18n wiki_tags static %} @@ -83,7 +84,7 @@