Browse Source

Remove Service class

Baptiste Jonglez 11 years ago
parent
commit
537d2f11c1

+ 2 - 4
coin/billing/tests.py

@@ -5,7 +5,7 @@ from django.test import TestCase, Client
 from coin.members.tests import MemberTestsUtils
 from coin.members.models import Member, LdapUser
 from coin.billing.models import Invoice
-from coin.offers.models import Offer, Service, OfferSubscription
+from coin.offers.models import Offer, OfferSubscription
 from coin.billing.create_subscriptions_invoices import create_member_invoice_for_a_period
 from coin.billing.create_subscriptions_invoices import create_all_members_invoices_for_a_period
 
@@ -14,10 +14,8 @@ class BillingInvoiceCreationTests(TestCase):
 
     def setUp(self):
         # Créé une offre
-        self.service = Service(name='ServiceTest')
-        self.service.save()
         self.offer = Offer(name='Offre', billing_period=3, period_fees=30,
-                           initial_fees=50, service=self.service)
+                           initial_fees=50, type='dsl')
         self.offer.save()
         # Créé un membre
         self.ldap_cn = MemberTestsUtils.get_random_ldap_cn()

+ 2 - 7
coin/offers/admin.py

@@ -1,5 +1,5 @@
 from django.contrib import admin
-from coin.offers.models import Offer, Service, OfferSubscription
+from coin.offers.models import Offer, OfferSubscription
 from coin.offers.offersubscription_filter import\
             OfferSubscriptionTerminationFilter,\
             OfferSubscriptionCommitmentFilter
@@ -12,12 +12,8 @@ class IPSubnetInline(admin.TabularInline):
     extra = 0
 
 
-class ServiceAdmin(admin.ModelAdmin):
-    search_fields = ['name']
-
-
 class OfferAdmin(admin.ModelAdmin):
-    list_display = ('service', 'name', 'billing_period', 'period_fees',
+    list_display = ('type', 'name', 'billing_period', 'period_fees',
                     'initial_fees')
     list_display_links = ('name',)
     search_fields = ['name']
@@ -43,6 +39,5 @@ class OfferSubscriptionAdmin(admin.ModelAdmin):
 
     inlines = [ IPSubnetInline ]
 
-admin.site.register(Service, ServiceAdmin)
 admin.site.register(Offer, OfferAdmin)
 admin.site.register(OfferSubscription, OfferSubscriptionAdmin)

+ 1 - 8
coin/offers/fixtures/offers.json

@@ -1,20 +1,13 @@
 [
     {
         "pk": 1,
-        "model": "offers.service",
-        "fields": {
-            "name": "ADSL"
-        }
-    },
-    {
-        "pk": 1,
         "model": "offers.offer",
         "fields": {
             "initial_fees": "50.00",
             "billing_period": 1,
             "period_fees": "30.00",
             "name": "ADSL Lasotel",
-            "service": 1
+            "type": 'dsl'
         }
     }
 ]

+ 121 - 0
coin/offers/migrations/0005_auto__del_service__del_field_offer_service__add_field_offer_type.py

@@ -0,0 +1,121 @@
+# -*- 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):
+        # Deleting model 'Service'
+        db.delete_table(u'offers_service')
+
+        # Deleting field 'Offer.service'
+        db.delete_column(u'offers_offer', 'service_id')
+
+        # Adding field 'Offer.type'
+        db.add_column(u'offers_offer', 'type',
+                      self.gf('django.db.models.fields.CharField')(default='other', max_length=50),
+                      keep_default=False)
+
+
+    def backwards(self, orm):
+        # Adding model 'Service'
+        db.create_table(u'offers_service', (
+            (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
+        ))
+        db.send_create_signal(u'offers', ['Service'])
+
+
+        # User chose to not deal with backwards NULL issues for 'Offer.service'
+        raise RuntimeError("Cannot reverse this migration. 'Offer.service' and its values cannot be restored.")
+        
+        # The following code is provided here to aid in writing a correct migration        # Adding field 'Offer.service'
+        db.add_column(u'offers_offer', 'service',
+                      self.gf('django.db.models.fields.related.ForeignKey')(to=orm['offers.Service']),
+                      keep_default=False)
+
+        # Deleting field 'Offer.type'
+        db.delete_column(u'offers_offer', 'type')
+
+
+    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'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'})
+        },
+        u'members.member': {
+            'Meta': {'object_name': 'Member'},
+            'address': ('django.db.models.fields.TextField', [], {}),
+            'city': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+            'country': ('django.db.models.fields.CharField', [], {'default': "'France'", 'max_length': '200'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '254'}),
+            'entry_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+            'home_phone_number': ('django.db.models.fields.CharField', [], {'max_length': '25', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+            'ldap_cn': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+            'mobile_phone_number': ('django.db.models.fields.CharField', [], {'max_length': '25', 'blank': 'True'}),
+            'organization_name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+            'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '15'}),
+            'resign_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'status': ('django.db.models.fields.CharField', [], {'default': "'non_adherent'", 'max_length': '50'}),
+            'type': ('django.db.models.fields.CharField', [], {'default': "'personne_physique'", 'max_length': '20'}),
+            'user': ('django.db.models.fields.related.OneToOneField', [], {'default': 'None', 'to': u"orm['auth.User']", 'unique': 'True', 'null': 'True', 'on_delete': 'models.SET_NULL'})
+        },
+        u'offers.offer': {
+            'Meta': {'object_name': 'Offer'},
+            'billing_period': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'initial_fees': ('django.db.models.fields.DecimalField', [], {'max_digits': '5', 'decimal_places': '2'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'period_fees': ('django.db.models.fields.DecimalField', [], {'max_digits': '5', 'decimal_places': '2'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        u'offers.offersubscription': {
+            'Meta': {'object_name': 'OfferSubscription'},
+            'commitment': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'member': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['members.Member']"}),
+            'offer': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['offers.Offer']"}),
+            'resign_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'subscription_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'})
+        }
+    }
+
+    complete_apps = ['offers']

+ 7 - 10
coin/offers/models.py

@@ -3,15 +3,12 @@ import datetime
 from django.db import models
 
 
-class Service(models.Model):
-    name = models.CharField(max_length=255, blank=False, null=False,
-                            verbose_name='Nom du service')
-    
-    def __unicode__(self):
-        return self.name
-
-
 class Offer(models.Model):
+    OFFER_TYPE_CHOICES = (
+        ('vpn', 'VPN'),
+        ('dsl', 'DSL'),
+        ('other', 'Other'),
+    )
     name = models.CharField(max_length=255, blank=False, null=False,
                             verbose_name='Nom de l\'offre')
     billing_period = models.IntegerField(blank=False, null=False, default=1,
@@ -26,11 +23,11 @@ class Offer(models.Model):
                                       blank=False, null=False,
                                       verbose_name='Frais de mise en service',
                                       help_text='en €')
-    service = models.ForeignKey('Service')
+    type = models.CharField(max_length=50, choices=OFFER_TYPE_CHOICES)
     
     def __unicode__(self):
         return u'%s - %d€ / %im [%s]' % (self.name, self.period_fees,
-                                          self.billing_period, self.service)
+                                          self.billing_period, self.type)
 
     class Meta:
         verbose_name = 'offre'