diff options
| author | Yuval Adam <yuv.adm@gmail.com> | 2013-12-08 12:47:45 +0200 |
|---|---|---|
| committer | Yuval Adam <yuv.adm@gmail.com> | 2013-12-08 12:47:45 +0200 |
| commit | eed9a8c971beeea981a775def332a28569826686 (patch) | |
| tree | 68dc0c279f31e4aaae341667167c18813ca9b96a | |
Initial project files
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | README.md | 3 | ||||
| -rwxr-xr-x | manage.py | 10 | ||||
| -rw-r--r-- | newsdiff/__init__.py | 0 | ||||
| -rw-r--r-- | newsdiff/core/__init__.py | 0 | ||||
| -rw-r--r-- | newsdiff/core/admin.py | 3 | ||||
| -rw-r--r-- | newsdiff/core/migrations/0001_initial.py | 59 | ||||
| -rw-r--r-- | newsdiff/core/migrations/__init__.py | 0 | ||||
| -rw-r--r-- | newsdiff/core/models.py | 16 | ||||
| -rw-r--r-- | newsdiff/core/tests.py | 3 | ||||
| -rw-r--r-- | newsdiff/core/views.py | 3 | ||||
| -rw-r--r-- | newsdiff/settings/__init__.py | 11 | ||||
| -rw-r--r-- | newsdiff/settings/base.py | 115 | ||||
| -rw-r--r-- | newsdiff/settings/ec2.py | 5 | ||||
| -rw-r--r-- | newsdiff/settings/heroku.py | 5 | ||||
| -rw-r--r-- | newsdiff/settings/local.py | 24 | ||||
| -rw-r--r-- | newsdiff/urls.py | 12 | ||||
| -rw-r--r-- | newsdiff/wsgi.py | 14 | ||||
| -rw-r--r-- | requirements.txt | 14 |
19 files changed, 298 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0d20b64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.pyc diff --git a/README.md b/README.md new file mode 100644 index 0000000..ae68d10 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# NewsDiff + +A tool for scraping, parsing, archiving and analyzing mainstream media content. diff --git a/manage.py b/manage.py new file mode 100755 index 0000000..10f171e --- /dev/null +++ b/manage.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python +import os +import sys + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "newsdiff.settings") + + from django.core.management import execute_from_command_line + + execute_from_command_line(sys.argv) diff --git a/newsdiff/__init__.py b/newsdiff/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/newsdiff/__init__.py diff --git a/newsdiff/core/__init__.py b/newsdiff/core/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/newsdiff/core/__init__.py diff --git a/newsdiff/core/admin.py b/newsdiff/core/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/newsdiff/core/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/newsdiff/core/migrations/0001_initial.py b/newsdiff/core/migrations/0001_initial.py new file mode 100644 index 0000000..b32e267 --- /dev/null +++ b/newsdiff/core/migrations/0001_initial.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +from south.utils import datetime_utils as datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding model 'HaaretzArticle' + db.create_table(u'core_haaretzarticle', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('url', self.gf('django.db.models.fields.CharField')(max_length=200)), + ('title', self.gf('django.db.models.fields.CharField')(max_length=140)), + ('subtitle', self.gf('django.db.models.fields.CharField')(max_length=300)), + ('text', self.gf('django.db.models.fields.TextField')()), + ('date', self.gf('django.db.models.fields.DateTimeField')()), + )) + db.send_create_signal(u'core', ['HaaretzArticle']) + + # Adding model 'HaaretzImage' + db.create_table(u'core_haaretzimage', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('article', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['core.HaaretzArticle'])), + ('origin_url', self.gf('django.db.models.fields.CharField')(max_length=200)), + ('image', self.gf('django.db.models.fields.files.ImageField')(max_length=100)), + )) + db.send_create_signal(u'core', ['HaaretzImage']) + + + def backwards(self, orm): + # Deleting model 'HaaretzArticle' + db.delete_table(u'core_haaretzarticle') + + # Deleting model 'HaaretzImage' + db.delete_table(u'core_haaretzimage') + + + models = { + u'core.haaretzarticle': { + 'Meta': {'object_name': 'HaaretzArticle'}, + 'date': ('django.db.models.fields.DateTimeField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'subtitle': ('django.db.models.fields.CharField', [], {'max_length': '300'}), + 'text': ('django.db.models.fields.TextField', [], {}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '140'}), + 'url': ('django.db.models.fields.CharField', [], {'max_length': '200'}) + }, + u'core.haaretzimage': { + 'Meta': {'object_name': 'HaaretzImage'}, + 'article': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['core.HaaretzArticle']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}), + 'origin_url': ('django.db.models.fields.CharField', [], {'max_length': '200'}) + } + } + + complete_apps = ['core']
\ No newline at end of file diff --git a/newsdiff/core/migrations/__init__.py b/newsdiff/core/migrations/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/newsdiff/core/migrations/__init__.py diff --git a/newsdiff/core/models.py b/newsdiff/core/models.py new file mode 100644 index 0000000..0bbb0b2 --- /dev/null +++ b/newsdiff/core/models.py @@ -0,0 +1,16 @@ +from django.db import models +from django.utils.timezone import now as tz_now + + +class HaaretzArticle(models.Model): + url = models.CharField(max_length=200) + title = models.CharField(max_length=140) + subtitle = models.CharField(max_length=300) + text = models.TextField() + date = models.DateTimeField() + + +class HaaretzImage(models.Model): + article = models.ForeignKey(HaaretzArticle) + origin_url = models.CharField(max_length=200) + image = models.ImageField(upload_to='images/haaretz') diff --git a/newsdiff/core/tests.py b/newsdiff/core/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/newsdiff/core/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/newsdiff/core/views.py b/newsdiff/core/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/newsdiff/core/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/newsdiff/settings/__init__.py b/newsdiff/settings/__init__.py new file mode 100644 index 0000000..33b81ad --- /dev/null +++ b/newsdiff/settings/__init__.py @@ -0,0 +1,11 @@ +import os + +if 'EC2' in os.environ: + from .ec2 import * +if 'HEROKU' in os.environ: + from .heroku import * +else: + try: + from .local import * + except ImportError: + from .base import * diff --git a/newsdiff/settings/base.py b/newsdiff/settings/base.py new file mode 100644 index 0000000..e6ca023 --- /dev/null +++ b/newsdiff/settings/base.py @@ -0,0 +1,115 @@ +from unipath import FSPath as Path + +PROJECT_DIR = Path(__file__).absolute().ancestor(2) + +DEBUG = False +TEMPLATE_DEBUG = DEBUG + +ADMINS = ( + ('Yuval Adam', 'yuv.adm@gmail.com'), +) + +MANAGERS = ADMINS + +ALLOWED_HOSTS = [] + +TIME_ZONE = 'Etc/UTC' +LANGUAGE_CODE = 'en-us' +SITE_ID = 1 +USE_I18N = True +USE_L10N = True +USE_TZ = True + +MEDIA_ROOT = '' +MEDIA_URL = '' +STATIC_ROOT = '' +STATIC_URL = '/static/' + +STATICFILES_DIRS = ( + PROJECT_DIR.child('static'), +) + +STATICFILES_FINDERS = ( + 'django.contrib.staticfiles.finders.FileSystemFinder', + 'django.contrib.staticfiles.finders.AppDirectoriesFinder', +# 'django.contrib.staticfiles.finders.DefaultStorageFinder', +) + +SECRET_KEY = '65p2-o63(df#q7qq_pcj#y#l(bi#%ls)!-60lr$ric)6pb%tux' + +TEMPLATE_LOADERS = ( + 'django.template.loaders.filesystem.Loader', + 'django.template.loaders.app_directories.Loader', +# 'django.template.loaders.eggs.Loader', +) + +TEMPLATE_CONTEXT_PROCESSORS = ( + 'django.contrib.auth.context_processors.auth', + 'django.core.context_processors.debug', + 'django.core.context_processors.i18n', + 'django.core.context_processors.media', + 'django.core.context_processors.request', + 'django.core.context_processors.static', + 'django.core.context_processors.tz', + 'django.contrib.messages.context_processors.messages', +) + +MIDDLEWARE_CLASSES = ( + 'django.middleware.common.CommonMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + # 'django.middleware.clickjacking.XFrameOptionsMiddleware', +) + +ROOT_URLCONF = 'newsdiff.urls' + +WSGI_APPLICATION = 'newsdiff.wsgi.application' + +TEMPLATE_DIRS = ( + PROJECT_DIR.child('templates'), +) + +INSTALLED_APPS = ( + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.sites', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'django.contrib.admin', + + 'south', + 'storages', + + 'newsdiff.core' +) + +SITE_ID = 1 + +SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer' + +LOGGING = { + 'version': 1, + 'disable_existing_loggers': False, + 'filters': { + 'require_debug_false': { + '()': 'django.utils.log.RequireDebugFalse' + } + }, + 'handlers': { + 'mail_admins': { + 'level': 'ERROR', + 'filters': ['require_debug_false'], + 'class': 'django.utils.log.AdminEmailHandler' + } + }, + 'loggers': { + 'django.request': { + 'handlers': ['mail_admins'], + 'level': 'ERROR', + 'propagate': True, + }, + } +} diff --git a/newsdiff/settings/ec2.py b/newsdiff/settings/ec2.py new file mode 100644 index 0000000..4e1a293 --- /dev/null +++ b/newsdiff/settings/ec2.py @@ -0,0 +1,5 @@ +from .base import * + +ENV = 'ec2' + +DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' diff --git a/newsdiff/settings/heroku.py b/newsdiff/settings/heroku.py new file mode 100644 index 0000000..738d7bb --- /dev/null +++ b/newsdiff/settings/heroku.py @@ -0,0 +1,5 @@ +from .base import * + +ENV = 'heroku' + +DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' diff --git a/newsdiff/settings/local.py b/newsdiff/settings/local.py new file mode 100644 index 0000000..95b64c1 --- /dev/null +++ b/newsdiff/settings/local.py @@ -0,0 +1,24 @@ +from .base import * + +ENV = 'local' + +DEBUG = True +TEMPLATE_DEBUG = DEBUG + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql_psycopg2', + 'NAME': 'newsdiff', + 'USER': 'newsdiff', + 'PASSWORD': 'newsdiff', + 'HOST': '', + 'PORT': '', + } +} + +MEDIA_ROOT = PROJECT_DIR.child('media') +MEDIA_URL = '/media/' + +EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' + +CELERY_ALWAYS_EAGER = True # Makes all celery tasks run synchronously diff --git a/newsdiff/urls.py b/newsdiff/urls.py new file mode 100644 index 0000000..f523ec9 --- /dev/null +++ b/newsdiff/urls.py @@ -0,0 +1,12 @@ +from django.conf.urls import patterns, include, url + +from django.contrib import admin +admin.autodiscover() + +urlpatterns = patterns('', + # Examples: + # url(r'^$', 'newsdiff.views.home', name='home'), + # url(r'^blog/', include('blog.urls')), + + url(r'^admin/', include(admin.site.urls)), +) diff --git a/newsdiff/wsgi.py b/newsdiff/wsgi.py new file mode 100644 index 0000000..abf4c8a --- /dev/null +++ b/newsdiff/wsgi.py @@ -0,0 +1,14 @@ +""" +WSGI config for newsdiff 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.6/howto/deployment/wsgi/ +""" + +import os +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "newsdiff.settings") + +from django.core.wsgi import get_wsgi_application +application = get_wsgi_application() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..9f89c2d --- /dev/null +++ b/requirements.txt @@ -0,0 +1,14 @@ +Django==1.6 +PIL==1.1.7 +South==0.8.4 +Unipath==1.0 +amqp==1.3.3 +anyjson==0.3.3 +billiard==3.3.0.11 +celery==3.1.6 +django-reversion==1.8.0 +django-storages==1.1.8 +kombu==3.0.7 +psycopg2==2.5.1 +pytz==2013.8 +wsgiref==0.1.2 |
