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"
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,))
class A(models.Model): title = models.CharField(max_length=100) i18n = TranslationField(fields=("title",), required_languages=("es",)) class Meta: app_label = "django-modeltrans_tests"
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"]), ]
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)
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
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
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
class TextModel(models.Model): title = models.CharField(max_length=50) description = models.TextField() i18n = TranslationField(fields=("title", "description")) def __str__(self): return self.title
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 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"
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"
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"
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"])]
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
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")
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', )