Skip to content
This repository has been archived by the owner on Feb 9, 2019. It is now read-only.

Commit

Permalink
Merge branch 'feature/NC-1469' into 'develop'
Browse files Browse the repository at this point in the history
Break circular dependency between nodeconductor and nodeconductor-killbill applications  (NC-1469)



See merge request !21
  • Loading branch information
Pavel Marchuk committed Jun 29, 2016
2 parents 9548320 + c87cfed commit eec87a5
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 4 deletions.
2 changes: 1 addition & 1 deletion packaging/nodeconductor-killbill.spec
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ License: Copyright 2015 OpenNode LLC. All rights reserved.
Url: http://nodeconductor.com
Source0: %{name}-%{version}.tar.gz

Requires: nodeconductor >= 0.79.0
Requires: nodeconductor > 0.102.1
Requires: python-lxml >= 3.2.0
Requires: python-xhtml2pdf >= 0.0.6

Expand Down
3 changes: 1 addition & 2 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/usr/bin/env python
import sys
from setuptools import setup, find_packages


Expand All @@ -8,7 +7,7 @@
]

install_requires = [
'nodeconductor>=0.101.2',
'nodeconductor>0.102.1',
'lxml>=3.2',
'xhtml2pdf>=0.0.6',
'Pillow>=2.0.0,<3.0.0',
Expand Down
53 changes: 52 additions & 1 deletion src/nodeconductor_killbill/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,14 @@
from django.conf.urls import patterns, url
from django.core.urlresolvers import reverse
from django.shortcuts import redirect
from django.utils.translation import gettext

from nodeconductor.core.admin import AdminActionsRegister
from nodeconductor.core.tasks import send_task
from nodeconductor.cost_tracking.admin import DefaultPriceListItemAdmin
from nodeconductor.structure.models import PaidResource

from .backend import KillBillBackend
from .backend import KillBillBackend, KillBillError
from .models import Invoice
from .tasks import update_today_usage_of_resource

Expand Down Expand Up @@ -51,3 +54,51 @@ def sync(self, request):


admin.site.register(Invoice, InvoiceAdmin)


def sync(request):
send_task('killbill', 'sync_pricelist')()
messages.add_message(request, messages.INFO, "Price lists scheduled for sync")
return redirect(reverse('admin:cost_tracking_defaultpricelistitem_changelist'))


def subscribe_resources(request):
erred_resources = {}
subscribed_resources = []
existing_resources = []
for model in PaidResource.get_all_models():
for resource in model.objects.exclude(state=model.States.ERRED):
try:
backend = KillBillBackend(resource.customer)
is_newly_subscribed = backend.subscribe(resource)
except KillBillError as e:
erred_resources[resource] = str(e)
else:
resource.last_usage_update_time = None
resource.save(update_fields=['last_usage_update_time'])
if is_newly_subscribed:
subscribed_resources.append(resource)
else:
existing_resources.append(resource)

if subscribed_resources:
message = gettext('Successfully subscribed %s resources: %s')
message = message % (len(subscribed_resources), ', '.join(r.name for r in subscribed_resources))
messages.add_message(request, messages.INFO, message)

if existing_resources:
message = gettext('%s resources were already subscribed: %s')
message = message % (len(existing_resources), ', '.join(r.name for r in existing_resources))
messages.add_message(request, messages.INFO, message)

if erred_resources:
message = gettext('Failed to subscribe resources: %(erred_resources)s')
erred_resources_message = ', '.join(['%s (error: %s)' % (r.name, e) for r, e in erred_resources.items()])
message = message % {'erred_resources': erred_resources_message}
messages.add_message(request, messages.ERROR, message)

return redirect(reverse('admin:cost_tracking_defaultpricelistitem_changelist'))


AdminActionsRegister.register(DefaultPriceListItemAdmin, sync, 'Sync price lists with backend')
AdminActionsRegister.register(DefaultPriceListItemAdmin, subscribe_resources, 'Subscribe missed resources')

0 comments on commit eec87a5

Please sign in to comment.