Parcourir la source

Remove Service class

Baptiste Jonglez il y a 11 ans
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.tests import MemberTestsUtils
 from coin.members.models import Member, LdapUser
 from coin.members.models import Member, LdapUser
 from coin.billing.models import Invoice
 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_member_invoice_for_a_period
 from coin.billing.create_subscriptions_invoices import create_all_members_invoices_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):
     def setUp(self):
         # Créé une offre
         # Créé une offre
-        self.service = Service(name='ServiceTest')
-        self.service.save()
         self.offer = Offer(name='Offre', billing_period=3, period_fees=30,
         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()
         self.offer.save()
         # Créé un membre
         # Créé un membre
         self.ldap_cn = MemberTestsUtils.get_random_ldap_cn()
         self.ldap_cn = MemberTestsUtils.get_random_ldap_cn()

+ 2 - 7
coin/offers/admin.py

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

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

@@ -1,20 +1,13 @@
 [
 [
     {
     {
         "pk": 1,
         "pk": 1,
-        "model": "offers.service",
-        "fields": {
-            "name": "ADSL"
-        }
-    },
-    {
-        "pk": 1,
         "model": "offers.offer",
         "model": "offers.offer",
         "fields": {
         "fields": {
             "initial_fees": "50.00",
             "initial_fees": "50.00",
             "billing_period": 1,
             "billing_period": 1,
             "period_fees": "30.00",
             "period_fees": "30.00",
             "name": "ADSL Lasotel",
             "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
 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):
 class Offer(models.Model):
+    OFFER_TYPE_CHOICES = (
+        ('vpn', 'VPN'),
+        ('dsl', 'DSL'),
+        ('other', 'Other'),
+    )
     name = models.CharField(max_length=255, blank=False, null=False,
     name = models.CharField(max_length=255, blank=False, null=False,
                             verbose_name='Nom de l\'offre')
                             verbose_name='Nom de l\'offre')
     billing_period = models.IntegerField(blank=False, null=False, default=1,
     billing_period = models.IntegerField(blank=False, null=False, default=1,
@@ -26,11 +23,11 @@ class Offer(models.Model):
                                       blank=False, null=False,
                                       blank=False, null=False,
                                       verbose_name='Frais de mise en service',
                                       verbose_name='Frais de mise en service',
                                       help_text='en €')
                                       help_text='en €')
-    service = models.ForeignKey('Service')
+    type = models.CharField(max_length=50, choices=OFFER_TYPE_CHOICES)
     
     
     def __unicode__(self):
     def __unicode__(self):
         return u'%s - %d€ / %im [%s]' % (self.name, self.period_fees,
         return u'%s - %d€ / %im [%s]' % (self.name, self.period_fees,
-                                          self.billing_period, self.service)
+                                          self.billing_period, self.type)
 
 
     class Meta:
     class Meta:
         verbose_name = 'offre'
         verbose_name = 'offre'