model = PageImage
+
class BasicPageAdmin(PageAdmin):
inlines = [PageBlockInline, PageImageInline]
+
+
admin.site.register(BasicPage, BasicPageAdmin)
+admin.site.register(LinkType)
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-07 23:18
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-core', '0009_pageblock_with_separator'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='LinkType',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=256, verbose_name='name')),
+ ('slug', models.SlugField(blank=True, help_text='Use this field to define a simple identifier that can be used to style the different link types (i.e. assign social media icons to them)', max_length=256, verbose_name='slug')),
+ ('ordering', models.PositiveIntegerField(blank=True, null=True, verbose_name='ordering')),
+ ],
+ options={
+ 'ordering': ['ordering'],
+ },
+ ),
+ migrations.AlterModelOptions(
+ name='pageimage',
+ options={'ordering': ('_order',), 'verbose_name': 'image', 'verbose_name_plural': 'images'},
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-09 12:13
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-core', '0010_auto_20160808_0118'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='pageimage',
+ name='credits',
+ field=models.CharField(blank=True, max_length=256, null=True, verbose_name='credits'),
+ ),
+ migrations.AlterField(
+ model_name='pageimage',
+ name='description',
+ field=models.TextField(blank=True, verbose_name='description'),
+ ),
+ migrations.AlterField(
+ model_name='pageimage',
+ name='description_en',
+ field=models.TextField(blank=True, null=True, verbose_name='description'),
+ ),
+ migrations.AlterField(
+ model_name='pageimage',
+ name='description_fr',
+ field=models.TextField(blank=True, null=True, verbose_name='description'),
+ ),
+ migrations.AlterField(
+ model_name='pageimage',
+ name='page',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pages.Page', verbose_name='page'),
+ ),
+ ]
class Meta:
abstract = True
+
class Category(Named):
"""Category description)"""
verbose_name = 'basic page'
-class PageBlock(Titled, RichText):
+class Block(RichText, Titled):
- page = models.ForeignKey(Page, verbose_name=_('page'), blank=True, null=True, on_delete=models.SET_NULL)
with_separator = models.BooleanField(default=False)
background_color = models.CharField(_('background color'), max_length=32, choices=COLOR_CHOICES, blank=True)
class Meta:
- verbose_name = 'page block'
-
+ abstract = True
-class PageImage(Orderable):
- """
- An image for a page
- """
- file = FileField(_("Image"), max_length=1024, format="Image", upload_to="images/pages")
- description = models.TextField(_('photo description'), blank=True)
- credits = models.CharField(_('photo credits'), max_length=256, blank=True, null=True)
- page = models.ForeignKey(Page)
+class Image(Description, Orderable):
+ file = FileField(_("Image"), max_length=1024, format="Image", upload_to="images")
+ credits = models.CharField(_('credits'), max_length=256, blank=True, null=True)
class Meta:
- verbose_name = _("Image")
- verbose_name_plural = _("Images")
- order_with_respect_to = "page"
+ abstract = True
def __str__(self):
value = self.description
if not value:
value = ""
return value
+
+
+class PageBlock(Block):
+
+ page = models.ForeignKey(Page, verbose_name=_('page'), blank=True, null=True, on_delete=models.SET_NULL)
+
+ class Meta:
+ verbose_name = 'page block'
+
+
+class PageImage(Image):
+
+ page = models.ForeignKey(Page, verbose_name=_('page'))
+
+ class Meta:
+ verbose_name = _("image")
+ verbose_name_plural = _("images")
+ order_with_respect_to = "page"
+
+
+class LinkType(models.Model):
+ """
+ A link type could be ``Facebook`` or ``Twitter`` or ``Website``.
+ This is masterdata that should be created by the admins when the site is
+ deployed for the first time.
+ :ordering: Enter numbers here if you want links to be displayed in a
+ special order.
+ """
+
+ name = models.CharField(max_length=256, verbose_name=_('name'))
+ slug = models.SlugField(max_length=256, verbose_name=_('slug'), help_text=_(
+ 'Use this field to define a simple identifier that can be used'
+ ' to style the different link types (i.e. assign social media'
+ ' icons to them)'),
+ blank=True,
+ )
+ ordering = models.PositiveIntegerField(verbose_name=_('ordering'), null=True, blank=True)
+
+ class Meta:
+ ordering = ['ordering', ]
+
+ def __str__(self):
+ return self.name
+
+
+class Link(models.Model):
+ """A person can have many links."""
+
+ link_type = models.ForeignKey(LinkType, verbose_name=_('link type'))
+ url = models.URLField(verbose_name=_('URL'))
+
+ class Meta:
+ abstract = True
+ verbose_name = _('link')
+ verbose_name_plural = _('links')
+
+ def __str__(self):
+ return self.url
+
+
+class Period(models.Model):
+
+ date_begin = models.DateField(_('begin date'), null=True, blank=True)
+ date_end = models.DateField(_('end date'), null=True, blank=True)
+
+ class Meta:
+ abstract = True
from modeltranslation.translator import translator, register, TranslationOptions
from mezzanine.pages.models import Page, RichText
from mezzanine.pages.translation import TranslatedRichText
-from organization.core.models import BasicPage, PageBlock, PageImage
+from organization.core.models import *
# @register(SubTitle)
# class SubTitleTranslationOptions(TranslationOptions):
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-07 23:18
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-magazine', '0009_brief_sort_order'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='brief',
+ options={'ordering': ['sort_order'], 'verbose_name': 'brief'},
+ ),
+ ]
from copy import deepcopy
-from django.contrib import admin
-from organization.project.models import Project
-#from custom.admin import SubTitleAdmin
from django.contrib import admin
from django.utils.translation import ugettext_lazy as _
-from mezzanine.core.admin import DisplayableAdmin, OwnableAdmin
+
+from mezzanine.core.admin import *
+
+from organization.project.models import *
+
+
+class ProjectLinkInline(StackedDynamicInlineAdmin):
+
+ model = ProjectLink
+
+
+class ProjectImageInline(StackedDynamicInlineAdmin):
+
+ model = ProjectImage
+
+
+class ProjectBlockInline(StackedDynamicInlineAdmin):
+
+ model = ProjectBlock
class ProjectAdmin(admin.ModelAdmin):
class ProjectAdminDisplayable(DisplayableAdmin):
fieldsets = deepcopy(ProjectAdmin.fieldsets)
+ inlines = [ProjectImageInline, ProjectBlockInline, ProjectLinkInline, ]
admin.site.register(Project, ProjectAdminDisplayable)
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-07 23:18
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import mezzanine.core.fields
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-core', '0010_auto_20160808_0118'),
+ ('organization-project', '0002_auto_20160715_1807'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='ProjectBlock',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('content', mezzanine.core.fields.RichTextField(verbose_name='Content')),
+ ('title', models.CharField(max_length=1024, verbose_name='title')),
+ ('with_separator', models.BooleanField(default=False)),
+ ('background_color', models.CharField(blank=True, choices=[('black', 'black'), ('yellow', 'yellow'), ('red', 'red')], max_length=32, verbose_name='background color')),
+ ],
+ options={
+ 'verbose_name': 'project block',
+ },
+ ),
+ migrations.CreateModel(
+ name='ProjectImage',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('_order', mezzanine.core.fields.OrderField(null=True, verbose_name='Order')),
+ ('file', mezzanine.core.fields.FileField(max_length=1024, verbose_name='Image')),
+ ('description', models.TextField(blank=True, verbose_name='photo description')),
+ ('credits', models.CharField(blank=True, max_length=256, null=True, verbose_name='photo credits')),
+ ],
+ options={
+ 'ordering': ('_order',),
+ 'verbose_name': 'project image',
+ },
+ ),
+ migrations.CreateModel(
+ name='ProjectLink',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('url', models.URLField(verbose_name='URL')),
+ ('link_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-core.LinkType', verbose_name='link type')),
+ ],
+ options={
+ 'verbose_name': 'project link',
+ },
+ ),
+ migrations.AlterModelOptions(
+ name='project',
+ options={'verbose_name': 'project'},
+ ),
+ migrations.AddField(
+ model_name='project',
+ name='website',
+ field=models.URLField(blank=True, max_length=512, verbose_name='website'),
+ ),
+ migrations.AddField(
+ model_name='projectlink',
+ name='project',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-project.Project'),
+ ),
+ migrations.AddField(
+ model_name='projectimage',
+ name='project',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-project.Project'),
+ ),
+ migrations.AddField(
+ model_name='projectblock',
+ name='project',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-project.Project', verbose_name='project'),
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-09 12:13
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import mezzanine.core.fields
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-project', '0003_auto_20160808_0118'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='projectblock',
+ options={},
+ ),
+ migrations.AlterModelOptions(
+ name='projectimage',
+ options={'ordering': ('_order',)},
+ ),
+ migrations.AlterModelOptions(
+ name='projectlink',
+ options={'verbose_name': 'link', 'verbose_name_plural': 'links'},
+ ),
+ migrations.AddField(
+ model_name='projectblock',
+ name='content_en',
+ field=mezzanine.core.fields.RichTextField(null=True, verbose_name='Content'),
+ ),
+ migrations.AddField(
+ model_name='projectblock',
+ name='content_fr',
+ field=mezzanine.core.fields.RichTextField(null=True, verbose_name='Content'),
+ ),
+ migrations.AddField(
+ model_name='projectblock',
+ name='title_en',
+ field=models.CharField(max_length=1024, null=True, verbose_name='title'),
+ ),
+ migrations.AddField(
+ model_name='projectblock',
+ name='title_fr',
+ field=models.CharField(max_length=1024, null=True, verbose_name='title'),
+ ),
+ migrations.AddField(
+ model_name='projectimage',
+ name='description_en',
+ field=models.TextField(blank=True, null=True, verbose_name='description'),
+ ),
+ migrations.AddField(
+ model_name='projectimage',
+ name='description_fr',
+ field=models.TextField(blank=True, null=True, verbose_name='description'),
+ ),
+ migrations.AlterField(
+ model_name='projectblock',
+ name='project',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='blocks', to='organization-project.Project', verbose_name='project'),
+ ),
+ migrations.AlterField(
+ model_name='projectimage',
+ name='credits',
+ field=models.CharField(blank=True, max_length=256, null=True, verbose_name='credits'),
+ ),
+ migrations.AlterField(
+ model_name='projectimage',
+ name='description',
+ field=models.TextField(blank=True, verbose_name='description'),
+ ),
+ migrations.AlterField(
+ model_name='projectimage',
+ name='project',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='organization-project.Project'),
+ ),
+ migrations.AlterField(
+ model_name='projectlink',
+ name='project',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='links', to='organization-project.Project'),
+ ),
+ ]
from django.db import models
from django.utils.translation import ugettext_lazy as _
-from mezzanine.core.models import RichText, Displayable, Slugged
+from mezzanine.core.models import RichText, Displayable, Slugged, Orderable
+from organization.core.models import *
from organization.team.models import Person, Team, Organization
partner_persons = models.ManyToManyField(Person, verbose_name=_('partner persons'), blank=True)
partner_teams = models.ManyToManyField(Team, verbose_name=_('partner teams'), related_name='project_partners', blank=True)
partner_organizations = models.ManyToManyField(Organization, verbose_name=_('partner organizations'), blank=True)
+ website = models.URLField(_('website'), max_length=512, blank=True)
class Meta:
verbose_name = _('project')
def __unicode__(self):
return self.title
+
+
+class ProjectBlock(Block):
+
+ project = models.ForeignKey(Project, verbose_name=_('project'), related_name='blocks', blank=True, null=True, on_delete=models.SET_NULL)
+
+
+class ProjectImage(Image):
+
+ project = models.ForeignKey(Project, related_name='images')
+
+
+class ProjectLink(Link):
+
+ project = models.ForeignKey(Project, related_name='links')
class ProjectTranslationOptions(TranslationOptions):
fields = ('title', 'description', 'content')
+
+
+@register(ProjectImage)
+class ProjectImageTranslationOptions(TranslationOptions):
+
+ fields = ('description',)
+
+
+@register(ProjectLink)
+class ProjectLinkTranslationOptions(TranslationOptions):
+ pass
+
+
+@register(ProjectBlock)
+class ProjectBlockTranslationOptions(TranslationOptions):
+
+ fields = ('title', 'content', )
from copy import deepcopy
from mezzanine.core.admin import *
from mezzanine.pages.admin import PageAdmin
+
from organization.team.models import *
-from organization.core.admin import PageBlockInline, PageImageInline
+from organization.core.admin import *
class OrganizationAdmin(BaseTranslationModelAdmin):
model = Organization
-class ActivityAdmin(BaseTranslationModelAdmin):
-
- model = Activity
-
-
-class ActivityInline(StackedDynamicInlineAdmin):
+class PersonActivityInline(StackedDynamicInlineAdmin):
- model = Activity
- filter_horizontal = ['teams', ]
+ model = PersonActivity
class TeamAdmin(PageAdmin):
model = Person
+class PersonLinkInline(StackedDynamicInlineAdmin):
+
+ model = PersonLink
+
+
class PersonAdmin(BaseTranslationModelAdmin):
model = Person
- inlines = [ActivityInline,]
+ inlines = [PersonActivityInline, PersonLinkInline, ]
first_fields = ['first_name', 'last_name', 'title', 'gender', 'user']
def get_fieldsets(self, request, obj = None):
admin.site.register(OrganizationType)
admin.site.register(Department, DepartmentAdmin)
admin.site.register(Team, TeamAdmin)
-# admin.site.register(Team)
admin.site.register(Person, PersonAdmin)
-# admin.site.register(Activity, ActivityAdmin)
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-07 23:18
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-core', '0010_auto_20160808_0118'),
+ ('organization-team', '0011_auto_20160727_1631'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='PersonLink',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('url', models.URLField(verbose_name='URL')),
+ ],
+ options={
+ 'verbose_name': 'person link',
+ },
+ ),
+ migrations.RemoveField(
+ model_name='link',
+ name='link_type',
+ ),
+ migrations.RemoveField(
+ model_name='link',
+ name='person',
+ ),
+ migrations.RemoveField(
+ model_name='organization',
+ name='url',
+ ),
+ migrations.AddField(
+ model_name='organization',
+ name='website',
+ field=models.URLField(blank=True, max_length=512, verbose_name='website'),
+ ),
+ migrations.DeleteModel(
+ name='Link',
+ ),
+ migrations.DeleteModel(
+ name='LinkType',
+ ),
+ migrations.AddField(
+ model_name='personlink',
+ name='link_type',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-core.LinkType', verbose_name='link type'),
+ ),
+ migrations.AddField(
+ model_name='personlink',
+ name='person',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-team.Person', verbose_name='person'),
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-09 12:13
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import mezzanine.core.fields
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-core', '0011_auto_20160809_1413'),
+ ('organization-team', '0012_auto_20160808_0118'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='PersonActivity',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('content', mezzanine.core.fields.RichTextField(verbose_name='Content')),
+ ('content_fr', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
+ ('content_en', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
+ ('description_en', models.TextField(blank=True, null=True, verbose_name='description')),
+ ('date_begin', models.DateField(blank=True, null=True, verbose_name='begin date')),
+ ('date_end', models.DateField(blank=True, null=True, verbose_name='end date')),
+ ('role', models.CharField(blank=True, max_length=512, verbose_name='role')),
+ ],
+ options={
+ 'verbose_name_plural': 'activities',
+ 'verbose_name': 'activity',
+ },
+ ),
+ migrations.CreateModel(
+ name='TeamLink',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('url', models.URLField(verbose_name='URL')),
+ ('link_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-core.LinkType', verbose_name='link type')),
+ ('team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-team.Team', verbose_name='links')),
+ ],
+ options={
+ 'verbose_name': 'link',
+ 'verbose_name_plural': 'links',
+ 'abstract': False,
+ },
+ ),
+ migrations.RemoveField(
+ model_name='activity',
+ name='person',
+ ),
+ migrations.RemoveField(
+ model_name='activity',
+ name='teams',
+ ),
+ migrations.RemoveField(
+ model_name='person',
+ name='organization',
+ ),
+ migrations.DeleteModel(
+ name='Activity',
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='person',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-team.Person', verbose_name='person'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='team',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-team.Team', verbose_name='team'),
+ ),
+ ]
from mezzanine.galleries.models import BaseGallery
from organization.media.models import Photo
-from organization.core.models import Named, Titled, Description, SubTitle
+from organization.core.models import *
from django_countries.fields import CountryField
# from .nationalities.fields import NationalityField
"""(Organization description)"""
type = models.ForeignKey('OrganizationType', verbose_name=_('organization type'), blank=True, null=True, on_delete=models.SET_NULL)
- url = models.URLField(_('URL'), max_length=512, blank=True)
+ website = models.URLField(_('website'), max_length=512, blank=True)
is_on_map = models.BooleanField(_('is on map'), default=True)
class Meta:
last_name = models.CharField(_('last name'), max_length=255, blank=True, null=True)
birthday = models.DateField(_('birthday'), blank=True, null=True)
bio = RichTextField(_('biography'), blank=True)
- organization = models.ForeignKey('Organization', verbose_name=_('organization'), blank=True, null=True, on_delete=models.SET_NULL)
class Meta:
verbose_name = _('person')
super(Person, self).save(*args, **kwargs)
-class Link(models.Model):
- """A person can have many links."""
-
- person = models.ForeignKey('Person', verbose_name=_('person'))
- link_type = models.ForeignKey('LinkType', verbose_name=_('link type'))
- url = models.URLField(verbose_name=_('URL'))
+class TeamLink(Link):
- class Meta:
- verbose_name = _('link')
+ team = models.ForeignKey(Team, verbose_name=_('links'))
def __str__(self):
return self.url
-class LinkType(models.Model):
- """
- A link type could be ``Facebook`` or ``Twitter`` or ``Website``.
- This is masterdata that should be created by the admins when the site is
- deployed for the first time.
- :ordering: Enter numbers here if you want links to be displayed in a
- special order.
- """
-
- name = models.CharField(max_length=256, verbose_name=_('name'))
- slug = models.SlugField(max_length=256, verbose_name=_('slug'), help_text=_(
- 'Use this field to define a simple identifier that can be used'
- ' to style the different link types (i.e. assign social media'
- ' icons to them)'),
- blank=True,
- )
- ordering = models.PositiveIntegerField(verbose_name=_('ordering'), null=True, blank=True)
-
- class Meta:
- ordering = ['ordering', ]
-
- def __str__(self):
- return self.name
-
-
-class Activity(RichText):
+class PersonActivity(Description, Period, RichText):
"""(Activity description)"""
person = models.ForeignKey('Person', verbose_name=_('person'))
- teams = models.ManyToManyField('Team', verbose_name=_('teams'))
- date_begin = models.DateField(_('begin date'), null=True, blank=True)
- date_end = models.DateField(_('end date'), null=True, blank=True)
+ team = models.ForeignKey('Team', verbose_name=_('team'))
role = models.CharField(_('role'), blank=True, max_length=512)
- description = models.TextField(_('description'), blank=True)
class Meta:
verbose_name = _('activity')
+ verbose_name_plural = _('activities')
def __unicode__(self):
return ' - '.join((self.person, self.role, self.date_begin, self.date_end))
+
+
+class PersonLink(Link):
+ """A person can have many links."""
+
+ person = models.ForeignKey('Person', verbose_name=_('person'))
+
+ class Meta:
+ verbose_name = _('person link')
+
+ def __str__(self):
+ return self.url
fields = ('bio',)
-@register(Activity)
-class ActivityTranslationOptions(TranslationOptions):
+@register(PersonActivity)
+class PersonActivityTranslationOptions(TranslationOptions):
fields = ('description', 'content')
+
+
+@register(PersonLink)
+class PersonTranslationOptions(TranslationOptions):
+
+ pass