Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions home/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
from .models import *

admin.site.register(Resource)
admin.site.register(Event)
18 changes: 17 additions & 1 deletion home/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2018-01-26 02:12
# Generated by Django 1.11.5 on 2018-05-06 18:39
from __future__ import unicode_literals

from django.db import migrations, models
Expand All @@ -13,6 +13,22 @@ class Migration(migrations.Migration):
]

operations = [
migrations.CreateModel(
name='Events',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=128, null=True)),
('image', models.FileField(upload_to='events_images/')),
('brief', models.CharField(max_length=500, null=True)),
('url', models.URLField(db_index=True, max_length=128, null=True)),
('date', models.DateField()),
('typeofentry', models.CharField(choices=[('past', 'Past Event'), ('upcoming', 'Upcoming Event'), ('suggested', 'Suggested Event')], default='suggestion', max_length=20)),
('suggested_by', models.IntegerField(blank=True, null=True)),
],
options={
'permissions': (('approve_suggestion', 'Approve a suggested event'),),
},
),
migrations.CreateModel(
name='Resource',
fields=[
Expand Down
20 changes: 20 additions & 0 deletions home/migrations/0002_auto_20180506_2100.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2018-05-06 21:00
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('home', '0001_initial'),
]

operations = [
migrations.AlterField(
model_name='events',
name='typeofentry',
field=models.CharField(choices=[('past', 'Past Event'), ('upcoming', 'Upcoming Event'), ('suggested', 'Suggested Event')], default='suggested', max_length=20),
),
]
19 changes: 19 additions & 0 deletions home/migrations/0003_auto_20180507_1406.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2018-05-07 14:06
from __future__ import unicode_literals

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('home', '0002_auto_20180506_2100'),
]

operations = [
migrations.RenameModel(
old_name='Events',
new_name='Event',
),
]
20 changes: 20 additions & 0 deletions home/migrations/0004_auto_20180507_1520.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2018-05-07 15:20
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('home', '0003_auto_20180507_1406'),
]

operations = [
migrations.AlterField(
model_name='event',
name='image',
field=models.FileField(blank=True, null=True, upload_to='events_images/'),
),
]
20 changes: 20 additions & 0 deletions home/migrations/0005_auto_20180507_1524.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2018-05-07 15:24
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('home', '0004_auto_20180507_1520'),
]

operations = [
migrations.AlterField(
model_name='event',
name='image',
field=models.FileField(upload_to='events_images/'),
),
]
20 changes: 19 additions & 1 deletion home/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,22 @@ class Resource(models.Model):
url = models.URLField(max_length=128, db_index=True, blank=False, null=True)

def __str__(self):
return self.title
return self.title

class Event(models.Model):
class Meta:
permissions = (
('approve_suggestion', 'Approve a suggested event'),
)
title = models.CharField(max_length=128, blank=False, null=True)
image=models.FileField(upload_to='events_images/')
brief = models.CharField(max_length=500, blank=False, null=True)
url = models.URLField(max_length=128, db_index=True, blank=False, null=True)
date=models.DateField()
typeofentry=models.CharField(max_length=20, choices = (("past", "Past Event"),
("upcoming", "Upcoming Event"),
("suggested", "Suggested Event")) , default='suggested')
suggested_by = models.IntegerField(blank=True, null=True)

def __str__(self):
return self.title
9 changes: 6 additions & 3 deletions home/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@

app_name='home'
urlpatterns = [
url(r'^$', views.Home.as_view(), name = 'home'),
url(r'^resources/', views.Resources.as_view(), name = 'resources')
url(r'^$', views.Home.as_view(), name = 'home'),
url(r'^resources/', views.Resources.as_view(), name = 'resources'),
url(r'^events/suggest', views.SuggestEvent.as_view(), name = 'suggest_event'),
url(r'^events/approve/(?P<pk>[^/]+)', views.ApproveEvent.as_view(), name = 'approve_event'),
url(r'^events/reject/(?P<pk>[^/]+)', views.RejectEvent.as_view(), name = 'reject_event'),
url(r'^events/', views.Events.as_view(), name='events'),
]

handler404 = 'Template404.as_view()'

57 changes: 56 additions & 1 deletion home/views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
from django import views
from django.shortcuts import render
from django.shortcuts import render, Http404, HttpResponseRedirect
from django.views.generic import TemplateView
from django.views.generic.edit import CreateView
from .models import *
from datetime import date
from django.contrib.auth.mixins import LoginRequiredMixin
from django.core.urlresolvers import reverse


class Template404(TemplateView):
Expand All @@ -13,3 +17,54 @@ class Home(TemplateView):
class Resources(views.View):
def get(self, request, *args, **kwargs):
return render(request, "home/resources/resources.html", {'resources': Resource.objects.all()})

class Events(views.View):
def get(self, request, *args, **kwargs):
events = Event.objects.all()

for event in events:
if event.date < date.today():
event.typeofentry='Past Events'

past_events = events.filter(typeofentry="past")
upcoming_events = events.filter(typeofentry="upcoming")
suggested_events = []
approved_events = []
if request.user.has_perm('home.approve_suggestion'):
suggested_events = events.filter(typeofentry="suggested")
else:
if request.user.is_authenticated:
suggested_events = events.filter(typeofentry="suggested", suggested_by=request.user.pk)
approved_events = events.filter(typeofentry__in=['upcoming','past'], suggested_by=request.user.pk)
return render(request, 'home/events/events.html', {'past': past_events, 'upcoming': upcoming_events,
'suggested': suggested_events, 'approved': approved_events})

class SuggestEvent(LoginRequiredMixin, CreateView):
login_url = '/login/'
model = Event
fields = ['title', 'url', 'image', 'brief', 'date']
template_name = 'home/events/suggest_events.html'
success_url = '/'

def form_valid(self, form):
form.instance.suggested_by = self.request.user.pk
return super(SuggestEvent, self).form_valid(form)

class ApproveEvent(LoginRequiredMixin, views.View):
def get(self, request, pk, *args, **kwargs):
if request.user.has_perm('home.approve_suggestion'):
event = Event.objects.get(pk=pk)
event.typeofentry = "upcoming"
event.save()
return HttpResponseRedirect(reverse('home:events'))
else:
return Http404

class RejectEvent(LoginRequiredMixin, views.View):
def get(self, request, pk, *args, **kwargs):
if request.user.has_perm('home.approve_suggestion'):
event = Event.objects.get(pk=pk)
event.delete()
return HttpResponseRedirect(reverse('home:events'))
else:
return Http404
14 changes: 13 additions & 1 deletion pclubWebsite/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
SECRET_KEY = '$4p#tsin((&rnm!%696^2xutz_-n5k)o&mnwg3z*^f7&--99h&'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
DEBUG = True

ALLOWED_HOSTS = ['*']

Expand All @@ -41,6 +41,7 @@
'django.contrib.staticfiles',
'home',
'social_django',
'storages',
]

MIDDLEWARE = [
Expand Down Expand Up @@ -85,6 +86,13 @@
'django.contrib.auth.backends.ModelBackend',
)

AWS_STORAGE_BUCKET_NAME = 'pclubuiet'
AWS_S3_REGION_NAME = 'us-east-2'
AWS_ACCESS_KEY_ID = 'AKIAJKJHQNOHPD3UNEUQ'
AWS_SECRET_ACCESS_KEY = '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'

AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME

SOCIAL_AUTH_GITHUB_KEY = '1bb44747fe47d4452460'
SOCIAL_AUTH_GITHUB_SECRET = '888dbf7469fa2496f4508d99c17ff178d6bade67'

Expand Down Expand Up @@ -153,4 +161,8 @@
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

MEDIAFILES_LOCATION = 'media'
DEFAULT_FILE_STORAGE = 's3_storages.MediaStorage'

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
DEFAULT_FILE_STORAGE = 's3_storages.MediaStorage'
4 changes: 3 additions & 1 deletion pclubWebsite/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
from django.contrib.auth import views as auth_views
from django.views.generic import TemplateView
from django.views.generic.base import RedirectView
from django.conf.urls.static import static
from django.conf import settings

urlpatterns = [
url(r'^sw.js', (TemplateView.as_view(template_name="sw.js", content_type='application/javascript', )), name='sw.js'),
Expand All @@ -27,4 +29,4 @@
url(r'^logout/$', auth_views.logout, name='logout'),
url(r'^oauth/', include('social_django.urls', namespace='social')),
url(r'^$', RedirectView.as_view(url='/home/')),
]
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
6 changes: 5 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,8 @@ gunicorn==19.7.1
psycopg2==2.7.3.1
pytz==2017.2
whitenoise==3.3.1
social-auth-app-django==2.1.0
social-auth-app-django==2.1.0
Pillow==5.1.0
django-storages==1.6.6
boto3==1.7.10
datetime==4.2.0
5 changes: 5 additions & 0 deletions s3_storages.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from django.conf import settings
from storages.backends.s3boto3 import S3Boto3Storage

class MediaStorage(S3Boto3Storage):
location = settings.MEDIAFILES_LOCATION
7 changes: 3 additions & 4 deletions templates/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,7 @@
<!-- Bootstrap -->
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-beta/css/materialize.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<link rel = 'stylesheet' href="{% static 'home/base.css' %}">
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet"/>
Expand Down Expand Up @@ -57,6 +54,7 @@
{% endif %}
<li {% if request.resolver_match.url_name == "home" %}class="active"{% endif %}><a href="{% url 'home:home' %}">Home</a></li>
<li {% if request.resolver_match.url_name == "resources" %}class="active"{% endif %}><a href="{% url 'home:resources' %}">Resources</a></li>
<li {% if request.resolver_match.url_name == "events" %}class="active"{% endif %}><a href="{% url 'home:events' %}">Events</a></li>
{% if user.username %}
<li><a href="{% url 'logout' %}">Logout</a></li>
{% else %}
Expand All @@ -71,6 +69,7 @@
{% endif %}
<li {% if request.resolver_match.url_name == "home" %}class="active"{% endif %}><a href="{% url 'home:home' %}">Home</a></li>
<li {% if request.resolver_match.url_name == "resources" %}class="active"{% endif %}><a href="{% url 'home:resources' %}">Resources</a></li>
<li {% if request.resolver_match.url_name == "events" %}class="active"{% endif %}><a href="{% url 'home:events' %}">Events</a></li>
{% if user.username %}
<li><a href="{% url 'logout' %}">Logout</a></li>
{% else %}
Expand Down
Loading