Add web links app

Signed-off-by: Roberto Rosario <roberto.rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2019-07-27 00:57:00 -04:00
parent ea516cbc23
commit 3efd1bd89d
50 changed files with 4639 additions and 4 deletions

View File

@@ -228,3 +228,10 @@ file_filter = mayan/apps/user_management/locale/<lang>/LC_MESSAGES/django.po
source_lang = en
source_file = mayan/apps/user_management/locale/en/LC_MESSAGES/django.po
type = PO
[mayan-edms.weblink-3-0]
file_filter = mayan/apps/weblinks/locale/<lang>/LC_MESSAGES/django.po
source_lang = en
source_file = mayan/apps/weblinks/locale/en/LC_MESSAGES/django.po
type = PO

View File

@@ -63,6 +63,7 @@
- Move pagination navigation inside the toolbar.
- Remove document image clear link and view.
This is now handled by the file caching app.
- Add web links app.
3.2.6 (2019-07-10)
==================

View File

@@ -17,7 +17,8 @@ APP_LIST = (
'file_metadata', 'linking', 'lock_manager', 'mailer',
'mayan_statistics', 'metadata', 'mirroring', 'motd', 'navigation',
'ocr', 'permissions', 'platform', 'rest_api', 'smart_settings',
'sources', 'storage', 'tags', 'task_manager', 'user_management'
'sources', 'storage', 'tags', 'task_manager', 'user_management',
'weblinks'
)
LANGUAGE_LIST = (

View File

@@ -78,7 +78,7 @@ Changes
- Move pagination navigation inside the toolbar.
- Remove document image clear link and view.
This is now handled by the file caching app.
- Add web links app.
Removals
--------

View File

@@ -17,7 +17,7 @@
{% motd %}
<div class="row">
<div class="col-xs-12 col-sm-10 col-sm-offset-1 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2">
<div class="col-xs-12 col-sm-10 col-sm-offset-1 col-md-10 col-md-offset-1 col-lg-6 col-lg-offset-3">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">&nbsp;</h3>

View File

@@ -4,7 +4,7 @@
{% if autoadmin_properties.account %}
<div class="row">
<div class="col-xs-12 col-sm-10 col-sm-offset-1 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2">
<div class="col-xs-12 col-sm-10 col-sm-offset-1 col-md-10 col-md-offset-1 col-lg-6 col-lg-offset-3">
<br>
<div class="panel panel-primary">
<div class="panel-heading">

View File

@@ -0,0 +1,3 @@
from __future__ import unicode_literals
default_app_config = 'mayan.apps.web_links.apps.WebLinksApp'

View File

@@ -0,0 +1,15 @@
from __future__ import unicode_literals
from django.contrib import admin
from .models import WebLink
@admin.register(WebLink)
class WebLinkAdmin(admin.ModelAdmin):
def document_type_list(self, instance):
return ','.join(
instance.document_types.values_list('label', flat=True)
)
filter_horizontal = ('document_types',)
list_display = ('label', 'template', 'enabled', 'document_type_list')

View File

@@ -0,0 +1,124 @@
from __future__ import unicode_literals
from django.apps import apps
from django.utils.translation import ugettext_lazy as _
from mayan.apps.acls.classes import ModelPermission
from mayan.apps.acls.links import link_acl_list
from mayan.apps.acls.permissions import permission_acl_edit, permission_acl_view
from mayan.apps.common.apps import MayanAppConfig
from mayan.apps.common.html_widgets import TwoStateWidget
from mayan.apps.common.menus import (
menu_facet, menu_list_facet, menu_object, menu_secondary, menu_setup
)
from mayan.apps.events.classes import ModelEventType
from mayan.apps.events.links import (
link_events_for_object, link_object_event_types_user_subcriptions_list
)
from mayan.apps.navigation.classes import SourceColumn
from .events import event_web_link_edited
from .links import (
link_document_type_web_links, link_document_web_link_list,
link_web_link_create, link_web_link_delete, link_web_link_document_types,
link_web_link_edit, link_web_link_instance_view,
link_web_link_list, link_web_link_setup
)
from .permissions import (
permission_web_link_delete, permission_web_link_edit,
permission_web_link_instance_view, permission_web_link_view
)
class WebLinksApp(MayanAppConfig):
app_namespace = 'web_links'
app_url = 'web_links'
has_rest_api = False
has_tests = False
name = 'mayan.apps.web_links'
verbose_name = _('Links')
def ready(self):
super(WebLinksApp, self).ready()
from actstream import registry
Document = apps.get_model(
app_label='documents', model_name='Document'
)
DocumentType = apps.get_model(
app_label='documents', model_name='DocumentType'
)
ResolvedWebLink = self.get_model(model_name='ResolvedWebLink')
WebLink = self.get_model(model_name='WebLink')
ModelEventType.register(
event_types=(
event_web_link_edited,
), model=WebLink
)
ModelPermission.register(
model=Document, permissions=(
permission_web_link_instance_view,
)
)
ModelPermission.register(
model=DocumentType, permissions=(
permission_web_link_instance_view,
)
)
ModelPermission.register(
model=WebLink, permissions=(
permission_acl_edit, permission_acl_view,
permission_web_link_delete, permission_web_link_edit,
permission_web_link_instance_view, permission_web_link_view
)
)
SourceColumn(
attribute='label', is_identifier=True, is_sortable=True,
source=ResolvedWebLink
)
SourceColumn(
attribute='label', is_identifier=True, is_sortable=True,
source=WebLink
)
SourceColumn(
attribute='enabled', is_sortable=True, source=WebLink,
widget=TwoStateWidget
)
menu_facet.bind_links(
links=(link_document_web_link_list,),
sources=(Document,)
)
menu_list_facet.bind_links(
links=(
link_acl_list, link_events_for_object,
link_web_link_document_types,
link_object_event_types_user_subcriptions_list,
), sources=(WebLink,)
)
menu_list_facet.bind_links(
links=(link_document_type_web_links,), sources=(DocumentType,)
)
menu_object.bind_links(
links=(
link_web_link_delete, link_web_link_edit
), sources=(WebLink,)
)
menu_object.bind_links(
links=(link_web_link_instance_view,),
sources=(ResolvedWebLink,)
)
menu_secondary.bind_links(
links=(link_web_link_list, link_web_link_create),
sources=(
WebLink, 'web_links:web_link_list',
'web_links:web_link_create'
)
)
menu_setup.bind_links(links=(link_web_link_setup,))
registry.register(ResolvedWebLink)
registry.register(WebLink)

View File

@@ -0,0 +1,19 @@
from __future__ import absolute_import, unicode_literals
from django.utils.translation import ugettext_lazy as _
from mayan.apps.events.classes import EventTypeNamespace
namespace = EventTypeNamespace(
label=_('Web links'), name='linking'
)
event_web_link_created = namespace.add_event_type(
label=_('Web link created'), name='web_link_created'
)
event_web_link_edited = namespace.add_event_type(
label=_('Web link edited'), name='web_link_edited'
)
event_web_link_navigated = namespace.add_event_type(
label=_('Web link navigated'), name='web_link_navigated'
)

View File

@@ -0,0 +1,11 @@
from __future__ import unicode_literals
from django import forms
from .models import WebLink
class WebLinkForm(forms.ModelForm):
class Meta:
fields = ('label', 'template', 'enabled')
model = WebLink

View File

@@ -0,0 +1,22 @@
from __future__ import absolute_import, unicode_literals
from mayan.apps.appearance.classes import Icon
from mayan.apps.documents.icons import icon_document_type
icon_web_link = Icon(driver_name='fontawesome', symbol='external-link-alt')
icon_document_type_web_links = icon_web_link
icon_document_web_link_list = Icon(
driver_name='fontawesome', symbol='external-link-alt'
)
icon_web_link_create = Icon(
driver_name='fontawesome-dual', primary_symbol='external-link-alt',
secondary_symbol='plus'
)
icon_web_link_delete = Icon(driver_name='fontawesome', symbol='times')
icon_web_link_document_types = icon_document_type
icon_web_link_edit = Icon(driver_name='fontawesome', symbol='pencil-alt')
icon_web_link_instance_view = Icon(
driver_name='fontawesome', symbol='external-link-alt'
)
icon_web_link_setup = icon_web_link
icon_web_link_list = icon_web_link

View File

@@ -0,0 +1,62 @@
from __future__ import unicode_literals
from django.utils.translation import ugettext_lazy as _
from mayan.apps.documents.permissions import permission_document_type_edit
from mayan.apps.navigation.classes import Link
from .permissions import (
permission_web_link_create, permission_web_link_delete,
permission_web_link_edit, permission_web_link_instance_view,
)
link_document_type_web_links = Link(
args='resolved_object.pk',
icon_class_path='mayan.apps.web_links.icons.icon_document_type_web_links',
permissions=(permission_document_type_edit,), text=_('Web links'),
view='web_links:document_type_web_links',
)
link_web_link_create = Link(
icon_class_path='mayan.apps.web_links.icons.icon_web_link_create',
permissions=(permission_web_link_create,),
text=_('Create new web link'), view='web_links:web_link_create'
)
link_web_link_delete = Link(
args='object.pk',
icon_class_path='mayan.apps.web_links.icons.icon_web_link_delete',
permissions=(permission_web_link_delete,),
tags='dangerous', text=_('Delete'), view='web_links:web_link_delete',
)
link_web_link_document_types = Link(
args='object.pk',
icon_class_path='mayan.apps.web_links.icons.icon_web_link_document_types',
permissions=(permission_web_link_edit,),
text=_('Document types'), view='web_links:web_link_document_types',
)
link_web_link_edit = Link(
args='object.pk',
icon_class_path='mayan.apps.web_links.icons.icon_web_link_edit',
permissions=(permission_web_link_edit,),
text=_('Edit'), view='web_links:web_link_edit',
)
link_web_link_instance_view = Link(
icon_class_path='mayan.apps.web_links.icons.icon_web_link_instance_view',
args=('document.pk', 'object.pk',),
permissions=(permission_web_link_instance_view,), tags='new_window',
text=_('Navigate'), view='web_links:web_link_instance_view',
)
link_document_web_link_list = Link(
args='resolved_object.pk',
icon_class_path='mayan.apps.web_links.icons.icon_document_web_link_list',
permissions=(permission_web_link_instance_view,), text=_('Web links'),
view='web_links:document_web_link_list',
)
link_web_link_list = Link(
icon_class_path='mayan.apps.web_links.icons.icon_web_link_list',
text=_('Web links'), view='web_links:web_link_list'
)
link_web_link_setup = Link(
icon_class_path='mayan.apps.web_links.icons.icon_web_link_setup',
permissions=(permission_web_link_create,), text=_('Web links'),
view='web_links:web_link_list'
)

View File

@@ -0,0 +1,146 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:34-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,145 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:34-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,144 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:34-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,145 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,144 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,144 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,145 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,144 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,145 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,145 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,145 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,145 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,145 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,145 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,146 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
"2);\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,144 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,147 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n"
"%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n"
"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,145 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,145 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,144 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,147 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
"%100>=11 && n%100<=14)? 2 : 3);\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,144 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,144 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,144 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,144 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-26 23:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: apps.py:38
msgid "Links"
msgstr ""
#: events.py:8 links.py:17 links.py:52 links.py:57 links.py:61 models.py:36
#: permissions.py:7 views.py:145
msgid "Web links"
msgstr ""
#: events.py:12
msgid "Web link created"
msgstr ""
#: events.py:15
msgid "Web link edited"
msgstr ""
#: links.py:23 views.py:193
msgid "Create new web link"
msgstr ""
#: links.py:29
msgid "Delete"
msgstr ""
#: links.py:35 models.py:28
msgid "Document types"
msgstr ""
#: links.py:41
msgid "Edit"
msgstr ""
#: links.py:47
msgid "Navigate"
msgstr ""
#: models.py:22
msgid "Label"
msgstr ""
#: models.py:24
msgid "Template"
msgstr ""
#: models.py:25
msgid "Enabled"
msgstr ""
#: models.py:35
msgid "Web link"
msgstr ""
#: permissions.py:10
msgid "Create new web links"
msgstr ""
#: permissions.py:13
msgid "Delete web links"
msgstr ""
#: permissions.py:16
msgid "Edit web links"
msgstr ""
#: permissions.py:19
msgid "View existing web links"
msgstr ""
#: permissions.py:22
msgid "View web link instances"
msgstr ""
#: views.py:44
msgid "Available web links"
msgstr ""
#: views.py:45
msgid "Web links enabled"
msgstr ""
#: views.py:77
#, python-format
msgid "Web links to enable for document type: %s"
msgstr ""
#: views.py:111
msgid "Available document types"
msgstr ""
#: views.py:112
msgid "Document types enabled"
msgstr ""
#: views.py:122
#, python-format
msgid "Document type for which to enable web link: %s"
msgstr ""
#: views.py:139
msgid "Web links allow generating links from documents to external resources."
msgstr ""
#: views.py:143
msgid "There are no web links"
msgstr ""
#: views.py:180
msgid "There are no web links for this document"
msgstr ""
#: views.py:183
#, python-format
msgid "Web links for document: %s"
msgstr ""
#: views.py:214
#, python-format
msgid "Delete web link: %s"
msgstr ""
#: views.py:229
#, python-format
msgid "Edit web link: %s"
msgstr ""

View File

@@ -0,0 +1,16 @@
from django.db import models
from mayan.apps.acls.models import AccessControlList
from .permissions import permission_web_link_instance_view
class WebLinkManager(models.Manager):
def get_for(self, document, user):
queryset = self.filter(
document_types=document.document_type, enabled=True
)
return AccessControlList.objects.restrict_queryset(
permission=permission_web_link_instance_view,
queryset=queryset, user=user
)

View File

@@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.22 on 2019-07-27 04:29
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
('documents', '0050_auto_20190725_0451'),
]
operations = [
migrations.CreateModel(
name='WebLink',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('label', models.CharField(db_index=True, help_text='A short text describing the weblink.', max_length=96, verbose_name='Label')),
('template', models.TextField(help_text='Template that will be used to craft the final URL of the weblink. The {{ document }} variable is available to the template.', verbose_name='Template')),
('enabled', models.BooleanField(default=True, verbose_name='Enabled')),
('document_types', models.ManyToManyField(related_name='web_links', to='documents.DocumentType', verbose_name='Document types')),
],
options={
'ordering': ('label',),
'verbose_name': 'Web link',
'verbose_name_plural': 'Web links',
},
),
migrations.CreateModel(
name='ResolvedWebLink',
fields=[
],
options={
'proxy': True,
'indexes': [],
},
bases=('web_links.weblink',),
),
]

View File

@@ -0,0 +1,104 @@
from __future__ import unicode_literals
from django.db import models, transaction
from django.template import Context, Template
from django.urls import reverse
from django.utils.encoding import python_2_unicode_compatible
from django.utils.translation import ugettext_lazy as _
from mayan.apps.documents.events import event_document_type_edited
from mayan.apps.documents.models import DocumentType
from .events import event_web_link_created, event_web_link_edited
from .managers import WebLinkManager
@python_2_unicode_compatible
class WebLink(models.Model):
"""
This model stores the basic fields for a web link. Web links allow
generating links from documents to external resources.
"""
label = models.CharField(
db_index=True, help_text=_('A short text describing the weblink.'),
max_length=96, verbose_name=_('Label')
)
template = models.TextField(
help_text=_(
'Template that will be used to craft the final URL of the '
'weblink. The {{ document }} variable is available to the template.'
), verbose_name=_('Template')
)
enabled = models.BooleanField(default=True, verbose_name=_('Enabled'))
document_types = models.ManyToManyField(
related_name='web_links', to=DocumentType,
verbose_name=_('Document types')
)
objects = WebLinkManager()
class Meta:
ordering = ('label',)
verbose_name = _('Web link')
verbose_name_plural = _('Web links')
def __str__(self):
return self.label
def document_types_add(self, queryset, _user=None):
with transaction.atomic():
event_web_link_edited.commit(
actor=_user, target=self
)
for obj in queryset:
self.document_types.add(obj)
event_document_type_edited.commit(
actor=_user, action_object=self, target=obj
)
def document_types_remove(self, queryset, _user=None):
with transaction.atomic():
event_web_link_edited.commit(
actor=_user, target=self
)
for obj in queryset:
self.document_types.remove(obj)
event_document_type_edited.commit(
actor=_user, action_object=self, target=obj
)
def get_absolute_url(self):
return reverse(
viewname='weblinks:web_link_edit', kwargs={
'pk': self.pk
}
)
def save(self, *args, **kwargs):
_user = kwargs.pop('_user', None)
with transaction.atomic():
is_new = not self.pk
super(WebLink, self).save(*args, **kwargs)
if is_new:
event_web_link_created.commit(
actor=_user, target=self
)
else:
event_web_link_edited.commit(
actor=_user, target=self
)
class ResolvedWebLink(WebLink):
"""
Proxy model to represent an already resolved web link. Used for easier
colums registration.
"""
class Meta:
proxy = True
def get_url_for(self, document):
context = Context({'document': document})
return Template(self.template).render(context=context)

View File

@@ -0,0 +1,23 @@
from __future__ import absolute_import, unicode_literals
from django.utils.translation import ugettext_lazy as _
from mayan.apps.permissions import PermissionNamespace
namespace = PermissionNamespace(label=_('Web links'), name='web_links')
permission_web_link_create = namespace.add_permission(
label=_('Create new web links'), name='web_link_create'
)
permission_web_link_delete = namespace.add_permission(
label=_('Delete web links'), name='web_link_delete'
)
permission_web_link_edit = namespace.add_permission(
label=_('Edit web links'), name='web_link_edit'
)
permission_web_link_view = namespace.add_permission(
label=_('View existing web links'), name='web_link_view'
)
permission_web_link_instance_view = namespace.add_permission(
label=_('View web link instances'), name='web_link_instance_view'
)

View File

View File

@@ -0,0 +1,5 @@
from __future__ import unicode_literals
TEST_WEB_LINK_LABEL = 'test web link label'
TEST_WEB_LINK_LABEL_EDITED = 'test web link label edited'
TEST_WEB_LINK_TEMPLATE = 'http://www.example.com/document-{{ document.uuid }}'

View File

@@ -0,0 +1,59 @@
from __future__ import unicode_literals
from ..models import WebLink
from .literals import (
TEST_WEB_LINK_LABEL, TEST_WEB_LINK_LABEL_EDITED, TEST_WEB_LINK_TEMPLATE
)
class WebLinkTestMixin(object):
def _create_test_web_link(self):
self.test_web_link = WebLink.objects.create(
label=TEST_WEB_LINK_LABEL, template=TEST_WEB_LINK_TEMPLATE,
)
class WebLinkViewTestMixin(object):
def _request_test_document_web_link_instance_view(self):
return self.post(
viewname='web_links:web_link_instance_view', kwargs={
'document_pk': self.test_document.pk,
'web_link_pk': self.test_web_link.pk
}
)
def _request_test_document_web_link_list_view(self):
return self.get(
viewname='web_links:document_web_link_list', kwargs={
'pk': self.test_document.pk
}
)
def _request_test_web_link_create_view(self):
return self.post(
viewname='web_links:web_link_create', data={
'label': TEST_WEB_LINK_LABEL,
'template': TEST_WEB_LINK_TEMPLATE
}
)
def _request_test_web_link_delete_view(self):
return self.post(
viewname='web_links:web_link_delete', kwargs={
'pk': self.test_web_link.pk
}
)
def _request_test_web_link_edit_view(self):
return self.post(
viewname='web_links:web_link_edit', kwargs={
'pk': self.test_web_link.pk
}, data={
'label': TEST_WEB_LINK_LABEL_EDITED,
'template': TEST_WEB_LINK_TEMPLATE
}
)
def _request_test_web_link_list_view(self):
return self.get(viewname='web_links:web_link_list')

View File

@@ -0,0 +1,218 @@
from __future__ import unicode_literals
from django.utils.encoding import force_text
from mayan.apps.common.tests import GenericViewTestCase
from mayan.apps.documents.tests import GenericDocumentViewTestCase
from ..models import WebLink
from ..permissions import (
permission_web_link_create, permission_web_link_delete,
permission_web_link_edit, permission_web_link_view,
permission_web_link_instance_view
)
from .literals import TEST_WEB_LINK_TEMPLATE
from .mixins import WebLinkTestMixin, WebLinkViewTestMixin
class WebLinkViewTestCase(
WebLinkTestMixin, WebLinkViewTestMixin, GenericViewTestCase
):
def test_web_link_create_view_no_permissions(self):
web_link_count = WebLink.objects.count()
response = self._request_test_web_link_create_view()
self.assertEqual(response.status_code, 403)
self.assertEqual(WebLink.objects.count(), web_link_count)
def test_web_link_create_view_with_permissions(self):
self.grant_permission(permission=permission_web_link_create)
web_link_count = WebLink.objects.count()
response = self._request_test_web_link_create_view()
self.assertEqual(response.status_code, 302)
self.assertEqual(WebLink.objects.count(), web_link_count + 1)
def test_web_link_delete_view_no_permissions(self):
self._create_test_web_link()
web_link_count = WebLink.objects.count()
response = self._request_test_web_link_delete_view()
self.assertEqual(response.status_code, 404)
self.assertEqual(WebLink.objects.count(), web_link_count)
def test_web_link_delete_view_with_access(self):
self._create_test_web_link()
self.grant_access(
obj=self.test_web_link, permission=permission_web_link_delete
)
web_link_count = WebLink.objects.count()
response = self._request_test_web_link_delete_view()
self.assertEqual(response.status_code, 302)
self.assertEqual(WebLink.objects.count(), web_link_count - 1)
def test_web_link_edit_view_no_permissions(self):
self._create_test_web_link()
web_link_label = self.test_web_link.label
response = self._request_test_web_link_edit_view()
self.assertEqual(response.status_code, 404)
self.test_web_link.refresh_from_db()
self.assertEqual(self.test_web_link.label, web_link_label)
def test_web_link_edit_view_with_access(self):
self._create_test_web_link()
self.grant_access(
obj=self.test_web_link, permission=permission_web_link_edit
)
web_link_label = self.test_web_link.label
response = self._request_test_web_link_edit_view()
self.assertEqual(response.status_code, 302)
self.test_web_link.refresh_from_db()
self.assertNotEqual(self.test_web_link.label, web_link_label)
def test_web_link_list_view_with_no_permission(self):
self._create_test_web_link()
response = self._request_test_web_link_list_view()
self.assertNotContains(
response=response, text=self.test_web_link.label, status_code=200
)
def test_web_link_list_view_with_access(self):
self._create_test_web_link()
self.grant_access(obj=self.test_web_link, permission=permission_web_link_view)
response = self._request_test_web_link_list_view()
self.assertContains(
response=response, text=self.test_web_link.label, status_code=200
)
class DocumentWebLinkViewTestCase(
WebLinkTestMixin, WebLinkViewTestMixin, GenericDocumentViewTestCase
):
def setUp(self):
super(DocumentWebLinkViewTestCase, self).setUp()
self._create_test_web_link()
self.test_web_link.document_types.add(self.test_document_type)
def test_document_web_links_list_view_no_permissions(self):
response = self._request_test_document_web_link_list_view()
self.assertNotContains(
response=response, text=force_text(self.test_document),
status_code=404
)
self.assertNotContains(
response=response, text=force_text(self.test_web_link),
status_code=404
)
def test_document_web_links_list_view_with_document_access(self):
self.grant_access(
obj=self.test_document,
permission=permission_web_link_instance_view
)
response = self._request_test_document_web_link_list_view()
self.assertContains(
response=response, text=force_text(self.test_document),
status_code=200
)
self.assertNotContains(
response=response, text=force_text(self.test_web_link),
status_code=200
)
def test_document_web_links_list_view_with_web_link_access(self):
self.grant_access(
obj=self.test_web_link,
permission=permission_web_link_instance_view
)
response = self._request_test_document_web_link_list_view()
self.assertNotContains(
response=response, text=force_text(self.test_document),
status_code=404
)
self.assertNotContains(
response=response, text=force_text(self.test_web_link),
status_code=404
)
def test_document_web_links_list_view_with_full_access(self):
self.grant_access(
obj=self.test_document,
permission=permission_web_link_instance_view
)
self.grant_access(
obj=self.test_web_link,
permission=permission_web_link_instance_view
)
response = self._request_test_document_web_link_list_view()
self.assertContains(
response=response, text=force_text(self.test_document),
status_code=200
)
self.assertContains(
response=response, text=force_text(self.test_web_link),
status_code=200
)
def test_document_resolved_web_link_view_no_permissions(self):
response = self._request_test_document_web_link_instance_view()
self.assertEqual(response.status_code, 404)
def test_document_resolved_web_link_view_with_document_access(self):
self.grant_access(
obj=self.test_document,
permission=permission_web_link_instance_view
)
response = self._request_test_document_web_link_instance_view()
self.assertEqual(response.status_code, 404)
def test_document_resolved_web_link_view_with_web_link_access(self):
self.grant_access(
obj=self.test_web_link,
permission=permission_web_link_instance_view
)
response = self._request_test_document_web_link_instance_view()
self.assertEqual(response.status_code, 404)
def test_document_resolved_web_link_view_with_full_access(self):
self.grant_access(
obj=self.test_document,
permission=permission_web_link_instance_view
)
self.grant_access(
obj=self.test_web_link,
permission=permission_web_link_instance_view
)
response = self._request_test_document_web_link_instance_view()
self.assertEqual(response.status_code, 302)
self.assertEqual(
response.url, TEST_WEB_LINK_TEMPLATE.replace(
'{{ document.uuid }}', force_text(self.test_document.uuid)
)
)

View File

@@ -0,0 +1,47 @@
from __future__ import unicode_literals
from django.conf.urls import url
from .views import (
DocumentWebLinkListView, DocumentTypeWebLinksView, ResolvedWebLinkView,
WebLinkCreateView, WebLinkDeleteView, WebLinkDocumentTypesView,
WebLinkEditView, WebLinkListView
)
urlpatterns = [
url(
regex=r'^document_types/(?P<pk>\d+)/web_links/$',
view=DocumentTypeWebLinksView.as_view(),
name='document_type_web_links'
),
url(
regex=r'^documents/(?P<pk>\d+)/web_links/$',
view=DocumentWebLinkListView.as_view(),
name='document_web_link_list'
),
url(
regex=r'^documents/(?P<document_pk>\d+)/(?P<web_link_pk>\d+)/$',
view=ResolvedWebLinkView.as_view(), name='web_link_instance_view'
),
url(
regex=r'^weblinks/$', view=WebLinkListView.as_view(),
name='web_link_list'
),
url(
regex=r'^weblinks/create/$', view=WebLinkCreateView.as_view(),
name='web_link_create'
),
url(
regex=r'^weblinks/(?P<pk>\d+)/delete/$',
view=WebLinkDeleteView.as_view(), name='web_link_delete'
),
url(
regex=r'^weblinks/(?P<pk>\d+)/document_types/$',
view=WebLinkDocumentTypesView.as_view(),
name='web_link_document_types'
),
url(
regex=r'^weblinks/(?P<pk>\d+)/edit/$', view=WebLinkEditView.as_view(),
name='web_link_edit'
),
]

View File

@@ -0,0 +1,234 @@
from __future__ import absolute_import, unicode_literals
import logging
from django.db import transaction
from django.shortcuts import get_object_or_404
from django.template import RequestContext
from django.urls import reverse_lazy
from django.utils.translation import ugettext_lazy as _
from django.views.generic import RedirectView
from mayan.apps.acls.models import AccessControlList
from mayan.apps.common.generics import (
AddRemoveView, SingleObjectCreateView, SingleObjectDeleteView,
SingleObjectEditView, SingleObjectListView
)
from mayan.apps.common.mixins import ExternalObjectMixin
from mayan.apps.documents.events import event_document_type_edited
from mayan.apps.documents.models import Document, DocumentType
from mayan.apps.documents.permissions import permission_document_type_edit
from .events import event_web_link_edited, event_web_link_navigated
from .forms import WebLinkForm
from .icons import icon_web_link_setup
from .links import link_web_link_create
from .models import ResolvedWebLink, WebLink
from .permissions import (
permission_web_link_create, permission_web_link_delete,
permission_web_link_edit, permission_web_link_instance_view,
permission_web_link_view
)
logger = logging.getLogger(__name__)
class DocumentTypeWebLinksView(AddRemoveView):
main_object_method_add = 'web_link_add'
main_object_method_remove = 'web_link_remove'
main_object_permission = permission_document_type_edit
main_object_model = DocumentType
main_object_pk_url_kwarg = 'pk'
secondary_object_model = WebLink
secondary_object_permission = permission_web_link_edit
list_available_title = _('Available web links')
list_added_title = _('Web links enabled')
related_field = 'web_links'
def action_add(self, queryset, _user):
with transaction.atomic():
event_document_type_edited.commit(
actor=_user, target=self.main_object
)
for obj in queryset:
self.main_object.web_links.add(obj)
event_web_link_edited.commit(
actor=_user, action_object=self.main_object, target=obj
)
def action_remove(self, queryset, _user):
with transaction.atomic():
event_document_type_edited.commit(
actor=_user, target=self.main_object
)
for obj in queryset:
self.main_object.web_links.remove(obj)
event_web_link_edited.commit(
actor=_user, action_object=self.main_object, target=obj
)
def get_actions_extra_kwargs(self):
return {'_user': self.request.user}
def get_extra_context(self):
return {
'object': self.main_object,
'title': _(
'Web links to enable for document type: %s'
) % self.main_object,
}
class ResolvedWebLinkView(ExternalObjectMixin, RedirectView):
external_object_class = Document
external_object_pk_url_kwarg = 'document_pk'
external_object_permission = permission_web_link_instance_view
def get_redirect_url(self, *args, **kwargs):
event_web_link_navigated.commit(
actor=self.request.user, action_object=self.external_object,
target=self.get_web_link()
)
return self.get_web_link().get_url_for(
document=self.external_object
)
def get_web_link(self):
return get_object_or_404(
klass=self.get_web_link_queryset(), pk=self.kwargs['web_link_pk']
)
def get_web_link_queryset(self):
queryset = ResolvedWebLink.objects.get_for(
document=self.external_object, user=self.request.user
)
return AccessControlList.objects.restrict_queryset(
permission=permission_web_link_instance_view, queryset=queryset,
user=self.request.user
)
class WebLinkDocumentTypesView(AddRemoveView):
main_object_method_add = 'document_types_add'
main_object_method_remove = 'document_types_remove'
main_object_permission = permission_web_link_edit
main_object_model = WebLink
main_object_pk_url_kwarg = 'pk'
secondary_object_model = DocumentType
secondary_object_permission = permission_document_type_edit
list_available_title = _('Available document types')
list_added_title = _('Document types enabled')
related_field = 'document_types'
def get_actions_extra_kwargs(self):
return {'_user': self.request.user}
def get_extra_context(self):
return {
'object': self.main_object,
'title': _(
'Document type for which to enable web link: %s'
) % self.main_object,
}
class WebLinkListView(SingleObjectListView):
object_permission = permission_web_link_view
def get_extra_context(self):
return {
'hide_link': True,
'hide_object': True,
'no_results_icon': icon_web_link_setup,
'no_results_main_link': link_web_link_create.resolve(
context=RequestContext(request=self.request)
),
'no_results_text': _(
'Web links allow generating HTTP links from documents to '
'external resources. The link URL\'s can contain document '
'properties values.'
),
'no_results_title': _(
'There are no web links'
),
'title': _('Web links'),
}
def get_source_queryset(self):
return self.get_web_link_queryset()
def get_web_link_queryset(self):
return WebLink.objects.all()
class DocumentWebLinkListView(ExternalObjectMixin, WebLinkListView):
external_object_class = Document
external_object_permission = permission_web_link_instance_view
object_permission = permission_web_link_instance_view
def get_extra_context(self):
return {
'document': self.external_object,
'hide_link': True,
'hide_object': True,
'no_results_icon': icon_web_link_setup,
'no_results_text': _(
'Web links allow generating HTTP links from documents to '
'external resources. The link URL\'s can contain document '
'properties values.'
),
'no_results_title': _(
'There are no web links for this document'
),
'object': self.external_object,
'title': _('Web links for document: %s') % self.external_object,
}
def get_web_link_queryset(self):
return ResolvedWebLink.objects.get_for(
document=self.external_object, user=self.request.user
)
class WebLinkCreateView(SingleObjectCreateView):
extra_context = {'title': _('Create new web link')}
form_class = WebLinkForm
post_action_redirect = reverse_lazy(
viewname='web_links:web_link_list'
)
view_permission = permission_web_link_create
def get_save_extra_data(self):
return {'_user': self.request.user}
class WebLinkDeleteView(SingleObjectDeleteView):
model = WebLink
object_permission = permission_web_link_delete
post_action_redirect = reverse_lazy(
viewname='web_links:web_link_list'
)
def get_extra_context(self):
return {
'object': self.get_object(),
'title': _('Delete web link: %s') % self.get_object()
}
class WebLinkEditView(SingleObjectEditView):
form_class = WebLinkForm
model = WebLink
object_permission = permission_web_link_edit
post_action_redirect = reverse_lazy(
viewname='web_links:web_link_list'
)
def get_extra_context(self):
return {
'object': self.get_object(),
'title': _('Edit web link: %s') % self.get_object()
}
def get_save_extra_data(self):
return {'_user': self.request.user}

View File

@@ -126,6 +126,7 @@ INSTALLED_APPS = (
'mayan.apps.sources',
'mayan.apps.storage',
'mayan.apps.tags',
'mayan.apps.web_links',
# Placed after rest_api to allow template overriding
'drf_yasg',
)