Merge branch 'master' of github.com:fmartingr/shelfzilla
This commit is contained in:
commit
f1e01cadec
|
@ -0,0 +1 @@
|
||||||
|
-r ../requirements.txt
|
|
@ -4,6 +4,7 @@ South==0.8.4
|
||||||
|
|
||||||
# Admin
|
# Admin
|
||||||
django-suit==0.2.6
|
django-suit==0.2.6
|
||||||
|
django-reversion==1.8.0
|
||||||
|
|
||||||
# Fixes
|
# Fixes
|
||||||
longerusername==0.4
|
longerusername==0.4
|
||||||
|
|
|
@ -0,0 +1,228 @@
|
||||||
|
# -*- 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 'Person'
|
||||||
|
db.create_table(u'manga_person', (
|
||||||
|
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
|
('for_review', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||||
|
('for_review_comment', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
|
||||||
|
('hidden', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||||
|
('name', self.gf('django.db.models.fields.CharField')(max_length=256)),
|
||||||
|
('slug', self.gf('django.db.models.fields.SlugField')(max_length=50, null=True, blank=True)),
|
||||||
|
))
|
||||||
|
db.send_create_signal(u'manga', ['Person'])
|
||||||
|
|
||||||
|
# Adding field 'Volume.hidden'
|
||||||
|
db.add_column(u'manga_volume', 'hidden',
|
||||||
|
self.gf('django.db.models.fields.BooleanField')(default=False),
|
||||||
|
keep_default=False)
|
||||||
|
|
||||||
|
# Adding field 'Volume.retail_price'
|
||||||
|
db.add_column(u'manga_volume', 'retail_price',
|
||||||
|
self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=5, decimal_places=2),
|
||||||
|
keep_default=False)
|
||||||
|
|
||||||
|
# Adding field 'Volume.pages'
|
||||||
|
db.add_column(u'manga_volume', 'pages',
|
||||||
|
self.gf('django.db.models.fields.IntegerField')(null=True),
|
||||||
|
keep_default=False)
|
||||||
|
|
||||||
|
# Adding field 'Volume.release_date'
|
||||||
|
db.add_column(u'manga_volume', 'release_date',
|
||||||
|
self.gf('django.db.models.fields.DateField')(null=True),
|
||||||
|
keep_default=False)
|
||||||
|
|
||||||
|
# Adding field 'Publisher.hidden'
|
||||||
|
db.add_column(u'manga_publisher', 'hidden',
|
||||||
|
self.gf('django.db.models.fields.BooleanField')(default=False),
|
||||||
|
keep_default=False)
|
||||||
|
|
||||||
|
# Adding field 'Series.hidden'
|
||||||
|
db.add_column(u'manga_series', 'hidden',
|
||||||
|
self.gf('django.db.models.fields.BooleanField')(default=False),
|
||||||
|
keep_default=False)
|
||||||
|
|
||||||
|
# Adding field 'Series.original_publisher'
|
||||||
|
db.add_column(u'manga_series', 'original_publisher',
|
||||||
|
self.gf('django.db.models.fields.related.ForeignKey')(related_name='original_series', null=True, to=orm['manga.Publisher']),
|
||||||
|
keep_default=False)
|
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm):
|
||||||
|
# Deleting model 'Person'
|
||||||
|
db.delete_table(u'manga_person')
|
||||||
|
|
||||||
|
# Deleting field 'Volume.hidden'
|
||||||
|
db.delete_column(u'manga_volume', 'hidden')
|
||||||
|
|
||||||
|
# Deleting field 'Volume.retail_price'
|
||||||
|
db.delete_column(u'manga_volume', 'retail_price')
|
||||||
|
|
||||||
|
# Deleting field 'Volume.pages'
|
||||||
|
db.delete_column(u'manga_volume', 'pages')
|
||||||
|
|
||||||
|
# Deleting field 'Volume.release_date'
|
||||||
|
db.delete_column(u'manga_volume', 'release_date')
|
||||||
|
|
||||||
|
# Deleting field 'Publisher.hidden'
|
||||||
|
db.delete_column(u'manga_publisher', 'hidden')
|
||||||
|
|
||||||
|
# Deleting field 'Series.hidden'
|
||||||
|
db.delete_column(u'manga_series', 'hidden')
|
||||||
|
|
||||||
|
# Deleting field 'Series.original_publisher'
|
||||||
|
db.delete_column(u'manga_series', 'original_publisher_id')
|
||||||
|
|
||||||
|
|
||||||
|
models = {
|
||||||
|
u'auth.group': {
|
||||||
|
'Meta': {'object_name': 'Group'},
|
||||||
|
u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'auth.permission': {
|
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
|
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
|
},
|
||||||
|
u'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', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
|
||||||
|
u'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', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
|
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '75'})
|
||||||
|
},
|
||||||
|
u'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'}),
|
||||||
|
u'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'})
|
||||||
|
},
|
||||||
|
'filer.file': {
|
||||||
|
'Meta': {'object_name': 'File'},
|
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}),
|
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
|
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}),
|
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}),
|
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}),
|
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
'filer.folder': {
|
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'},
|
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
|
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
|
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}),
|
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}),
|
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
|
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
|
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
'filer.image': {
|
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']},
|
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}),
|
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'manga.person': {
|
||||||
|
'Meta': {'ordering': "['name']", 'object_name': 'Person'},
|
||||||
|
'for_review': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'for_review_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'hidden': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
|
||||||
|
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'manga.publisher': {
|
||||||
|
'Meta': {'ordering': "['name']", 'object_name': 'Publisher'},
|
||||||
|
'for_review': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'for_review_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'hidden': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
|
||||||
|
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'manga.series': {
|
||||||
|
'Meta': {'ordering': "['name']", 'object_name': 'Series'},
|
||||||
|
'cover': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['filer.Image']", 'null': 'True', 'blank': 'True'}),
|
||||||
|
'finished': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['filer.Folder']", 'null': 'True', 'blank': 'True'}),
|
||||||
|
'for_review': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'for_review_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'hidden': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
|
||||||
|
'original_publisher': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'original_series'", 'null': 'True', 'to': u"orm['manga.Publisher']"}),
|
||||||
|
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'summary': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'manga.userhavevolume': {
|
||||||
|
'Meta': {'object_name': 'UserHaveVolume'},
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'have_volumes'", 'to': u"orm['auth.User']"}),
|
||||||
|
'volume': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_by'", 'to': u"orm['manga.Volume']"})
|
||||||
|
},
|
||||||
|
u'manga.userwishlistvolume': {
|
||||||
|
'Meta': {'object_name': 'UserWishlistVolume'},
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'wishlisted_volumes'", 'to': u"orm['auth.User']"}),
|
||||||
|
'volume': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'wishlisted_by'", 'to': u"orm['manga.Volume']"})
|
||||||
|
},
|
||||||
|
u'manga.volume': {
|
||||||
|
'Meta': {'ordering': "['series__name', 'number']", 'object_name': 'Volume'},
|
||||||
|
'cover': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['filer.Image']", 'null': 'True', 'blank': 'True'}),
|
||||||
|
'for_review': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'for_review_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'hidden': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'isbn_10': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'isbn_13': ('django.db.models.fields.CharField', [], {'max_length': '13', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'number': ('django.db.models.fields.IntegerField', [], {}),
|
||||||
|
'pages': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
|
||||||
|
'publisher': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'volumes'", 'to': u"orm['manga.Publisher']"}),
|
||||||
|
'release_date': ('django.db.models.fields.DateField', [], {'null': 'True'}),
|
||||||
|
'retail_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '5', 'decimal_places': '2'}),
|
||||||
|
'series': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'volumes'", 'to': u"orm['manga.Series']"})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
complete_apps = ['manga']
|
|
@ -0,0 +1,176 @@
|
||||||
|
# -*- 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 field 'Series.art'
|
||||||
|
db.add_column(u'manga_series', 'art',
|
||||||
|
self.gf('django.db.models.fields.related.ForeignKey')(related_name='artist_of', null=True, to=orm['manga.Person']),
|
||||||
|
keep_default=False)
|
||||||
|
|
||||||
|
# Adding field 'Series.story'
|
||||||
|
db.add_column(u'manga_series', 'story',
|
||||||
|
self.gf('django.db.models.fields.related.ForeignKey')(related_name='scriptwriter_of', null=True, to=orm['manga.Person']),
|
||||||
|
keep_default=False)
|
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm):
|
||||||
|
# Deleting field 'Series.art'
|
||||||
|
db.delete_column(u'manga_series', 'art_id')
|
||||||
|
|
||||||
|
# Deleting field 'Series.story'
|
||||||
|
db.delete_column(u'manga_series', 'story_id')
|
||||||
|
|
||||||
|
|
||||||
|
models = {
|
||||||
|
u'auth.group': {
|
||||||
|
'Meta': {'object_name': 'Group'},
|
||||||
|
u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'auth.permission': {
|
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
|
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
|
},
|
||||||
|
u'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', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
|
||||||
|
u'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', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
|
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '75'})
|
||||||
|
},
|
||||||
|
u'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'}),
|
||||||
|
u'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'})
|
||||||
|
},
|
||||||
|
'filer.file': {
|
||||||
|
'Meta': {'object_name': 'File'},
|
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}),
|
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
|
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}),
|
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}),
|
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}),
|
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
'filer.folder': {
|
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'},
|
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
|
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
|
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}),
|
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}),
|
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
|
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
|
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
'filer.image': {
|
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']},
|
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}),
|
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'manga.person': {
|
||||||
|
'Meta': {'ordering': "['name']", 'object_name': 'Person'},
|
||||||
|
'for_review': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'for_review_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'hidden': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
|
||||||
|
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'manga.publisher': {
|
||||||
|
'Meta': {'ordering': "['name']", 'object_name': 'Publisher'},
|
||||||
|
'for_review': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'for_review_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'hidden': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
|
||||||
|
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'manga.series': {
|
||||||
|
'Meta': {'ordering': "['name']", 'object_name': 'Series'},
|
||||||
|
'art': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'artist_of'", 'null': 'True', 'to': u"orm['manga.Person']"}),
|
||||||
|
'cover': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['filer.Image']", 'null': 'True', 'blank': 'True'}),
|
||||||
|
'finished': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['filer.Folder']", 'null': 'True', 'blank': 'True'}),
|
||||||
|
'for_review': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'for_review_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'hidden': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
|
||||||
|
'original_publisher': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'original_series'", 'null': 'True', 'to': u"orm['manga.Publisher']"}),
|
||||||
|
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'story': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'scriptwriter_of'", 'null': 'True', 'to': u"orm['manga.Person']"}),
|
||||||
|
'summary': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'manga.userhavevolume': {
|
||||||
|
'Meta': {'object_name': 'UserHaveVolume'},
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'have_volumes'", 'to': u"orm['auth.User']"}),
|
||||||
|
'volume': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owned_by'", 'to': u"orm['manga.Volume']"})
|
||||||
|
},
|
||||||
|
u'manga.userwishlistvolume': {
|
||||||
|
'Meta': {'object_name': 'UserWishlistVolume'},
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'wishlisted_volumes'", 'to': u"orm['auth.User']"}),
|
||||||
|
'volume': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'wishlisted_by'", 'to': u"orm['manga.Volume']"})
|
||||||
|
},
|
||||||
|
u'manga.volume': {
|
||||||
|
'Meta': {'ordering': "['series__name', 'number']", 'object_name': 'Volume'},
|
||||||
|
'cover': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['filer.Image']", 'null': 'True', 'blank': 'True'}),
|
||||||
|
'for_review': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'for_review_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'hidden': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'isbn_10': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'isbn_13': ('django.db.models.fields.CharField', [], {'max_length': '13', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'number': ('django.db.models.fields.IntegerField', [], {}),
|
||||||
|
'pages': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
|
||||||
|
'publisher': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'volumes'", 'to': u"orm['manga.Publisher']"}),
|
||||||
|
'release_date': ('django.db.models.fields.DateField', [], {'null': 'True'}),
|
||||||
|
'retail_price': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '5', 'decimal_places': '2'}),
|
||||||
|
'series': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'volumes'", 'to': u"orm['manga.Series']"})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
complete_apps = ['manga']
|
|
@ -5,10 +5,10 @@ from django.db.models.signals import post_save
|
||||||
from filer.fields.image import FilerImageField
|
from filer.fields.image import FilerImageField
|
||||||
from filer.models.foldermodels import Folder
|
from filer.models.foldermodels import Folder
|
||||||
|
|
||||||
from shelfzilla.models import ReviewModel
|
from shelfzilla.models import Model
|
||||||
|
|
||||||
|
|
||||||
class Publisher(ReviewModel):
|
class Publisher(Model):
|
||||||
name = models.CharField(_('Name'), max_length=40)
|
name = models.CharField(_('Name'), max_length=40)
|
||||||
slug = models.SlugField(_('Slug'), blank=True, null=True)
|
slug = models.SlugField(_('Slug'), blank=True, null=True)
|
||||||
url = models.URLField(_('URL'), blank=True, null=True)
|
url = models.URLField(_('URL'), blank=True, null=True)
|
||||||
|
@ -39,13 +39,21 @@ class Publisher(ReviewModel):
|
||||||
verbose_name_plural = _('Publishers')
|
verbose_name_plural = _('Publishers')
|
||||||
|
|
||||||
|
|
||||||
class Series(ReviewModel):
|
class Series(Model):
|
||||||
name = models.CharField(_('Name'), max_length=256)
|
name = models.CharField(_('Name'), max_length=256)
|
||||||
slug = models.SlugField(_('Slug'), blank=True, null=True)
|
slug = models.SlugField(_('Slug'), blank=True, null=True)
|
||||||
cover = FilerImageField(blank=True, null=True)
|
cover = FilerImageField(blank=True, null=True)
|
||||||
summary = models.TextField(_('Summary'), blank=True, null=True)
|
summary = models.TextField(_('Summary'), blank=True, null=True)
|
||||||
finished = models.BooleanField(_('Finished'), default=False)
|
finished = models.BooleanField(_('Finished'), default=False)
|
||||||
|
|
||||||
|
original_publisher = models.ForeignKey(
|
||||||
|
Publisher, related_name='original_series', null=True)
|
||||||
|
|
||||||
|
art = models.ForeignKey(
|
||||||
|
'Person', related_name='artist_of', null=True)
|
||||||
|
story = models.ForeignKey(
|
||||||
|
'Person', related_name='scriptwriter_of', null=True)
|
||||||
|
|
||||||
folder = models.ForeignKey(Folder, null=True, blank=True)
|
folder = models.ForeignKey(Folder, null=True, blank=True)
|
||||||
|
|
||||||
# Cache
|
# Cache
|
||||||
|
@ -73,7 +81,7 @@ class Series(ReviewModel):
|
||||||
verbose_name_plural = _('Series')
|
verbose_name_plural = _('Series')
|
||||||
|
|
||||||
|
|
||||||
class Volume(ReviewModel):
|
class Volume(Model):
|
||||||
number = models.IntegerField(_('Number'))
|
number = models.IntegerField(_('Number'))
|
||||||
series = models.ForeignKey(Series, related_name="volumes")
|
series = models.ForeignKey(Series, related_name="volumes")
|
||||||
publisher = models.ForeignKey(Publisher, related_name="volumes")
|
publisher = models.ForeignKey(Publisher, related_name="volumes")
|
||||||
|
@ -83,6 +91,11 @@ class Volume(ReviewModel):
|
||||||
isbn_13 = models.CharField(
|
isbn_13 = models.CharField(
|
||||||
_('ISBN-13'), max_length=13, blank=True, null=True)
|
_('ISBN-13'), max_length=13, blank=True, null=True)
|
||||||
|
|
||||||
|
retail_price = models.DecimalField(
|
||||||
|
_('Retail price'), max_digits=5, decimal_places=2, null=True)
|
||||||
|
pages = models.IntegerField(_('Pages'), null=True)
|
||||||
|
release_date = models.DateField(_('Release date'), null=True)
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return u'{} #{}'.format(self.series.name, self.number)
|
return u'{} #{}'.format(self.series.name, self.number)
|
||||||
|
|
||||||
|
@ -92,6 +105,19 @@ class Volume(ReviewModel):
|
||||||
verbose_name_plural = _('Volumes')
|
verbose_name_plural = _('Volumes')
|
||||||
|
|
||||||
|
|
||||||
|
class Person(Model):
|
||||||
|
name = models.CharField(_('Name'), max_length=256)
|
||||||
|
slug = models.SlugField(_('Slug'), blank=True, null=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
ordering = ['name']
|
||||||
|
verbose_name = _('Person')
|
||||||
|
verbose_name_plural = _('Persons')
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# RELATIONS
|
||||||
|
#
|
||||||
class UserHaveVolume(models.Model):
|
class UserHaveVolume(models.Model):
|
||||||
user = models.ForeignKey(settings.AUTH_USER_MODEL,
|
user = models.ForeignKey(settings.AUTH_USER_MODEL,
|
||||||
related_name='have_volumes')
|
related_name='have_volumes')
|
||||||
|
@ -117,8 +143,9 @@ class UserWishlistVolume(models.Model):
|
||||||
self.volume
|
self.volume
|
||||||
)
|
)
|
||||||
|
|
||||||
|
#
|
||||||
# Signals
|
# SIGNALS
|
||||||
|
#
|
||||||
def series_check_filer(sender, instance, created, **kwargs):
|
def series_check_filer(sender, instance, created, **kwargs):
|
||||||
name = instance.name
|
name = instance.name
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
|
import string
|
||||||
from django.template import RequestContext
|
from django.template import RequestContext
|
||||||
from django.shortcuts import render_to_response, get_object_or_404
|
from django.shortcuts import render_to_response, get_object_or_404
|
||||||
|
from django.utils.translation import ugettext as _
|
||||||
|
|
||||||
from shelfzilla.views import View
|
from shelfzilla.views import View
|
||||||
from ..models import Series
|
from ..models import Series
|
||||||
|
@ -11,15 +13,36 @@ class SeriesView(View):
|
||||||
|
|
||||||
class SeriesListView(SeriesView):
|
class SeriesListView(SeriesView):
|
||||||
template = 'manga/series/list.html'
|
template = 'manga/series/list.html'
|
||||||
|
filters = ['other', 'all']
|
||||||
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
items = Series.objects.all()
|
letters = list(string.ascii_uppercase)
|
||||||
|
letters.append(_('other'))
|
||||||
|
letters.append(_('all'))
|
||||||
|
current_letter = request.GET.get('letter', 'A')
|
||||||
|
|
||||||
|
items = self.get_items(current_letter)
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
'items': items
|
'items': items,
|
||||||
|
'letters': letters,
|
||||||
|
'current_letter': current_letter
|
||||||
}
|
}
|
||||||
ctx = RequestContext(request, self.get_context(context))
|
ctx = RequestContext(request, self.get_context(context))
|
||||||
return render_to_response(self.template, context_instance=ctx)
|
return render_to_response(self.template, context_instance=ctx)
|
||||||
|
|
||||||
|
def get_items(self, letter):
|
||||||
|
result = Series.objects.all()
|
||||||
|
if len(letter) == 1:
|
||||||
|
result = Series.objects.filter(name__istartswith=letter)
|
||||||
|
elif letter == 'all':
|
||||||
|
result = Series.objects.all()
|
||||||
|
elif letter == 'other':
|
||||||
|
# result = Series.objects.filter(name__regex=r'')
|
||||||
|
result = []
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
class SeriesDetailView(SeriesView):
|
class SeriesDetailView(SeriesView):
|
||||||
template = 'manga/series/detail.html'
|
template = 'manga/series/detail.html'
|
||||||
|
|
|
@ -63,15 +63,18 @@ class LogoutView(View):
|
||||||
|
|
||||||
|
|
||||||
class ProfileView(View):
|
class ProfileView(View):
|
||||||
template = 'users/profile/{}.html'
|
tempalte = 'users/profile.html'
|
||||||
|
template_section = 'users/profile/{}.html'
|
||||||
|
|
||||||
def get(self, request, section='summary'):
|
def get(self, request, section='summary'):
|
||||||
if request.user.is_authenticated():
|
if request.user.is_authenticated():
|
||||||
data = {
|
data = {
|
||||||
'item': User.objects.get(pk=request.user.pk)
|
'item': User.objects.get(pk=request.user.pk)
|
||||||
}
|
}
|
||||||
|
if section != 'summary':
|
||||||
template = self.template.format(section)
|
template = self.template_section.format(section)
|
||||||
|
else:
|
||||||
|
template = self.tempalte
|
||||||
data = self.get_context_from_section(request, section, data)
|
data = self.get_context_from_section(request, section, data)
|
||||||
|
|
||||||
ctx = RequestContext(request, data)
|
ctx = RequestContext(request, data)
|
||||||
|
|
|
@ -1,15 +1,25 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
from django.template.defaultfilters import slugify
|
||||||
|
|
||||||
|
|
||||||
class ReviewModel(models.Model):
|
class Model(models.Model):
|
||||||
for_review = models.BooleanField(_('For review'), default=False)
|
for_review = models.BooleanField(_('For review'), default=False)
|
||||||
for_review_comment = models.TextField(
|
for_review_comment = models.TextField(
|
||||||
_('Review comment'), null=True, blank=True)
|
_('Review comment'), null=True, blank=True)
|
||||||
|
|
||||||
|
hidden = models.BooleanField(_('Hidden'), default=False)
|
||||||
|
|
||||||
def first_letter(self):
|
def first_letter(self):
|
||||||
if hasattr(self, 'name'):
|
if hasattr(self, 'name'):
|
||||||
return self.name and self.name[0] or ''
|
return self.name and self.name[0] or ''
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
# If model have a name and slug attribute, save slug
|
||||||
|
# TODO set a model field to custom field name for slug creation
|
||||||
|
if not getattr(self, 'slug', None) and getattr(self, 'name', None):
|
||||||
|
self.slug = slugify(self.name)
|
||||||
|
return super(Model, self).save(*args, **kwargs)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
|
@ -8,22 +8,22 @@
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<ul class="pagination">
|
<ul class="pagination">
|
||||||
{% for letter in letter_list %}
|
{% for letter in letters %}
|
||||||
<li>
|
<li {% if current_letter == letter %}class="active"{% endif %}>
|
||||||
<a href="#{{ letter.grouper }}">{{ letter.grouper }}</a>
|
<a href="{% url 'series.list' %}?letter={{ letter }}" data-pjax pjax-nopush>{{ letter }}</a>
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
<div class="column-list">
|
<div class="column-list">
|
||||||
{% for letter in letter_list %}
|
{% if current_letter != 'all' %}
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<h3 class="panel-title" id="{{ letter.grouper }}">{{ letter.grouper }}</h3>
|
<h3 class="panel-title" id="{{ current_letter }}">{{ current_letter }}</h3>
|
||||||
</div>
|
</div>
|
||||||
<ul class="list-group">
|
<ul class="list-group">
|
||||||
{% for item in letter.list %}
|
{% for item in items %}
|
||||||
<li class="list-group-item">
|
<li class="list-group-item">
|
||||||
{% if item.slug %}
|
{% if item.slug %}
|
||||||
<a href="{% url "series.detail" item.pk item.slug %}" data-pjax>{{ item.name }}</a>
|
<a href="{% url "series.detail" item.pk item.slug %}" data-pjax>{{ item.name }}</a>
|
||||||
|
@ -31,10 +31,33 @@
|
||||||
<a href="{% url "series.detail" item.pk %}" data-pjax>{{ item.name }}</a>
|
<a href="{% url "series.detail" item.pk %}" data-pjax>{{ item.name }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</li>
|
</li>
|
||||||
|
{% empty %}
|
||||||
|
<li class="list-group-item">{% trans "No results" %}</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% else %}
|
||||||
|
{% for letter in letter_list %}
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title" id="{{ letter.grouper }}">{{ letter.grouper }}</h3>
|
||||||
|
</div>
|
||||||
|
<ul class="list-group">
|
||||||
|
{% for item in letter.list %}
|
||||||
|
<li class="list-group-item">
|
||||||
|
{% if item.slug %}
|
||||||
|
<a href="{% url "series.detail" item.pk item.slug %}" data-pjax>{{ item.name }}</a>
|
||||||
|
{% else %}
|
||||||
|
<a href="{% url "series.detail" item.pk %}" data-pjax>{{ item.name }}</a>
|
||||||
|
{% endif %}
|
||||||
|
</li>
|
||||||
|
{% empty %}
|
||||||
|
<li class="list-group-item">{% trans "No results" %}</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
<img src="{{ item.avatar }}" class="max-width-100" />
|
<img src="{{ item.avatar }}" class="max-width-100" />
|
||||||
</div>
|
</div>
|
||||||
<div class="list-group">
|
<div class="list-group">
|
||||||
<a href="{% url 'profile' %}" data-pjax="profile" class="list-group-item active">
|
<a href="{% url 'profile' %}" data-pjax class="list-group-item active">
|
||||||
{% trans "Summary" %}</a>
|
{% trans "Summary" %}</a>
|
||||||
<a href="{% url 'profile' 'collection' %}" data-pjax="profile" class="list-group-item">
|
<a href="{% url 'profile' 'collection' %}" data-pjax="profile" class="list-group-item">
|
||||||
{% trans "Collection" %}</a>
|
{% trans "Collection" %}</a>
|
||||||
|
@ -35,7 +35,9 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-9" data-pjax-container="profile">
|
<div class="col-sm-9" data-pjax-container="profile">
|
||||||
{% block profile_content %}{% endblock %}
|
{% block profile_content %}
|
||||||
|
{% include "users/profile/summary.html" %}
|
||||||
|
{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
|
{% comment %}
|
||||||
{% extends 'users/profile.html'|pjax:request %}
|
{% extends 'users/profile.html'|pjax:request %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
|
|
||||||
{% block page_title %}{{ block.super }}{% endblock %}
|
{% block page_title %}{{ block.super }}{% endblock %}
|
||||||
|
{% endcomment %}
|
||||||
|
|
||||||
{% block profile_content %}
|
{% block profile_content %}
|
||||||
<div class="well">
|
<div class="well">
|
||||||
|
|
Reference in New Issue