Skip to content

Update and fix roomlinks #88

Merged
merged 15 commits into from
Aug 17, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion config/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,6 @@
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'wagtail.core.middleware.SiteMiddleware',
'wagtail.contrib.redirects.middleware.RedirectMiddleware',
]

Expand Down
6 changes: 3 additions & 3 deletions config/settings/local.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@

# EMAIL
# ------------------------------------------------------------------------------
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 1025
#EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
#EMAIL_HOST = 'localhost'
#EMAIL_PORT = 1025

# django-debug-toolbar
# ------------------------------------------------------------------------------
Expand Down
12 changes: 6 additions & 6 deletions mpicms/base/api.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
from wagtail.api.v2.endpoints import PagesAPIEndpoint
from wagtail.api.v2.views import PagesAPIViewSet
from wagtail.api.v2.router import WagtailAPIRouter
from wagtail.images.api.v2.endpoints import ImagesAPIEndpoint
from wagtail.documents.api.v2.endpoints import DocumentsAPIEndpoint
from wagtail.images.api.v2.views import ImagesAPIViewSet
from wagtail.documents.api.v2.views import DocumentsAPIViewSet


api_router = WagtailAPIRouter('wagtailapi')

api_router.register_endpoint('pages', PagesAPIEndpoint)
api_router.register_endpoint('images', ImagesAPIEndpoint)
api_router.register_endpoint('documents', DocumentsAPIEndpoint)
api_router.register_endpoint('pages', PagesAPIViewSet)
api_router.register_endpoint('images', ImagesAPIViewSet)
api_router.register_endpoint('documents', DocumentsAPIViewSet)
18 changes: 18 additions & 0 deletions mpicms/base/migrations/0052_formfield_clean_name.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 3.1 on 2020-08-12 14:04

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('base', '0051_formfield_formpage'),
]

operations = [
migrations.AddField(
model_name='formfield',
name='clean_name',
field=models.CharField(blank=True, default='', help_text='Safe name of the form field, the label converted to ascii_snake_case', max_length=255, verbose_name='name'),
),
]
55 changes: 47 additions & 8 deletions mpicms/base/templatetags/base_tags.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
from django import template

from mpicms.base.utils import get_room_link
import re

from django import template
from django.template.defaultfilters import stringfilter
from django.utils.html import conditional_escape
from django.utils.safestring import mark_safe

register = template.Library()

Expand All @@ -16,13 +18,50 @@ def is_subscribed(page, user):
return user in page.subscribers.all()


@register.simple_tag
def room_link(room):
return get_room_link(room)


@register.filter
def remove_i18n(url):
if url.startswith('/en') or url.startswith('/de'):
return url[3:]
return url


# The ROOM_PATTERN should be in sync with the twiki plugin setting
# in http://twiki.molgen.mpg.de/foswiki/System/RoomsPlugin

ROOM_PATTERN = re.compile(
r"R[0-4]\d\d[abc]?"
r"|[012]\.[012][012]\d\.?\d?[ab]?"
r"|B[01]\.[01][0-9]"
r"|KB\.0[01]|E[012]\da?"
r"|K4?\.[012][012]\d?(?:\.\d)?"
r"|K[B123]\.\d\d\d?[abc]?"
r"|W[012]\d[abc]?"
r"|K[TV]1?\.[012]\d[abcdefg]?"
r"|TH[0-5]\d[ab]?"
r"|HS\d\d"
r"|GH[01]\d"
r"|[K0123]\.[1234]\.F?\d\d"
r"|SR ?([1234])" )

SR_MAP= {
"1": "0.3.73",
"2": "0.3.05",
"3": "0.3.06",
"4": "0.2.01",
}

def room_match_to_link(match):
room = match.group(0)
target_room = room
if room.startswith("SR"):
sr_number = match.group(1)
if sr_number in SR_MAP:
target_room = SR_MAP[sr_number]
return '<a href="http://twiki.molgen.mpg.de/foswiki/bin/room/' + target_room + '">' + room + '</a>'

@register.filter(needs_autoescape=True)
@stringfilter
def add_room_links(rooms, autoescape=True):
if autoescape:
rooms = conditional_escape(rooms)
return mark_safe(ROOM_PATTERN.sub(room_match_to_link, rooms))
5 changes: 0 additions & 5 deletions mpicms/base/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,3 @@ def can_create(request, model):
if request.user.is_staff or request.user.is_superuser:
return True
return not getattr(model, 'creation_limited', False)


def get_room_link(room):
if room:
return 'https://twiki.molgen.mpg.de/foswiki/bin/room/' + room.split()[0]
17 changes: 17 additions & 0 deletions mpicms/contrib/sites/migrations/0004_auto_20200812_1604.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Generated by Django 3.1 on 2020-08-12 14:04

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('sites', '0003_set_site_domain_and_name'),
]

operations = [
migrations.AlterModelOptions(
name='site',
options={'ordering': ['domain'], 'verbose_name': 'site', 'verbose_name_plural': 'sites'},
),
]
18 changes: 18 additions & 0 deletions mpicms/personal/migrations/0026_auto_20200813_1342.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 3.1 on 2020-08-13 11:42

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('personal', '0025_auto_20190902_1149'),
]

operations = [
migrations.AlterField(
model_name='contact',
name='room',
field=models.CharField(blank=True, max_length=50, verbose_name='room'),
),
]
15 changes: 6 additions & 9 deletions mpicms/personal/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ class Contact(index.Indexed, ClusterableModel):
last_name = models.CharField(_("last name"), max_length=50, blank=True)
email = models.EmailField(_("email"), blank=True)
phone = models.CharField(_("phone number"), blank=True, max_length=50)
room = models.CharField(_("room"), max_length=25, blank=True)
room = models.CharField(_("room"), max_length=50, blank=True)
is_active = models.BooleanField(_("is active"), default=True)
priority = models.PositiveSmallIntegerField(
_("priority"), blank=True, default=0, validators=[MaxValueValidator(999)],
Expand Down Expand Up @@ -126,23 +126,20 @@ class Contact(index.Indexed, ClusterableModel):

search_fields = [
index.SearchField('first_name', partial_match=True),
index.AutocompleteField('first_name'),
index.SearchField('last_name', partial_match=True),
index.AutocompleteField('last_name'),
index.SearchField('email', partial_match=True),
index.AutocompleteField('email'),
index.SearchField('phone'),
index.SearchField('room'),
index.FilterField('is_active')
# index.SearchField('groups'),
]

def __str__(self):
if self.first_name and self.last_name:
if self.title:
return f'{self.title} {self.first_name} {self.last_name}'
return f'{self.first_name} {self.last_name}'
elif self.first_name:
return self.first_name
elif self.last_name:
return self.last_name
if self.first_name or self.last_name:
return " ".join(filter(None, (self.title, self.first_name, self.last_name)))
else:
return self.email

Expand Down
2 changes: 1 addition & 1 deletion mpicms/templates/base/blocks/contact_block.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
{% if value.contact.room %}
<tr>
<td><i class="fas fa-building"></i></td>
<td><a href="{% room_link value.contact.room %}">{{ value.contact.room }}</td>
<td>{{ value.contact.room | add_room_links }}</td>
</tr>
{% endif %}
</table>
Expand Down
8 changes: 4 additions & 4 deletions mpicms/templates/events/event.html
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@ <h2 class="title is-2">{{ page.title }}</h2>


{% if page.room %}
<a href="{% room_link page.room %}" class="tag is-medium">
<div class="tag is-medium">
<i class="fa fa-building"></i>
{{ page.room }}
</a>
{{ page.room | add_room_links }}
</div>
{% endif %}

</div>
Expand All @@ -58,4 +58,4 @@ <h2 class="title is-2">{{ page.title }}</h2>
</p>
</div>
</div>
{% endblock %}
{% endblock %}
6 changes: 3 additions & 3 deletions mpicms/templates/footer.html
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{% load i18n %}

{% load i18n wagtailcore_tags %}
{% wagtail_site as current_site %}

<div class="footer-top"></div>

<footer class="footer">
<div class="container">
<div class="columns">

{% with request.site.root_page.specific.footer_items as footer_items %}
{% with current_site.root_page.specific.footer_items as footer_items %}
{% for menu in footer_items %}
<div class="column is-3">
<div class="menu">
Expand Down
9 changes: 5 additions & 4 deletions mpicms/templates/menus/main.html
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
{% load static i18n wagtailcore_tags base_tags %}

{% get_current_language as LANGUAGE_CODE %}
{% wagtail_site as current_site %}

<nav class="navbar is-light is-transparent" role="navigation" aria-label="main navigation">
<div class="container is-hidden-touch navbar-container-top">
<div class="navbar-brand navbar-brand-top">
<a href="{% pageurl request.site.root_page %}" class="navbar-item">
<a href="{% pageurl current_site.root_page %}" class="navbar-item">
{% if LANGUAGE_CODE == "de" %}
<img src="{% static 'images/molgen-logo-intern.svg' %}" class="logo">
{% else %}
Expand Down Expand Up @@ -56,7 +57,7 @@
</div>
<div class="container">
<div class="navbar-brand">
<a href="{% pageurl request.site.root_page %}" class="navbar-item is-hidden-desktop">
<a href="{% pageurl current_site.root_page %}" class="navbar-item is-hidden-desktop">
<img src="{% static 'images/molgen-logo.svg' %}">
</a>
<a role="button" class="navbar-burger burger" data-target="navMenu" aria-label="menu" aria-expanded="false" data-target="navbarBasicExample">
Expand All @@ -67,7 +68,7 @@
</div>
<div class="navbar-menu" id="navMenu" style="flex-shrink: 1">
<div class="navbar-start" style="flex-wrap: wrap;">
{% for item in request.site.root_page.get_children.live.in_menu %}
{% for item in current_site.root_page.get_children.live.in_menu %}
{% with item.get_children.live.in_menu as parents %}
{% if parents %}
<div class="navbar-item has-dropdown is-hoverable">
Expand Down Expand Up @@ -110,7 +111,7 @@
</div>

<div class="navbar-end" style="flex-shrink: 0">
{% for menu in request.site.root_page.specific.quick_links %}
{% for menu in current_site.root_page.specific.quick_links %}
<div class="navbar-item has-dropdown is-hoverable">
<div class="navbar-link navbar-title">
{{ menu.value.title }}
Expand Down
2 changes: 1 addition & 1 deletion mpicms/templates/personal/list.html
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ <h1 class="title has-text-centered">{% trans 'Contact List' %}</h1>
<td class="last_name">{{ contact.last_name }}</td>
<td class="email"><a href="mailto:{{ contact.email }}">{{ contact.email }}</a></td>
<td class="phone">{{ contact.phone }}</td>
<td class="room"><a href="{% room_link contact.room %}">{{ contact.room }}</a></td>
<td class="room">{{ contact.room | add_room_links }}</td>
<td class="positions">{% for contactposition in contact.positions.all %}{{ contactposition.position }}<br>{% endfor %}</td>
<td class="groups">{% for contactgroup in contact.groups.all %}{{ contactgroup.group }}<br>{% endfor %}</td>
</tr>
Expand Down
2 changes: 1 addition & 1 deletion mpicms/users/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from django.utils.translation import ugettext as _

from wagtail.admin import messages
from wagtail.admin.utils import permission_required
from wagtail.admin.auth import permission_required
from wagtail.core import hooks

from wagtail.users.views.users import User, change_user_perm, get_user_edit_form
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
From 360f59c74c5a3678c16b8e189a1674451d7adf9e Mon Sep 17 00:00:00 2001
From 41d351e97c1cc8d8c0bab812eacffb2dcd6e9ad2 Mon Sep 17 00:00:00 2001
From: Donald Buczek <buczek@molgen.mpg.de>
Date: Thu, 2 Jan 2020 14:53:04 +0100
Subject: [PATCH] django: Do not check ALLOWED_HOSTS for dummy requests.
Expand All @@ -13,10 +13,10 @@ handled by django. It is used by wagtail to implement preview.
1 file changed, 3 insertions(+)

diff --git a/lib/python3.7/site-packages/django/http/request.py b/lib/python3.7/site-packages/django/http/request.py
index 39298aac..da077044 100644
index 083bf2d..4b8c9a9 100644
--- a/lib/python3.7/site-packages/django/http/request.py
+++ b/lib/python3.7/site-packages/django/http/request.py
@@ -94,6 +94,9 @@ class HttpRequest:
@@ -120,6 +120,9 @@ class HttpRequest:
"""Return the HTTP host using the environment or request headers."""
host = self._get_raw_host()

Expand All @@ -27,5 +27,5 @@ index 39298aac..da077044 100644
allowed_hosts = settings.ALLOWED_HOSTS
if settings.DEBUG and not allowed_hosts:
--
2.24.1
2.26.2

Loading