Exemple #1
0
class PlateImage(models.Model):
    """
    An image plate (image with many moths).
    Maintains an ImageField, for thumbnails, and non-zoomify support
    as well as a FilePath for the zoomify folder.
    """

    objects = PlateImageManager()

    # Admin Help Docs
    z_image_docs = "Select the ImageProperties.xml file in the corresponding image folder."

    IMAGE_PATH = "plates/"
    ZOOM_PATH = "plates_z/"
    ZOOM_ABS_PATH = "%s%s" % (settings.MEDIA_ROOT, ZOOM_PATH)
    SIZES = {"thumbnail": "240x300", "medium": "480x600"}

    description = PlaceholderField('Description')
    image = ImageField(upload_to=IMAGE_PATH)
    z_image = models.FilePathField(path=ZOOM_ABS_PATH,
                                   recursive=True,
                                   match="ImageProperties.xml",
                                   max_length=200,
                                   help_text=z_image_docs,
                                   blank=True,
                                   null=True)
    member_species = models.ManyToManyField(Species)

    @property
    def zoomify_folder(self):
        """
        Returns the corresponding zoomify directory with ImageProperties.xml removed.
        """
        return "%s%s" % (ZOOM_PATH, os.path.split(os.path.dirname(
            self.z_image))[1])

    def __unicode__(self):
        return u"%s" % self.image.name
Exemple #2
0
class Contraparte(models.Model):
    nombre = models.CharField(max_length=200)
    siglas = models.CharField(
        "Siglas o nombre corto",
        help_text="Siglas o nombre corto de la oganización",
        max_length=200,
        blank=True,
        null=True)
    logo = ImageField(upload_to=get_file_path, null=True, blank=True)
    fileDir = 'contrapartes/logos/'
    pais = models.ForeignKey(Pais, on_delete=models.DO_NOTHING)
    fundacion = models.CharField('Año de fundación',
                                 max_length=200,
                                 blank=True,
                                 null=True)
    temas = RichTextUploadingField(blank=True, null=True)
    generalidades = RichTextUploadingField(blank=True, null=True)
    contacto = models.CharField(max_length=200, blank=True, null=True)
    correo = models.EmailField(blank=True, null=True)
    telefono = models.CharField(max_length=200, blank=True, null=True)
    #sitio_web = models.URLField(blank=True, null=True)
    #rss = models.CharField(max_length=200,blank=True, null=True)
    #font_color = ColorField(blank=True,unique=True)
    slug = models.SlugField(max_length=200, editable=False)

    class Meta:
        verbose_name_plural = "Contrapartes"
        #unique_together = ("font_color", "nombre")

    def __str__(self):
        return self.nombre

    def get_absolute_url(self):
        return '/contrapartes/%d/' % (self.id, )

    def save(self, *args, **kwargs):
        self.slug = slugify(self.nombre)
        return super(Contraparte, self).save(*args, **kwargs)
Exemple #3
0
class Location(models.Model):
    name = models.CharField(_('name'), max_length=255)
    slug = models.SlugField(_('slug'), blank=False, null=True, max_length=255)

    position = GeopositionField(null=True)
    group = models.ForeignKey('geo.LocationGroup',
                              verbose_name=_('location group'),
                              null=True,
                              blank=True)
    city = models.CharField(_('city'), blank=True, null=True, max_length=255)
    country = models.ForeignKey('geo.Country', blank=True, null=True)
    description = models.TextField(_('description'), blank=True)
    image = ImageField(
        _('image'),
        max_length=255,
        null=True,
        blank=True,
        upload_to='location_images/',
        help_text=_('Location picture'),
        validators=[
            FileMimetypeValidator(
                allowed_mimetypes=settings.IMAGE_ALLOWED_MIME_TYPES, ),
            validate_file_infection
        ])

    class Meta(GeoBaseModel.Meta):
        ordering = ['name']
        verbose_name = _('office location')
        verbose_name_plural = _('office locations')

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.name)

        super(Location, self).save()

    def __str__(self):
        return self.name
Exemple #4
0
class Photo(models.Model):
    location = models.ForeignKey(Location, on_delete=models.CASCADE)
    image = ImageField(upload_to=PathAndRename('locations/'))
    title = models.CharField(max_length=100)
    taken_date = models.DateField('Taken', blank=True, null=True)
    credit = models.CharField(max_length=50, blank=True, null=True)
    source = models.URLField(max_length=200, blank=True, null=True)
    license = models.CharField(max_length=50, blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add=True)

    # # Properties
    # @property
    # def caption(self):
    #     return '%s%s [%s%s%s]' % (
    #         self.title,
    #         ' (%s)' % (self.year) if self.year else '',
    #         self.credit,
    #         ' - %s' % (urlparse(self.source).hostname.replace('www.', '')) if self.source else '',
    #         ' - %s' % (self.license) if self.license else ''
    #     )

    def __str__(self):
        return self.title
Exemple #5
0
class Picture(models.Model):
    GENDER_CHOICES = [(0, 'male'), (1, 'female')]
    ETHNICITY_CHOICES = [(0, 'white'), (1, 'asian'), (2, 'black'), (3, 'other')]

    owner = models.ForeignKey(to=UserProfile)
    pic = ImageField(upload_to='images/uploaded_images')  # Upload Images to a folder named by user_id
    real_age = models.IntegerField(null=True, blank=True)
    ground_truth = models.IntegerField(default=0)

    ### Not used yet
    gender = models.NullBooleanField(choices=GENDER_CHOICES, null=True, blank=True)
    ethnic = models.NullBooleanField(choices=ETHNICITY_CHOICES, null=True, blank=True)
    ###

    date = models.DateField()
    visibility = models.BooleanField(default=True)
    num_votes = models.IntegerField(null=True, blank=True, default=0)
    cum_votes = models.IntegerField(null=True, blank=True, default=0)

    hist = models.TextField(null=True, blank=True)

    def __unicode__(self):
        return self.pic.name
Exemple #6
0
class Channel(MPTTModel, SimpleContentModel):
    parent = TreeForeignKey('self',
                            blank=True,
                            null=True,
                            related_name='children',
                            verbose_name=_("Parent"))

    image = ImageField(
        blank=True,
        upload_to="channels",
        verbose_name=_("Image"),
    )

    alternative_color_hex = RGBColorField(
        default="#000000",
        verbose_name=_("Cor Alternativa"),
    )

    tags = TaggableManager(blank=True)

    class Meta:
        verbose_name = _(TINYPORTAL_CHANNEL_VERBOSE_NAME)
        verbose_name_plural = _(TINYPORTAL_CHANNEL_VERBOSE_NAME_PLURAL)
class Product(CommonModel):
    title = models.CharField(max_length=250, verbose_name=_("Title"))
    brand = models.CharField(max_length=250, verbose_name=_("Brand"))
    price = models.DecimalField(max_digits=10,
                                decimal_places=2,
                                verbose_name=_("Price"))
    image = ImageField(
        upload_to="favorites/product",
        verbose_name=_("Image"),
        help_text=_("Send an image 500x500 pixels or in a proportional size"),
    )
    review_score = models.DecimalField(max_digits=10,
                                       decimal_places=4,
                                       verbose_name=_("Review Score"),
                                       default=0)

    def __str__(self):
        return self.title

    class Meta:
        ordering = ("title", )
        verbose_name = _("Product")
        verbose_name_plural = _("Product")
Exemple #8
0
class Blog(models.Model):
    class Meta:
        verbose_name = 'Blog'
        verbose_name_plural = 'Blogs'

    nombre = models.CharField(verbose_name='Nombre',
                              max_length=100,
                              help_text='Nombre del blog')

    en_nombre = models.CharField(verbose_name='Nombre en Ingles',
                                 max_length=100,
                                 help_text='Nombre del blog en Ingles')

    imagen = ImageField(verbose_name='Foto',
                        upload_to='own',
                        help_text='Foto del blog')

    def __unicode__(self):
        return self.nombre

    def save(self, *args, **kwargs):
        settings.NEED_TO_RECALCULATE = True
        super(Blog, self).save(*args, **kwargs)
Exemple #9
0
class Color(models.Model):
    """цвета для масел"""
    class Meta:
        verbose_name = "Цвет"
        verbose_name_plural = "Цвета"
        ordering = ['color_sort', 'color_title']

    def __str__(self):
        return self.color_title

    color_title = models.CharField(verbose_name='Подпись', max_length=50)
    color_image = ImageField(verbose_name='Изображение',
                             upload_to='products/colors',
                             null=True,
                             blank=True)
    color_html = models.CharField(
        verbose_name='Цвет HEX',
        max_length=20,
        help_text='Цвет в формате HEX, например: "#ebe7e0"',
        null=True,
        blank=True)
    color_sort = models.IntegerField('Сортировка', default=0)
    color_group = models.ForeignKey(ColorGroup, models.DO_NOTHING)
Exemple #10
0
class Image(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                             related_name='images_created')
    title = models.CharField(max_length=240)
    image = ImageField(upload_to='images/%Y/%m/%d')
    created = models.DateTimeField(auto_now_add=True,
                                   db_index=True,
                                   blank=True)
    users_like = models.ManyToManyField(settings.AUTH_USER_MODEL,
                                        related_name='images_liked',
                                        blank=True)
    users_view = models.ManyToManyField(settings.AUTH_USER_MODEL,
                                        related_name='images_viewed',
                                        blank=True)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('images:detail', args=[self.id])

    def clear_thumbnails(self):
        delete_thumbnails(self.image)
Exemple #11
0
class Topic(models.Model):
    """
    Generic Topics for FAQ question grouping
    """
    name = models.CharField(_('name'), max_length=150)
    description = models.TextField(help_text=_('Description of topic'))
    slug = models.SlugField(_('slug'), max_length=150)
    image = ImageField(upload_to='faq-images/topics/', null=True)
    sort_order = models.IntegerField(
        _('sort order'),
        default=0,
        help_text=_('The order you would like the topic to be displayed.'))

    def get_absolute_url(self):
        return '/faq/' + self.slug

    class Meta:
        verbose_name = _("Topic")
        verbose_name_plural = _("Topics")
        ordering = ['sort_order', 'name']

    def __str__(self):
        return self.name
Exemple #12
0
class Arc(models.Model):
    name = models.CharField(max_length=200)
    slug = models.SlugField(max_length=255, unique=True)
    desc = models.TextField("Description", blank=True)
    image = ImageField(upload_to="arc/%Y/%m/%d/", blank=True)
    modified = models.DateTimeField(auto_now=True)
    created_on = models.DateTimeField(auto_now_add=True)
    edited_by = models.ForeignKey(CustomUser,
                                  default=1,
                                  on_delete=models.SET_DEFAULT)

    @property
    def issue_count(self):
        return self.issue_set.all().count()

    def get_absolute_url(self):
        return reverse("arc:detail", args=[self.slug])

    def __str__(self) -> str:
        return self.name

    class Meta:
        ordering = ["name"]
Exemple #13
0
class EventRevision(models.Model):
    event = models.ForeignKey(Event)
    user = models.ForeignKey(User, null=True)
    title = models.CharField(max_length=200)
    placeholder_img = ImageField(upload_to=_upload_path('event-placeholder'),
                                 blank=True,
                                 null=True)
    picture = models.ForeignKey('Picture', blank=True, null=True)
    description = models.TextField()
    short_description = models.TextField(
        blank=True,
        help_text='If not provided, this will be filled in by the first '
        'words of the full description.')
    channels = models.ManyToManyField(Channel)
    tags = models.ManyToManyField(Tag, blank=True)
    call_info = models.TextField(blank=True)
    additional_links = models.TextField(blank=True)
    recruitmentmessage = models.ForeignKey(RecruitmentMessage,
                                           null=True,
                                           on_delete=models.SET_NULL)
    created = models.DateTimeField(default=_get_now)

    objects = EventRevisionManager()
Exemple #14
0
class Post(models.Model, HitCountMixin):
    category = models.ForeignKey(Category,
                                 on_delete=models.SET_NULL,
                                 blank=True,
                                 null=True)
    title = models.CharField(max_length=200, unique=True)
    slug = models.SlugField(max_length=200, unique=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    updated_on = models.DateTimeField(auto_now=True)
    image = ImageField(upload_to='postimages', blank=True)
    summary = models.CharField(max_length=400, blank=True)
    content = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    status = models.IntegerField(choices=STATUS, default=0)
    enable_comments = models.BooleanField(default=True)
    hitcount = GenericRelation(HitCount, object_id_field='object_pk')
    carousel = models.BooleanField(default=False)

    class Meta:
        ordering = ['-created_on']

    def __str__(self):
        return self.title
Exemple #15
0
class Group(models.Model):
    """
        Groups are the entities to which both Kids and Caretakers belong to. 
    """

    title = models.CharField(max_length="60", verbose_name='Groepnaam')
    groupclass = models.CharField(max_length="120",
                                  verbose_name='Klasse',
                                  choices=GROUP_CLASSES)
    groupimage = ImageField(upload_to='kids/groups',
                            help_text='Het beeld voor deze groep',
                            verbose_name='Groepsbeeld',
                            blank=True,
                            null=True)
    slug = AutoSlugField(populate_from='title',
                         max_length=100,
                         always_update=True)

    def __unicode__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('GroupView', kwargs={'slug': self.slug})
Exemple #16
0
class Compromiso(models.Model):
    pais = models.CharField(max_length=3,
                            choices=data.COUNTRIES_CODE_CHOICES,
                            unique=True)
    conteo_hombres = models.IntegerField()
    conteo_mujeres = models.IntegerField()
    total = models.IntegerField(editable=False)
    foto = ImageField(upload_to='compromisos/', help_text='300x224')

    class Meta:
        verbose_name_plural = 'Compromisos'

    def __str__(self):
        return self.pais

    def save(self, *args, **kwargs):
        self.total = self.conteo_mujeres + self.conteo_hombres
        return super(Compromiso, self).save(*args, *kwargs)

    @property
    def cached_img(self):
        im = get_thumbnail(self.foto, '300x224', crop='center', quality=99)
        return im.url
Exemple #17
0
class Contraparte(models.Model):
    nombre = models.CharField(max_length=200)
    siglas = models.CharField("Siglas o nombre corto",help_text="Siglas o nombre corto de la oganización",max_length=200)
    logo = ImageField(upload_to='contrapartes/logos/',null=True, blank=True)
    pais = models.ForeignKey(Pais,on_delete=models.DO_NOTHING)
    fundacion = models.CharField('Año de fundación', max_length=200,blank=True, null=True)
    temas = RichTextUploadingField(blank=True, null=True)
    generalidades = RichTextUploadingField(blank=True, null=True)
    contacto = models.CharField(max_length=200,blank=True, null=True)
    correo = models.EmailField(blank=True, null=True)
    telefono = models.CharField(max_length=200, blank=True, null=True)
    # usuarios = models.ManyToManyField(User,blank=True)
    slug = models.SlugField(max_length=200,editable=False)

    class Meta:
        verbose_name_plural = "Alianzas"

    def __str__(self):
        return self.nombre

    def save(self, *args, **kwargs):
        self.slug = slugify(self.nombre)
        return super(Contraparte, self).save(*args, **kwargs)
Exemple #18
0
class BaseImage(models.Model):
    class Meta(object):
        abstract = True
        ordering = ('order', 'id')
        permissions = (
            ('moderate_images', 'View, update and delete any image'),
        )

    title = models.CharField(_('Title'), max_length=255, blank=True, null=True)
    description = models.TextField(_('Description'), blank=True, null=True)
    tags = TagField(_('Tags'), blank=True)
    order = models.IntegerField(_('Order'), default=0)
    image = ImageField(verbose_name=_('File'), max_length=255, upload_to=FilePathGenerator(to=UPLOAD_TO))
    user = models.ForeignKey(get_user_model_name(), verbose_name=_('User'), null=True, blank=True, related_name='images')
    created = models.DateTimeField(_('Created'), auto_now_add=True, null=True)
    updated = models.DateTimeField(_('Updated'), auto_now=True, null=True)
    album = models.ForeignKey(swapper.get_model_name('imagestore', 'Album'), verbose_name=_('Album'),
                              null=True, blank=True, related_name='images')

    @permalink
    def get_absolute_url(self):
        return 'imagestore:image', (), {'pk': self.id}

    def __str__(self):
        return '%s' % self.id

    def admin_thumbnail(self):
        try:
            return '<img src="%s">' % get_thumbnail(self.image, '100x100', crop='center').url
        except IOError:
            logger.exception('IOError for image %s', self.image)
            return 'IOError'
        except ThumbnailError as ex:
            return 'ThumbnailError, %s' % ex.message

    admin_thumbnail.short_description = _('Thumbnail')
    admin_thumbnail.allow_tags = True
Exemple #19
0
class Person(TimestampedModel):
    user = models.OneToOneField(User,
                                blank=True,
                                null=True,
                                related_name="%(app_label)s_%(class)s_profile")
    name = models.CharField(max_length=1024)
    slug = AutoSlugField(
        db_index=True,
        unique=True,
        editable=True,
        populate_from='name',
        help_text=
        "Used to make a nice url for the page that displays this person.")
    photo = ImageField(upload_to=person_photo_upload_to,
                       blank=True,
                       help_text="Photos must be at least 500px by 500px.")
    twitter_username = models.CharField(max_length=15, blank=True)
    title = models.CharField(max_length=1024, blank=True)
    organisation = models.CharField(max_length=1024, blank=True)
    sort_order = models.IntegerField(
        default=0,
        blank=True,
        help_text="Order in which the person will appear in a list.")

    class Meta:
        abstract = True
        ordering = ['sort_order', 'name']

    def __str__(self):
        return self.name

    def save(self, *args, **kwargs):
        """
        Overridden save to ensure that twitter_username is stripped of any @.
        """
        self.twitter_username = self.twitter_username.lstrip('@')
        super(Person, self).save(*args, **kwargs)
Exemple #20
0
class Tour(ParentModel):
    """
    main Tour model
    """
    image = ImageField(_("Image"),
                       upload_to=get_file_name,
                       blank=True,
                       null=True)
    duration = models.CharField(u"Длительность тура",
                                max_length=100,
                                blank=True,
                                default='')
    tour_type = models.ForeignKey("TourType",
                                  blank=True,
                                  null=True,
                                  help_text=u'для тематического фильтра - '
                                  u'военный, литература, кино, шведы...')
    g_ind = models.ForeignKey(
        "GeoIndicator", help_text=u'Географический признак (город/район)')
    places = models.ManyToManyField(Place,
                                    blank=True,
                                    null=True,
                                    related_name='tour-place')
    complect = models.ForeignKey(
        "Complectation", help_text=u'Тип экскурсии - индивидуальная/сборная')
    route = models.URLField(u"Маршрут",
                            blank=True,
                            help_text=u'Место для ссылки на карту с маршрутом')

    # here we need link to rewiews. How? VK and E-Mail...

    class Meta:
        verbose_name = u'"Экскурсия"'
        verbose_name_plural = u'Экскурсии'

    def get_absolute_path(self):
        return "/tours/{}".format(self.slug)
Exemple #21
0
class Channel(models.Model):
    name = models.CharField(max_length=200)
    slug = models.SlugField(max_length=100, unique=True,
                            db_index=True)
    image = ImageField(upload_to=_upload_path_channels, blank=True)
    image_is_banner = models.BooleanField(default=False)
    parent = models.ForeignKey('self', name='parent', null=True)
    description = models.TextField()
    created = models.DateTimeField(default=_get_now)
    reverse_order = models.BooleanField(default=False)
    exclude_from_trending = models.BooleanField(default=False)
    always_show = models.BooleanField(default=False, help_text="""
        If always shown, it will appear as a default option visible by
        default when uploading and entering details.
    """.strip())
    never_show = models.BooleanField(default=False, help_text="""
        If never show, it's not an option for new events. Not even
        available but hidden first.
    """.strip())
    default = models.BooleanField(default=False, help_text="""
        If no channel is chosen by the user, this one definitely gets
        associated with the event. You can have multiple of these.
        It doesn't matter if the channel is "never_show".
    """)
    no_automated_tweets = models.BooleanField(default=False, help_text="""
        If an event belongs to a channel with this on, that event
        will not cause automatic EventTweets to be generated.
    """)

    class Meta:
        ordering = ['name']

    def __unicode__(self):
        return self.name

    def get_children(self):
        return Channel.objects.filter(parent=self)
Exemple #22
0
class Article(models.Model, HitCountMixin):
    """Статья"""
    STATUS_CHOICES = (
        ('draft', 'Черновик'),
        ('published', 'Опубликовано'),
    )
    slug = models.SlugField(default='', unique=True)
    title = models.CharField(default='', max_length=70)
    description = models.TextField('Описание', default='')
    content = HTMLField('Content')
    created = models.DateTimeField(auto_now_add=True)
    published = models.DateField('опубликовано',
                                 null=True,
                                 blank=True,
                                 default=timezone.now)
    updated = models.DateTimeField(auto_now=True)
    image = ImageField(upload_to='articles/', blank=True)
    author = models.ForeignKey(User,
                               verbose_name='Автор',
                               null=True,
                               blank=True,
                               on_delete=CASCADE)
    status = models.CharField(max_length=12,
                              choices=STATUS_CHOICES,
                              default='published')

    def __str__(self):
        return self.title

    class Meta:
        ordering = ('-published', )
        verbose_name = 'Статьи'
        verbose_name_plural = 'Статьи'
        db_table = 'articles'

    def get_absolute_url(self):
        return reverse('article', args=[str(self.slug)])
Exemple #23
0
class Person(User):
    user = models.OneToOneField(User, parent_link=True)
    avatar = ImageField(upload_to=get_avatars_dir,
                        verbose_name=u'Аватарка',
                        blank=True,
                        null=True)
    phone = models.CharField(u'Телефон', max_length=80, blank=True, null=True)
    website = models.CharField(u'Сайт', max_length=80, blank=True, null=True)
    city = models.CharField(u'Город', max_length=80, blank=True, null=True)
    about = models.TextField(u'О вас', max_length=80, blank=True, null=True)
    followers = models.ManyToManyField(User,
                                       null=True,
                                       blank=True,
                                       related_name='person_users_followers',
                                       serialize=True)
    dealer = models.BooleanField(u'Дилер', default=False)
    objects = UserManager()
    search = SphinxSearch(weights={'name': 100, 'description': 80})
    searchdelta = SphinxQuerySet(index="main_person",
                                 mode='SPH_MATCH_EXTENDED2',
                                 rankmode='SPH_RANK_NONE')

    @property
    def icon(self):
        try:
            im = get_thumbnail(self.avatar, '80')
            return im.url
        except:
            return '/static/images/user-unknown.png'

    @property
    def icon_small(self):
        try:
            im = get_thumbnail(self.avatar, '38')
            return im.url
        except:
            return '/static/images/user-unknown-small.png'
class ExternalFormEntry(models.Model):
    """
    Link redirecting to a form on external site.
    """
    title = models.CharField(_("Title"), max_length=255)
    slug = models.SlugField(_('Slug'), max_length=255, unique=True)
    banner = ImageField(_("Banner"),
                        upload_to='form_banners',
                        null=True,
                        blank=True)
    url = models.CharField(_("Link"), max_length=511)
    status = models.IntegerField(_("Status"),
                                 choices=STATUS_CHOICES,
                                 default=STATUS_PUBLISHED)
    publish_date = models.DateTimeField(
        _("Published from"),
        help_text=_("With published selected, won't be shown until this time"),
        blank=True,
        null=True)
    expiry_date = models.DateTimeField(
        _("Expires on"),
        help_text=_("With published selected, won't be shown after this time"),
        blank=True,
        null=True)
    forms_list = models.ManyToManyField(FormsList,
                                        related_name='external_forms',
                                        blank=True)

    class Meta:
        verbose_name = _("External form")
        verbose_name_plural = _("External forms")

    def __str__(self):
        return str(self.title)

    def get_absolute_url(self):
        return self.url
Exemple #25
0
class OriginalNewsSource(TranslatableModel):
    name = models.CharField(
        max_length=200,
        unique=True,
        help_text='Short (and commonly used) name',
    )
    slug = models.SlugField(
        max_length=200,
        help_text=
        'The Slug must be unique, and closely match the title for better SEO; it is used as part of the URL.',
    )
    fullname = models.CharField(
        max_length=200,
        blank=True,
        help_text=
        'If set, the full name will be used in some places instead of the name',
    )
    url = models.CharField(max_length=255)
    logo = ImageField(null=True, blank=True, upload_to='partners')
    article_count = models.IntegerField(
        default=0,
        editable=False,
    )

    def title(self):
        return self.fullname if self.fullname else self.name

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('partners:detail', kwargs={
            'slug': self.slug,
        })

    class Meta:
        verbose_name = 'partner'
Exemple #26
0
class SermonSpeaker(models.Model):
    forename = models.CharField(max_length=100)
    surname = models.CharField(max_length=100)
    slug = KanisaAutoSlugField(populate_from=sermon_speaker_slug)
    image = ImageField(null=True,
                       blank=True,
                       upload_to='kanisa/sermons/speakers/',
                       help_text='Must be at least 400px by 300px.')
    biography = models.TextField(
        blank=True, help_text='Give a brief biography of the speaker.')

    modified = models.DateTimeField(auto_now=True)

    objects = SpeakerManager()

    def __unicode__(self):
        return '%s %s' % (self.forename, self.surname)

    def name(self):
        return unicode(self)

    def image_or_default(self):
        if self.image:
            return self.image

        branding = BrandingInformation('apple')
        return branding.url

    class Meta:
        # Need this because I've split up models.py into multiple
        # files.
        app_label = 'kanisa'
        ordering = (
            'surname',
            'forename',
        )
        verbose_name = 'Speaker'
Exemple #27
0
class Announcement(models.Model):
    objects = AnnouncementManager()
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    title = models.CharField(max_length=255)
    text = models.TextField(max_length=750)
    image = ImageField(default='',
                       blank=True,
                       help_text=('60x60 pixel image recommended. Image '
                                  'will be rescaled automatically to '
                                  'a square.'),
                       upload_to=_calculate_image_filename)
    publish_from = models.DateTimeField(help_text='Timezone is %s' %
                                        settings.TIME_ZONE)
    publish_until = models.DateTimeField(blank=True,
                                         null=True,
                                         help_text='Timezone is %s' %
                                         settings.TIME_ZONE)

    def clean(self):
        self.text = bleach.clean(self.text, tags=ALLOWED_TAGS, strip=True)
        if self.publish_until and self.publish_until < self.publish_from:
            raise ValidationError(
                'Publish until must come after publish from.')

    @property
    def published(self):
        now = datetime.now()
        return ((self.publish_from <= now)
                and (self.publish_until > now if self.publish_until else True))

    def __unicode__(self):
        return self.title

    class Meta:
        ordering = ['-publish_from']
        get_latest_by = 'publish_from'
Exemple #28
0
class NewsFlashColumnModuleModel(BaseModel):
    path = str(datetime.now().year) + '/' + str(datetime.now().month)
    fullpath = 'images/modules/' + path
    show_title = models.BooleanField(default=True)
    show_footer = models.BooleanField(default=True)
    show_more = models.BooleanField(default=True)
    show_info = models.BooleanField(default=True)
    link_title = models.BooleanField(default=True)
    show_mainimage = models.BooleanField(default=True)
    exposefirst = models.BooleanField(default=True)
    columns = models.IntegerField(null=True, blank=True)
    page_title = models.CharField(max_length=255,
                                  verbose_name=u'Tytuł strony',
                                  null=True,
                                  blank=True)
    show_page_title = models.BooleanField(default=True)
    class_prefix = models.CharField(max_length=255,
                                    verbose_name=u'prefix stylu',
                                    null=True,
                                    blank=True)
    info = RichTextField(config_name='full_ck',
                         verbose_name=u'Krótki opis',
                         null=True,
                         blank=True)
    image = ImageField(upload_to=fullpath,
                       verbose_name='Zdjęcie',
                       blank=True,
                       null=True)

    objects = ModelModuleManager()

    class Meta:
        db_table = 'module_newsflash_c_option'
        abstract = True

    def __unicode__(self):
        return "%s" % self.__class__
Exemple #29
0
class Article(models.Model):
    """
    An Article within a Message which will be send through a Submission.
    """

    sortorder = models.PositiveIntegerField(
        help_text=_('Sort order determines the order in which articles are '
                    'concatenated in a post.'),
        verbose_name=_('sort order'), db_index=True, default=get_next_order
    )

    title = models.CharField(max_length=200, verbose_name=_('title'))
    text = models.TextField(verbose_name=_('text'))

    url = models.URLField(
        verbose_name=_('link'), blank=True, null=True
    )

    # Make this a foreign key for added elegance
    image = ImageField(
        upload_to='newsletter/images/%Y/%m/%d', blank=True, null=True,
        verbose_name=_('image')
    )

    # Message this article is associated with
    # TODO: Refactor post to message (post is legacy notation).
    post = models.ForeignKey(
        'Message', verbose_name=_('message'), related_name='articles'
    )

    class Meta:
        ordering = ('sortorder',)
        verbose_name = _('article')
        verbose_name_plural = _('articles')

    def __unicode__(self):
        return self.title
Exemple #30
0
class BotMessage(models.Model):
    contact = models.ForeignKey(BotContact,
                                on_delete=models.CASCADE,
                                null=True)
    text = models.TextField(default='', blank=True)
    image = ImageField(blank=True, null=True)
    crontab = models.CharField(max_length=255,
                               default='*/*/*/*/*',
                               blank=True,
                               help_text='m/h/dM/MY/dW')

    def save(self, *args, **kwargs):
        minute, hour, day_of_month, month_of_year, day_of_week = self.crontab.split(
            '/')
        with transaction.atomic():
            super(BotMessage, self).save(*args, **kwargs)
            crontab, created = CrontabSchedule.objects.get_or_create(
                minute=minute,
                hour=hour,
                day_of_month=day_of_month,
                month_of_year=month_of_year,
                day_of_week=day_of_week)
            PeriodicTask.objects.update_or_create(
                name=f'BotMessage {self.pk}',
                defaults=dict(
                    crontab=crontab,
                    task="api.tasks.say2group",
                    args=f'["{self.text}", "{self.contact.chat_id}"]'))

    def delete(self, *args, **kwargs):
        with transaction.atomic():
            task = PeriodicTask.objects.get(name=f'BotMessage {self.pk}')
            if task.crontab.periodictask_set.count() == 1:
                task.crontab.delete()
            else:
                task.delete()
            super(BotMessage, self).delete(*args, **kwargs)
Exemple #31
0
def ImageFieldFactory(filename='filename.jpg', url='image_url'):
    image_file = ImageField()
    image_file.name = filename
    image_file.url = url
    return image_file