From 8d299c1dcd78078839a5991b1d5c917150f6539c Mon Sep 17 00:00:00 2001 From: Vladimir Paliy Date: Wed, 15 Mar 2017 14:56:04 +0300 Subject: [PATCH 1/2] completed --- .gitignore | 2 + source/Dockerfile | 7 + source/README.md | 6 + source/commits/__init__.py | 0 source/commits/admin.py | 3 + source/commits/apps.py | 7 + source/commits/migrations/0001_initial.py | 30 +++++ source/commits/migrations/__init__.py | 0 source/commits/models.py | 16 +++ source/commits/tasks.py | 37 +++++ source/commits/templates/commits.html | 34 +++++ source/commits/tests.py | 25 ++++ source/commits/urls.py | 24 ++++ source/commits/views.py | 30 +++++ source/db.sqlite3 | Bin 0 -> 1483776 bytes source/docker-compose.yml | 31 +++++ source/github/__init__.py | 0 source/github/settings.py | 156 ++++++++++++++++++++++ source/github/urls.py | 23 ++++ source/github/wsgi.py | 17 +++ source/manage.py | 22 +++ source/requirements.txt | 6 + source/templates/index.html | 9 ++ 23 files changed, 485 insertions(+) create mode 100644 .gitignore create mode 100644 source/Dockerfile create mode 100644 source/README.md create mode 100644 source/commits/__init__.py create mode 100644 source/commits/admin.py create mode 100644 source/commits/apps.py create mode 100644 source/commits/migrations/0001_initial.py create mode 100644 source/commits/migrations/__init__.py create mode 100644 source/commits/models.py create mode 100644 source/commits/tasks.py create mode 100644 source/commits/templates/commits.html create mode 100644 source/commits/tests.py create mode 100644 source/commits/urls.py create mode 100644 source/commits/views.py create mode 100644 source/db.sqlite3 create mode 100644 source/docker-compose.yml create mode 100644 source/github/__init__.py create mode 100644 source/github/settings.py create mode 100644 source/github/urls.py create mode 100644 source/github/wsgi.py create mode 100755 source/manage.py create mode 100644 source/requirements.txt create mode 100644 source/templates/index.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d0a113f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.pyc +.DS_Store \ No newline at end of file diff --git a/source/Dockerfile b/source/Dockerfile new file mode 100644 index 0000000..6bccc09 --- /dev/null +++ b/source/Dockerfile @@ -0,0 +1,7 @@ + FROM python:2.7 + ENV PYTHONUNBUFFERED 1 + RUN mkdir /code + WORKDIR /code + ADD requirements.txt /code/ + RUN pip install -r requirements.txt + ADD . /code/ \ No newline at end of file diff --git a/source/README.md b/source/README.md new file mode 100644 index 0000000..2253c34 --- /dev/null +++ b/source/README.md @@ -0,0 +1,6 @@ +## What needs to be done to run the project: + +1 docker-compose build +2 docker-compose run web ./manage.py migrate +3 docker-compose run web ./manage.py createsuperuser +4 docker-compose up diff --git a/source/commits/__init__.py b/source/commits/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/source/commits/admin.py b/source/commits/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/source/commits/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/source/commits/apps.py b/source/commits/apps.py new file mode 100644 index 0000000..6076d3b --- /dev/null +++ b/source/commits/apps.py @@ -0,0 +1,7 @@ +from __future__ import unicode_literals + +from django.apps import AppConfig + + +class ApigithubConfig(AppConfig): + name = 'apigithub' diff --git a/source/commits/migrations/0001_initial.py b/source/commits/migrations/0001_initial.py new file mode 100644 index 0000000..ad07e04 --- /dev/null +++ b/source/commits/migrations/0001_initial.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.6 on 2017-03-15 09:40 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Commits', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('sha', models.CharField(default='', max_length=200)), + ('author', models.CharField(blank=True, default='', max_length=200)), + ('pub_date', models.DateTimeField()), + ('text', models.TextField()), + ('read_status', models.BooleanField(default=False)), + ], + options={ + 'db_table': 'commits', + }, + ), + ] diff --git a/source/commits/migrations/__init__.py b/source/commits/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/source/commits/models.py b/source/commits/models.py new file mode 100644 index 0000000..e624f69 --- /dev/null +++ b/source/commits/models.py @@ -0,0 +1,16 @@ +from __future__ import unicode_literals + +from django.db import models + +# Create your models here. +class Commits(models.Model): + class Meta(): + db_table = 'commits' + + + sha = models.CharField(max_length=200, default='') + author = models.CharField(max_length=200, blank=True, default='') + pub_date = models.DateTimeField() + text = models.TextField() + read_status = models.BooleanField(default=False) + diff --git a/source/commits/tasks.py b/source/commits/tasks.py new file mode 100644 index 0000000..1327838 --- /dev/null +++ b/source/commits/tasks.py @@ -0,0 +1,37 @@ +from celery.task.schedules import crontab +from celery.decorators import periodic_task +from celery.utils.log import get_task_logger + +from django.utils import timezone + +from .models import Commits +from urllib2 import urlopen +from dateutil.parser import parse + +import json + +logger = get_task_logger(__name__) + + +@periodic_task(ignore_result=True, run_every=(crontab(hour="*", minute=timezone.now().minute+1, day_of_week="*"))) +def get_latest_commit(owner='nodejs', repo='node'): + logger.info("Start task") + url = 'https://api.github.com/repos/{owner}/{repo}/commits'.format(owner=owner, repo=repo) + response = urlopen(url).read() + data = json.loads(response.decode('UTF-8')) + list = data[:25] + for el in list: + sha = el['sha'] + name = el['commit']['author']['name'] + msg = el['commit']['message'].encode('ascii','ignore') + date = parse(el['commit']['author']['date']) + try: + if not Commits.objects.filter(sha=sha): + comment = Commits(author=name, text=msg, pub_date=date, read_status=False, sha=sha) + comment.save() + logger.info("Get!!!") + except Exception as ex: + print('ex is: {}'.format(ex)) + logger.info("End task success!!!") + return list + \ No newline at end of file diff --git a/source/commits/templates/commits.html b/source/commits/templates/commits.html new file mode 100644 index 0000000..bed034d --- /dev/null +++ b/source/commits/templates/commits.html @@ -0,0 +1,34 @@ +{% extends 'index.html' %} + +{% block commits %} +
+

Commits!

+ {% for commit in commits %} +

{{ commit.author }} - {{ commit.pub_date }}

+

{{ commit.text }}

+ Read - {{ commit.read_status }} +
+ {% endfor %} +
+
+ {% if commits.has_previous %} + < + {% else %} + < + {% endif %} + {% for page in commits.paginator.page_range %} + {% if page == commits.number %} + {{ page }} + {% else %} + {{ page }} + {% endif %} + {% endfor %} + {% if commits.has_next %} + > + {% else %} + > + {% endif %} + +
+{% endblock %} + \ No newline at end of file diff --git a/source/commits/tests.py b/source/commits/tests.py new file mode 100644 index 0000000..5440075 --- /dev/null +++ b/source/commits/tests.py @@ -0,0 +1,25 @@ +from urllib2 import urlopen +import json + +from django.test import TestCase + +from .tasks import get_latest_commit +from .models import Commits + + +class TasksMethodTests(TestCase): + + def test_get_latest_commit(self): + """ + test_get_latest_commit - checking get_latest_commit saved only new commits + """ + error = '' + list = get_latest_commit() + for el in list: + sha = el['sha'] + try: + if not Commits.objects.get(sha=sha): + error = 'object not exist' + except Exception as ex: + error = 'there are duplicates' + self.assertEqual(error, '') \ No newline at end of file diff --git a/source/commits/urls.py b/source/commits/urls.py new file mode 100644 index 0000000..d394397 --- /dev/null +++ b/source/commits/urls.py @@ -0,0 +1,24 @@ +"""composeexample URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/1.10/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.conf.urls import url, include + 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) +""" +from django.conf.urls import url +from views import commits, readed + + +urlpatterns = [ + url(r'^page/(\d+)/$', commits), + url(r'^readed/(?P\d+)/(?P\d+)/$', readed), + url(r'^$', commits), +] diff --git a/source/commits/views.py b/source/commits/views.py new file mode 100644 index 0000000..9ac38ac --- /dev/null +++ b/source/commits/views.py @@ -0,0 +1,30 @@ +from django.shortcuts import render_to_response, redirect +from django.http.response import Http404 +from django.core.paginator import Paginator +from django.core.exceptions import ObjectDoesNotExist +from django.utils import timezone + +from .models import Commits + +# Create your views here. + +def commits(request, page_number=1): + + all_commits = Commits.objects.order_by('-pub_date') + current_page = Paginator(all_commits, 5) + print(timezone.now().minute) + return render_to_response('commits.html', {'commits': current_page.page(page_number)}) + +def readed(request, commit_id, page_number): + try: + commits = Commits.objects.get(id=commit_id) + if commits.read_status: + commits.read_status = False + else: + commits.read_status = True + commits.save() + response = redirect('/page/'+page_number+"/") + return response + except ObjectDoesNotExist: + raise Http404 + return redirect('/page/'+page_number+'/') diff --git a/source/db.sqlite3 b/source/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..13fb7cc1af22465eb074ff837426c289a213ee27 GIT binary patch literal 1483776 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

o@*836cS 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%0A8`R-hwuDa(Z0RGo=#r!WZv^uJx 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 z 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 literal 0 HcmV?d00001 diff --git a/source/docker-compose.yml b/source/docker-compose.yml new file mode 100644 index 0000000..8ac732b --- /dev/null +++ b/source/docker-compose.yml @@ -0,0 +1,31 @@ + version: '2' + services: + db: + image: postgres + web: + build: . + command: python manage.py runserver 0.0.0.0:8000 + volumes: + - .:/code + ports: + - "8000:8000" + depends_on: + - db + # RabbitMQ + rabbit: + hostname: rabbit + image: rabbitmq:3.6.0 + environment: + - RABBITMQ_DEFAULT_USER=admin + - RABBITMQ_DEFAULT_PASS=mypass + ports: + - "5672:5672" # we forward this port because it's useful for debugging + - "15672:15672" # here, we can access rabbitmq management plugin + celery: + build: . + environment: + - C_FORCE_ROOT=true + command: python manage.py celeryd -l INFO -B + volumes: + - .:/code + diff --git a/source/github/__init__.py b/source/github/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/source/github/settings.py b/source/github/settings.py new file mode 100644 index 0000000..f3844cd --- /dev/null +++ b/source/github/settings.py @@ -0,0 +1,156 @@ +""" +Django settings for github project. + +Generated by 'django-admin startproject' using Django 1.10.6. + +For more information on this file, see +https://docs.djangoproject.com/en/1.10/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/1.10/ref/settings/ +""" + +import os +import djcelery + +djcelery.setup_loader() + +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = '#d&h$dv!$zm_of%e9abqc(ib_(gie8_b_(!8eokb3y@*e+#m*%' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + +CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler" +CELERY_ACCEPT_CONTENT = ['pickle', 'json', 'msgpack', 'yaml'] +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'commits', + "djcelery", +] +RABBIT_HOSTNAME = os.environ.get('RABBIT_PORT_5672_TCP', 'rabbit') + +if RABBIT_HOSTNAME.startswith('tcp://'): + RABBIT_HOSTNAME = RABBIT_HOSTNAME.split('//')[1] + +BROKER_URL = os.environ.get('BROKER_URL', + '') +if not BROKER_URL: + BROKER_URL = 'amqp://{user}:{password}@{hostname}/{vhost}/'.format( + user=os.environ.get('RABBIT_ENV_USER', 'admin'), + password=os.environ.get('RABBIT_ENV_RABBITMQ_PASS', 'mypass'), + hostname=RABBIT_HOSTNAME, + vhost=os.environ.get('RABBIT_ENV_VHOST', '')) + +# We don't want to have dead connections stored on rabbitmq, so we have to negotiate using heartbeats +BROKER_HEARTBEAT = '?heartbeat=30' +if not BROKER_URL.endswith(BROKER_HEARTBEAT): + BROKER_URL += BROKER_HEARTBEAT + +BROKER_POOL_LIMIT = 1 +BROKER_CONNECTION_TIMEOUT = 10 + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'github.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [os.path.join(BASE_DIR, 'templates'), + os.path.join(BASE_DIR, 'commits/templates'), + ], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'github.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/1.10/ref/settings/#databases + +DATABASES = { + # 'default': { + # 'ENGINE': 'django.db.backends.sqlite3', + # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), + # } + 'default': { + 'ENGINE': 'django.db.backends.postgresql', + 'NAME': 'postgres', + 'USER': 'postgres', + 'HOST': 'db', + 'PORT': 5432, + } +} + + +# Password validation +# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/1.10/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/1.10/howto/static-files/ + +STATIC_URL = '/static/' diff --git a/source/github/urls.py b/source/github/urls.py new file mode 100644 index 0000000..2a82b9d --- /dev/null +++ b/source/github/urls.py @@ -0,0 +1,23 @@ +"""composeexample URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/1.10/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.conf.urls import url, include + 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) +""" +from django.conf.urls import url, include +from django.contrib import admin + +urlpatterns = [ + + url(r'^admin/', admin.site.urls), + url(r'^', include('commits.urls')), +] diff --git a/source/github/wsgi.py b/source/github/wsgi.py new file mode 100644 index 0000000..e7d3874 --- /dev/null +++ b/source/github/wsgi.py @@ -0,0 +1,17 @@ +""" +WSGI config for composeexample project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "composeexample.settings") +os.environ["CELERY_LOADER"] = "django" + +application = get_wsgi_application() diff --git a/source/manage.py b/source/manage.py new file mode 100755 index 0000000..e838fd4 --- /dev/null +++ b/source/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +import os +import sys + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "github.settings") + try: + from django.core.management import execute_from_command_line + except ImportError: + # The above import may fail for some other reason. Ensure that the + # issue is really that Django is missing to avoid masking other + # exceptions on Python 2. + try: + import django + except ImportError: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) + raise + execute_from_command_line(sys.argv) diff --git a/source/requirements.txt b/source/requirements.txt new file mode 100644 index 0000000..d079016 --- /dev/null +++ b/source/requirements.txt @@ -0,0 +1,6 @@ + Django + psycopg2 + python-dateutil + django-celery + python-dateutil + \ No newline at end of file diff --git a/source/templates/index.html b/source/templates/index.html new file mode 100644 index 0000000..dc4653a --- /dev/null +++ b/source/templates/index.html @@ -0,0 +1,9 @@ + + + + Django + + + {% block commits %}{% endblock %} + + \ No newline at end of file From 2fa3a3ac68e6e53bbeca6713ae14307fc7bbd552 Mon Sep 17 00:00:00 2001 From: Vladimir Paliy Date: Wed, 15 Mar 2017 15:42:00 +0300 Subject: [PATCH 2/2] Update README.md hotfix README.md --- source/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/README.md b/source/README.md index 2253c34..59a404b 100644 --- a/source/README.md +++ b/source/README.md @@ -1,6 +1,6 @@ ## What needs to be done to run the project: -1 docker-compose build -2 docker-compose run web ./manage.py migrate -3 docker-compose run web ./manage.py createsuperuser -4 docker-compose up +1. docker-compose build +2. docker-compose run web ./manage.py migrate +3. docker-compose run web ./manage.py createsuperuser +4. docker-compose up