Files
mayan-edms/apps/installation/__init__.py

68 lines
1.8 KiB
Python

from __future__ import absolute_import
from django.db import transaction
from django.db.models.signals import post_save
from django.db.utils import DatabaseError
from django.dispatch import receiver
from django.utils.translation import ugettext_lazy as _
from south.signals import post_migrate
from common.utils import encapsulate
from navigation.api import register_links, register_model_list_columns
from project_tools.api import register_tool
from .classes import Property, PropertyNamespace
from .links import link_menu_link, link_namespace_details, link_namespace_list
from .models import Installation
@receiver(post_migrate, dispatch_uid='trigger_first_time')
def trigger_first_time(sender, **kwargs):
if kwargs['app'] == 'installation':
details = Installation.objects.get()
details.is_first_run = True
details.save()
@transaction.commit_on_success
def check_first_run():
try:
details = Installation.objects.get()
except DatabaseError:
# Avoid database errors when the app tables haven't been created yet
transaction.rollback()
else:
if details.is_first_run:
details.submit()
register_model_list_columns(PropertyNamespace, [
{
'name': _(u'label'),
'attribute': 'label'
},
{
'name': _(u'items'),
'attribute': encapsulate(lambda entry: len(entry.get_properties()))
}
])
register_model_list_columns(Property, [
{
'name': _(u'label'),
'attribute': 'label'
},
{
'name': _(u'value'),
'attribute': 'value'
}
])
register_links(PropertyNamespace, [link_namespace_details])
register_links(['namespace_list', PropertyNamespace], [link_namespace_list], menu_name='secondary_menu')
register_tool(link_menu_link)
check_first_run()