Added projects app

This commit is contained in:
Felipe Martín 2015-03-19 23:11:44 +01:00
parent b39612b4be
commit 5de2706d90
8 changed files with 189 additions and 0 deletions

View File

View File

@ -0,0 +1,40 @@
# coding: utf-8
# django
from django.contrib import admin
# 3rd party
import reversion
# app
from . import models
#
# Group
#
class GroupAdmin(reversion.VersionAdmin):
list_display = ('name', 'order', )
list_display_links = ('name', )
list_editable = ('order', )
prepopulated_fields = {"slug": ("name",)}
fieldsets = [
(None, {
'fields': ('name', 'slug', 'order', )
}),
]
admin.site.register(models.Group, GroupAdmin)
#
# Project
#
class ProjectAdmin(reversion.VersionAdmin):
list_display = ('title', 'group', 'company', 'role', )
prepopulated_fields = {"slug": ("title",)}
admin.site.register(models.Project, ProjectAdmin)

View File

@ -0,0 +1,48 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
import fmartingrcom.apps.projects.models
import ckeditor.fields
class Migration(migrations.Migration):
dependencies = [
]
operations = [
migrations.CreateModel(
name='Group',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('name', models.CharField(max_length=128)),
('slug', models.SlugField(max_length=128)),
('order', models.IntegerField(default=1)),
],
options={
},
bases=(models.Model,),
),
migrations.CreateModel(
name='Project',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('title', models.CharField(max_length=128)),
('image', models.ImageField(default=None, upload_to=fmartingrcom.apps.projects.models.project_upload_to)),
('slug', models.SlugField(max_length=128)),
('date', models.DateTimeField()),
('company', models.CharField(max_length=128, null=True, blank=True)),
('role', models.CharField(max_length=128)),
('description', ckeditor.fields.RichTextField()),
('visible', models.BooleanField(default=True)),
('stack', models.CharField(default=None, max_length=256, null=True, blank=True)),
('url', models.CharField(default=None, max_length=256, null=True, blank=True)),
('group', models.ForeignKey(related_name='projects', to='projects.Group')),
],
options={
'ordering': ['-date'],
},
bases=(models.Model,),
),
]

View File

@ -0,0 +1,48 @@
# coding: utf-8
# python
import os
# django
from django.db import models
# 3rd party
from ckeditor.fields import RichTextField
#
# Work project
#
class Group(models.Model):
name = models.CharField(max_length=128)
slug = models.SlugField(max_length=128)
order = models.IntegerField(default=1)
def __unicode__(self):
return self.name
def project_upload_to(ins, filename):
name, ext = os.path.splitext(filename)
return 'projects/{}{}'.format(ins.slug, ext)
class Project(models.Model):
group = models.ForeignKey(Group, related_name='projects')
title = models.CharField(max_length=128)
image = models.ImageField(upload_to=project_upload_to, default=None)
slug = models.SlugField(max_length=128)
date = models.DateTimeField()
company = models.CharField(max_length=128, null=True, blank=True)
role = models.CharField(max_length=128)
description = RichTextField()
visible = models.BooleanField(default=True)
stack = models.CharField(max_length=256, null=True, blank=True,
default=None)
url = models.CharField(max_length=256, null=True, blank=True, default=None)
def __unicode__(self):
return self.title
class Meta:
ordering = ['-date']

View File

@ -0,0 +1,18 @@
# coding: utf-8
# django
from django.conf.urls import patterns, url
# app
from . import views
urlpatterns = patterns(
None,
# Project list
url(
r'^$',
views.ListView.as_view(),
name='list'
),
)

View File

@ -0,0 +1,29 @@
# coding: utf-8
# django
from django.shortcuts import render_to_response
from django.template import RequestContext
# project
from fmartingrcom.apps._core.views import View
from fmartingrcom.apps.config.models import SiteConfiguration
# app
from . import models
config = SiteConfiguration.objects.get()
class ListView(View):
section = 'projects'
template = 'projects/list.jinja'
def get(self, request, page_number=1):
data = {
'section': self.section,
'groups': models.Group.objects.all().order_by('order'),
}
context = RequestContext(request, data)
return render_to_response(self.template, context_instance=context)

View File

@ -42,6 +42,7 @@ INSTALLED_APPS = (
# 'fmartingrcom.apps.homepage',
'fmartingrcom.apps.config',
'fmartingrcom.apps.blog',
'fmartingrcom.apps.projects',
'django_jinja',
@ -217,5 +218,10 @@ SUIT_CONFIG = {
'label': 'Blog',
'icon': 'icon-book',
},
{
'app': 'projects',
'label': 'Projects',
'icon': 'icon-folder',
}
),
}