diff --git a/spa/api/v1/ActivityResource.py b/spa/api/v1/ActivityResource.py index 0f4147d..7809974 100644 --- a/spa/api/v1/ActivityResource.py +++ b/spa/api/v1/ActivityResource.py @@ -1,18 +1,18 @@ -from tastypie.authentication import Authentication -from tastypie.authorization import Authorization -from spa.api.v1.BackboneCompatibleResource import BackboneCompatibleResource -from spa.models._Activity import _Activity - - -class ActivityResource(BackboneCompatibleResource): - - class Meta: - queryset = _Activity.objects.all() - resource_name = 'activity' - authorization = Authorization() - authentication = Authentication() - always_return_data = True - - def dehydrate(self, bundle): - +from tastypie.authentication import Authentication +from tastypie.authorization import Authorization +from spa.api.v1.BackboneCompatibleResource import BackboneCompatibleResource +from spa.models._Activity import _Activity + + +class ActivityResource(BackboneCompatibleResource): + + class Meta: + queryset = _Activity.objects.all() + resource_name = 'activity' + authorization = Authorization() + authentication = Authentication() + always_return_data = True + + def dehydrate(self, bundle): + return bundle \ No newline at end of file diff --git a/spa/api/v1/BackboneCompatibleResource.py b/spa/api/v1/BackboneCompatibleResource.py index 3521a3a..22b9638 100644 --- a/spa/api/v1/BackboneCompatibleResource.py +++ b/spa/api/v1/BackboneCompatibleResource.py @@ -7,8 +7,4 @@ from tastypie.utils import trailing_slash class BackboneCompatibleResource(ModelResource): - def prepend_urls(self): - return [ - url(r"^(?P%s)/(?P\w[\w/-]*)/children%s$" % - (self._meta.resource_name, trailing_slash()), self.wrap_view('get_children'), name="api_get_children"), - ] + pass diff --git a/spa/api/v1/ChatResource.py b/spa/api/v1/ChatResource.py new file mode 100644 index 0000000..5b19fa5 --- /dev/null +++ b/spa/api/v1/ChatResource.py @@ -0,0 +1,6 @@ +from spa.api.v1.BackboneCompatibleResource import BackboneCompatibleResource +from spa.models.ChatMessage import ChatMessage + +class CommentResource(BackboneCompatibleResource): + class Meta: + queryset = ChatMessage.objects.all().order_by('-timestamp') diff --git a/spa/api/v1/MixResource.py b/spa/api/v1/MixResource.py index fd10b97..f903264 100644 --- a/spa/api/v1/MixResource.py +++ b/spa/api/v1/MixResource.py @@ -1,3 +1,4 @@ +from django.conf.urls import url from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist from django.template.loader import render_to_string from tastypie import fields @@ -8,6 +9,7 @@ from core.serialisers import json from spa.api.v1.BackboneCompatibleResource import BackboneCompatibleResource from spa.api.v1.CommentResource import CommentResource from spa.models import Genre +from tastypie.utils import trailing_slash from spa.models.Mix import Mix @@ -37,16 +39,20 @@ class MixResource(BackboneCompatibleResource): return ret + def prepend_urls(self): + return [ + url(r"^(?P%s)/(?P\w[\w/-]*)/children%s$" % + (self._meta.resource_name, trailing_slash()), self.wrap_view('get_children'), name="api_get_children"), + ] + def get_children(self, request, **kwargs): try: obj = self.cached_obj_get(request=request, **self.remove_api_resource_names(kwargs)) except ObjectDoesNotExist: return HttpGone() - except MultipleObjectsReturned: - return HttpMultipleChoices("More than one resource is found at this URI.") child_resource = CommentResource() - return child_resource.get_detail(request, parent_id=obj.pk) + return child_resource.get_list(request, mix=obj) def _unpackGenreList(self, bundle, genres): genre_list = self._parseGenreList(genres) diff --git a/spa/management/commands/debug.py b/spa/management/commands/debug.py index 010096c..06f9ebe 100644 --- a/spa/management/commands/debug.py +++ b/spa/management/commands/debug.py @@ -1,20 +1,20 @@ -from django.core.management.base import NoArgsCommand -import requests - -__author__ = 'fergalm' - -class Command(NoArgsCommand): - - def handle_noargs(self, **options): - try: - token = 'AAACMhWPn1hEBAO3jZCedwkZA194rEC2SZA0qZBMoF8V7lS8pLVcxBqd90vY87oqPJcnJ4jx3YCYqXsGJEnZC9mhCx1Qz7MPsNd2vrSBDe5AZDZD' - uid = '456582037725172' - proxies = { - "http": "127.0.0.1:8888", - "https": "127.0.0.1:8888", - } - url = "https://graph.facebook.com/%s?access_token=%s" % (uid, token) - response = requests.delete(url, proxies=proxies) - return response - except Exception, ex: +from django.core.management.base import NoArgsCommand +import requests + +__author__ = 'fergalm' + +class Command(NoArgsCommand): + + def handle_noargs(self, **options): + try: + token = 'AAACMhWPn1hEBAO3jZCedwkZA194rEC2SZA0qZBMoF8V7lS8pLVcxBqd90vY87oqPJcnJ4jx3YCYqXsGJEnZC9mhCx1Qz7MPsNd2vrSBDe5AZDZD' + uid = '456582037725172' + proxies = { + "http": "127.0.0.1:8888", + "https": "127.0.0.1:8888", + } + url = "https://graph.facebook.com/%s?access_token=%s" % (uid, token) + response = requests.delete(url, proxies=proxies) + return response + except Exception, ex: print "Error talking with facebook: %s" % ex.message \ No newline at end of file diff --git a/spa/migrations/0006_auto__add_field_venue_content_type__add_field_label_content_type__add_.py b/spa/migrations/0006_auto__add_field_venue_content_type__add_field_label_content_type__add_.py index 1e374c3..c2627c0 100644 --- a/spa/migrations/0006_auto__add_field_venue_content_type__add_field_label_content_type__add_.py +++ b/spa/migrations/0006_auto__add_field_venue_content_type__add_field_label_content_type__add_.py @@ -1,322 +1,322 @@ -# -*- 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 'Venue.content_type' - db.add_column('spa_venue', 'content_type', - self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), - keep_default=False) - - # Adding field 'Label.content_type' - db.add_column('spa_label', 'content_type', - self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), - keep_default=False) - - # Adding field 'ChatMessage.content_type' - db.add_column('spa_chatmessage', 'content_type', - self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), - keep_default=False) - - # Adding field 'Release.content_type' - db.add_column('spa_release', 'content_type', - self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), - keep_default=False) - - # Adding field '_Lookup.content_type' - db.add_column('spa__lookup', 'content_type', - self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), - keep_default=False) - - # Adding field 'ReleaseAudio.content_type' - db.add_column('spa_releaseaudio', 'content_type', - self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), - keep_default=False) - - # Adding field 'Comment.content_type' - db.add_column('spa_comment', 'content_type', - self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), - keep_default=False) - - # Adding field '_Activity.content_type' - db.add_column('spa__activity', 'content_type', - self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), - keep_default=False) - - # Adding field 'Mix.content_type' - db.add_column('spa_mix', 'content_type', - self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), - keep_default=False) - - # Adding field 'Tracklist.content_type' - db.add_column('spa_tracklist', 'content_type', - self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), - keep_default=False) - - # Adding field 'Genre.content_type' - db.add_column('spa_genre', 'content_type', - self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), - keep_default=False) - - # Adding field 'UserProfile.content_type' - db.add_column('spa_userprofile', 'content_type', - self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), - keep_default=False) - - # Adding field 'PurchaseLink.content_type' - db.add_column('spa_purchaselink', 'content_type', - self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), - keep_default=False) - - - def backwards(self, orm): - # Deleting field 'Venue.content_type' - db.delete_column('spa_venue', 'content_type_id') - - # Deleting field 'Label.content_type' - db.delete_column('spa_label', 'content_type_id') - - # Deleting field 'ChatMessage.content_type' - db.delete_column('spa_chatmessage', 'content_type_id') - - # Deleting field 'Release.content_type' - db.delete_column('spa_release', 'content_type_id') - - # Deleting field '_Lookup.content_type' - db.delete_column('spa__lookup', 'content_type_id') - - # Deleting field 'ReleaseAudio.content_type' - db.delete_column('spa_releaseaudio', 'content_type_id') - - # Deleting field 'Comment.content_type' - db.delete_column('spa_comment', 'content_type_id') - - # Deleting field '_Activity.content_type' - db.delete_column('spa__activity', 'content_type_id') - - # Deleting field 'Mix.content_type' - db.delete_column('spa_mix', 'content_type_id') - - # Deleting field 'Tracklist.content_type' - db.delete_column('spa_tracklist', 'content_type_id') - - # Deleting field 'Genre.content_type' - db.delete_column('spa_genre', 'content_type_id') - - # Deleting field 'UserProfile.content_type' - db.delete_column('spa_userprofile', 'content_type_id') - - # Deleting field 'PurchaseLink.content_type' - db.delete_column('spa_purchaselink', 'content_type_id') - - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - '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': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - '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', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - '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', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - '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'}), - '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'}) - }, - 'spa._activity': { - 'Meta': {'object_name': '_Activity'}, - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), - 'date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'uid': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}) - }, - 'spa._lookup': { - 'Meta': {'object_name': '_Lookup'}, - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'spa.chatmessage': { - 'Meta': {'object_name': 'ChatMessage'}, - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'timestamp': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'chat_messages'", 'null': 'True', 'to': "orm['spa.UserProfile']"}) - }, - 'spa.comment': { - 'Meta': {'object_name': 'Comment'}, - 'comment': ('django.db.models.fields.CharField', [], {'max_length': '1024'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), - 'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'mix': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['spa.Mix']"}), - 'time_index': ('django.db.models.fields.IntegerField', [], {}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'spa.event': { - 'Meta': {'object_name': 'Event'}, - 'attendees': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'attendees'", 'symmetrical': 'False', 'to': "orm['auth.User']"}), - 'date_created': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2012, 12, 3, 0, 0)'}), - 'event_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2012, 12, 3, 0, 0)'}), - 'event_description': ('tinymce.models.HTMLField', [], {}), - 'event_recurrence': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['spa.Recurrence']"}), - 'event_time': ('django.db.models.fields.TimeField', [], {'default': 'datetime.datetime(2012, 12, 3, 0, 0)'}), - 'event_title': ('django.db.models.fields.CharField', [], {'max_length': '250'}), - 'event_venue': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['spa.Venue']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'spa.genre': { - 'Meta': {'object_name': 'Genre'}, - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'slug': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}) - }, - 'spa.label': { - 'Meta': {'object_name': 'Label'}, - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'spa.mix': { - 'Meta': {'object_name': 'Mix'}, - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), - 'description': ('django.db.models.fields.TextField', [], {}), - 'download_allowed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'download_url': ('django.db.models.fields.CharField', [], {'max_length': '255'}), - 'genres': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['spa.Genre']", 'symmetrical': 'False'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_featured': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'local_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}), - 'mix_image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}), - 'stream_url': ('django.db.models.fields.CharField', [], {'max_length': '255'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '50'}), - 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '38', 'blank': 'True'}), - 'upload_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 12, 3, 0, 0)'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['spa.UserProfile']"}), - 'waveform_generated': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) - }, - 'spa.mixdownload': { - 'Meta': {'object_name': 'MixDownload', '_ormbases': ['spa._Activity']}, - '_activity_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['spa._Activity']", 'unique': 'True', 'primary_key': 'True'}), - 'mix': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'downloads'", 'to': "orm['spa.Mix']"}) - }, - 'spa.mixfavourite': { - 'Meta': {'object_name': 'MixFavourite', '_ormbases': ['spa._Activity']}, - '_activity_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['spa._Activity']", 'unique': 'True', 'primary_key': 'True'}), - 'mix': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'favourites'", 'to': "orm['spa.Mix']"}) - }, - 'spa.mixlike': { - 'Meta': {'object_name': 'MixLike', '_ormbases': ['spa._Activity']}, - '_activity_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['spa._Activity']", 'unique': 'True', 'primary_key': 'True'}), - 'mix': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'likes'", 'to': "orm['spa.Mix']"}) - }, - 'spa.mixplay': { - 'Meta': {'object_name': 'MixPlay', '_ormbases': ['spa._Activity']}, - '_activity_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['spa._Activity']", 'unique': 'True', 'primary_key': 'True'}), - 'mix': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'plays'", 'to': "orm['spa.Mix']"}) - }, - 'spa.purchaselink': { - 'Meta': {'object_name': 'PurchaseLink'}, - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'provider': ('django.db.models.fields.CharField', [], {'max_length': '255'}), - 'track': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'purchase_link'", 'to': "orm['spa.Tracklist']"}), - 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'}) - }, - 'spa.recurrence': { - 'Meta': {'object_name': 'Recurrence', '_ormbases': ['spa._Lookup']}, - '_lookup_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['spa._Lookup']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'spa.release': { - 'Meta': {'object_name': 'Release'}, - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), - 'embed_code': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'release_artist': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'release_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2012, 12, 3, 0, 0)'}), - 'release_description': ('django.db.models.fields.TextField', [], {}), - 'release_image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}), - 'release_label': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['spa.Label']"}), - 'release_title': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['spa.UserProfile']"}) - }, - 'spa.releaseaudio': { - 'Meta': {'object_name': 'ReleaseAudio'}, - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), - 'description': ('django.db.models.fields.TextField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'local_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}), - 'release': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'release_audio'", 'null': 'True', 'to': "orm['spa.Release']"}) - }, - 'spa.tracklist': { - 'Meta': {'object_name': 'Tracklist'}, - 'artist': ('django.db.models.fields.CharField', [], {'max_length': '255'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '255'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'index': ('django.db.models.fields.SmallIntegerField', [], {}), - 'label': ('django.db.models.fields.CharField', [], {'max_length': '255'}), - 'mix': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tracklist'", 'to': "orm['spa.Mix']"}), - 'remixer': ('django.db.models.fields.CharField', [], {'max_length': '255'}), - 'timeindex': ('django.db.models.fields.TimeField', [], {'null': 'True'}), - 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}) - }, - 'spa.userprofile': { - 'Meta': {'object_name': 'UserProfile'}, - 'activity_sharing': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'activity_sharing_networks': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'avatar_image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}), - 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'social'", 'max_length': '15'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), - 'description': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'blank': 'True'}), - 'display_name': ('django.db.models.fields.CharField', [], {'max_length': '35', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'slug': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '35', 'null': 'True', 'blank': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'unique': 'True'}) - }, - 'spa.venue': { - 'Meta': {'object_name': 'Venue'}, - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}), - 'venue_address': ('django.db.models.fields.CharField', [], {'max_length': '1024'}), - 'venue_image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}), - 'venue_name': ('django.db.models.fields.CharField', [], {'max_length': '250'}) - } - } - +# -*- 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 'Venue.content_type' + db.add_column('spa_venue', 'content_type', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), + keep_default=False) + + # Adding field 'Label.content_type' + db.add_column('spa_label', 'content_type', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), + keep_default=False) + + # Adding field 'ChatMessage.content_type' + db.add_column('spa_chatmessage', 'content_type', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), + keep_default=False) + + # Adding field 'Release.content_type' + db.add_column('spa_release', 'content_type', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), + keep_default=False) + + # Adding field '_Lookup.content_type' + db.add_column('spa__lookup', 'content_type', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), + keep_default=False) + + # Adding field 'ReleaseAudio.content_type' + db.add_column('spa_releaseaudio', 'content_type', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), + keep_default=False) + + # Adding field 'Comment.content_type' + db.add_column('spa_comment', 'content_type', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), + keep_default=False) + + # Adding field '_Activity.content_type' + db.add_column('spa__activity', 'content_type', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), + keep_default=False) + + # Adding field 'Mix.content_type' + db.add_column('spa_mix', 'content_type', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), + keep_default=False) + + # Adding field 'Tracklist.content_type' + db.add_column('spa_tracklist', 'content_type', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), + keep_default=False) + + # Adding field 'Genre.content_type' + db.add_column('spa_genre', 'content_type', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), + keep_default=False) + + # Adding field 'UserProfile.content_type' + db.add_column('spa_userprofile', 'content_type', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), + keep_default=False) + + # Adding field 'PurchaseLink.content_type' + db.add_column('spa_purchaselink', 'content_type', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'Venue.content_type' + db.delete_column('spa_venue', 'content_type_id') + + # Deleting field 'Label.content_type' + db.delete_column('spa_label', 'content_type_id') + + # Deleting field 'ChatMessage.content_type' + db.delete_column('spa_chatmessage', 'content_type_id') + + # Deleting field 'Release.content_type' + db.delete_column('spa_release', 'content_type_id') + + # Deleting field '_Lookup.content_type' + db.delete_column('spa__lookup', 'content_type_id') + + # Deleting field 'ReleaseAudio.content_type' + db.delete_column('spa_releaseaudio', 'content_type_id') + + # Deleting field 'Comment.content_type' + db.delete_column('spa_comment', 'content_type_id') + + # Deleting field '_Activity.content_type' + db.delete_column('spa__activity', 'content_type_id') + + # Deleting field 'Mix.content_type' + db.delete_column('spa_mix', 'content_type_id') + + # Deleting field 'Tracklist.content_type' + db.delete_column('spa_tracklist', 'content_type_id') + + # Deleting field 'Genre.content_type' + db.delete_column('spa_genre', 'content_type_id') + + # Deleting field 'UserProfile.content_type' + db.delete_column('spa_userprofile', 'content_type_id') + + # Deleting field 'PurchaseLink.content_type' + db.delete_column('spa_purchaselink', 'content_type_id') + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + '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': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + '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', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + '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', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + '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'}), + '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'}) + }, + 'spa._activity': { + 'Meta': {'object_name': '_Activity'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), + 'date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'uid': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}) + }, + 'spa._lookup': { + 'Meta': {'object_name': '_Lookup'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) + }, + 'spa.chatmessage': { + 'Meta': {'object_name': 'ChatMessage'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'message': ('django.db.models.fields.TextField', [], {}), + 'timestamp': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'chat_messages'", 'null': 'True', 'to': "orm['spa.UserProfile']"}) + }, + 'spa.comment': { + 'Meta': {'object_name': 'Comment'}, + 'comment': ('django.db.models.fields.CharField', [], {'max_length': '1024'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), + 'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'mix': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['spa.Mix']"}), + 'time_index': ('django.db.models.fields.IntegerField', [], {}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'spa.event': { + 'Meta': {'object_name': 'Event'}, + 'attendees': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'attendees'", 'symmetrical': 'False', 'to': "orm['auth.User']"}), + 'date_created': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2012, 12, 3, 0, 0)'}), + 'event_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2012, 12, 3, 0, 0)'}), + 'event_description': ('tinymce.models.HTMLField', [], {}), + 'event_recurrence': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['spa.Recurrence']"}), + 'event_time': ('django.db.models.fields.TimeField', [], {'default': 'datetime.datetime(2012, 12, 3, 0, 0)'}), + 'event_title': ('django.db.models.fields.CharField', [], {'max_length': '250'}), + 'event_venue': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['spa.Venue']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) + }, + 'spa.genre': { + 'Meta': {'object_name': 'Genre'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'slug': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}) + }, + 'spa.label': { + 'Meta': {'object_name': 'Label'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + 'spa.mix': { + 'Meta': {'object_name': 'Mix'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), + 'description': ('django.db.models.fields.TextField', [], {}), + 'download_allowed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'download_url': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'genres': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['spa.Genre']", 'symmetrical': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_featured': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'local_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}), + 'mix_image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}), + 'stream_url': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '50'}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '38', 'blank': 'True'}), + 'upload_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 12, 3, 0, 0)'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['spa.UserProfile']"}), + 'waveform_generated': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'spa.mixdownload': { + 'Meta': {'object_name': 'MixDownload', '_ormbases': ['spa._Activity']}, + '_activity_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['spa._Activity']", 'unique': 'True', 'primary_key': 'True'}), + 'mix': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'downloads'", 'to': "orm['spa.Mix']"}) + }, + 'spa.mixfavourite': { + 'Meta': {'object_name': 'MixFavourite', '_ormbases': ['spa._Activity']}, + '_activity_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['spa._Activity']", 'unique': 'True', 'primary_key': 'True'}), + 'mix': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'favourites'", 'to': "orm['spa.Mix']"}) + }, + 'spa.mixlike': { + 'Meta': {'object_name': 'MixLike', '_ormbases': ['spa._Activity']}, + '_activity_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['spa._Activity']", 'unique': 'True', 'primary_key': 'True'}), + 'mix': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'likes'", 'to': "orm['spa.Mix']"}) + }, + 'spa.mixplay': { + 'Meta': {'object_name': 'MixPlay', '_ormbases': ['spa._Activity']}, + '_activity_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['spa._Activity']", 'unique': 'True', 'primary_key': 'True'}), + 'mix': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'plays'", 'to': "orm['spa.Mix']"}) + }, + 'spa.purchaselink': { + 'Meta': {'object_name': 'PurchaseLink'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'provider': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'track': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'purchase_link'", 'to': "orm['spa.Tracklist']"}), + 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'}) + }, + 'spa.recurrence': { + 'Meta': {'object_name': 'Recurrence', '_ormbases': ['spa._Lookup']}, + '_lookup_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['spa._Lookup']", 'unique': 'True', 'primary_key': 'True'}) + }, + 'spa.release': { + 'Meta': {'object_name': 'Release'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), + 'embed_code': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'release_artist': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'release_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2012, 12, 3, 0, 0)'}), + 'release_description': ('django.db.models.fields.TextField', [], {}), + 'release_image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}), + 'release_label': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['spa.Label']"}), + 'release_title': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['spa.UserProfile']"}) + }, + 'spa.releaseaudio': { + 'Meta': {'object_name': 'ReleaseAudio'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), + 'description': ('django.db.models.fields.TextField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'local_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}), + 'release': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'release_audio'", 'null': 'True', 'to': "orm['spa.Release']"}) + }, + 'spa.tracklist': { + 'Meta': {'object_name': 'Tracklist'}, + 'artist': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'index': ('django.db.models.fields.SmallIntegerField', [], {}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'mix': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tracklist'", 'to': "orm['spa.Mix']"}), + 'remixer': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'timeindex': ('django.db.models.fields.TimeField', [], {'null': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + 'spa.userprofile': { + 'Meta': {'object_name': 'UserProfile'}, + 'activity_sharing': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'activity_sharing_networks': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'avatar_image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}), + 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'social'", 'max_length': '15'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'blank': 'True'}), + 'display_name': ('django.db.models.fields.CharField', [], {'max_length': '35', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'slug': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '35', 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'unique': 'True'}) + }, + 'spa.venue': { + 'Meta': {'object_name': 'Venue'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}), + 'venue_address': ('django.db.models.fields.CharField', [], {'max_length': '1024'}), + 'venue_image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}), + 'venue_name': ('django.db.models.fields.CharField', [], {'max_length': '250'}) + } + } + complete_apps = ['spa'] \ No newline at end of file diff --git a/spa/models/Genre.py b/spa/models/Genre.py index 1213c1d..476abe6 100644 --- a/spa/models/Genre.py +++ b/spa/models/Genre.py @@ -1,19 +1,19 @@ -from django.db import models -from core.utils.url import unique_slugify -from spa.models import _BaseModel - -class Genre(_BaseModel): - class Meta: - app_label = 'spa' - - description = models.CharField(max_length=100) - slug = models.CharField(max_length=100, null=True) - - def save(self, force_insert=False, force_update=False, using=None): - if not self.slug: - unique_slugify(self, self.description, slug_separator='_') - - super(Genre, self).save(force_insert, force_update, using) - - def __unicode__(self): +from django.db import models +from core.utils.url import unique_slugify +from spa.models import _BaseModel + +class Genre(_BaseModel): + class Meta: + app_label = 'spa' + + description = models.CharField(max_length=100) + slug = models.CharField(max_length=100, null=True) + + def save(self, force_insert=False, force_update=False, using=None): + if not self.slug: + unique_slugify(self, self.description, slug_separator='_') + + super(Genre, self).save(force_insert, force_update, using) + + def __unicode__(self): return self.description \ No newline at end of file diff --git a/static/js/app/views/mix.js b/static/js/app/views/mix.js index c91bb0d..da9b142 100644 --- a/static/js/app/views/mix.js +++ b/static/js/app/views/mix.js @@ -177,7 +177,7 @@ window.MixView = Backbone.View.extend({ */ var comments = new CommentCollection(); - comments.url = com.podnoms.settings.urlRoot + this.model.get("item_url") + "/comments/"; + comments.url = com.podnoms.settings.urlRoot + this.model.get("item_url") + "/children/"; comments.mix_id = this.model.id; comments.mix = this.model.get("resource_uri"); comments.fetch({success:function (data) { diff --git a/templates/inc/facebook.html b/templates/inc/facebook.html new file mode 100644 index 0000000..e09a31d --- /dev/null +++ b/templates/inc/facebook.html @@ -0,0 +1,9 @@ +
+ \ No newline at end of file