fixing app after removing DataSource dependency

This commit is contained in:
Serghei Mihai 2014-09-08 10:44:55 +02:00
parent fb742a1abe
commit 64afac2271
3 changed files with 131 additions and 11 deletions

View File

@ -0,0 +1,103 @@
# -*- 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 field 'Regie.get_url'
db.delete_column(u'facturier_regie', 'get_url_id')
# Deleting field 'Regie.get_list_url'
db.delete_column(u'facturier_regie', 'get_list_url_id')
# Deleting field 'Regie.update_url'
db.delete_column(u'facturier_regie', 'update_url_id')
# Adding field 'Regie.invoice_get_url'
db.add_column(u'facturier_regie', 'invoice_get_url',
self.gf('django.db.models.fields.CharField')(default='', max_length=256),
keep_default=False)
# Adding field 'Regie.invoice_update_url'
db.add_column(u'facturier_regie', 'invoice_update_url',
self.gf('django.db.models.fields.CharField')(default='', max_length=256),
keep_default=False)
# Adding field 'Regie.invoice_list_url'
db.add_column(u'facturier_regie', 'invoice_list_url',
self.gf('django.db.models.fields.CharField')(max_length=256, null=True, blank=True),
keep_default=False)
def backwards(self, orm):
# Adding field 'Regie.get_url'
db.add_column(u'facturier_regie', 'get_url',
self.gf('django.db.models.fields.related.ForeignKey')(default='', related_name='regie_get', to=orm['data_source_plugin.DataSource']),
keep_default=False)
# Adding field 'Regie.get_list_url'
db.add_column(u'facturier_regie', 'get_list_url',
self.gf('django.db.models.fields.related.ForeignKey')(related_name='regie_get_list', null=True, to=orm['data_source_plugin.DataSource'], blank=True),
keep_default=False)
# Adding field 'Regie.update_url'
db.add_column(u'facturier_regie', 'update_url',
self.gf('django.db.models.fields.related.ForeignKey')(default='', related_name='regie_update', to=orm['data_source_plugin.DataSource']),
keep_default=False)
# Deleting field 'Regie.invoice_get_url'
db.delete_column(u'facturier_regie', 'invoice_get_url')
# Deleting field 'Regie.invoice_update_url'
db.delete_column(u'facturier_regie', 'invoice_update_url')
# Deleting field 'Regie.invoice_list_url'
db.delete_column(u'facturier_regie', 'invoice_list_url')
models = {
u'facturier.regie': {
'Meta': {'object_name': 'Regie'},
'description': ('django.db.models.fields.TextField', [], {}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'invoice_get_url': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
'invoice_list_url': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}),
'invoice_update_url': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
'label': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
'service': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
},
u'facturier.requestoption': {
'Meta': {'object_name': 'RequestOption'},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
'regie': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['facturier.Regie']"}),
'value': ('django.db.models.fields.CharField', [], {'max_length': '256'})
},
u'facturier.serviceoption': {
'Meta': {'object_name': 'ServiceOption'},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
'regie': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['facturier.Regie']"}),
'value': ('django.db.models.fields.CharField', [], {'max_length': '256'})
},
u'facturier.transactionevent': {
'Meta': {'ordering': "['date']", 'object_name': 'TransactionEvent'},
'address': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39', 'null': 'True', 'blank': 'True'}),
'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'details': ('jsonfield.fields.JSONField', [], {'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'invoice_id': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
'nameid': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}),
'regie': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['facturier.Regie']"}),
'response': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'status': ('django.db.models.fields.CharField', [], {'default': "'CREATED'", 'max_length': '16'}),
'transaction_id': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'})
}
}
complete_apps = ['facturier']

View File

@ -2,6 +2,8 @@ from django.db import models
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _, pgettext_lazy
from django.template import RequestContext
from django.template import Template
from jsonfield import JSONField
from portail_citoyen2.apps.data_source_plugin.models import DataSource
@ -34,14 +36,11 @@ class Regie(models.Model):
slug = models.SlugField(unique=True)
description = models.TextField()
service = models.CharField(max_length=64, choices=SERVICES)
get_url = models.ForeignKey(DataSource, related_name='regie_get',
help_text=_('Get an invoice from this Regie'))
update_url = models.ForeignKey(DataSource, related_name='regie_update',
help_text=_('Update an invoice of this Regie'))
get_list_url = models.ForeignKey(DataSource, related_name='regie_get_list',
blank=True, null=True,
invoice_get_url = models.CharField(max_length=256, help_text=_('Get an invoice from this Regie'))
invoice_update_url = models.CharField(max_length=256, help_text=_('Update an invoice of this Regie'))
invoice_list_url = models.CharField(max_length=256, blank=True, null=True,
help_text=_("Get a list of invoices "\
"(RequestContext dependent, typically user's invoices)"))
"(RequestContext dependent, typically user's invoices)"))
def natural_key(self):
return (self.slug,)
@ -49,11 +48,24 @@ class Regie(models.Model):
def __unicode__(self):
return self.label
def get_invoice_url(self, context):
return Template(self.invoice_get_url).render(context)
def get_invoice_update_url(self, context):
return Template(self.invoice_update_url).render(context)
def get_invoice_list_url(self, context):
return Template(self.invoice_list_url).render(context)
def get_invoice_list(self, request, **kwargs):
if not self.get_list_url:
return []
context = RequestContext(request, kwargs)
data_source = Data(self.get_list_url, context, limit=None, refresh=None)
data_source = Data('tipi', {'limit': None, 'refresh': None},
{'url': self.get_invoice_list_url(context),
'content_type': 'json',
'parser_type': 'json',
'slug': 'invoice'}, context)
content = data_source.update_content()
return content.get('data', {}).get('invoices', [])
@ -66,7 +78,11 @@ class Regie(models.Model):
'invoice_hash': invoice_hash}
if request:
context = RequestContext(request, context)
data_source = Data(self.get_url, context, limit=None, refresh=None)
data_source = Data('tipi', {'limit': None, 'refresh': None},
{'url': self.get_invoice_url(context),
'content_type': 'json',
'parser_type': 'json',
'slug': 'invoice'}, context)
content = data_source.update_content()
invoice = content.get('data', {}).get('invoice', {})
if invoice:

View File

@ -243,9 +243,10 @@ class TransactionView(DetailView):
logger.debug('payment response: close transaction %s' % event.transaction_id)
self.create_event(event.transaction_id, invoice_id, status,
response=True, message='response', details=response.__dict__)
update_url = self.object.get_invoice_update_url(context)
logger.debug('payment response: update invoice PAID %s -- context %s' %
(self.object.update_url, context))
self.invoice_rest_request(self.object.update_url, context)
(update_url, context))
self.invoice_rest_request(update_url, context)
# ok !
logger.debug('payment response: OK invoice %s', invoice_id)