summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--conf/dev_settings.py8
-rw-r--r--requirements.txt3
-rw-r--r--sublab_project/news/migrations/0002_auto__add_field_news_image__add_field_news_image_height__add_field_new.py100
-rw-r--r--sublab_project/news/models.py6
-rw-r--r--sublab_project/news/templates/news/news_detail.html5
-rw-r--r--sublab_project/news/templates/news/news_list.html5
-rw-r--r--sublab_project/urls.py5
8 files changed, 127 insertions, 8 deletions
diff --git a/.gitignore b/.gitignore
index 14b79dd..480e72e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
*.db
-sublab_project/local_settings.py
*.pyc
*.swp
+media
+sublab_project/local_settings.py
diff --git a/conf/dev_settings.py b/conf/dev_settings.py
index 1953653..d5cefb7 100644
--- a/conf/dev_settings.py
+++ b/conf/dev_settings.py
@@ -2,6 +2,7 @@ import os
from settings import SITE_ROOT, INSTALLED_APPS, MIDDLEWARE_CLASSES
+
DEBUG = True
TEMPLATE_DEBUG = DEBUG
@@ -12,7 +13,14 @@ DATABASES = {
}
}
+MEDIA_ROOT = os.path.join(SITE_ROOT, 'media')
+if not os.path.exists(MEDIA_ROOT):
+ os.mkdir(MEDIA_ROOT)
+
+MEDIA_URL = '/media/'
+
INSTALLED_APPS += ('debug_toolbar',)
+
MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',)
INTERNAL_IPS = ('127.0.0.1')
diff --git a/requirements.txt b/requirements.txt
index 1dc77a1..2bd7e3d 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,6 +1,5 @@
Django==1.3.1
South==0.7.3
gunicorn==0.13.4
-django-debug-toolbar==0.8.5
creole==1.2
-
+PIL==1.1.7
diff --git a/sublab_project/news/migrations/0002_auto__add_field_news_image__add_field_news_image_height__add_field_new.py b/sublab_project/news/migrations/0002_auto__add_field_news_image__add_field_news_image_height__add_field_new.py
new file mode 100644
index 0000000..c9a6744
--- /dev/null
+++ b/sublab_project/news/migrations/0002_auto__add_field_news_image__add_field_news_image_height__add_field_new.py
@@ -0,0 +1,100 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding field 'News.image'
+ db.add_column('news_news', 'image', self.gf('django.db.models.fields.files.ImageField')(default='', max_length=100, blank=True), keep_default=False)
+
+ # Adding field 'News.image_height'
+ db.add_column('news_news', 'image_height', self.gf('django.db.models.fields.IntegerField')(default=0), keep_default=False)
+
+ # Adding field 'News.image_width'
+ db.add_column('news_news', 'image_width', self.gf('django.db.models.fields.IntegerField')(default=0), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'News.image'
+ db.delete_column('news_news', 'image')
+
+ # Deleting field 'News.image_height'
+ db.delete_column('news_news', 'image_height')
+
+ # Deleting field 'News.image_width'
+ db.delete_column('news_news', 'image_width')
+
+
+ models = {
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'news.news': {
+ 'Meta': {'ordering': "['-date_updated']", 'object_name': 'News'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'content': ('django.db.models.fields.TextField', [], {}),
+ 'content_html': ('django.db.models.fields.TextField', [], {}),
+ 'date_created': ('django.db.models.fields.DateTimeField', [], {}),
+ 'date_updated': ('django.db.models.fields.DateTimeField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'image_height': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'image_width': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'projects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'news'", 'blank': 'True', 'to': "orm['projects.Project']"}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ 'projects.project': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Project'},
+ 'contact_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'contact_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
+ 'contact_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'date_created': ('django.db.models.fields.DateTimeField', [], {}),
+ 'date_updated': ('django.db.models.fields.DateTimeField', [], {}),
+ 'description': ('django.db.models.fields.TextField', [], {}),
+ 'description_html': ('django.db.models.fields.TextField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ }
+ }
+
+ complete_apps = ['news']
diff --git a/sublab_project/news/models.py b/sublab_project/news/models.py
index cd98248..385dc79 100644
--- a/sublab_project/news/models.py
+++ b/sublab_project/news/models.py
@@ -18,11 +18,15 @@ class News(models.Model):
projects = models.ManyToManyField(Project, blank=True,
related_name='news', verbose_name='Projekte')
author = models.ForeignKey(User, editable=False, verbose_name='Autor')
+ image = models.ImageField('Bild', upload_to='news',
+ height_field='image_height', width_field='image_width', blank=True)
+ image_height = models.IntegerField(default=0, editable=False)
+ image_width = models.IntegerField(default=0, editable=False)
date_created = models.DateTimeField('Erstellungsdatum', editable=False)
date_updated = models.DateTimeField('Aktualisierungsdatum', editable=False)
class Meta:
- ordering = ['date_updated']
+ ordering = ['-date_created']
verbose_name = 'News'
verbose_name_plural = 'News'
diff --git a/sublab_project/news/templates/news/news_detail.html b/sublab_project/news/templates/news/news_detail.html
index e3a0de1..49d2b7a 100644
--- a/sublab_project/news/templates/news/news_detail.html
+++ b/sublab_project/news/templates/news/news_detail.html
@@ -5,6 +5,9 @@
{% block content %}
<p class="news_date">{{ object.date_updated|date:"DATETIME_FORMAT" }}</p>
<h2 id="{{ object.slug }}">{{ object.title }}</h3>
- <p>{{ object.content_html|safe }}</p>
+ <p>
+ {% if object.image %}<img src="{{ MEDIA_URL }}{{ object.image }}" width="{{ object.image_width }}" height="{{ object.image_height }}" align="right" />{% endif %}
+ {{ object.content_html|safe }}
+ </p>
<p class="header">{{ object.author }}</p>
{% endblock content %}
diff --git a/sublab_project/news/templates/news/news_list.html b/sublab_project/news/templates/news/news_list.html
index ea46320..52ded72 100644
--- a/sublab_project/news/templates/news/news_list.html
+++ b/sublab_project/news/templates/news/news_list.html
@@ -6,7 +6,10 @@
<h3 id="{{ post.slug }}">
<a href="{{ post.get_absolute_url }}">{{ post.date_updated|date }} - {{ post.title }}</a>
</h3>
- <p>{{ post.content_html|safe }}</p>
+ <p>
+ {% if post.image %}<img src="{{ MEDIA_URL }}{{ post.image }}" width="{{ post.image_width }}" height="{{ post.image_height }}" align="right" />{% endif %}
+ {{ post.content_html|safe }}
+ </p>
{% endfor %}
{% if is_paginated %}
<p>
diff --git a/sublab_project/urls.py b/sublab_project/urls.py
index b853b29..89dac80 100644
--- a/sublab_project/urls.py
+++ b/sublab_project/urls.py
@@ -1,5 +1,6 @@
+from django.conf import settings
from django.conf.urls.defaults import patterns, include, url
-from django.views.generic import TemplateView
+from django.conf.urls.static import static
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
@@ -13,4 +14,4 @@ urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^projekte/', include('projects.urls')),
url(r'^', include('news.urls')),
-)
+) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)