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)
Esempio n. 2
0
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)
Esempio n. 3
0
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)
Esempio n. 4
0
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)
Esempio n. 5
0
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)
Esempio n. 6
0
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)
Esempio n. 7
0
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()
Esempio n. 8
0
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)
Esempio n. 9
0
    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,
            )
Esempio n. 10
0
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)
Esempio n. 11
0
    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,
            )
Esempio n. 12
0
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)
Esempio n. 13
0
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)
Esempio n. 14
0
 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)
Esempio n. 15
0
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)