Added projects app
This commit is contained in:
parent
b39612b4be
commit
5de2706d90
|
@ -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)
|
|
@ -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,),
|
||||||
|
),
|
||||||
|
]
|
|
@ -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']
|
|
@ -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'
|
||||||
|
),
|
||||||
|
)
|
|
@ -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)
|
|
@ -42,6 +42,7 @@ INSTALLED_APPS = (
|
||||||
# 'fmartingrcom.apps.homepage',
|
# 'fmartingrcom.apps.homepage',
|
||||||
'fmartingrcom.apps.config',
|
'fmartingrcom.apps.config',
|
||||||
'fmartingrcom.apps.blog',
|
'fmartingrcom.apps.blog',
|
||||||
|
'fmartingrcom.apps.projects',
|
||||||
|
|
||||||
'django_jinja',
|
'django_jinja',
|
||||||
|
|
||||||
|
@ -217,5 +218,10 @@ SUIT_CONFIG = {
|
||||||
'label': 'Blog',
|
'label': 'Blog',
|
||||||
'icon': 'icon-book',
|
'icon': 'icon-book',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
'app': 'projects',
|
||||||
|
'label': 'Projects',
|
||||||
|
'icon': 'icon-folder',
|
||||||
|
}
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue