def add_authority(request, slug=None, **kwargs): """ Add new Authority in case if it can't be found in the database. """ user_message = request.session.pop('user_message', {}) template = kwargs.get('template', 'add_record.html') admin_mail_template = 'emails/authority_added.txt' from_link = None # Show the form to enter Authority data. if request.method == 'GET': from_link = request.GET.get('from', None) initial = {'slug': 'slug', 'order': 100} form = AuthorityProfileForm(initial=initial) # Check if the form is correct, save Authority in the db. elif request.method == 'POST': form = AuthorityProfileForm(request.POST) if form.is_valid(): data = form.cleaned_data authority = AuthorityProfile(**data) try: authority.save() except Exception as e: print >> sys.stderr, '[%s] %s' % (datetime.now().isoformat(), e) user_message = update_user_message({}, e.args[0], 'fail') form = AuthorityProfileForm(instance=authority) if authority.id: # Added successfully. user_message = update_user_message(user_message, AppMessage('AuthSavedInactive').message % authority.name, 'success') # Send notification to managers. subject = _(u'New authority in the db: ') + authority.name content = render_to_string(admin_mail_template, { 'authority': authority, 'user': request.user, 'domain': get_domain_name()}) try: send_mail_managers(subject, content, fail_silently=False, headers={'Reply-To': request.user.email}) except Exception as e: print >> sys.stderr, '[%s] %s' % (datetime.now().isoformat(), e) # Create notifier. item = TaggedItem.objects.create(name=authority.name, content_object=authority) evnt = EventNotification.objects.create( item=item, action='active', receiver=request.user, summary='Authority %s becomes active' % authority.name) request.session['user_message'] = user_message return redirect(reverse('display_authorities')) return render_to_response(template, {'form': form, 'from': from_link, 'mode': 'authority', 'user_message': user_message, 'page_title': _(u'Add authority')}, context_instance=RequestContext(request))