implemented django wiki, created requests page, and added to nav
This commit is contained in:
		
							parent
							
								
									10024c6646
								
							
						
					
					
						commit
						fbaa7fb50d
					
				| 
						 | 
					@ -7,4 +7,4 @@ src
 | 
				
			||||||
staticfiles/*
 | 
					staticfiles/*
 | 
				
			||||||
cache/
 | 
					cache/
 | 
				
			||||||
celerybeat-schedule
 | 
					celerybeat-schedule
 | 
				
			||||||
 | 
					celerybeat.pid
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -81,9 +81,11 @@ THIRD_PARTY_APPS = (
 | 
				
			||||||
    'stdimage',
 | 
					    'stdimage',
 | 
				
			||||||
    'rest_framework',
 | 
					    'rest_framework',
 | 
				
			||||||
    'draceditor',
 | 
					    'draceditor',
 | 
				
			||||||
 | 
					 | 
				
			||||||
    'haystack',
 | 
					    'haystack',
 | 
				
			||||||
    'djconfig',
 | 
					    'djconfig',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    'corsheaders',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    'spirit.core',
 | 
					    'spirit.core',
 | 
				
			||||||
    'spirit.admin',
 | 
					    'spirit.admin',
 | 
				
			||||||
    'spirit.search',
 | 
					    'spirit.search',
 | 
				
			||||||
| 
						 | 
					@ -111,6 +113,16 @@ THIRD_PARTY_APPS = (
 | 
				
			||||||
    'spirit.comment.history',
 | 
					    'spirit.comment.history',
 | 
				
			||||||
    'spirit.comment.like',
 | 
					    'spirit.comment.like',
 | 
				
			||||||
    'spirit.comment.poll',
 | 
					    '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.
 | 
					# Apps specific for this project go here.
 | 
				
			||||||
| 
						 | 
					@ -124,6 +136,7 @@ LOCAL_APPS = (
 | 
				
			||||||
    'mhackspace.contact',
 | 
					    'mhackspace.contact',
 | 
				
			||||||
    'mhackspace.members',
 | 
					    'mhackspace.members',
 | 
				
			||||||
    'mhackspace.blog',
 | 
					    'mhackspace.blog',
 | 
				
			||||||
 | 
					    'mhackspace.core',
 | 
				
			||||||
    'mhackspace.requests',
 | 
					    'mhackspace.requests',
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -136,6 +149,7 @@ MIDDLEWARE = (
 | 
				
			||||||
    'django.middleware.security.SecurityMiddleware',
 | 
					    'django.middleware.security.SecurityMiddleware',
 | 
				
			||||||
    'whitenoise.middleware.WhiteNoiseMiddleware',
 | 
					    'whitenoise.middleware.WhiteNoiseMiddleware',
 | 
				
			||||||
    'django.contrib.sessions.middleware.SessionMiddleware',
 | 
					    'django.contrib.sessions.middleware.SessionMiddleware',
 | 
				
			||||||
 | 
					    'corsheaders.middleware.CorsMiddleware',
 | 
				
			||||||
    'django.middleware.common.CommonMiddleware',
 | 
					    'django.middleware.common.CommonMiddleware',
 | 
				
			||||||
    'django.middleware.csrf.CsrfViewMiddleware',
 | 
					    'django.middleware.csrf.CsrfViewMiddleware',
 | 
				
			||||||
    'django.contrib.auth.middleware.AuthenticationMiddleware',
 | 
					    'django.contrib.auth.middleware.AuthenticationMiddleware',
 | 
				
			||||||
| 
						 | 
					@ -247,6 +261,7 @@ TEMPLATES = [
 | 
				
			||||||
                'django.template.context_processors.static',
 | 
					                'django.template.context_processors.static',
 | 
				
			||||||
                'django.template.context_processors.tz',
 | 
					                'django.template.context_processors.tz',
 | 
				
			||||||
                'django.contrib.messages.context_processors.messages',
 | 
					                'django.contrib.messages.context_processors.messages',
 | 
				
			||||||
 | 
					                'sekizai.context_processors.sekizai',
 | 
				
			||||||
                # Your stuff: custom template context processors go here
 | 
					                # Your stuff: custom template context processors go here
 | 
				
			||||||
                'djconfig.context_processors.config',
 | 
					                'djconfig.context_processors.config',
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
| 
						 | 
					@ -429,3 +444,9 @@ REST_FRAMEWORK = {
 | 
				
			||||||
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
 | 
					    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
 | 
				
			||||||
    'PAGE_SIZE': 50
 | 
					    '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'
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -99,3 +99,4 @@ WHITENOISE_AUTOREFRESH = True
 | 
				
			||||||
WHITENOISE_USE_FINDERS = True
 | 
					WHITENOISE_USE_FINDERS = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PAYMENT_PROVIDERS['gocardless']['redirect_url'] = 'http://127.0.0.1:8180'
 | 
					PAYMENT_PROVIDERS['gocardless']['redirect_url'] = 'http://127.0.0.1:8180'
 | 
				
			||||||
 | 
					TEMPLATE_DEBUG = False
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,8 +21,9 @@ from mhackspace.blog.sitemaps import PostSitemap, CategorySitemap
 | 
				
			||||||
from mhackspace.feeds.views import FeedViewSet, ArticleViewSet
 | 
					from mhackspace.feeds.views import FeedViewSet, ArticleViewSet
 | 
				
			||||||
from mhackspace.requests.views import RequestsForm, RequestsList
 | 
					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 = DefaultRouter()
 | 
				
			||||||
router.register(r'posts', PostViewSet)
 | 
					router.register(r'posts', PostViewSet)
 | 
				
			||||||
router.register(r'categories', CategoryViewSet)
 | 
					router.register(r'categories', CategoryViewSet)
 | 
				
			||||||
| 
						 | 
					@ -54,7 +55,7 @@ urlpatterns = [
 | 
				
			||||||
    url(r'^blog/$', PostList.as_view(), name='blog'),
 | 
					    url(r'^blog/$', PostList.as_view(), name='blog'),
 | 
				
			||||||
    url(r'^blog/rss/$', BlogFeed(), name='blog-rss'),
 | 
					    url(r'^blog/rss/$', BlogFeed(), name='blog-rss'),
 | 
				
			||||||
    url(r'^rss.xml$', RssFeed(), name='main-rss'),
 | 
					    url(r'^rss.xml$', RssFeed(), name='main-rss'),
 | 
				
			||||||
    url(r'^blog/(?P<slug>[0-9A-Za-z_\-]+)/$', BlogPost.as_view(), name='blog-item'),
 | 
					    url(r'^blog/(?P<slug>[0-9A-Za-z_\-]+)/$', BlogPost.as_view, name='blog-item'),
 | 
				
			||||||
    url(r'^blog/category/(?P<category>[0-9A-Za-z_\-]+)/$', PostList.as_view(), name='blog-category'),
 | 
					    url(r'^blog/category/(?P<category>[0-9A-Za-z_\-]+)/$', PostList.as_view(), name='blog-category'),
 | 
				
			||||||
    url(r'^blog/category/(?P<category>[0-9A-Za-z_\-]+)/rss/$', BlogCategoryFeed(), name='blog-category-feed'),
 | 
					    url(r'^blog/category/(?P<category>[0-9A-Za-z_\-]+)/rss/$', BlogCategoryFeed(), name='blog-category-feed'),
 | 
				
			||||||
    url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps},
 | 
					    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'),
 | 
					    url(r'^reset/done/$', auth_views.password_reset_complete, name='password_reset_complete'),
 | 
				
			||||||
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
 | 
					] + 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:
 | 
					if settings.DEBUG:
 | 
				
			||||||
    # This allows the error pages to be debugged during development, just visit
 | 
					    # This allows the error pages to be debugged during development, just visit
 | 
				
			||||||
    # these url in browser to see how these error pages look like.
 | 
					    # these url in browser to see how these error pages look like.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,12 +5,3 @@ from mhackspace.feeds.helper import import_feeds
 | 
				
			||||||
@shared_task
 | 
					@shared_task
 | 
				
			||||||
def update_homepage_feeds():
 | 
					def update_homepage_feeds():
 | 
				
			||||||
    return import_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(),
 | 
					 | 
				
			||||||
#     )
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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})
 | 
				
			||||||
| 
						 | 
					@ -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,
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
| 
						 | 
					@ -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),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
| 
						 | 
					@ -6,17 +6,36 @@ from django.utils import timezone
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
REQUEST_TYPES = (
 | 
					REQUEST_TYPES = (
 | 
				
			||||||
    (1, 'Equipment request'),
 | 
					    (0, 'Equipment request'),
 | 
				
			||||||
    (2, 'Educational request'),
 | 
					    (1, 'Educational request'),
 | 
				
			||||||
    (3, 'Training request'))
 | 
					    (2, 'Training request'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class UserRequests(models.Model):
 | 
					class UserRequests(models.Model):
 | 
				
			||||||
    user = models.OneToOneField(
 | 
					    user = models.ForeignKey(
 | 
				
			||||||
        settings.AUTH_USER_MODEL, related_name='+')
 | 
					        settings.AUTH_USER_MODEL,
 | 
				
			||||||
    request_type = models.IntegerField(choices=REQUEST_TYPES)
 | 
					        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()
 | 
					    description = models.TextField()
 | 
				
			||||||
    created_date = models.DateTimeField(default=timezone.now)
 | 
					    created_date = models.DateTimeField(default=timezone.now)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    class Meta:
 | 
					    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',)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
{% load sass_tags %}
 | 
					{% load sass_tags %}
 | 
				
			||||||
{% load i18n compress %}
 | 
					{% load i18n compress %}
 | 
				
			||||||
{% load static from staticfiles %}
 | 
					{% load static from staticfiles %}
 | 
				
			||||||
 | 
					{% load sekizai_tags i18n wiki_tags static %}
 | 
				
			||||||
<!DOCTYPE html>
 | 
					<!DOCTYPE html>
 | 
				
			||||||
<html lang="en">
 | 
					<html lang="en">
 | 
				
			||||||
<head>
 | 
					<head>
 | 
				
			||||||
| 
						 | 
					@ -83,7 +84,7 @@
 | 
				
			||||||
    <div class="collapse navbar-collapse" id="navbarMainMenu">
 | 
					    <div class="collapse navbar-collapse" id="navbarMainMenu">
 | 
				
			||||||
      <ul class="navbar-nav mr-auto">
 | 
					      <ul class="navbar-nav mr-auto">
 | 
				
			||||||
        <li class="nav-item">
 | 
					        <li class="nav-item">
 | 
				
			||||||
          <a class="nav-link" href="{% url 'home' %}">Home</a>
 | 
					          <a class="nav-link" href="{% url 'home' %}"><span class="fa fa-home" >Home</span></a>
 | 
				
			||||||
        </li>
 | 
					        </li>
 | 
				
			||||||
        <li class="nav-item">
 | 
					        <li class="nav-item">
 | 
				
			||||||
          <a class="nav-link" href="{% url 'about' %}">About</a>
 | 
					          <a class="nav-link" href="{% url 'about' %}">About</a>
 | 
				
			||||||
| 
						 | 
					@ -94,6 +95,12 @@
 | 
				
			||||||
        <li class="nav-item">
 | 
					        <li class="nav-item">
 | 
				
			||||||
          <a class="nav-link" href="{% url 'blog' %}">Blog</a>
 | 
					          <a class="nav-link" href="{% url 'blog' %}">Blog</a>
 | 
				
			||||||
        </li>
 | 
					        </li>
 | 
				
			||||||
 | 
					        <li class="nav-item">
 | 
				
			||||||
 | 
					          <a class="nav-link" href="{% url 'wiki:root' %}">Wiki</a>
 | 
				
			||||||
 | 
					        </li>
 | 
				
			||||||
 | 
					        <li class="nav-item">
 | 
				
			||||||
 | 
					          <a class="nav-link" href="{% url 'spirit:index' %}">Forum</a>
 | 
				
			||||||
 | 
					        </li>
 | 
				
			||||||
        <li class="nav-item">
 | 
					        <li class="nav-item">
 | 
				
			||||||
          <a class="nav-link" href="{% url 'contact' %}">Contact</a>
 | 
					          <a class="nav-link" href="{% url 'contact' %}">Contact</a>
 | 
				
			||||||
        </li>
 | 
					        </li>
 | 
				
			||||||
| 
						 | 
					@ -109,12 +116,10 @@
 | 
				
			||||||
              Member Area
 | 
					              Member Area
 | 
				
			||||||
            </a>
 | 
					            </a>
 | 
				
			||||||
            <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
 | 
					            <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
 | 
				
			||||||
 | 
					              <a class="dropdown-item" href="{% url 'users:detail' request.user.username %}">{% trans "My Profile" %}</a>
 | 
				
			||||||
              <a class="dropdown-item" href="{% url 'members' %}">Members</a>
 | 
					              <a class="dropdown-item" href="{% url 'members' %}">Members</a>
 | 
				
			||||||
          <a class="dropdown-item" href="{# url 'equipment' #}">Equipment</a>
 | 
					              <a class="dropdown-item" href="{% url 'requests' %}">Equipment</a>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
      </li>
 | 
					 | 
				
			||||||
          <li class="nav-item">
 | 
					 | 
				
			||||||
            <a class="nav-link" href="{% url 'users:detail' request.user.username %}">{% trans "My Profile" %}</a>
 | 
					 | 
				
			||||||
          </li>
 | 
					          </li>
 | 
				
			||||||
          <li class="nav-item">
 | 
					          <li class="nav-item">
 | 
				
			||||||
            <a class="nav-link" href="{% url 'account_logout' %}">{% trans "Sign Out" %}</a>
 | 
					            <a class="nav-link" href="{% url 'account_logout' %}">{% trans "Sign Out" %}</a>
 | 
				
			||||||
| 
						 | 
					@ -148,6 +153,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<footer class="footer">
 | 
					<footer class="footer">
 | 
				
			||||||
  <div class="container">
 | 
					  <div class="container">
 | 
				
			||||||
 | 
					    {% block footer-left %}{% endblock footer-left %}
 | 
				
			||||||
    <span class="text-muted">© {% now "Y" %} Maidstone Hackspace</span>
 | 
					    <span class="text-muted">© {% now "Y" %} Maidstone Hackspace</span>
 | 
				
			||||||
    <div class="float-right">
 | 
					    <div class="float-right">
 | 
				
			||||||
      <a href="https://github.com/maidstone-hackspace/" target="_blank"><i class="fa fa-github"></i></a>
 | 
					      <a href="https://github.com/maidstone-hackspace/" target="_blank"><i class="fa fa-github"></i></a>
 | 
				
			||||||
| 
						 | 
					@ -182,6 +188,7 @@
 | 
				
			||||||
  </script>
 | 
					  </script>
 | 
				
			||||||
  <script async src="https://www.google-analytics.com/analytics.js"></script>
 | 
					  <script async src="https://www.google-analytics.com/analytics.js"></script>
 | 
				
			||||||
  {% endblock javascript %}
 | 
					  {% endblock javascript %}
 | 
				
			||||||
 | 
					  {% render_block "js" %}
 | 
				
			||||||
</body>
 | 
					</body>
 | 
				
			||||||
</html>
 | 
					</html>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,23 +6,50 @@
 | 
				
			||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
  <h2>Requests</h2>
 | 
					  <h2>Requests</h2>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <div class="row">
 | 
				
			||||||
 | 
					    <div class="col">
 | 
				
			||||||
  Make a request for equipment you would like to see in the space, request training on equipment or ak a member to run a workshop or talk on something.
 | 
					  Make a request for equipment you would like to see in the space, request training on equipment or ak a member to run a workshop or talk on something.
 | 
				
			||||||
  <br />
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {% if form %}
 | 
					  {% if form %}
 | 
				
			||||||
    <form method="POST" action="{% url 'requests_form' %}" class="requests_form">
 | 
					    <form method="POST" action="{% url 'requests_form' %}" class="requests_form">
 | 
				
			||||||
      {% csrf_token %}
 | 
					      {% csrf_token %}
 | 
				
			||||||
      {{ form|crispy }}
 | 
					      {{ form|crispy }}
 | 
				
			||||||
      {{ google_capture }}
 | 
					      {{ google_capture }}
 | 
				
			||||||
      <button class="btn btn-primary" type="submit" name="action">{% trans "Send" %}</button>
 | 
					      <button class="btn btn-primary " type="submit" name="action">
 | 
				
			||||||
 | 
					        <span class="fa fa-submit" ></span>
 | 
				
			||||||
 | 
					        {% trans "Send" %}</button>
 | 
				
			||||||
    </form>
 | 
					    </form>
 | 
				
			||||||
  {% endif %}
 | 
					  {% else %}
 | 
				
			||||||
 | 
					  <div class="row">
 | 
				
			||||||
    <table>
 | 
					    <div class="col mt-4">
 | 
				
			||||||
 | 
					      <ul class="nav navbar-nav float-right">
 | 
				
			||||||
 | 
					        <li class="pull-xs-right" >
 | 
				
			||||||
 | 
					          <a href="{% url 'requests_form' %}" class="btn btn-primary btn-lg active pull-xs-right" role="button" aria-pressed="true">Request Equipment or Talk</a>
 | 
				
			||||||
 | 
					        </li>
 | 
				
			||||||
 | 
					      </ul>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					    <table class="table table-striped">
 | 
				
			||||||
 | 
					      <thead>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					          <th>#</th>
 | 
				
			||||||
 | 
					          <th>Type</th>
 | 
				
			||||||
 | 
					          <th>Date</th>
 | 
				
			||||||
 | 
					          <th>Detail</th>
 | 
				
			||||||
 | 
					        </tr>
 | 
				
			||||||
 | 
					      </thead>
 | 
				
			||||||
      {% for request in requests %}
 | 
					      {% for request in requests %}
 | 
				
			||||||
      <tr>
 | 
					      <tr>
 | 
				
			||||||
 | 
					        <th scope="row"> {{ forloop.counter }} </th>
 | 
				
			||||||
        <td>
 | 
					        <td>
 | 
				
			||||||
          {{ request.type }}
 | 
					          {{ request.request_type }}
 | 
				
			||||||
 | 
					          {{ request.request_type_string }}
 | 
				
			||||||
 | 
					        </td>
 | 
				
			||||||
 | 
					        <td>
 | 
				
			||||||
 | 
					          {{ request.created_date }}
 | 
				
			||||||
        </td>
 | 
					        </td>
 | 
				
			||||||
        <td>
 | 
					        <td>
 | 
				
			||||||
          {{ request.description }}
 | 
					          {{ request.description }}
 | 
				
			||||||
| 
						 | 
					@ -31,7 +58,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      {% endfor %}
 | 
					      {% endfor %}
 | 
				
			||||||
    </table>
 | 
					    </table>
 | 
				
			||||||
 | 
					  {% endif %}
 | 
				
			||||||
{% endblock content %}
 | 
					{% endblock content %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% block javascript %}
 | 
					{% block javascript %}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,57 @@
 | 
				
			||||||
 | 
					{% extends "base.html" %}
 | 
				
			||||||
 | 
					{% load sekizai_tags i18n wiki_tags static %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% block content %}
 | 
				
			||||||
 | 
					{% block wiki_body %}
 | 
				
			||||||
 | 
					<form class="navbar-form navbar-right" id="wiki-search-form" method="GET" action="{% url 'wiki:search' %}">
 | 
				
			||||||
 | 
					  <div class="input-group">
 | 
				
			||||||
 | 
					    <input type="search" class="form-control search-query" name="q" placeholder="{% trans "Search wiki..." %}" />
 | 
				
			||||||
 | 
					    <span class="input-group-btn">
 | 
				
			||||||
 | 
					      <button class="btn btn-default" type="submit">
 | 
				
			||||||
 | 
					        <span class="fa fa-search"></span>
 | 
				
			||||||
 | 
					      </button>
 | 
				
			||||||
 | 
					    </span>
 | 
				
			||||||
 | 
					  </div><!-- /input-group -->
 | 
				
			||||||
 | 
					</form>
 | 
				
			||||||
 | 
					{% block wiki_navbar %}
 | 
				
			||||||
 | 
					<div class="navbar navbar-fixed-top navbar-inverse">
 | 
				
			||||||
 | 
					  <div id="wiki-navbar">
 | 
				
			||||||
 | 
					    <div class="navbar-right">
 | 
				
			||||||
 | 
					      {% if user.is_authenticated %}
 | 
				
			||||||
 | 
					      <ul class="nav navbar-nav">
 | 
				
			||||||
 | 
					        <li class="dropdown">
 | 
				
			||||||
 | 
					          <ul class="dropdown-menu">
 | 
				
			||||||
 | 
					            {% if "wiki.plugins.notifications"|plugin_enabled %}
 | 
				
			||||||
 | 
					              {% include "wiki/plugins/notifications/menubaritem.html" %}
 | 
				
			||||||
 | 
					            {% endif %}
 | 
				
			||||||
 | 
					            {% if "wiki.plugins.globalhistory"|plugin_enabled %}
 | 
				
			||||||
 | 
					              {% include "wiki/plugins/globalhistory/menubaritem.html" %}
 | 
				
			||||||
 | 
					            {% endif %}
 | 
				
			||||||
 | 
					          </ul>
 | 
				
			||||||
 | 
					        </li>
 | 
				
			||||||
 | 
					      </ul>
 | 
				
			||||||
 | 
					      {% endif %}
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    {% block wiki_header_navlinks %}{% endblock %}
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <!-- Reserved for breadcrumbs -->
 | 
				
			||||||
 | 
					      {% block wiki_breadcrumbs %}{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <!-- Main page contents go here -->
 | 
				
			||||||
 | 
					      {% block wiki_contents %}{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <footer id="wiki-footer">
 | 
				
			||||||
 | 
					        <hr />
 | 
				
			||||||
 | 
					        {% block wiki_footer_prepend %}{% endblock %}
 | 
				
			||||||
 | 
					      </footer>
 | 
				
			||||||
 | 
					{% endblock wiki_body %}
 | 
				
			||||||
 | 
					{% endblock content %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% block javascript %}
 | 
				
			||||||
 | 
					    {{ block.super }}
 | 
				
			||||||
 | 
					    <script src="{% static "wiki/js/core.js" %}"></script>
 | 
				
			||||||
 | 
					{% endblock javascript %}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,54 @@
 | 
				
			||||||
 | 
					{% load i18n wiki_tags %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% with selected_tab as selected %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<li class="nav-item pull-xs-right{% if selected == "settings" %} active{% endif %}">
 | 
				
			||||||
 | 
					  {% if not user.is_anonymous %}
 | 
				
			||||||
 | 
					  <a class="nav-link" href="{% url 'wiki:settings' article_id=article.id path=urlpath.path %}" role="button">
 | 
				
			||||||
 | 
					    <span class="fa fa-wrench"></span>
 | 
				
			||||||
 | 
					    <span class="hidden-xs">{% trans "Settings" %}</span>
 | 
				
			||||||
 | 
					  </a>
 | 
				
			||||||
 | 
					  {% endif %}
 | 
				
			||||||
 | 
					</li>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% for plugin in article_tabs %}
 | 
				
			||||||
 | 
					  <li class="nav-item pull-xs-right{% if selected == plugin.slug %} active{% endif %}">
 | 
				
			||||||
 | 
					    <a class="nav-link" href="{% url 'wiki:plugin' slug=plugin.slug article_id=article.id path=urlpath.path %}" role="button">
 | 
				
			||||||
 | 
					      <span class="{{ plugin.article_tab.1 }}"></span>
 | 
				
			||||||
 | 
					      <span class="hidden-xs">{{ plugin.article_tab.0 }}</span>
 | 
				
			||||||
 | 
					    </a>
 | 
				
			||||||
 | 
					  </li>
 | 
				
			||||||
 | 
					{% endfor %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<li class="nav-item pull-xs-right{% if selected == "history" %} active{% endif %}">
 | 
				
			||||||
 | 
					  <a class="nav-link" href="{% url 'wiki:history' article_id=article.id path=urlpath.path %}" role="button">
 | 
				
			||||||
 | 
					    <span class="fa fa-clock-o"></span>
 | 
				
			||||||
 | 
					    <span class="hidden-xs">{% trans "Changes" %}</span>
 | 
				
			||||||
 | 
					  </a>
 | 
				
			||||||
 | 
					</li>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% if article|can_write:user and not article.current_revision.locked %}
 | 
				
			||||||
 | 
					<li class="nav-item pull-xs-right{% if selected == "edit" %} active{% endif %}">
 | 
				
			||||||
 | 
					  <a class="nav-link" href="{% url 'wiki:edit' article_id=article.id path=urlpath.path %}" role="button">
 | 
				
			||||||
 | 
					    <span class="fa fa-edit"></span>
 | 
				
			||||||
 | 
					    <span class="hidden-xs">{% trans "Edit" %}</span>
 | 
				
			||||||
 | 
					  </a>
 | 
				
			||||||
 | 
					</li>
 | 
				
			||||||
 | 
					{% else %}
 | 
				
			||||||
 | 
					<li class="nav-item pull-xs-right{% if selected == "source" %} active{% endif %}">
 | 
				
			||||||
 | 
					  <a class="nav-link" href="{% url 'wiki:source' article_id=article.id path=urlpath.path %}" role="button">
 | 
				
			||||||
 | 
					    <span class="fa fa-lock"></span>
 | 
				
			||||||
 | 
					    <span class="hidden-xs">{% trans "View Source" %}</span>
 | 
				
			||||||
 | 
					  </a>
 | 
				
			||||||
 | 
					</li>
 | 
				
			||||||
 | 
					{% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<li class="nav-item pull-xs-right{% if selected == "view" %} active{% endif %}">
 | 
				
			||||||
 | 
					  <a class="nav-link" href="{% url 'wiki:get' article_id=article.id path=urlpath.path %}" role="button">
 | 
				
			||||||
 | 
					    <span class="fa fa-home"></span>
 | 
				
			||||||
 | 
					    <span class="hidden-xs">{% trans "View" %}</span>
 | 
				
			||||||
 | 
					  </a>
 | 
				
			||||||
 | 
					</li>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% endwith %}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,82 @@
 | 
				
			||||||
 | 
					{% load i18n %}
 | 
				
			||||||
 | 
					{% if urlpath %}
 | 
				
			||||||
 | 
					<div id="article-breadcrumbs">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<ul class="breadcrumb pull-left">
 | 
				
			||||||
 | 
					  {% for ancestor in urlpath.cached_ancestors %}
 | 
				
			||||||
 | 
					    <li><a href="{% url 'wiki:get' path=ancestor.path %}">{{ ancestor.article.current_revision.title|truncatechars:25 }}</a></li>
 | 
				
			||||||
 | 
					  {% endfor %}
 | 
				
			||||||
 | 
					  <li class="active">{{ article.current_revision.title|truncatechars:25 }}</li>
 | 
				
			||||||
 | 
					</ul>
 | 
				
			||||||
 | 
					<div class="pull-left" style="margin-left: 10px;">
 | 
				
			||||||
 | 
					  <div class="btn-group">
 | 
				
			||||||
 | 
					    <a class="btn btn-info dropdown-toggle" data-toggle="dropdown" href="#" style="padding: 7px;" title="{% trans "Sub-articles for" %} {{ article.current_revision.title }}">
 | 
				
			||||||
 | 
					      <span class="fa fa-sitemap"></span>
 | 
				
			||||||
 | 
					      <span class="caret"></span>
 | 
				
			||||||
 | 
					    </a>
 | 
				
			||||||
 | 
					    <ul class="dropdown-menu">
 | 
				
			||||||
 | 
					      {% for child in children_slice %}
 | 
				
			||||||
 | 
					        <li>
 | 
				
			||||||
 | 
					          <a href="{% url 'wiki:get' path=child.path %}">
 | 
				
			||||||
 | 
					            {{ child.article.current_revision.title }}
 | 
				
			||||||
 | 
					          </a>
 | 
				
			||||||
 | 
					        </li>
 | 
				
			||||||
 | 
					        {% empty %}
 | 
				
			||||||
 | 
					        <li><a href="#"><em>{% trans "No sub-articles" %}</em></a></li>
 | 
				
			||||||
 | 
					      {% endfor %}
 | 
				
			||||||
 | 
					      {% if children_slice_more %}
 | 
				
			||||||
 | 
					      <li><a href="#"><em>{% trans "...and more" %}</em></a></li>
 | 
				
			||||||
 | 
					      {% endif %}
 | 
				
			||||||
 | 
					      <li class="divider"></li>
 | 
				
			||||||
 | 
					      <li>
 | 
				
			||||||
 | 
					        <a href="{% url 'wiki:dir' path=urlpath.path %}">{% trans "Browse articles in this level" %} »</a>
 | 
				
			||||||
 | 
					      </li>
 | 
				
			||||||
 | 
					    </ul>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					<div class="pull-left" style="margin-left: 10px;">
 | 
				
			||||||
 | 
					  <div class="btn-group">
 | 
				
			||||||
 | 
					    <a class="btn btn-info dropdown-toggle" data-toggle="dropdown" href="#" style="padding: 7px;" title="{% trans "Sub-articles for" %} {{ article.current_revision.title }}">
 | 
				
			||||||
 | 
					      <span class="fa fa-file"></span>
 | 
				
			||||||
 | 
					      <span class="caret"></span>
 | 
				
			||||||
 | 
					    </a>
 | 
				
			||||||
 | 
					    <ul class="dropdown-menu">
 | 
				
			||||||
 | 
					      <li>
 | 
				
			||||||
 | 
					        {% if urlpath.parent %}
 | 
				
			||||||
 | 
					        <a href="{% url 'wiki:create' path=urlpath.parent.path %}" style="padding: 7px;">
 | 
				
			||||||
 | 
					          <span class="fa fa-arrow-right"></span>
 | 
				
			||||||
 | 
					          {% trans "New article next to" %} {{ article.current_revision.title }}
 | 
				
			||||||
 | 
					        </a>
 | 
				
			||||||
 | 
					        {% endif %}
 | 
				
			||||||
 | 
					        <a href="{% url 'wiki:create' path=urlpath.path %}" style="padding: 7px;">
 | 
				
			||||||
 | 
					          <span class="fa fa-arrow-down"></span>
 | 
				
			||||||
 | 
					          {% trans "New article below" %} {{ article.current_revision.title }}
 | 
				
			||||||
 | 
					        </a>
 | 
				
			||||||
 | 
					      </li>
 | 
				
			||||||
 | 
					    </ul>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% if user.is_superuser %}
 | 
				
			||||||
 | 
					  <div class="pull-left" style="margin-left: 10px;">
 | 
				
			||||||
 | 
					    <div class="btn-group">
 | 
				
			||||||
 | 
					      <a class="btn btn-info dropdown-toggle" data-toggle="dropdown" href="#" style="padding: 7px;" title="{% trans "Sub-articles for" %} {{ article.current_revision.title }}">
 | 
				
			||||||
 | 
					        <span class="fa fa-cogs"></span>
 | 
				
			||||||
 | 
					        <span class="caret"></span>
 | 
				
			||||||
 | 
					      </a>
 | 
				
			||||||
 | 
					      <ul class="dropdown-menu">
 | 
				
			||||||
 | 
					        {% if user.is_superuser %}
 | 
				
			||||||
 | 
					          <li>
 | 
				
			||||||
 | 
					            <a href="{% url 'wiki:deleted_list' %}">
 | 
				
			||||||
 | 
					              <i class="fa fa-trash-o"></i>
 | 
				
			||||||
 | 
					              {% trans "Deleted articles" %}
 | 
				
			||||||
 | 
					            </a>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					        {% endif %}
 | 
				
			||||||
 | 
					      </ul>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					{% endif %}
 | 
				
			||||||
 | 
					<div style="clear: both"></div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					{% endif %}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,29 @@
 | 
				
			||||||
 | 
					{% load addcss %}
 | 
				
			||||||
 | 
					{% if field.is_hidden %}
 | 
				
			||||||
 | 
					  {{ field }}
 | 
				
			||||||
 | 
					{% else %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div id="div_{{ field.auto_id }}" class="form-group{% if field.errors %} has-error{% endif %}">
 | 
				
			||||||
 | 
					  <div class="wiki-label col-xs-3 col-lg-2">
 | 
				
			||||||
 | 
					  {% if field.label %}
 | 
				
			||||||
 | 
					    <label for="{{ field.id_for_label }}" class="form-control-label {% if field.field.required %}requiredField{% endif %}">
 | 
				
			||||||
 | 
					    {% if field.field.required %}<span class="asteriskField">*</span>{% endif %}
 | 
				
			||||||
 | 
					    {{ field.label|safe }}
 | 
				
			||||||
 | 
					    </label>
 | 
				
			||||||
 | 
					  {% endif %}
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					  <div class="wiki-control col-xs-9 col-lg-10">
 | 
				
			||||||
 | 
					    {{ field|addcss:"form-control form-control-danger danger" }} 
 | 
				
			||||||
 | 
					    {% if field.errors %}
 | 
				
			||||||
 | 
					      {% for error in field.errors %}
 | 
				
			||||||
 | 
					        <div class="form-control-feedback" id="error_{{ forloop.counter }}_{{ field.auto_id }}">
 | 
				
			||||||
 | 
					          {{ error }}
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      {% endfor %}
 | 
				
			||||||
 | 
					    {% endif %}
 | 
				
			||||||
 | 
					    {% if field.help_text %}
 | 
				
			||||||
 | 
					      <small id="hint_{{ field.auto_id }}" class="form-text text-muted">{{ field.help_text|safe }}</small>
 | 
				
			||||||
 | 
					    {% endif %}
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					{% endif %}
 | 
				
			||||||
| 
						 | 
					@ -1,8 +1,8 @@
 | 
				
			||||||
# from celery import shared_task
 | 
					from celery import shared_task
 | 
				
			||||||
# from mhackspace.subscriptions.management.commands.update_membership_status import update_subscriptions
 | 
					from mhackspace.subscriptions.management.commands.update_membership_status import update_subscriptions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# @shared_task
 | 
					@shared_task
 | 
				
			||||||
# def update_users_memebership_status():
 | 
					def update_users_memebership_status():
 | 
				
			||||||
#     for user in update_subscriptions(provider_name='gocardless'):
 | 
					    for user in update_subscriptions(provider_name='gocardless'):
 | 
				
			||||||
#         continue
 | 
					        continue
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,6 +58,7 @@ braintree==3.37.2
 | 
				
			||||||
django-autofixture==0.12.1
 | 
					django-autofixture==0.12.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
git+https://github.com/olymk2/scaffold.git
 | 
					git+https://github.com/olymk2/scaffold.git
 | 
				
			||||||
 | 
					git+git://github.com/django-wiki/django-wiki.git
 | 
				
			||||||
 | 
					
 | 
				
			||||||
djangorestframework==3.6.3
 | 
					djangorestframework==3.6.3
 | 
				
			||||||
django-filter==1.0.2
 | 
					django-filter==1.0.2
 | 
				
			||||||
| 
						 | 
					@ -74,3 +75,4 @@ celery==4.1.0
 | 
				
			||||||
django-celery-results==1.0.1
 | 
					django-celery-results==1.0.1
 | 
				
			||||||
django-celery-beat==1.0.1
 | 
					django-celery-beat==1.0.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					django-cors-headers
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue