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.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',
|
||||
}
|
||||
),
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue