From 21da62b31c90b3e908b6741ec93207cc0c69999c Mon Sep 17 00:00:00 2001 From: Oliver Marks Date: Sat, 7 Jan 2017 19:21:00 +0000 Subject: [PATCH] Initial member list page, need a group called member and users added to function --- .drone.yml | 1 + config/settings/common.py | 1 + config/urls.py | 3 ++ mhackspace/members/views.py | 20 +++++++++++++ mhackspace/templates/pages/members.html | 37 +++++++++++++++++++++++++ mhackspace/users/models.py | 2 +- 6 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 mhackspace/members/views.py create mode 100644 mhackspace/templates/pages/members.html diff --git a/.drone.yml b/.drone.yml index ac4f3d0..67ca4a2 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,5 +1,6 @@ pipeline: backend: + image: maidstonehackspacewebsite_django commands: - python manage.py test diff --git a/config/settings/common.py b/config/settings/common.py index 778f21b..32e476e 100644 --- a/config/settings/common.py +++ b/config/settings/common.py @@ -49,6 +49,7 @@ LOCAL_APPS = ( 'mhackspace.users.apps.UsersConfig', 'mhackspace.feeds', 'mhackspace.contact', + 'mhackspace.members', ) # See: https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps diff --git a/config/urls.py b/config/urls.py index 5012886..4af1b4f 100644 --- a/config/urls.py +++ b/config/urls.py @@ -8,6 +8,7 @@ from django.contrib import admin from django.views.generic import TemplateView from django.views import defaults as default_views from mhackspace.contact.views import contact +from mhackspace.members.views import MemberListView urlpatterns = [ url(r'^$', TemplateView.as_view(template_name='pages/home.html'), name='home'), @@ -18,6 +19,8 @@ urlpatterns = [ url(r'^contact/$', contact, name='contact'), # need to be logged in for these urls + url(r'^members/$', MemberListView.as_view(), name='members'), + # Django Admin, use {% url 'admin:index' %} url(settings.ADMIN_URL, admin.site.urls), diff --git a/mhackspace/members/views.py b/mhackspace/members/views.py new file mode 100644 index 0000000..dbc597c --- /dev/null +++ b/mhackspace/members/views.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +from __future__ import absolute_import, unicode_literals + +from django.core.urlresolvers import reverse +from django.views.generic import DetailView, ListView, RedirectView, UpdateView + +from django.contrib.auth.mixins import LoginRequiredMixin + +from mhackspace.users.models import User + +class MemberListView(LoginRequiredMixin, ListView): + template_name = 'pages/members.html' + queryset = User.objects.prefetch_related('users', 'groups') + paginate_by = 10 + + def get_context_data(self, **kwargs): + context = super(MemberListView, self).get_context_data(**kwargs) + context['members'] = self.get_queryset() + context['total'] = self.get_queryset().filter(groups__name='member').count() + return context diff --git a/mhackspace/templates/pages/members.html b/mhackspace/templates/pages/members.html new file mode 100644 index 0000000..e009e7c --- /dev/null +++ b/mhackspace/templates/pages/members.html @@ -0,0 +1,37 @@ +{% extends "base.html" %} +{% block content %} + +Members feed + +
+
Users {{ paginator.count }}
+
Members {{ total }}
+
+ +
+
+ {% for member in members %} +
+ Card image cap +
+

{{ member.name }}

+

{{ member.users.description }}

+

{{ member.users.skills }}

+ + {% for group in member.groups.all %} + {{ group.name }} + {% endfor %} +
+
+

{{ member.userblurb }}

+
+ +
+ {% if forloop.counter|divisibleby:3 %}
{% endif %} + {% endfor %} +
+
+ +{% endblock %} diff --git a/mhackspace/users/models.py b/mhackspace/users/models.py index cd6920c..8e61203 100644 --- a/mhackspace/users/models.py +++ b/mhackspace/users/models.py @@ -22,7 +22,7 @@ class User(AbstractUser): class UserBlurb(models.Model): - user = models.ForeignKey(settings.AUTH_USER_MODEL) + user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='users') skills = models.CharField(max_length=255) description = models.TextField()