From 0bbc97373cd32afc98b98e0da69ee2124819360e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20Mu=C3=B1oz=20Escalante?= Date: Sat, 10 Nov 2012 12:08:51 -0500 Subject: [PATCH] Deleted all the tags part - ManyToMany relationships need some hacking right now in ember-data. So I won't include them to keep the example as simple as possible --- djangoapp/tasks/admin.py | 3 +- djangoapp/tasks/api.py | 20 +--------- djangoapp/tasks/models.py | 8 ---- djangoapp/tasks/static/tasks/js/app.js | 39 ++----------------- .../static/tasks/js/libs/tastypie_adapter.js | 10 ++++- djangoapp/tasks/templates/index.html | 13 ------- djangoapp/urls.py | 3 +- 7 files changed, 16 insertions(+), 80 deletions(-) diff --git a/djangoapp/tasks/admin.py b/djangoapp/tasks/admin.py index cbbc010..060e818 100644 --- a/djangoapp/tasks/admin.py +++ b/djangoapp/tasks/admin.py @@ -1,7 +1,6 @@ from django.contrib import admin -from tasks.models import Person, Task, Tag +from tasks.models import Person, Task admin.site.register(Person) admin.site.register(Task) -admin.site.register(Tag) diff --git a/djangoapp/tasks/api.py b/djangoapp/tasks/api.py index 8a494bb..a570241 100644 --- a/djangoapp/tasks/api.py +++ b/djangoapp/tasks/api.py @@ -2,7 +2,7 @@ from tastypie.authorization import Authorization from tastypie.resources import ModelResource -from tasks.models import Person, Task, Tag +from tasks.models import Person, Task class PersonResource(ModelResource): @@ -29,7 +29,6 @@ class Meta: class TaskResource(ModelResource): person_id = fields.ToOneField(PersonResource, 'person', null=True) - tags = fields.ToManyField('tasks.api.TagResource', 'tags') class Meta: queryset = Task.objects.all() @@ -43,20 +42,3 @@ class Meta: # This option is necessary cause ember-data expects # return data after a POST or PUT always_return_data = True - - -class TagResource(ModelResource): - - class Meta: - queryset = Tag.objects.all() - resource_name = 'tag' - - # Authorization is needed for write methods - authorization = Authorization() - list_allowed_methods = ['get', 'post', 'put'] - detail_allowed_methods = ['get', 'post', 'put', 'delete'] - - # This option is necessary cause ember-data expects - # return data after a POST or PUT - always_return_data = True - diff --git a/djangoapp/tasks/models.py b/djangoapp/tasks/models.py index d681d73..f807f77 100644 --- a/djangoapp/tasks/models.py +++ b/djangoapp/tasks/models.py @@ -8,17 +8,9 @@ def __unicode__(self): return self.name -class Tag(models.Model): - name = models.CharField(max_length=30) - - def __unicode__(self): - return self.name - - class Task(models.Model): name = models.CharField(max_length=30) person = models.ForeignKey(Person, null=True) - tags = models.ManyToManyField(Tag) def __unicode__(self): return self.name diff --git a/djangoapp/tasks/static/tasks/js/app.js b/djangoapp/tasks/static/tasks/js/app.js index 3bfbe6c..12338b2 100755 --- a/djangoapp/tasks/static/tasks/js/app.js +++ b/djangoapp/tasks/static/tasks/js/app.js @@ -21,13 +21,7 @@ App.Person = DS.Model.extend({ App.Task = DS.Model.extend({ name: DS.attr('string'), - person: DS.belongsTo('App.Person'), - tags: DS.hasMany('App.Tags') -}); - -App.Tag = DS.Model.extend({ - name: DS.attr('string'), - task: DS.belongsTo('App.Task') + person: DS.belongsTo('App.Person') }); // Application root view @@ -93,33 +87,6 @@ App.CreateTaskView = Em.TextField.extend({ } }); -App.ToggleTagView = Em.View.extend({ - tagName: "span", - classNames: ["label", "label-info"], - click: function(a, b, c) { - var tag, - task; - - tag = this.get('content'); - task = this.get('task'); - - Em.get(task, 'tags').pushObject(tag); - App.store.commit(); - } -}); - -App.CreateTagView = Em.TextField.extend({ - placeholder: "Add a new tag", - insertNewline: function() { - value = this.get('value'); - - if (!!value) { - App.Tag.createRecord({name: value}); - App.store.commit(); - this.set('value', ''); - } - } -}); // The router is the main component of the application App.Router = Ember.Router.extend({ @@ -223,7 +190,9 @@ App.Router = Ember.Router.extend({ // Ember-data store using the Django Tastypie adapter App.store = DS.Store.create({ revision: 7, - adapter: DS.DjangoTastypieAdapter.create() + adapter: DS.DjangoTastypieAdapter.create({ + serverDomain: "http://localhost:8000" + }) }); // Start! diff --git a/djangoapp/tasks/static/tasks/js/libs/tastypie_adapter.js b/djangoapp/tasks/static/tasks/js/libs/tastypie_adapter.js index f926ad6..c9b6d92 100644 --- a/djangoapp/tasks/static/tasks/js/libs/tastypie_adapter.js +++ b/djangoapp/tasks/static/tasks/js/libs/tastypie_adapter.js @@ -173,12 +173,20 @@ DS.DjangoTastypieAdapter = DS.RESTAdapter.extend({ // Add the server domain if any if (!!this.serverDomain) { - url = this.serverDomain + url; + url = this.removeTrailingSlash(this.serverDomain) + url; } return url; }, + removeTrailingSlash: function(url) { + if (url.charAt(url.length -1) === '/') { + console.log("REMOVE"); + return url.slice(0, -1); + } + return url; + }, + /** django-tastypie does not pluralize names for lists */ diff --git a/djangoapp/tasks/templates/index.html b/djangoapp/tasks/templates/index.html index 537a7b6..c3e63b0 100644 --- a/djangoapp/tasks/templates/index.html +++ b/djangoapp/tasks/templates/index.html @@ -95,19 +95,6 @@
Tags Assigned
{{/each}} -
Tags Available
- {{view App.CreateTagView }} - -