Added custom title string for app label

This commit is contained in:
Mark Steadman 2014-05-24 12:43:33 +01:00
parent 5deab02e61
commit 4d4f0f96fb
8 changed files with 55 additions and 207 deletions

View file

@ -9,7 +9,7 @@ from datetime import datetime, date
from threading import Thread
import requests
__version__ = '2.0'
__version__ = '2.0.1'
site = BufferSite()
class BufferThread(Thread):

View file

@ -14,33 +14,48 @@ class Migration(SchemaMigration):
('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='buffer_tokens', unique=True, to=orm['auth.User'])),
('token', self.gf('django.db.models.fields.CharField')(max_length=36)),
))
db.send_create_signal(u'buffer', ['BufferToken'])
db.send_create_signal('bambu_buffer', ['BufferToken'])
# Adding model 'BufferService'
db.create_table('buffer_service', (
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('token', self.gf('django.db.models.fields.related.ForeignKey')(related_name='services', to=orm['buffer.BufferToken'])),
('token', self.gf('django.db.models.fields.related.ForeignKey')(related_name='services', to=orm['bambu_buffer.BufferToken'])),
('name', self.gf('django.db.models.fields.CharField')(max_length=30)),
('remote_id', self.gf('django.db.models.fields.CharField')(max_length=36)),
('username', self.gf('django.db.models.fields.CharField')(max_length=30)),
))
db.send_create_signal(u'buffer', ['BufferService'])
db.send_create_signal('bambu_buffer', ['BufferService'])
# Adding model 'BufferProfile'
db.create_table('buffer_profile', (
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('service', self.gf('django.db.models.fields.related.ForeignKey')(related_name='profiles', to=orm['buffer.BufferService'])),
('service', self.gf('django.db.models.fields.related.ForeignKey')(related_name='profiles', to=orm['bambu_buffer.BufferService'])),
('avatar', self.gf('django.db.models.fields.URLField')(max_length=255)),
('created_at', self.gf('django.db.models.fields.DateTimeField')()),
('default', self.gf('django.db.models.fields.BooleanField')(default=True)),
('formatted_username', self.gf('django.db.models.fields.CharField')(max_length=100)),
('remote_id', self.gf('django.db.models.fields.CharField')(unique=True, max_length=36)),
('schedules', self.gf('django.db.models.fields.TextField')()),
('selected', self.gf('django.db.models.fields.BooleanField')()),
))
db.send_create_signal(u'buffer', ['BufferProfile'])
db.send_create_signal('bambu_buffer', ['BufferProfile'])
# Adding model 'BufferedItem'
db.create_table('buffer_buffereditem', (
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('content_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'])),
('object_id', self.gf('django.db.models.fields.PositiveIntegerField')()),
))
db.send_create_signal('bambu_buffer', ['BufferedItem'])
# Adding unique constraint on 'BufferedItem', fields ['content_type', 'object_id']
db.create_unique('buffer_buffereditem', ['content_type_id', 'object_id'])
def backwards(self, orm):
# Removing unique constraint on 'BufferedItem', fields ['content_type', 'object_id']
db.delete_unique('buffer_buffereditem', ['content_type_id', 'object_id'])
# Deleting model 'BufferToken'
db.delete_table('buffer_token')
@ -50,6 +65,9 @@ class Migration(SchemaMigration):
# Deleting model 'BufferProfile'
db.delete_table('buffer_profile')
# Deleting model 'BufferedItem'
db.delete_table('buffer_buffereditem')
models = {
u'auth.group': {
@ -81,7 +99,13 @@ class Migration(SchemaMigration):
'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': '30'})
},
u'buffer.bufferprofile': {
'bambu_buffer.buffereditem': {
'Meta': {'unique_together': "(('content_type', 'object_id'),)", 'object_name': 'BufferedItem', 'db_table': "'buffer_buffereditem'"},
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {})
},
'bambu_buffer.bufferprofile': {
'Meta': {'object_name': 'BufferProfile', 'db_table': "'buffer_profile'"},
'avatar': ('django.db.models.fields.URLField', [], {'max_length': '255'}),
'created_at': ('django.db.models.fields.DateTimeField', [], {}),
@ -90,17 +114,18 @@ class Migration(SchemaMigration):
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'remote_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '36'}),
'schedules': ('django.db.models.fields.TextField', [], {}),
'service': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'profiles'", 'to': u"orm['buffer.BufferService']"})
'selected': ('django.db.models.fields.BooleanField', [], {}),
'service': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'profiles'", 'to': "orm['bambu_buffer.BufferService']"})
},
u'buffer.bufferservice': {
'bambu_buffer.bufferservice': {
'Meta': {'object_name': 'BufferService', 'db_table': "'buffer_service'"},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
'remote_id': ('django.db.models.fields.CharField', [], {'max_length': '36'}),
'token': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'services'", 'to': u"orm['buffer.BufferToken']"}),
'token': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'services'", 'to': "orm['bambu_buffer.BufferToken']"}),
'username': ('django.db.models.fields.CharField', [], {'max_length': '30'})
},
u'buffer.buffertoken': {
'bambu_buffer.buffertoken': {
'Meta': {'object_name': 'BufferToken', 'db_table': "'buffer_token'"},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'token': ('django.db.models.fields.CharField', [], {'max_length': '36'}),
@ -115,4 +140,4 @@ class Migration(SchemaMigration):
}
}
complete_apps = ['buffer']
complete_apps = ['bambu_buffer']

View file

@ -1,87 +0,0 @@
# -*- coding: 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 'BufferProfile.selected'
db.add_column('buffer_profile', 'selected',
self.gf('django.db.models.fields.BooleanField')(default=1),
keep_default=False)
def backwards(self, orm):
# Deleting field 'BufferProfile.selected'
db.delete_column('buffer_profile', 'selected')
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': '30'})
},
u'buffer.bufferprofile': {
'Meta': {'object_name': 'BufferProfile', 'db_table': "'buffer_profile'"},
'avatar': ('django.db.models.fields.URLField', [], {'max_length': '255'}),
'created_at': ('django.db.models.fields.DateTimeField', [], {}),
'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'formatted_username': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'remote_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '36'}),
'schedules': ('django.db.models.fields.TextField', [], {}),
'selected': ('django.db.models.fields.BooleanField', [], {}),
'service': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'profiles'", 'to': u"orm['buffer.BufferService']"})
},
u'buffer.bufferservice': {
'Meta': {'object_name': 'BufferService', 'db_table': "'buffer_service'"},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
'remote_id': ('django.db.models.fields.CharField', [], {'max_length': '36'}),
'token': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'services'", 'to': u"orm['buffer.BufferToken']"}),
'username': ('django.db.models.fields.CharField', [], {'max_length': '30'})
},
u'buffer.buffertoken': {
'Meta': {'object_name': 'BufferToken', 'db_table': "'buffer_token'"},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'token': ('django.db.models.fields.CharField', [], {'max_length': '36'}),
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'buffer_tokens'", 'unique': 'True', 'to': u"orm['auth.User']"})
},
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'})
}
}
complete_apps = ['buffer']

View file

@ -1,102 +0,0 @@
# -*- coding: 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 model 'BufferedItem'
db.create_table(u'buffer_buffereditem', (
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('content_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'])),
('object_id', self.gf('django.db.models.fields.PositiveIntegerField')()),
))
db.send_create_signal(u'buffer', ['BufferedItem'])
# Adding unique constraint on 'BufferedItem', fields ['content_type', 'object_id']
db.create_unique(u'buffer_buffereditem', ['content_type_id', 'object_id'])
def backwards(self, orm):
# Removing unique constraint on 'BufferedItem', fields ['content_type', 'object_id']
db.delete_unique(u'buffer_buffereditem', ['content_type_id', 'object_id'])
# Deleting model 'BufferedItem'
db.delete_table(u'buffer_buffereditem')
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': '30'})
},
u'buffer.buffereditem': {
'Meta': {'unique_together': "(('content_type', 'object_id'),)", 'object_name': 'BufferedItem'},
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {})
},
u'buffer.bufferprofile': {
'Meta': {'object_name': 'BufferProfile', 'db_table': "'buffer_profile'"},
'avatar': ('django.db.models.fields.URLField', [], {'max_length': '255'}),
'created_at': ('django.db.models.fields.DateTimeField', [], {}),
'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'formatted_username': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'remote_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '36'}),
'schedules': ('django.db.models.fields.TextField', [], {}),
'selected': ('django.db.models.fields.BooleanField', [], {}),
'service': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'profiles'", 'to': u"orm['buffer.BufferService']"})
},
u'buffer.bufferservice': {
'Meta': {'object_name': 'BufferService', 'db_table': "'buffer_service'"},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
'remote_id': ('django.db.models.fields.CharField', [], {'max_length': '36'}),
'token': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'services'", 'to': u"orm['buffer.BufferToken']"}),
'username': ('django.db.models.fields.CharField', [], {'max_length': '30'})
},
u'buffer.buffertoken': {
'Meta': {'object_name': 'BufferToken', 'db_table': "'buffer_token'"},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'token': ('django.db.models.fields.CharField', [], {'max_length': '36'}),
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'buffer_tokens'", 'unique': 'True', 'to': u"orm['auth.User']"})
},
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'})
}
}
complete_apps = ['buffer']

View file

@ -1,10 +1,14 @@
from django.db import models
from django.utils.timezone import pytz
from bambu_buffer.settings import PROFILES_URL, TIMEOUT
from bambu_buffer import log, helpers
from bambu_buffer import log
from datetime import datetime, timedelta
import requests, json
class CustomTitleString(str):
def title(self):
return str(self[6:]).title()
class BufferToken(models.Model):
user = models.ForeignKey('auth.User', related_name = 'buffer_tokens', unique = True)
token = models.CharField(max_length = 36)
@ -70,6 +74,7 @@ class BufferToken(models.Model):
class Meta:
db_table = 'buffer_token'
app_label = CustomTitleString('bambu_buffer')
class BufferService(models.Model):
token = models.ForeignKey(BufferToken, related_name = 'services')
@ -86,6 +91,7 @@ class BufferService(models.Model):
class Meta:
db_table = 'buffer_service'
app_label = CustomTitleString('bambu_buffer')
class BufferProfile(models.Model):
service = models.ForeignKey(BufferService, related_name = 'profiles')
@ -106,6 +112,7 @@ class BufferProfile(models.Model):
class Meta:
db_table = 'buffer_profile'
app_label = CustomTitleString('bambu_buffer')
class BufferedItem(models.Model):
content_type = models.ForeignKey('contenttypes.ContentType')
@ -114,3 +121,4 @@ class BufferedItem(models.Model):
class Meta:
unique_together = ('content_type', 'object_id')
db_table = 'buffer_buffereditem'
app_label = CustomTitleString('bambu_buffer')

View file

@ -23,7 +23,7 @@ REFRESHED_MESSAGES = getattr(s, 'BUFFER_REFRESHED_MESSAGES',
AUTOPOST_MODELS = getattr(s, 'BUFFER_AUTOPOST_MODELS',
(
(
'blog.Post',
'bambu_blog.Post',
'author', {
'published': True,
'date__lte': now

View file

@ -8,7 +8,7 @@ def post_save_receiver(sender, instance, **kwargs):
model = site.get_info(type(instance))
if not model or not any(model):
print '%s not registered' % (
unicode(instance._meta.verbose_name).capitalize()
unicode(type(instance)._meta.verbose_name).capitalize()
)
return
@ -81,11 +81,15 @@ class BufferSite(object):
post_kwargs = {}
try:
model = get_model(*name.split('.'))
model = get_model(*name.split('.'), only_installed = False)
except:
logger.warn('Model %s not found' % name)
continue
if not model:
logger.warn('Model %s not found' % name)
continue
field = model._meta.get_field_by_name(author_field)
if not any(field) or field[0] is None:
raise Exception(

View file

@ -4,7 +4,7 @@ from os import path
setup(
name = 'bambu-buffer',
version = '2.0',
version = '2.0.1',
description = 'Post to Buffer and manage profile settings through a Django-powered site',
author = 'Steadman',
author_email = 'mark@steadman.io',