def handle(self, *args, **options): """Fetches exchange rates for GBP :param args: None :param options: None :return: None """ plugin = plugin_settings.get_self() base_currency = setting_handler.get_plugin_setting(plugin, 'base_currency', None, create=False).value currencies = models.Renewal.objects.all().values('currency').distinct() api_call = requests.get('http://api.fixer.io/latest?base={0}'.format( base_currency)).json() for currency in currencies: currency_code = currency.get('currency') if currency_code != base_currency: rate = api_call['rates'].get(currency_code) value = setting_handler.get_plugin_setting( plugin, 'ex_rate_{0}'.format(currency_code.upper()), None, create=True, pretty='Ex Rate GBP', fallback='') setting_handler.save_plugin_setting(plugin, value.setting.name, rate, None)
def index(request): ''' Render admin page allowing users to enable or disable the plugin ''' plugin = models.Plugin.objects.get(name=plugin_settings.SHORT_NAME) pandoc_enabled = setting_handler.get_plugin_setting( plugin, 'pandoc_enabled', request.journal, create=True, pretty='Enable Pandoc', types='boolean').processed_value admin_form = forms.PandocAdminForm( initial={'pandoc_enabled': pandoc_enabled}) if request.POST: admin_form = forms.PandocAdminForm(request.POST) if admin_form.is_valid(): for setting_name, setting_value in admin_form.cleaned_data.items(): setting_handler.save_plugin_setting(plugin, setting_name, setting_value, request.journal) messages.add_message( request, messages.SUCCESS, '{0} setting updated.'.format(setting_name)) return redirect(reverse('pandoc_index')) template = "pandoc_plugin/index.html" context = { 'admin_form': admin_form, } return render(request, template, context)
def display_journals(request): """ Determines which journals to display links on. :param request: wsgi request object :return: httpresponse """ journals = journal_models.Journal.objects.all() journals_setting = setting_handler.get_plugin_setting( plugin_settings.get_self(), 'journal_display', None, create=True, pretty='Journal Display', ).value journal_pks = [] if journals_setting and journals_setting != ' ': journal_pks = [int(pk) for pk in journals_setting.split(',')] if request.POST: journal_pks = request.POST.getlist('journal') setting_handler.save_plugin_setting(plugin_settings.get_self(), 'journal_display', ','.join(journal_pks), None) return redirect(reverse('consortial_display')) template = 'consortial_billing/display_journals.html' context = { 'journals': journals, 'journal_pks': journal_pks, } return render(request, template, context)
def html_settings(request): plugin = models.Plugin.objects.get(name='HTML') try: html_block_content = setting_handler.get_plugin_setting( plugin, 'html_block_content', request.journal, create=False, pretty='HTML Block Content').value except models.PluginSetting.DoesNotExist: messages.add_message( request, messages.ERROR, "No 'html_block_content' setting found. Have you installed " "this plugin?", ) return redirect(reverse('home_settings_index', )) if request.POST: html_block_content = request.POST.get('html_block_content') setting_handler.save_plugin_setting(plugin, 'html_block_content', html_block_content, request.journal) messages.add_message(request, messages.INFO, 'HTML Block updated.') return redirect(reverse('home_settings_index')) template = 'html_settings.html' context = { 'html_block_content': html_block_content, 'disable_rich_text': request.GET.get('disable_rich_text', False) } return render(request, template, context)
def index(request): plugin = plugin_settings.get_self() enable_annotran = setting_handler.get_plugin_setting( plugin, 'enable_annotran', request.journal, create=True, pretty='Enable Annotran') enable_hypothesis = setting_handler.get_plugin_setting( plugin, 'enable_hypothesis', request.journal, create=True, pretty='Enable Hypothesis') if request.POST: annotran = request.POST.get('annotran') hypothesis = request.POST.get('hypothesis') setting_handler.save_plugin_setting(plugin, 'enable_annotran', annotran, request.journal) setting_handler.save_plugin_setting(plugin, 'enable_hypothesis', hypothesis, request.journal) return redirect(reverse('annotators_index')) template = 'annotators/index.html' context = { 'enable_annotran': enable_annotran, 'enable_hypothesis': enable_hypothesis, } return render(request, template, context)
def html_settings(request): plugin = models.Plugin.objects.get(name='HTML') html_block_content = setting_handler.get_plugin_setting( plugin, 'html_block_content', request.journal, create=True, pretty='HTML Block Content').value if request.POST: html_block_content = request.POST.get('html_block_content') setting_handler.save_plugin_setting(plugin, 'html_block_content', html_block_content, request.journal) messages.add_message(request, messages.INFO, 'HTML Block updated.') return redirect(reverse('home_settings_index')) template = 'html_settings.html' context = { 'html_block_content': html_block_content, 'disable_rich_text': request.GET.get('disable_rich_text', False) } return render(request, template, context)
def install(): import core.models as core_models import journal.models as journal_models import press.models as press_models # check whether this homepage element has already been installed for all journals journals = journal_models.Journal.objects.all() plugin, created = models.Plugin.objects.get_or_create( name=PLUGIN_NAME, version=VERSION, enabled=True, display_name='News', press_wide=True, homepage_element=True, ) for journal in journals: content_type = ContentType.objects.get_for_model(journal) element, created = core_models.HomepageElement.objects.get_or_create( name=PLUGIN_NAME, configure_url='news_config', template_path='journal/homepage_elements/news.html', content_type=content_type, object_id=journal.pk, has_config=True, defaults={'available_to_press': True}) element.save() number_of_articles = setting_handler.get_plugin_setting( plugin=plugin, setting_name='number_of_articles', journal=journal, create=True, pretty='Number of Articles', ).value if number_of_articles in {None, " ", ""}: setting_handler.save_plugin_setting( plugin=plugin, setting_name='number_of_articles', value=DEFAULT_NEWS, journal=journal, ) presses = press_models.Press.objects.all() for press in presses: content_type = ContentType.objects.get_for_model(press) element, created = core_models.HomepageElement.objects.get_or_create( name=PLUGIN_NAME, configure_url='news_config', template_path='journal/homepage_elements/news.html', content_type=content_type, object_id=press.pk, has_config=True, defaults={'available_to_press': True}) element.save()
def news_config(request): plugin = models.Plugin.objects.get(name='News') number_of_articles = setting_handler.get_plugin_setting(plugin, 'number_of_articles', request.journal, create=True, pretty='Number of Articles').value if request.POST: number_of_articles = request.POST.get('number_of_articles') setting_handler.save_plugin_setting(plugin, 'number_of_articles', number_of_articles, request.journal) messages.add_message(request, messages.INFO, 'Number of articles updated.') return redirect(reverse('home_settings_index')) template = 'news_settings.html' context = { 'number_of_articles': number_of_articles, } return render(request, template, context)
def save(self, journal, commit=True): title = self.cleaned_data.get('title') description = self.cleaned_data.get('description') if commit: setting_handler.save_plugin_setting( plugin_settings.get_self(), 'about_title', title, journal, ) setting_handler.save_setting( 'general', 'journal_description', journal, description, )
def index(request): plugin = models.Plugin.objects.get(name=plugin_settings.SHORT_NAME) disqus_shortname = setting_handler.get_plugin_setting( plugin, 'disqus_shortname', request.journal, create=True, pretty='Disqus Shortname', types='text').processed_value disqus_enabled = setting_handler.get_plugin_setting( plugin, 'disqus_enabled', request.journal, create=True, pretty='Enable Disqus', types='boolean').processed_value admin_form = forms.DisqusAdminForm(initial={ 'disqus_shortname': disqus_shortname, 'disqus_enabled': disqus_enabled }) if request.POST: admin_form = forms.DisqusAdminForm(request.POST) if admin_form.is_valid(): for setting_name, setting_value in admin_form.cleaned_data.items(): setting_handler.save_plugin_setting(plugin, setting_name, setting_value, request.journal) messages.add_message( request, messages.SUCCESS, '{0} setting updated.'.format(setting_name)) return redirect(reverse('disqus_index')) template = "disqus/index.html" template = "disqus/index.html" context = { 'admin_form': admin_form, } return render(request, template, context)
def save(self, commit=True): most_popular = self.cleaned_data.get('most_popular') num_most_popular = self.cleaned_data.get('num_most_popular', 0) most_popular_time = self.cleaned_data.get('most_popular_time') if commit: setting_handler.save_plugin_setting( plugin_settings.get_self(), 'most_popular', most_popular, self.journal, ) setting_handler.save_plugin_setting( plugin_settings.get_self(), 'num_most_popular', num_most_popular, self.journal, ) setting_handler.save_plugin_setting( plugin_settings.get_self(), 'most_popular_time', most_popular_time, self.journal, )
def install(): new_plugin, created = models.Plugin.objects.get_or_create(name=SHORT_NAME, version=VERSION, enabled=True) if created: print('Plugin {0} installed.'.format(PLUGIN_NAME)) else: print('Plugin {0} is already installed.'.format(PLUGIN_NAME)) models.PluginSetting.objects.get_or_create(name='journal_archive_enabled', plugin=new_plugin, types='boolean', pretty_name='Enable Journal Archive Display', description='Enable Journal Archive Display', is_translatable=False) models.PluginSetting.objects.get_or_create(name='article_archive_enabled', plugin=new_plugin, types='boolean', pretty_name='Enable Article Archive Display', description='Enable Article Archive Diesplay', is_translatable=False) models.PluginSetting.objects.get_or_create(name='edit_article_enabled', plugin=new_plugin, types='boolean', pretty_name='Enable Article Editing and Updating', description='Enable Article Editing and Updating', is_translatable=False) models.PluginSetting.objects.get_or_create(name='request_email_template', plugin=new_plugin, types='rich-text', pretty_name='Request Email Template', description='Template for the email sent to authors ' 'when an editor requests an article be updated', is_translatable=False) message_text = """ <p>Dear {{ article.correspondence_author.full_name }},</p> <p>The editorial board of <i>{{ article.journal.name }}</i> requests that the article, '{{ article.title }},' be updated. Please follow the link below to begin the submission process.</p> <p><a href="{{ request.journal_base_url }}{% url 'update_type' article.pk %}">Submit your update.</a></p> <p>Best,<br>Editorial Board, <i>{{ article.journal.code }}</i></p> """ # set starting message template for each journal for journal in Journal.objects.all(): setting_handler.save_plugin_setting(new_plugin, 'request_email_template', message_text, journal)
def index(request): """ Creates the admin page for turning the plugin's elements on or off """ plugin = models.Plugin.objects.get(name=plugin_settings.SHORT_NAME) journal_archive_enabled = setting_handler.get_plugin_setting(plugin, 'journal_archive_enabled', request.journal, create=True, pretty='Enable Journal Archive Display', types='boolean').processed_value article_archive_enabled = setting_handler.get_plugin_setting(plugin, 'article_archive_enabled', request.journal, create=True, pretty='Enable Article Archive Display', types='boolean').processed_value edit_article_enabled = setting_handler.get_plugin_setting(plugin, 'edit_archive_enabled', request.journal, create=True, pretty='Enable Article Editing and Updating', types='boolean').processed_value request_template = setting_handler.get_plugin_setting(plugin, 'request_email_template', request.journal, create=True, pretty='Request Email Template', types='rich-text').processed_value admin_form = forms.ArchiveAdminForm(initial={'journal_archive_enabled': journal_archive_enabled, 'article_archive_enabled': article_archive_enabled, 'edit_article_enabled': edit_article_enabled, 'request_email_template': request_template}) if request.POST: admin_form = forms.ArchiveAdminForm(request.POST) if admin_form.is_valid(): for setting_name, setting_value in admin_form.cleaned_data.items(): setting_handler.save_plugin_setting(plugin, setting_name, setting_value, request.journal) messages.add_message(request, messages.SUCCESS, '{0} setting updated.'.format(setting_name)) return redirect(reverse('archive_index')) template = "archive_plugin/index.html" context = { 'admin_form': admin_form, } return render(request, template, context)
def save(self, journal, plugin, commit=True): for setting_name, setting_value in self.cleaned_data.items(): setting_handler.save_plugin_setting(plugin, setting_name, setting_value, journal)
def settings(request): plugin = plugin_settings.get_self() enable_apcs = setting_handler.get_plugin_setting( plugin, 'enable_apcs', request.journal, create=True, pretty='Enable APCs', ) track_apcs = setting_handler.get_plugin_setting( plugin, 'track_apcs', request.journal, create=True, pretty='Track APCs', ) waiver_text = setting_handler.get_plugin_setting( plugin, 'waiver_text', request.journal, create=True, pretty='Waiver Text', ) enable_waivers = setting_handler.get_plugin_setting( plugin, 'enable_waivers', request.journal, create=True, pretty='Enable Waivers', ) if request.POST: apc_post = request.POST.get('enable_apcs') track_post = request.POST.get('track_apcs') text_post = request.POST.get('waiver_text') waivers_post = request.POST.get('enable_waivers') setting_handler.save_plugin_setting( plugin, 'enable_apcs', apc_post, request.journal, ) setting_handler.save_plugin_setting( plugin, 'track_apcs', track_post, request.journal, ) setting_handler.save_plugin_setting( plugin, 'waiver_text', text_post, request.journal, ) setting_handler.save_plugin_setting( plugin, 'enable_waivers', waivers_post, request.journal, ) messages.add_message(request, messages.SUCCESS, 'Setting updated.') return redirect(reverse('apc_settings')) template = 'apc/settings.html' context = { 'enable_apc': enable_apcs.value if enable_apcs else '', 'track_apcs': track_apcs.value if track_apcs else '', 'enable_waivers': enable_waivers.value if enable_waivers else '', 'waiver_text': waiver_text.value if waiver_text else '', } return render(request, template, context)