class FilerHTML5Video(CMSPlugin): # player settings title = models.CharField(_('title'), blank=True, default='', max_length=100) video_mp4 = FilerFileField(verbose_name=_('movie file (MP4[H.264)'), help_text=_('MP4 encoded video file (Android3+, Chrome3+, Firefox26+, IE9+, iOS3+, Safari3.1+)'), blank=True, null=True, related_name='+') video_webm = FilerFileField(verbose_name=_('movie file (webM[VP8])'), help_text=_('webM encoded video file (Android2.3+, Chrome6+, Firefox3.5+, Opera 10.60+)'), blank=True, null=True, related_name='+') video_ogv = FilerFileField(verbose_name=_('movie file (ogv[Theora])'), help_text=_('ogv encoded video file (Android2.3+, Chrome3+, Firefox4+, Opera 10.50+ )'), blank=True, null=True, related_name='+') image = FilerImageField(verbose_name=_('image'), help_text=_('preview image file'), null=True, blank=True, related_name='+') width = models.PositiveSmallIntegerField(_('width'), default=plugin_settings.VIDEO_WIDTH) height = models.PositiveSmallIntegerField(_('height'), default=plugin_settings.VIDEO_HEIGHT) auto_play = models.BooleanField(_('auto play'), default=plugin_settings.VIDEO_AUTOPLAY) auto_hide = models.BooleanField(_('auto hide'), default=plugin_settings.VIDEO_AUTOHIDE) fullscreen = models.BooleanField(_('fullscreen'), default=plugin_settings.VIDEO_FULLSCREEN) loop = models.BooleanField(_('loop'), default=plugin_settings.VIDEO_LOOP) def __unicode__(self): return u"%s" % self.title def get_height(self): return "%s" % self.height def get_width(self): return "%s" % self.width
class VideojsModel(CMSPlugin): # player settings title = models.CharField(_('title'), blank=True, default='', max_length=100) video_mp4 = FilerFileField( verbose_name=_('movie file (MP4)'), help_text=_('MP4 h264 encoded video file (Safari, Chrome, IE9)'), blank=True, null=True, related_name='+') video_webm = FilerFileField( verbose_name=_('movie file (webM)'), help_text=_('webM encoded video file (Firefox)'), blank=True, null=True, related_name='+') video_ogv = FilerFileField(verbose_name=_('movie file (ogv)'), help_text=_('ogv encoded video file (Firefox)'), blank=True, null=True, related_name='+') image = FilerImageField(verbose_name=_('image'), help_text=_('preview image file'), null=True, blank=True, related_name='+') width = models.PositiveSmallIntegerField( _('width'), default=plugin_settings.VIDEO_WIDTH) height = models.PositiveSmallIntegerField( _('height'), default=plugin_settings.VIDEO_HEIGHT) auto_play = models.BooleanField(_('auto play'), default=plugin_settings.VIDEO_AUTOPLAY) auto_hide = models.BooleanField(_('auto hide'), default=plugin_settings.VIDEO_AUTOHIDE) fullscreen = models.BooleanField(_('fullscreen'), default=plugin_settings.VIDEO_FULLSCREEN) loop = models.BooleanField(_('loop'), default=plugin_settings.VIDEO_LOOP) muted = models.BooleanField(_('muted'), default=plugin_settings.VIDEO_MUTED) _icon = "video" def __unicode__(self): return u"%s" % self.title def get_height(self): return "%s" % self.height def get_width(self): return "%s" % self.width
class Piece(models.Model): title = models.CharField(max_length=255) logo = FilerImageField(null=True, blank=True, on_delete=models.SET_NULL, related_name="piecelogo") pdf = FilerFileField(null=True, blank=True, on_delete=models.SET_NULL, related_name="piecepdf") mp3 = FilerFileField(null=True, blank=True, on_delete=models.SET_NULL, related_name="piecelink") link = models.CharField(null=True, blank=True, max_length=255) class Meta: ordering = ('title',) class Meta: verbose_name = u'Partition' verbose_name_plural = u'Partitions' def __str__(self): return self.title
class BackgroundMedia(CMSPlugin): """ Used to model the background media instance """ name = models.CharField(_('name'), max_length=50) height = models.CharField(_('container height'), max_length=50, default="100%", help_text=_('Height in pixels or %')) add_style = models.BooleanField(_('add style'), default=True, help_text=_('Link default style sheet')) overlay = models.CharField(_('overlay'), max_length=25, blank=True, null=True, help_text=_('To add a css overlay enter the colour of the overlay, e.g. rgba(0,0,0,0.7)')) image = FilerImageField(verbose_name=_('image'), blank=True, null=True, related_name='image') image_position = models.CharField(_('image position'), max_length=50, default='center center', help_text=_('The css position of the image')) video_mp4 = FilerFileField(verbose_name=_('Video mp4'), blank=True, null=True, related_name='video_mp4') video_ogv = FilerFileField(verbose_name=_('Video ogv'), blank=True, null=True, related_name='video_ogv') video_webm = FilerFileField(verbose_name=_('Video webm'), blank=True, null=True, related_name='video_webm') video_poster = FilerImageField(verbose_name=_('Video poster'), blank=True, null=True) vide_json_config = models.TextField(_('Vide.js config'), blank=True, null=True, help_text=_('The optional js object for the vide config. Click <a href="https://github.com/VodkaBears/Vide" target="_blank"> here</a> for more info.')) def __str__(self): return self.name class Meta: verbose_name = _('Background Media') verbose_name_plural = _('Background Media') def clean(self): if self.image and self.has_video(): raise ValidationError(_('You cannot have both a video and an image selected')) def has_video(self): return self.video_mp4 or self.video_ogv or self.video_webm
class FooterContent(models.Model): """Content of the footer section.""" text = RichTextField(blank=True, null=True, verbose_name="Texte") terms = FilerFileField(blank=True, null=True, verbose_name="Conditions générales de ventes", on_delete=models.SET_NULL, related_name="terms") legal_notice = FilerFileField(blank=True, null=True, verbose_name="Mentions légales", on_delete=models.SET_NULL, related_name="legal_notice") class Meta: verbose_name = "Contenu" def __str__(self): return self.text
class Attachment(models.Model): """ Defines a generic file attachment for use in M2M relation with Task. """ task = models.ForeignKey(Task, verbose_name=_('task'), on_delete=models.CASCADE) added_by = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_('added by'), on_delete=models.CASCADE) created_at = models.DateTimeField(verbose_name=_('date'), default=now, editable=False) # pai # pai # file = models.FileField(upload_to=get_attachment_upload_dir, max_length=255) file = models.FileField(storage=custom_fs, upload_to=get_attachment_upload_dir, max_length=255) filer_file = FilerFileField(null=True, blank=True, on_delete=models.SET_NULL) def filename(self): return os.path.basename(self.file.name) def extension(self): name, extension = os.path.splitext(self.file.name) return extension def __str__(self): return f"{self.task.id} - {self.file.name}"
class PDFViewer(CMSPlugin): """ Plugin for storing and displaying a PDF wrapped in a PDF.js instance. """ title = models.CharField(_('title'), max_length=255, null=True, blank=True) if FILER_INSTALLED and getattr(settings, 'PDFVIEWER_USE_FILER', False): pdf = FilerFileField(verbose_name=_('pdf')) else: pdf = models.FileField(_('pdf'), upload_to=CMSPlugin.get_media_path) def __str__(self): if self.title: return self.title elif self.pdf: return self.get_pdf_name() return _('<empty>') def file_exists(self): return os.path.exists(self.pdf.path) def get_pdf_name(self): return os.path.basename(self.pdf.name) or self.pdf.original_filename def get_ext(self): try: return self.pdf.extension except AttributeError: return os.path.splitext(self.get_pdf_name())[1][1:].lower() search_fields = ('title', )
class Post(models.Model): title = models.CharField(max_length=200, unique=True) slug = models.SlugField(max_length=200, unique=True) author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True, default=None, related_name='blog_posts') updated_on = models.DateTimeField(auto_now=True) content = models.TextField(max_length=500) created_on = models.DateTimeField(auto_now_add=True) status = models.IntegerField(choices=STATUS, default=0) email = models.EmailField() logo = FilerImageField(null=True, blank=True, on_delete=models.SET_NULL, related_name="postlogo") pdf = FilerFileField(null=True, blank=True, on_delete=models.SET_NULL, related_name="postpdf") class Meta: ordering = ['-created_on'] class Meta: verbose_name = u'Message' verbose_name_plural = u'Messages' def __str__(self): return self.title
class Line(models.Model): name = models.CharField(max_length=150, verbose_name="nom") number = models.CharField(max_length=10, default="", verbose_name="numéro") slug = AutoSlugField(populate_from='name', always_update=True) connection_info = RichTextField(null=True, blank=True, verbose_name="correspondance") prices = FilerFileField(null=True, blank=True, verbose_name="grilles tarifaires") carbon_footprint = models.CharField(max_length=40, default="0", verbose_name="émission carbone") def get_bus(self): bus_list = [] for route in self.routes.all(): for service in route.services.all(): bus_list.extend(list(service.bus_set.all())) return set(bus_list) def __unicode__(self): return "%s " % self.name class Meta: verbose_name = "ligne"
class Bus(models.Model): name = models.CharField(max_length=64) slug = AutoSlugField(populate_from='name', always_update=True, unique=True) license_plate = models.CharField(max_length=20, null=True, blank=True) blueprint = FilerFileField(null=True, blank=True, on_delete=models.CASCADE) nb_seats = models.PositiveIntegerField(default=0) services = models.ManyToManyField(Service) picture = FilerImageField(null=True, blank=True, related_name="+", on_delete=models.CASCADE) cover = FilerImageField(null=True, blank=True, related_name="+") gallery = FilerFolderField(null=True, blank=True, related_name="+", on_delete=models.CASCADE) index_eco = models.PositiveIntegerField(default=0) description = RichTextField(blank=True, null=True) equipments = RichTextField(blank=True, null=True, config_name='only_bullet_point') confort = RichTextField(blank=True, null=True, config_name='only_bullet_point') security = RichTextField(blank=True, null=True, config_name='only_bullet_point') def get_absolute_url(self): return reverse("transportation-fleet-vehicule", args=[self.slug])
class PocketQuery(models.Model): name = models.CharField(max_length=250, blank=True, null=True) zip_file = FilerFileField(null=True, blank=True, on_delete=DO_NOTHING) geocaches = models.ForeignKey(GPXFile, blank=True, null=True, on_delete=DO_NOTHING, related_name="geocaches") waypoints = models.ForeignKey(GPXFile, blank=True, null=True, on_delete=DO_NOTHING, related_name="waypoints") updated_last_on = models.DateTimeField(auto_now=True, blank=True, editable=False, name='Last Updated') updated_by = models.ForeignKey(settings.AUTH_USER_MODEL, default=None, blank=True, null=True, on_delete=DO_NOTHING) def __str__(self): return self.name
class PostmanTest(OrderedModel): order_with_respect_to = 'test_scenario' test_scenario = models.ForeignKey(TestScenario, on_delete=models.CASCADE) validation_file = FilerFileField(null=True, default=None, on_delete=models.SET_NULL) def __str__(self): return '{} {}'.format(self.test_scenario, self.validation_file)
class BackgroundModel(CMSPlugin): # player settings b_id = models.IntegerField('Background UUID', primary_key=True), title = models.CharField(_('title'), blank=True, default='', max_length=100) backgrounds_mp4 = FilerFileField( verbose_name=_('movie file (MP4)'), help_text=_('MP4 h264 encoded backgrounds file (Safari, Chrome, IE9)'), blank=True, null=True, related_name='+') image = FilerImageField(verbose_name=_('image'), help_text=_('preview image file'), null=True, blank=True, related_name='+') loop = models.BooleanField(_('loop'), default=plugin_settings.BACKGROUNDS_LOOP) muted = models.BooleanField(_('muted'), default=plugin_settings.BACKGROUNDS_MUTED) def __unicode__(self): return u"%s" % self.title def get_image(self): return u"%s" % self.image.url
class Attachment(models.Model): """ Attachments for lessons """ title = models.TextField('Titel', max_length=150) attached_file = FilerFileField(related_name='attached_file', null=True, blank=True, on_delete=models.CASCADE, verbose_name="Datei") lesson = models.ForeignKey(Lesson, on_delete=models.CASCADE, verbose_name="Lektion") # pylint: disable=R0903 class Meta: """ Meta information about Attachment """ verbose_name = 'Lektionsanhang' verbose_name_plural = 'Lektionsanhänge' def __str__(self): # pylint: disable=E1101 return self.title + " | " + self.lesson.title
class Portaria(models.Model): TIPOS = ( ('permanencia', 'Abono Permanência'), ('insalubridade', 'Adicional de Insalubridade'), ('capacitacao', 'Capacitação'), ('comissao', 'Comissão'), ('designacao', 'Designação'), ('dispensa', 'Dispensa'), ('lotacao', 'Lotação'), ('progressao', 'Progressão'), ('remocao', 'Remoção'), ('retificacao', 'Retificação'), ('substituicao', 'Substituição'), ) codigo = models.IntegerField('Código', unique_for_year="data") data = models.DateField() tipo = models.CharField(choices=TIPOS, max_length=100) interessados = models.ManyToManyField(Servidor) responsavel = models.ForeignKey(User, verbose_name="Responsável") arquivo = FilerFileField(blank=True, null=True) ativa = models.BooleanField(default=True) def __unicode__(self): return u'%s/%s' % (self.codigo, self.data.year)
class TitleMeta(TitleExtension): image = FilerFileField( null=True, blank=True, related_name="djangocms_page_meta_title", help_text=_(u'If empty, page image will be used for all languages.')) keywords = models.CharField(max_length=400, default='', blank=True) description = models.CharField(max_length=400, default='', blank=True) og_description = models.CharField(_(u'Facebook Description'), max_length=400, default='', blank=True) twitter_description = models.CharField(_(u'Twitter Description'), max_length=140, default='', blank=True) gplus_description = models.CharField(_(u'Google+ Description'), max_length=400, default='', blank=True) @property def locale(self): if self.extended_object.language.find("_") > -1: return self.extended_object.language else: return None class Meta: verbose_name = _(u'Page meta info (language-dependent)')
class VideoBack(models.Model): title = models.CharField('title', blank=True, default='My Background Video', max_length=100) bvmp4 = FilerFileField( verbose_name='movie file (MP4)', help_text='MP4 h264 encoded backgrounds file (Safari, Chrome, IE9)', blank=False, null=False, related_name='+') image = FilerImageField(verbose_name='image', help_text='preview image file', null=False, blank=False, related_name='+') loop = models.BooleanField('loop', default=True) muted = models.BooleanField('muted', default=True) active = models.BooleanField('active', default=False) def __str__(self): return u"%s" % self.title def get_image(self): return u"%s" % self.image.url def get_absolute_url(self): return reverse('video_back:detail', kwargs={'pk': self.pk})
class FilerFileItem(ContentItem): file = FilerFileField(verbose_name=_("file")) name = models.CharField(_("name"), max_length=255, null=True, blank=True) target = models.CharField(_("target"), blank=True, max_length=100, choices=(( ("", _("same window")), ("_blank", _("new window")), ("_parent", _("parent window")), ("_top", _("topmost frame")), )), default='') class Meta: verbose_name = _("File") verbose_name_plural = _("Files") @property def filename(self): if self.file.name in ('', None): return self.file.original_filename return self.file.name def __str__(self): if self.name: return self.name elif self.file: return str(self.filename) return "<empty>"
class KnowledgeAttachment(models.Model): # pylint: disable=R0903 """ Attachments for lessons """ title = models.CharField('Titel', max_length=150) attached_file = FilerFileField(related_name='knowledge_file', null=True, blank=True, on_delete=models.CASCADE, verbose_name="Datei") knowledge_article = models.ForeignKey(KnowledgeArticle, on_delete=models.CASCADE, verbose_name="Wissen-Artikel", related_name='attachments') # pylint: disable=R0903 class Meta: """ Meta information about Attachment """ verbose_name = 'Wissens-Artikel-Anhang' verbose_name_plural = 'Wissens-Artikel-Anhänge' def __str__(self): # pylint: disable=E1101 return self.title + " | " + self.knowledge_article.title
class PathLocationPlugin(CMSPlugin): route_planner = False cmsplugin_ptr = models.OneToOneField( CMSPlugin, related_name='%(app_label)s_%(class)s', parent_link=True, on_delete=models.CASCADE) path_file = FilerFileField( verbose_name=_('Path File (e.g. KML)'), related_name='+', on_delete=models.CASCADE, ) def copy_relations(self, oldinstance): self.path_file = oldinstance.path_file def __str__(self): if self.path_file: return self.path_file.name return self.pk def get_location_data_for_map(self): if self.path_file: return self.path_file.url
class Migration(migrations.Migration): dependencies = [ ('filer', '0009_auto_20171220_1635'), ] operations = [ migrations.CreateModel( name='EntityFile', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('comments', models.TextField(blank=True)), ('topic', models.CharField(max_length=255)), ('created', models.DateTimeField(default=django.utils.timezone.now)), ('owner', models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL)), ('uploaded_file', FilerFileField(null=True, blank=True, related_name="entity_file", on_delete=models.CASCADE)), ], options={}, bases=(models.Model, ), ), ]
class FilerLinkPlugin(CMSPlugin): name = models.CharField(_('name'), max_length=255) url = models.CharField(_("url"), blank=True, null=True, max_length=255) page_link = PageField( verbose_name=_("page"), blank=True, null=True, help_text=_("A link to a page has priority over urls.")) mailto = models.EmailField( _("mailto"), blank=True, null=True, help_text=_("An email address has priority over both pages and urls")) link_style = models.CharField(_("link style"), max_length=255, choices=LINK_STYLES, default=LINK_STYLES[0][0]) new_window = models.BooleanField( _("new window?"), default=False, help_text=_("Do you want this link to open a new window?")) file = FilerFileField(blank=True, null=True) def __str__(self): return self.name
class VideoFiles(models.Model): album = models.ForeignKey(Album) name = models.CharField('Название видео', max_length=100) # player settings movie = FilerFileField(verbose_name=_('movie file'), help_text=_('use .flv file or h264 encoded video file'), blank=True, null=True) movie_url = models.CharField(_('movie url'), max_length=255, help_text=_('vimeo or youtube video url. Example: http://www.youtube.com/watch?v=YFa59lK-kpo'), blank=True, null=True) description = models.TextField('Описание', blank=True) add_date = models.DateTimeField('Дата добавления', auto_now_add=True) #auto_now_add=False width = settings.VIDEO_WIDTH height = settings.VIDEO_HEIGHT def __unicode__(self): if self.movie: name = self.movie.path else: name = self.movie_url return u"%s" % basename(name) def get_height(self): return "%s" % (self.height) def get_width(self): return "%s" % (self.width) def get_movie(self): if self.movie: return self.movie.url else: return self.movie_url class Meta: #name = ('event') verbose_name = ('Видео файл') verbose_name_plural = ('Видео файлы') ordering = ['add_date'] def render_video(self): #return render_to_response('videos/video.html', self) #context = RequestContext(request, { # "object": self #}) context = {'object': self} return render_to_string('videos/video.html', context) #
class BaseEntityFile(with_metaclass(deferred.ForeignKeyBuilder, models.Model)): """ ENG: ManyToMany relation from the polymorphic Entity to a set of files. RUS: Связь многие-ко многим от полиморфной Сущности к файлам. """ file = FilerFileField(verbose_name=_('File')) entity = deferred.ForeignKey('BaseEntity', verbose_name=_('Entity')) order = models.SmallIntegerField(default=0, blank=False, null=False, db_index=True) class Meta: """ RUS: Метаданные класса. """ abstract = True verbose_name = _("Entity File") verbose_name_plural = _("Entity Files") ordering = ('order', ) unique_together = (('file', 'entity'), ) def __str__(self): """ RUS: Строковое представление данных. """ return "{}".format(self.file)
class ConferenceDocument(models.Model): document = FilerFileField( null=True, blank=True, related_name="document_conference", on_delete=models.CASCADE, ) conference = models.ForeignKey(Conference, on_delete=models.CASCADE, related_name="documents") @property def basename(self): try: return basename(self.document.file.name) except: return f"File not found" @property def url(self): return self.document.url @property def size(self): try: return self.document.file.size except: return f"File not found"
class FileBrowse(models.Model): document = FilerFileField(null=True, blank=True, verbose_name=u'Fichier selectionné') def __str__(self): return "%s" % self.document
class FakeLink(models.Model): """ In our widget we need to manually render a AdminFileFormField. Basically for every other Field type this is not a problem at all, but Failer needs a rel attribute which consists of a reverse relationship. We fake it with this model. """ fake_file = FilerFileField(blank=True, null=True, on_delete=models.CASCADE)
class ProductMedia(TranslatableModel): identifier = InternalIdentifierField() product = models.ForeignKey("Product", related_name="media") shops = models.ManyToManyField("Shop", related_name="product_media") kind = EnumIntegerField( ProductMediaKind, db_index=True, default=ProductMediaKind.GENERIC_FILE, verbose_name=_('kind') ) file = FilerFileField(blank=True, null=True, verbose_name=_('file')) external_url = models.URLField(blank=True, null=True, verbose_name=u'URL') ordering = models.IntegerField(default=0) # Status enabled = models.BooleanField(db_index=True, default=True, verbose_name=_("enabled")) public = models.BooleanField(default=True, blank=True, verbose_name=_('public (shown on product page)')) purchased = models.BooleanField( default=False, blank=True, verbose_name=_('purchased (shown for finished purchases)') ) translations = TranslatedFields( title=models.CharField(blank=True, max_length=128, verbose_name=_('title')), description=models.TextField(blank=True, verbose_name=_('description')), ) class Meta: verbose_name = _('product attachment') verbose_name_plural = _('product attachments') ordering = ["ordering", ] def __str__(self): # pragma: no cover return self.effective_title @property def effective_title(self): title = self.safe_translation_getter("title") if title: return title if self.file_id: return self.file.label if self.external_url: return self.external_url return _('attachment') @property def url(self): if not self.public: raise ValueError("`get_effective_url()` may not be used on non-public media") if self.file_id: return self.file.url else: return self.external_url @property def easy_thumbnails_thumbnailer(self): if self.file_id: return get_thumbnailer(self.file)
class PageMeta(PageExtension): image = FilerFileField(null=True, blank=True, related_name="djangocms_page_meta_page", help_text=_(u'Used if title image is empty.')) og_type = models.CharField(_(u'Resource type'), max_length=255, choices=OG_TYPE_CHOICES, help_text=_(u'Use Article for generic pages.')) og_author = models.ForeignKey(User, verbose_name=_(u'Author account'), null=True, blank=True) og_author_url = models.CharField(_(u'Author Facebook URL'), max_length=255, default='', blank=True) og_author_fbid = models.CharField(_(u'Author Facebook ID'), max_length=16, default='', blank=True, help_text=_(u'Use Facebook numeric ID.')) og_publisher = models.CharField(_(u'Website Facebook URL'), max_length=255, default='', blank=True) og_app_id = models.CharField(_(u'Facebook App ID'), max_length=255, default='', blank=True) twitter_author = models.CharField(_(u'Author Twitter Account'), max_length=255, default='', blank=True, help_text=_(u'"@" sign not required.')) twitter_site = models.CharField(_(u'Website Twitter Account'), max_length=255, default='', blank=True, help_text=_(u'"@" sign not required.')) twitter_type = models.CharField(_(u'Resource type'), max_length=255, choices=TWITTER_TYPE_CHOICES) gplus_author = models.CharField( _(u'Author Google+ URL'), max_length=255, default='', blank=True, help_text= _(u'Use the Google+ Name (together with "+") or the complete path to the page.' )) gplus_type = models.CharField( _(u'Resource type'), max_length=255, choices=GPLUS_TYPE_CHOICES, help_text=_(u'Use Article for generic pages.')) class Meta: verbose_name = _(u'Page meta info (all languages)')
class NotificationAttachment(models.Model): notification = models.ForeignKey(Notification) attachment = FilerFileField(null=True, blank=True, related_name='email_attachment') class Meta: app_label = 'shop'