From da12274eff281df4b577bc5ab9a06b533330b41b Mon Sep 17 00:00:00 2001 From: Sagar Kalra Date: Sun, 29 Apr 2018 10:47:43 +0530 Subject: [PATCH 1/8] Implement events page Closes https://github.com/pclubuiet/website/issues/127 --- home/admin.py | 1 + home/models.py | 11 +++- home/urls.py | 4 +- home/views.py | 4 ++ media/events_images/cropped-fossasia.png | Bin 0 -> 4365 bytes media/events_images/index.jpeg | Bin 0 -> 5933 bytes pclubWebsite/settings.py | 2 +- pclubWebsite/urls.py | 4 +- requirements.txt | 3 +- templates/base.html | 7 ++- templates/home/events/events.html | 65 +++++++++++++++++++++++ 11 files changed, 91 insertions(+), 10 deletions(-) create mode 100644 media/events_images/cropped-fossasia.png create mode 100644 media/events_images/index.jpeg create mode 100644 templates/home/events/events.html diff --git a/home/admin.py b/home/admin.py index d1f582d..cff6416 100644 --- a/home/admin.py +++ b/home/admin.py @@ -2,3 +2,4 @@ from .models import * admin.site.register(Resource) +admin.site.register(Events) diff --git a/home/models.py b/home/models.py index a574d8c..7c6a48a 100644 --- a/home/models.py +++ b/home/models.py @@ -6,4 +6,13 @@ class Resource(models.Model): url = models.URLField(max_length=128, db_index=True, blank=False, null=True) def __str__(self): - return self.title \ No newline at end of file + return self.title + +class Events(models.Model): + 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) + + def __str__(self): + return self.title diff --git a/home/urls.py b/home/urls.py index 957d1c7..121ad98 100644 --- a/home/urls.py +++ b/home/urls.py @@ -4,8 +4,8 @@ app_name='home' urlpatterns = [ url(r'^$', views.Home.as_view(), name = 'home'), -url(r'^resources/', views.Resources.as_view(), name = 'resources') +url(r'^resources/', views.Resources.as_view(), name = 'resources'), +url(r'^events/', views.events.as_view(), name='events'), ] handler404 = 'Template404.as_view()' - diff --git a/home/views.py b/home/views.py index 2a5382a..193eab1 100644 --- a/home/views.py +++ b/home/views.py @@ -13,3 +13,7 @@ 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): + return render(request, 'home/events/events.html', {'events': Events.objects.all()}) diff --git a/media/events_images/cropped-fossasia.png b/media/events_images/cropped-fossasia.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc8c23d2eff66ffa3ea4baf1c4eb344634e68c2 GIT binary patch literal 4365 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 X>4-FE8ifD7bpQ>xj#{0HP2_(85Q4op literal 0 HcmV?d00001 diff --git a/media/events_images/index.jpeg b/media/events_images/index.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..09d5b6922f5a89f9caaa263804b014c192ad8acc GIT binary patch literal 5933 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 literal 0 HcmV?d00001 diff --git a/pclubWebsite/settings.py b/pclubWebsite/settings.py index aefc04b..9a5a273 100644 --- a/pclubWebsite/settings.py +++ b/pclubWebsite/settings.py @@ -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 = ['*'] diff --git a/pclubWebsite/urls.py b/pclubWebsite/urls.py index df784d4..8d10202 100644 --- a/pclubWebsite/urls.py +++ b/pclubWebsite/urls.py @@ -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'), @@ -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) diff --git a/requirements.txt b/requirements.txt index bea9041..f2a4425 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,4 +4,5 @@ gunicorn==19.7.1 psycopg2==2.7.3.1 pytz==2017.2 whitenoise==3.3.1 -social-auth-app-django==2.1.0 \ No newline at end of file +social-auth-app-django==2.1.0 +Pillow==5.1.0 diff --git a/templates/base.html b/templates/base.html index ff79ed6..a92c294 100644 --- a/templates/base.html +++ b/templates/base.html @@ -11,10 +11,7 @@ - - - - + @@ -57,6 +54,7 @@ {% endif %}
  • Home
  • Resources
  • +
  • Events
  • {% if user.username %}
  • Logout
  • {% else %} @@ -71,6 +69,7 @@ {% endif %}
  • Home
  • Resources
  • +
  • Events
  • {% if user.username %}
  • Logout
  • {% else %} diff --git a/templates/home/events/events.html b/templates/home/events/events.html new file mode 100644 index 0000000..bc2ce1c --- /dev/null +++ b/templates/home/events/events.html @@ -0,0 +1,65 @@ +{% extends 'base.html' %} +{% block styles %} + +{%endblock%} +{% block content %} +
    + +
    + + +
    + +
    +
    +
    + {%if events %} + {% for event in events %} +
    + Card image cap +
    +
    +

    {{event.title}}

    +

    {{event.brief}}

    + Know More +
    +
    + {% endfor %} + {% else %} +

    No events Yet

    + {%endif%} + + + +
    + +
    + +
    + + +
    +

    No events yet

    +
    + + + +
    + +
    + + + +{% endblock %} From fc0a8af26e328ef7483215eb7591f6bbfe9310e1 Mon Sep 17 00:00:00 2001 From: Sagar Kalra Date: Sun, 29 Apr 2018 10:55:52 +0530 Subject: [PATCH 2/8] Add migrations --- home/migrations/0002_events.py | 24 ++++++++++++++++++++++++ home/migrations/0003_events_image.py | 22 ++++++++++++++++++++++ pclubWebsite/settings.py | 2 +- 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 home/migrations/0002_events.py create mode 100644 home/migrations/0003_events_image.py diff --git a/home/migrations/0002_events.py b/home/migrations/0002_events.py new file mode 100644 index 0000000..af4bbc4 --- /dev/null +++ b/home/migrations/0002_events.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2018-04-28 15:25 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0001_initial'), + ] + + 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)), + ('brief', models.CharField(max_length=500, null=True)), + ('url', models.URLField(db_index=True, max_length=128, null=True)), + ], + ), + ] diff --git a/home/migrations/0003_events_image.py b/home/migrations/0003_events_image.py new file mode 100644 index 0000000..da9244d --- /dev/null +++ b/home/migrations/0003_events_image.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2018-04-28 17:14 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0002_events'), + ] + + operations = [ + migrations.AddField( + model_name='events', + name='image', + field=models.ImageField(default=django.utils.timezone.now, upload_to='events_images/'), + preserve_default=False, + ), + ] diff --git a/pclubWebsite/settings.py b/pclubWebsite/settings.py index 9a5a273..aefc04b 100644 --- a/pclubWebsite/settings.py +++ b/pclubWebsite/settings.py @@ -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 = True +DEBUG = False ALLOWED_HOSTS = ['*'] From 002e92761f893e5cad80b662f83142b6d907c584 Mon Sep 17 00:00:00 2001 From: Sagar Kalra Date: Sun, 29 Apr 2018 11:01:52 +0530 Subject: [PATCH 3/8] Add migrations --- home/migrations/0004_auto_20180428_1738.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 home/migrations/0004_auto_20180428_1738.py diff --git a/home/migrations/0004_auto_20180428_1738.py b/home/migrations/0004_auto_20180428_1738.py new file mode 100644 index 0000000..78c9b2e --- /dev/null +++ b/home/migrations/0004_auto_20180428_1738.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2018-04-28 17:38 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0003_events_image'), + ] + + operations = [ + migrations.AlterField( + model_name='events', + name='image', + field=models.FileField(upload_to='events_images/'), + ), + ] From f7a6675bc90acbc26eff56258c9283e4d1c2b26e Mon Sep 17 00:00:00 2001 From: Sagar Kalra Date: Tue, 1 May 2018 01:48:31 +0530 Subject: [PATCH 4/8] Implement s3 storage bucket --- media/events_images/cropped-fossasia.png | Bin 4365 -> 0 bytes media/events_images/index.jpeg | Bin 5933 -> 0 bytes pclubWebsite/settings.py | 14 ++++++++- requirements.txt | 2 ++ s3_storages.py | 5 +++ templates/home/events/events.html | 38 +++++------------------ 6 files changed, 27 insertions(+), 32 deletions(-) delete mode 100644 media/events_images/cropped-fossasia.png delete mode 100644 media/events_images/index.jpeg create mode 100644 s3_storages.py diff --git a/media/events_images/cropped-fossasia.png b/media/events_images/cropped-fossasia.png deleted file mode 100644 index 0dc8c23d2eff66ffa3ea4baf1c4eb344634e68c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4365 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 X>4-FE8ifD7bpQ>xj#{0HP2_(85Q4op diff --git a/media/events_images/index.jpeg b/media/events_images/index.jpeg deleted file mode 100644 index 09d5b6922f5a89f9caaa263804b014c192ad8acc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5933 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 diff --git a/pclubWebsite/settings.py b/pclubWebsite/settings.py index aefc04b..ddbfbd6 100644 --- a/pclubWebsite/settings.py +++ b/pclubWebsite/settings.py @@ -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 = ['*'] @@ -41,6 +41,7 @@ 'django.contrib.staticfiles', 'home', 'social_django', + 'storages', ] MIDDLEWARE = [ @@ -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' @@ -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' diff --git a/requirements.txt b/requirements.txt index f2a4425..ee6dd93 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,3 +6,5 @@ pytz==2017.2 whitenoise==3.3.1 social-auth-app-django==2.1.0 Pillow==5.1.0 +django-storages==1.6.6 +boto3==1.7.10 diff --git a/s3_storages.py b/s3_storages.py new file mode 100644 index 0000000..64a9dda --- /dev/null +++ b/s3_storages.py @@ -0,0 +1,5 @@ +from django.conf import settings +from storages.backends.s3boto3 import S3Boto3Storage + +class MediaStorage(S3Boto3Storage): + location = settings.MEDIAFILES_LOCATION diff --git a/templates/home/events/events.html b/templates/home/events/events.html index bc2ce1c..26b584e 100644 --- a/templates/home/events/events.html +++ b/templates/home/events/events.html @@ -3,31 +3,19 @@ {%endblock%} {% block content %} -
    -
    -

    {%if events %} {% for event in events %} -
    +
    Card image cap

    @@ -40,26 +28,14 @@

    {{event.title}}

    {% else %}

    No events Yet

    {%endif%} - - -
    +
    -
    - -
    - - -
    -

    No events yet

    -
    - - - +
    +
    +

    No events yet

    -
    -
    {% endblock %} From f43a1156ea7a9501fb208f451a34bc5a819b1bc2 Mon Sep 17 00:00:00 2001 From: Sagar Kalra Date: Tue, 1 May 2018 15:15:27 +0530 Subject: [PATCH 5/8] Implement type change depending on date --- home/migrations/0005_auto_20180501_0909.py | 27 +++++++++++++++++++++ home/models.py | 2 ++ home/views.py | 7 +++++- requirements.txt | 1 + templates/home/events/events.html | 28 +++++++++++++++++----- 5 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 home/migrations/0005_auto_20180501_0909.py diff --git a/home/migrations/0005_auto_20180501_0909.py b/home/migrations/0005_auto_20180501_0909.py new file mode 100644 index 0000000..70c2259 --- /dev/null +++ b/home/migrations/0005_auto_20180501_0909.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2018-05-01 09:09 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0004_auto_20180428_1738'), + ] + + operations = [ + migrations.AddField( + model_name='events', + name='date', + field=models.DateField(default=django.utils.timezone.now), + preserve_default=False, + ), + migrations.AddField( + model_name='events', + name='typeofentry', + field=models.CharField(default='Suggestion', max_length=20), + ), + ] diff --git a/home/models.py b/home/models.py index 7c6a48a..31ba364 100644 --- a/home/models.py +++ b/home/models.py @@ -13,6 +13,8 @@ class Events(models.Model): 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, default='Suggestion') def __str__(self): return self.title diff --git a/home/views.py b/home/views.py index 193eab1..607cfc6 100644 --- a/home/views.py +++ b/home/views.py @@ -2,6 +2,7 @@ from django.shortcuts import render from django.views.generic import TemplateView from .models import * +from datetime import date class Template404(TemplateView): @@ -16,4 +17,8 @@ def get(self, request, *args, **kwargs): class events(views.View): def get(self, request, *args, **kwargs): - return render(request, 'home/events/events.html', {'events': Events.objects.all()}) + events = Events.objects.all() + for event in events: + if event.date < date.today(): + event.typeofentry='Past Events' + return render(request, 'home/events/events.html', {'events': events}) diff --git a/requirements.txt b/requirements.txt index ee6dd93..64ffe82 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,3 +8,4 @@ social-auth-app-django==2.1.0 Pillow==5.1.0 django-storages==1.6.6 boto3==1.7.10 +datetime==4.2.0 diff --git a/templates/home/events/events.html b/templates/home/events/events.html index 26b584e..f5eb74c 100644 --- a/templates/home/events/events.html +++ b/templates/home/events/events.html @@ -13,8 +13,8 @@

    - {%if events %} {% for event in events %} + {% if event.typeofentry == 'Upcoming Events' %}
    Card image cap
    @@ -23,18 +23,34 @@

    {{event.title}}

    {{event.brief}}

    Know More
    +
    + {% endif %} {% endfor %} - {% else %} -

    No events Yet

    - {%endif%}
    -

    No events yet

    -
    + {% for event in events %} + {% if event.typeofentry == 'Past Events'%} +
    + Card image cap +
    +
    +

    {{event.title}}

    +

    {{event.brief}}

    + Know More +
    + +
    + {% endif %} + {% endfor %} +
    From 6e21cba9992b0870db2e8e7e3348d2422668b8dd Mon Sep 17 00:00:00 2001 From: Sagar Kalra Date: Tue, 1 May 2018 16:47:49 +0530 Subject: [PATCH 6/8] Implement suggest events option --- home/migrations/0006_events_suggested_by.py | 20 ++++++++++++++++++++ home/models.py | 1 + home/urls.py | 1 + home/views.py | 11 +++++++++++ templates/home/events/events.html | 1 + templates/home/events/suggest_events.html | 8 ++++++++ 6 files changed, 42 insertions(+) create mode 100644 home/migrations/0006_events_suggested_by.py create mode 100644 templates/home/events/suggest_events.html diff --git a/home/migrations/0006_events_suggested_by.py b/home/migrations/0006_events_suggested_by.py new file mode 100644 index 0000000..81912ee --- /dev/null +++ b/home/migrations/0006_events_suggested_by.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2018-05-01 10:28 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0005_auto_20180501_0909'), + ] + + operations = [ + migrations.AddField( + model_name='events', + name='suggested_by', + field=models.IntegerField(blank=True, null=True), + ), + ] diff --git a/home/models.py b/home/models.py index 31ba364..a14cdf7 100644 --- a/home/models.py +++ b/home/models.py @@ -15,6 +15,7 @@ class Events(models.Model): url = models.URLField(max_length=128, db_index=True, blank=False, null=True) date=models.DateField() typeofentry=models.CharField(max_length=20, default='Suggestion') + suggested_by = models.IntegerField(blank=True, null=True) def __str__(self): return self.title diff --git a/home/urls.py b/home/urls.py index 121ad98..61c93a7 100644 --- a/home/urls.py +++ b/home/urls.py @@ -5,6 +5,7 @@ urlpatterns = [ url(r'^$', views.Home.as_view(), name = 'home'), url(r'^resources/', views.Resources.as_view(), name = 'resources'), +url(r'events/suggest', views.suggest_events.as_view(), name = 'suggest_events'), url(r'^events/', views.events.as_view(), name='events'), ] diff --git a/home/views.py b/home/views.py index 607cfc6..e9d9ff2 100644 --- a/home/views.py +++ b/home/views.py @@ -1,6 +1,7 @@ from django import views from django.shortcuts import render from django.views.generic import TemplateView +from django.views.generic.edit import CreateView from .models import * from datetime import date @@ -22,3 +23,13 @@ def get(self, request, *args, **kwargs): if event.date < date.today(): event.typeofentry='Past Events' return render(request, 'home/events/events.html', {'events': events}) + +class suggest_events(CreateView): + model = Events + 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(suggest_events, self).form_valid(form) diff --git a/templates/home/events/events.html b/templates/home/events/events.html index f5eb74c..59b928f 100644 --- a/templates/home/events/events.html +++ b/templates/home/events/events.html @@ -7,6 +7,7 @@
    diff --git a/templates/home/events/suggest_events.html b/templates/home/events/suggest_events.html new file mode 100644 index 0000000..fcf4a50 --- /dev/null +++ b/templates/home/events/suggest_events.html @@ -0,0 +1,8 @@ +{% extends 'base.html' %} +{% block content %} +
    + {% csrf_token %} + {{ form.as_p }} + +
    +{% endblock %} From 0c066bfc9b6bcac62c6b2b388dbe0e5c2d4df17e Mon Sep 17 00:00:00 2001 From: Gurpreet Singh Date: Mon, 7 May 2018 00:11:35 +0530 Subject: [PATCH 7/8] Add permission to Event model Users provided with the permission can view all suggested events on events page and approve them. Other users can see their unapproved suggestions instead. Also change typeofentry field to a choice field. --- home/admin.py | 2 +- home/migrations/0001_initial.py | 18 ++- home/migrations/0002_auto_20180506_2100.py | 20 +++ home/migrations/0002_events.py | 24 --- home/migrations/0003_auto_20180507_1406.py | 19 +++ home/migrations/0003_events_image.py | 22 --- home/migrations/0004_auto_20180507_1520.py | 20 +++ home/migrations/0005_auto_20180501_0909.py | 27 ---- ...428_1738.py => 0005_auto_20180507_1524.py} | 6 +- home/migrations/0006_events_suggested_by.py | 20 --- home/models.py | 12 +- home/urls.py | 9 +- home/views.py | 40 ++++- templates/home/events/events.html | 143 ++++++++++++------ templates/home/events/suggest_events.html | 17 ++- 15 files changed, 238 insertions(+), 161 deletions(-) create mode 100644 home/migrations/0002_auto_20180506_2100.py delete mode 100644 home/migrations/0002_events.py create mode 100644 home/migrations/0003_auto_20180507_1406.py delete mode 100644 home/migrations/0003_events_image.py create mode 100644 home/migrations/0004_auto_20180507_1520.py delete mode 100644 home/migrations/0005_auto_20180501_0909.py rename home/migrations/{0004_auto_20180428_1738.py => 0005_auto_20180507_1524.py} (72%) delete mode 100644 home/migrations/0006_events_suggested_by.py diff --git a/home/admin.py b/home/admin.py index cff6416..b3a5383 100644 --- a/home/admin.py +++ b/home/admin.py @@ -2,4 +2,4 @@ from .models import * admin.site.register(Resource) -admin.site.register(Events) +admin.site.register(Event) diff --git a/home/migrations/0001_initial.py b/home/migrations/0001_initial.py index fe56e9e..db99f9c 100644 --- a/home/migrations/0001_initial.py +++ b/home/migrations/0001_initial.py @@ -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 @@ -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=[ diff --git a/home/migrations/0002_auto_20180506_2100.py b/home/migrations/0002_auto_20180506_2100.py new file mode 100644 index 0000000..c1798d3 --- /dev/null +++ b/home/migrations/0002_auto_20180506_2100.py @@ -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), + ), + ] diff --git a/home/migrations/0002_events.py b/home/migrations/0002_events.py deleted file mode 100644 index af4bbc4..0000000 --- a/home/migrations/0002_events.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2018-04-28 15:25 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('home', '0001_initial'), - ] - - 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)), - ('brief', models.CharField(max_length=500, null=True)), - ('url', models.URLField(db_index=True, max_length=128, null=True)), - ], - ), - ] diff --git a/home/migrations/0003_auto_20180507_1406.py b/home/migrations/0003_auto_20180507_1406.py new file mode 100644 index 0000000..ea92636 --- /dev/null +++ b/home/migrations/0003_auto_20180507_1406.py @@ -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', + ), + ] diff --git a/home/migrations/0003_events_image.py b/home/migrations/0003_events_image.py deleted file mode 100644 index da9244d..0000000 --- a/home/migrations/0003_events_image.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2018-04-28 17:14 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.utils.timezone - - -class Migration(migrations.Migration): - - dependencies = [ - ('home', '0002_events'), - ] - - operations = [ - migrations.AddField( - model_name='events', - name='image', - field=models.ImageField(default=django.utils.timezone.now, upload_to='events_images/'), - preserve_default=False, - ), - ] diff --git a/home/migrations/0004_auto_20180507_1520.py b/home/migrations/0004_auto_20180507_1520.py new file mode 100644 index 0000000..b946971 --- /dev/null +++ b/home/migrations/0004_auto_20180507_1520.py @@ -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/'), + ), + ] diff --git a/home/migrations/0005_auto_20180501_0909.py b/home/migrations/0005_auto_20180501_0909.py deleted file mode 100644 index 70c2259..0000000 --- a/home/migrations/0005_auto_20180501_0909.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2018-05-01 09:09 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.utils.timezone - - -class Migration(migrations.Migration): - - dependencies = [ - ('home', '0004_auto_20180428_1738'), - ] - - operations = [ - migrations.AddField( - model_name='events', - name='date', - field=models.DateField(default=django.utils.timezone.now), - preserve_default=False, - ), - migrations.AddField( - model_name='events', - name='typeofentry', - field=models.CharField(default='Suggestion', max_length=20), - ), - ] diff --git a/home/migrations/0004_auto_20180428_1738.py b/home/migrations/0005_auto_20180507_1524.py similarity index 72% rename from home/migrations/0004_auto_20180428_1738.py rename to home/migrations/0005_auto_20180507_1524.py index 78c9b2e..4bd7552 100644 --- a/home/migrations/0004_auto_20180428_1738.py +++ b/home/migrations/0005_auto_20180507_1524.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2018-04-28 17:38 +# Generated by Django 1.11.5 on 2018-05-07 15:24 from __future__ import unicode_literals from django.db import migrations, models @@ -8,12 +8,12 @@ class Migration(migrations.Migration): dependencies = [ - ('home', '0003_events_image'), + ('home', '0004_auto_20180507_1520'), ] operations = [ migrations.AlterField( - model_name='events', + model_name='event', name='image', field=models.FileField(upload_to='events_images/'), ), diff --git a/home/migrations/0006_events_suggested_by.py b/home/migrations/0006_events_suggested_by.py deleted file mode 100644 index 81912ee..0000000 --- a/home/migrations/0006_events_suggested_by.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2018-05-01 10:28 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('home', '0005_auto_20180501_0909'), - ] - - operations = [ - migrations.AddField( - model_name='events', - name='suggested_by', - field=models.IntegerField(blank=True, null=True), - ), - ] diff --git a/home/models.py b/home/models.py index a14cdf7..76a3d31 100644 --- a/home/models.py +++ b/home/models.py @@ -8,14 +8,20 @@ class Resource(models.Model): def __str__(self): return self.title -class Events(models.Model): +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, default='Suggestion') + 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 + return self.title \ No newline at end of file diff --git a/home/urls.py b/home/urls.py index 61c93a7..0a165d4 100644 --- a/home/urls.py +++ b/home/urls.py @@ -3,10 +3,11 @@ app_name='home' urlpatterns = [ -url(r'^$', views.Home.as_view(), name = 'home'), -url(r'^resources/', views.Resources.as_view(), name = 'resources'), -url(r'events/suggest', views.suggest_events.as_view(), name = 'suggest_events'), -url(r'^events/', views.events.as_view(), name='events'), + 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[^/]+)', views.ApproveEvent.as_view(), name = 'approve_event'), + url(r'^events/', views.Events.as_view(), name='events'), ] handler404 = 'Template404.as_view()' diff --git a/home/views.py b/home/views.py index e9d9ff2..e25108d 100644 --- a/home/views.py +++ b/home/views.py @@ -1,9 +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): @@ -16,20 +18,44 @@ 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): +class Events(views.View): def get(self, request, *args, **kwargs): - events = Events.objects.all() + events = Event.objects.all() + for event in events: if event.date < date.today(): event.typeofentry='Past Events' - return render(request, 'home/events/events.html', {'events': 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 suggest_events(CreateView): - model = 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(suggest_events, self).form_valid(form) + 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 \ No newline at end of file diff --git a/templates/home/events/events.html b/templates/home/events/events.html index 59b928f..a07cd77 100644 --- a/templates/home/events/events.html +++ b/templates/home/events/events.html @@ -3,56 +3,111 @@ {%endblock%} {% block content %} - +

    Events

    -
    -
    -
    - {% for event in events %} - {% if event.typeofentry == 'Upcoming Events' %} -
    - Card image cap -
    -
    -

    {{event.title}}

    -

    {{event.brief}}

    - Know More -
    -
    + {% endfor %} + {% if not upcoming.count %} + No Upcoming Events. + {% endif %} +
    +
    -
    -
    - {% for event in events %} - {% if event.typeofentry == 'Past Events'%} -
    - Card image cap -
    -
    -

    {{event.title}}

    -

    {{event.brief}}

    - Know More -
    - -
    - {% endif %} - {% endfor %} -
    -
    +
    +
    + {% for event in past %} +
    + Card image cap +
    +
    +

    {{event.title}}

    +

    {{event.brief}}

    + Know More +
    + +
    + {% endfor %} + {% if not past.count %} + No Past Events. + {% endif %} +
    +
    + +
    + {% if not perms.home.approve_suggested %} +

    Your Suggestions

    +

    Approved

    +
    + {% for event in approved %} +
    + Card image cap +
    +
    +

    {{event.title}}

    +

    {{event.brief}}

    + Know More +
    + +
    + {% endfor %} +
    + {% if not approved.count %} + No events. + {% endif %} +
    +

    Awaiting Approval

    + {% else %} +

    All Suggestions Awaiting Approval

    + {% endif %} +
    + {% for event in suggested %} +
    + Card image cap +
    +
    +

    {{event.title}}

    + {% if perms.home.approve_suggested %} + Approve + {% endif %} +

    {{event.brief}}

    + Know More +
    + +
    + {% endfor %} + {% if not suggested.count %} + No events. + {% endif %} +
    +
    + Suggest an Event +
    {% endblock %} diff --git a/templates/home/events/suggest_events.html b/templates/home/events/suggest_events.html index fcf4a50..5c3f838 100644 --- a/templates/home/events/suggest_events.html +++ b/templates/home/events/suggest_events.html @@ -1,8 +1,15 @@ {% extends 'base.html' %} +{% block styles %} + +{% endblock %} {% block content %} -
    - {% csrf_token %} - {{ form.as_p }} - -
    +
    + {% csrf_token %} + {{ form.as_p }} + +
    {% endblock %} From fc48b36d4dc98e2d3076203294b4957ba4f0969b Mon Sep 17 00:00:00 2001 From: Sagar Kalra Date: Sat, 12 May 2018 13:12:16 +0530 Subject: [PATCH 8/8] Add Reject option --- home/urls.py | 1 + home/views.py | 15 ++++++++++++--- templates/home/events/events.html | 3 +++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/home/urls.py b/home/urls.py index 0a165d4..b326df2 100644 --- a/home/urls.py +++ b/home/urls.py @@ -7,6 +7,7 @@ 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[^/]+)', views.ApproveEvent.as_view(), name = 'approve_event'), + url(r'^events/reject/(?P[^/]+)', views.RejectEvent.as_view(), name = 'reject_event'), url(r'^events/', views.Events.as_view(), name='events'), ] diff --git a/home/views.py b/home/views.py index e25108d..fdae64a 100644 --- a/home/views.py +++ b/home/views.py @@ -21,11 +21,11 @@ def get(self, request, *args, **kwargs): 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 = [] @@ -58,4 +58,13 @@ def get(self, request, pk, *args, **kwargs): event.save() return HttpResponseRedirect(reverse('home:events')) else: - return Http404 \ No newline at end of file + 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 diff --git a/templates/home/events/events.html b/templates/home/events/events.html index a07cd77..378f1b2 100644 --- a/templates/home/events/events.html +++ b/templates/home/events/events.html @@ -93,6 +93,9 @@

    {{event.title}}

    {% if perms.home.approve_suggested %} Approve {% endif %} + {% if perms.home.approve_suggested %} + Reject + {% endif %}

    {{event.brief}}

    Know More