class LabEvent(ExtendedModel):
    title = models.CharField(max_length=300, verbose_name=_("Title"))
    event_type = models.CharField(max_length=10,
                                  choices=EVENT_TYPES,
                                  default='analysis',
                                  editable=True,
                                  verbose_name=_("Event type"))
    notes = RichTextUploadingField(verbose_name=_("Notes"))
    execution_date = models.DateField(verbose_name=_("Execution date"))

    objects = SoftDeletableManager()
    trash = TrashManager()
    i18n = TranslationField(fields=("title", "notes"))
    tracker = FieldTracker()

    @classmethod
    def accusative_case(cls):
        return _("acc: Event")

    def __str__(self):
        return self.title

    class Meta:
        verbose_name = _("Event")
        verbose_name_plural = _("Events")
        db_table = 'lab_event'
        default_manager_name = "objects"
        indexes = [
            GinIndex(fields=["i18n"]),
        ]
        class TestModel4(models.Model):
            title = models.CharField(max_length=100)

            i18n = TranslationField(fields=("title", ), virtual_fields=False)

            class Meta:
                app_label = "django-modeltrans_tests"
        class TestModel5(models.Model):
            title = models.CharField(max_length=100, validators=[validator])

            i18n = TranslationField(fields=("title", ))

            class Meta:
                app_label = "django-modeltrans_tests"
        class Model(models.Model):
            title = models.CharField(max_length=10)
            i18n = TranslationField(fields=["title"],
                                    required_languages={"title": ["nl", "de"]})

            class Meta:
                app_label = "test"
Beispiel #5
0
        class NonIdPrimaryKeyModel(models.Model):
            slug = models.SlugField(primary_key=True)
            title = models.CharField(max_length=100)
            i18n = TranslationField(fields=("title", ))

            class Meta:
                app_label = "tests"
class MeetingFile(ExtendedModel):
    file = models.FileField(
        verbose_name=_('file'), storage=storages.get_storage('meetings'), max_length=2000,
        upload_to=meeting_file_path)
    meeting = models.ForeignKey(Meeting, on_delete=models.DO_NOTHING, related_name='files')

    objects = MeetingFileManager()
    trash = MeetingFileTrashManager()
    i18n = TranslationField()
    tracker = FieldTracker()

    @property
    def download_url(self):
        return self._get_absolute_url(self.file.url, use_lang=False) if self.file else None

    @property
    def name(self):
        return self._get_basename(self.file.name)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = _('meeting file')
        verbose_name_plural = _('meeting files')
        default_manager_name = "objects"
class SubmissionFeedback(ExtendedModel):
    user = models.ForeignKey(
        User,
        models.DO_NOTHING,
        blank=False,
        editable=False,
    )
    submission = models.ForeignKey(AcceptedDatasetSubmission,
                                   models.DO_NOTHING,
                                   blank=False,
                                   editable=False,
                                   related_name='feedback')
    opinion = models.CharField(max_length=6,
                               choices=OPINION_CHOICES,
                               default='plus',
                               editable=True,
                               verbose_name=_("Feedback"))

    i18n = TranslationField()

    tracker = FieldTracker()

    def get_unique_slug(self):
        return self.uuid

    def __str__(self):
        return f"{self.opinion} {self.submission.title} [{self.user.email}]"
class Category(SlugMixin, MPTTModel):
    title = models.CharField(_('title'), max_length=100)
    slug = models.SlugField(unique=True, max_length=SlugMixin.MAX_SLUG_LENGTH, blank=True, default='')
    description = models.TextField(_('description'), blank=True)
    color = RGBColorField(blank=True, default='')
    icon = models.CharField(_('icon'), max_length=100, blank=True, default='')
    listing_type = models.ForeignKey(
        ContentType, verbose_name=_('listing type'), on_delete=models.SET_NULL,
        blank=True, null=True, default=None)
    parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')
    i18n = TranslationField(fields=('title', 'slug', 'description'))
    objects = CategoryManager()

    class MPTTMeta:
        order_insertion_by = ['title']

    class Meta:
        verbose_name = _('category')
        verbose_name_plural = _('categories')
        ordering = ('title',)
        unique_together = (('title', 'listing_type'),)
        indexes = [GinIndex(fields=["i18n"]), ]

    def __str__(self):
        return self.title_i18n

    def get_absolute_url(self):
        # return reverse('listings:listing_list') + f'?categories={self.slug_i18n}'
        return reverse('inventor:lexicons:category_detail', args=(self.slug_i18n,))
Beispiel #9
0
        class A(models.Model):
            title = models.CharField(max_length=100)

            i18n = TranslationField(fields=("title",), required_languages=("es",))

            class Meta:
                app_label = "django-modeltrans_tests"
Beispiel #10
0
class License(ExtendedModel):
    SIGNALS_MAP = {
        'updated': (update_related_datasets, ),
        'published': (update_related_datasets, ),
        'restored': (update_related_datasets, ),
        'removed': (null_in_related_datasets, ),
    }
    name = models.CharField(max_length=200, verbose_name=_('Name'))
    title = models.CharField(max_length=250, verbose_name=_('Title'))
    url = models.URLField(blank=True, null=True, verbose_name=_('URL'))

    def __str__(self):
        return self.title

    i18n = TranslationField(fields=("name", "title"))
    raw = models.Manager()
    objects = SoftDeletableManager()
    deleted = DeletedManager()
    tracker = FieldTracker()
    slugify_field = 'name'

    @classmethod
    def accusative_case(cls):
        return _("acc: License")

    class Meta:
        verbose_name = _('License')
        verbose_name_plural = _('Licenses')
        default_manager_name = "objects"
        indexes = [
            GinIndex(fields=["i18n"]),
        ]
Beispiel #11
0
class GuideItem(ExtendedModel):
    POSITION_CHOICES = (
        ('top', _('top')),
        ('bottom', _('bottom')),
        ('left', _('left')),
        ('right', _('right')),
    )
    guide = models.ForeignKey(Guide, on_delete=models.CASCADE, verbose_name=_('guide'), related_name='items')
    title = models.CharField(max_length=200, verbose_name=_('title'))
    content = models.TextField(verbose_name=_('content'))
    route = models.CharField(max_length=200, verbose_name=_('route'))
    css_selector = models.CharField(max_length=300, verbose_name=_('css selector'))
    position = models.CharField(max_length=13, choices=POSITION_CHOICES, verbose_name=_('position'))
    order = models.PositiveIntegerField(verbose_name=_('order'))
    is_optional = models.BooleanField(verbose_name=_('optional communique'), default=False)
    is_clickable = models.BooleanField(verbose_name=_('clicking is required'), default=False)
    is_expandable = models.BooleanField(verbose_name=_('element is expandable'), default=False)

    objects = SoftDeletableManager()
    trash = TrashManager()
    i18n = TranslationField(fields=('title', 'content'))
    tracker = FieldTracker()

    def __str__(self):
        return self.title

    class Meta:
        default_manager_name = 'objects'
        ordering = ('order', )
        verbose_name = _('guide item')
        verbose_name_plural = _('guide items')

    def delete(self, using=None, soft=True, *args, **kwargs):
        return super().delete(using=using, soft=False, *args, **kwargs)
Beispiel #12
0
class Menu(models.Model):
    parent = models.ForeignKey('self',
                               related_name='%(class)s_parent',
                               verbose_name=_('Parent menu item'),
                               null=True,
                               blank=True,
                               on_delete=models.PROTECT)
    name = models.CharField(_('Menu item name'), max_length=80)
    view = models.CharField(_('View'),
                            max_length=125,
                            default='',
                            db_index=True)
    sort_order = models.SmallIntegerField(_('Sort order'), default=0)
    hidden = models.BooleanField(_('Hidden item'), default=True, db_index=True)
    enabled = models.BooleanField(_('Enabled item'),
                                  default=True,
                                  db_index=True)

    i18n = TranslationField(fields=('name', ))

    class Meta:
        verbose_name = _('Menu item')
        verbose_name_plural = _('Menu items')
        permissions = [
            ('view_full_access', _('View full access')),
            ('view_read_only', _('View read only')),
        ]

    def __str__(self):
        return self.name_i18n
Beispiel #13
0
class NullableTextModel(models.Model):
    description = models.TextField(null=True)

    i18n = TranslationField(fields=("description", ))

    def __str__(self):
        return self.title
class Comment(ExtendedModel):
    user_schedule_item = models.ForeignKey(
        UserScheduleItem, on_delete=models.CASCADE, verbose_name=_('user schedule item'),
        related_name='user_schedule_item_comments')
    text = models.TextField(verbose_name=_('text'))
    created_by = models.ForeignKey(
        'users.User', models.DO_NOTHING, verbose_name=_('created by'),
        related_name='user_schedule_item_comments_created')
    modified_by = models.ForeignKey(
        'users.User', models.DO_NOTHING, null=True, blank=True, verbose_name=_('modified by'),
        related_name='user_schedule_item_comments_modified')

    objects = CommentManager()
    trash = CommentTrashManager()
    i18n = TranslationField()
    tracker = FieldTracker()

    class Meta:
        default_manager_name = 'objects'
        ordering = ['created']
        verbose_name = _('comment')
        verbose_name_plural = _('comments')

    def __str__(self):
        return self.text[:100]

    @property
    def author(self):
        return self.created_by.email
Beispiel #15
0
class Attribute(models.Model):
    slug = models.SlugField(verbose_name=_("slug"), unique=True)
    name = models.CharField(_("name"), max_length=100, db_index=True)

    i18n = TranslationField(fields=("name", ))

    def __str__(self):
        return self.name_i18n
Beispiel #16
0
class TextModel(models.Model):
    title = models.CharField(max_length=50)
    description = models.TextField()

    i18n = TranslationField(fields=("title", "description"))

    def __str__(self):
        return self.title
Beispiel #17
0
class Person(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)

    occupation = models.CharField(max_length=255)

    i18n = TranslationField(fields=("occupation", ),
                            required_languages=("en", "nl"))
        class OrderByPkModel(models.Model):
            title = models.CharField(max_length=100)

            i18n = TranslationField(fields=('title', ))

            class Meta:
                app_label = 'django-modeltrans_tests'
                ordering = ('-pk', )
Beispiel #19
0
class Person(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)

    occupation = models.CharField(max_length=255)

    i18n = TranslationField(fields=('occupation', ),
                            required_languages=('en', 'nl'))
        class OrderByPkModel(models.Model):
            title = models.CharField(max_length=100)

            i18n = TranslationField(fields=("title", ))

            class Meta:
                app_label = "django-modeltrans_tests"
                ordering = ("-pk", )
        class TestModel2(models.Model):
            title = models.CharField(max_length=100)
            title_nl = models.CharField(max_length=100)

            i18n = TranslationField(fields=("title", ))

            class Meta:
                app_label = "django-modeltrans_tests"
class ArticleCategory(ExtendedModel):
    SIGNALS_MAP = {
        'updated': (update_related_articles, ),
        'published': (update_related_articles, ),
        'restored': (update_related_articles, ),
        'removed': (update_related_articles, ),
    }

    name = models.CharField(max_length=100,
                            unique=True,
                            verbose_name=_("name"))
    type = models.CharField(max_length=20,
                            choices=CATEGORY_TYPES,
                            verbose_name=_("type"),
                            default="unlisted")
    description = models.CharField(max_length=500,
                                   blank=True,
                                   verbose_name=_("Description"))

    created_by = models.ForeignKey(User,
                                   models.DO_NOTHING,
                                   blank=False,
                                   editable=False,
                                   null=True,
                                   verbose_name=_("Created by"),
                                   related_name='article_categories_created')
    modified_by = models.ForeignKey(User,
                                    models.DO_NOTHING,
                                    blank=False,
                                    editable=False,
                                    null=True,
                                    verbose_name=_("Modified by"),
                                    related_name='article_categories_modified')

    @property
    def image_url(self):
        return ''

    def __str__(self):
        return self.name_i18n

    i18n = TranslationField(fields=("name", "description"),
                            required_languages=('pl', ))

    tracker = FieldTracker()
    slugify_field = 'name'

    objects = SoftDeletableManager()
    trash = TrashManager()

    class Meta:
        verbose_name = _("Article Category")
        verbose_name_plural = _("Article Categories")
        db_table = "article_category"
        default_manager_name = "objects"
        indexes = [
            GinIndex(fields=['i18n']),
        ]
        class TestModel1(models.Model):
            name = models.CharField(max_length=100)

            i18n = TranslationField(fields=("name", ))

            objects = CustomManager()

            class Meta:
                app_label = "django-modeltrans_tests"
Beispiel #24
0
        class BadRequiredLanguagesType_dict(models.Model):
            title = models.CharField(max_length=100)
            body = models.CharField(max_length=100)

            i18n = TranslationField(
                fields=("title", "body"), required_languages={"body": ["nl"], "title": "es"}
            )

            class Meta:
                app_label = "django-modeltrans_tests"
Beispiel #25
0
        class MetaOrderingModel(models.Model):
            # doesn't make sense to translate names, but it serves as a test.
            first_name = models.CharField(max_length=100)
            last_name = models.CharField(max_length=100)

            i18n = TranslationField(fields=("last_name", "first_name"))

            class Meta:
                ordering = ("last_name_i18n", "first_name_i18n")
                app_label = "tests"
Beispiel #26
0
class Category(models.Model):
    name = models.CharField(max_length=255)
    title = models.CharField(max_length=255)

    i18n = TranslationField(fields=("name", "title"))

    objects = CategoryQueryset.as_manager()

    def __str__(self):
        return self.name
class Region(BaseExtendedModel):
    REGION_TYPES = (('locality', _('locality')),
                    ('localadmin', _('localadmin')), ('county', _('county')),
                    ('region', _('region')), ('country', _('country')))
    name = models.CharField(max_length=150, verbose_name=_("title"))
    hierarchy_label = models.CharField(max_length=250,
                                       verbose_name=_("Hierarchy label"),
                                       null=True)
    region_id = models.PositiveIntegerField()
    region_type = models.CharField(max_length=15, choices=REGION_TYPES)
    bbox = JSONField(blank=True, null=True, verbose_name=_('Boundary box'))
    lat = models.DecimalField(max_digits=10,
                              decimal_places=8,
                              verbose_name=_('Latitude'))
    lng = models.DecimalField(max_digits=10,
                              decimal_places=8,
                              verbose_name=_('Longitude'))
    geonames_id = models.PositiveIntegerField(null=True, blank=True)

    @property
    def coords(self):
        return {'lat': self.lat, 'lon': self.lng}

    @property
    def wkt_bbox(self):
        return f'BBOX ({self.bbox[0]},{self.bbox[2]},{self.bbox[1]},{self.bbox[3]})'

    @property
    def envelope(self):
        return {
            'type':
            'envelope',
            'coordinates': [[Decimal(self.bbox[0]),
                             Decimal(self.bbox[3])],
                            [Decimal(self.bbox[2]),
                             Decimal(self.bbox[1])]]
        }

    @property
    def wkt_centroid(self):
        return f'POINT ({self.lat} {self.lng})'

    @property
    def geonames_url(self):
        return f'http://sws.geonames.org/{self.geonames_id}/' if self.geonames_id is not None else None

    def __str__(self):
        return self.hierarchy_label_i18n

    i18n = TranslationField(fields=("name", "hierarchy_label"))

    objects = RegionManager()

    class Meta:
        indexes = [GinIndex(fields=["i18n"])]
Beispiel #28
0
class Category(models.Model):
    name = models.CharField(max_length=255)

    i18n = TranslationField(fields=("name", ))

    class Meta:
        indexes = [GinIndex(fields=["i18n"])]
        verbose_name_plural = "categories"

    def __str__(self):
        return self.name_i18n
Beispiel #29
0
class Offer(models.Model):
    name = models.CharField(_("Name"), max_length=128, unique=True)

    i18n = TranslationField(fields=('name', ))

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = _("Offer type")
        verbose_name_plural = _("Offer types")
Beispiel #30
0
class MetaOrderingModel(models.Model):
    # doesn't make sense to translate names, but it serves as a test.
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)

    i18n = TranslationField(fields=('last_name', 'first_name'))

    class Meta:
        ordering = (
            'last_name_i18n',
            'first_name_i18n',
        )