Пример #1
0
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    phone = models.CharField(max_length=100, null=True, blank=True)
    organization = models.CharField(
        max_length=100,
        null=True,
        blank=True,
        help_text=_('여기에 기입한 조직 이름이 행사 당일 이름표에 표시됩니다.'))
    image_ori = SorlImageField(upload_to=profile_image,
                               null=True,
                               blank=True,
                               help_text=_('사용자 사진 원본'))
    image_small = SorlImageField(upload_to=profile_image,
                                 null=True,
                                 blank=True,
                                 help_text=_('사용자 사진 축소본'))
    bio = models.TextField(
        max_length=4000,
        null=True,
        blank=True,
        help_text=_('이 내용이 개인 후원자 목록에 노출됩니다. 변경 사항은 최대 60분 이내에 적용됩니다.'))
    user_code = models.CharField(max_length=20, null=True, blank=True)
    agreement_receive_advertising_info = models.BooleanField(default=False)

    def get_absolute_url(self):
        return reverse('profile')

    @property
    def is_empty(self):
        return self.name == '' or self.phone is None or self.organization is None or self.bio is None
Пример #2
0
class Partner(models.Model):
    def make_upload_path(instance, filename):
        name, extension = os.path.splitext(filename)
        filename = u'%s%s' % (slugify(name), extension)
        return u'upload/partners/%s' % filename.lower()

    title = models.CharField(max_length=100, verbose_name=u'заголовок')
    image = SorlImageField(upload_to=make_upload_path,
                           verbose_name=u'изображение')
    url = models.URLField(max_length=100, blank=True)
    is_active = models.BooleanField(verbose_name=u'активно', default=True)
    sort = models.IntegerField(verbose_name=u'порядок', default=0)

    activs = PartnerManager()

    def get_title(self):
        return self.title

    def get_image(self):
        return self.image

    def get_url(self):
        return self.url

    def __unicode__(self):
        return self.get_title()

    class Meta:
        verbose_name = u'партнер'
        verbose_name_plural = u'партнеры'
        ordering = ['sort', '-id']


################################################################################################################
################################################################################################################
Пример #3
0
class NewsInfo(models.Model):
    name = models.CharField(
        max_length=200,
        blank=True,
    )
    description = models.TextField(blank=True, )
    dateReleased = models.DateTimeField(
        "Date Released",
        blank=True,
        null=True,
    )
    visible = models.BooleanField(default=False, )
    link = models.URLField(
        "Read More",
        blank=True,
        null=True,
        max_length=400,
    )
    picture = SorlImageField(
        upload_to="%Y/%m/%d",
    )  # default="2014/09/09/Curt_Clawson_2014_Congressional_Photo-cropped.jpg",

    def __unicode__(self):
        return unicode(self.name)

    class Meta:
        verbose_name = u"News Item"
        verbose_name_plural = u"News Items"
Пример #4
0
class Banner(models.Model):
	def make_upload_path(instance, filename):
		return u'upload/banners/%s' % filename.lower()
		
	title = models.CharField(max_length=100, verbose_name=_("title"))
	image = SorlImageField(upload_to=make_upload_path, verbose_name=_("image"), help_text=_("help text banner image"))
	url = models.URLField(verbose_name=_("url"), help_text=_("help text banner url"), blank=True)
	description = models.TextField(max_length=1000, verbose_name=_("description"), blank=True)
	is_active = models.BooleanField(verbose_name=_("is_active"), default=True)
	sort = models.IntegerField(verbose_name=_("order"), default=0)
	
	objects = models.Manager()
	activs = BannerManager()
	
	def get_title(self): return self.title
	def get_image(self): return self.image
	def get_url(self): return self.url
	def get_description(self): return self.description
          
	def __unicode__(self):
		return self.get_title()
		
	def clean(self):
		r = re.compile('^([a-zA-Z0-9_-]+)\.(jpg|jpeg|png|bmp|gif)$', re.IGNORECASE)
		if self.get_image():
			if not r.findall(os.path.split(self.get_image().url)[1]):
				raise ValidationError(_("File name validation error."))
     
	class Meta:
		verbose_name = _("banner")
		verbose_name_plural = _("banners")
		ordering = ['sort', '-id']
		
################################################################################################################
################################################################################################################
Пример #5
0
class ProductGallery(models.Model):
	def make_upload_path(instance, filename):
		name, extension = os.path.splitext(filename)
		filename = u'%s%s' % (slugify(name), extension)
		return u'upload/portfolio/%s' % filename.lower()
		
	product = models.ForeignKey(Product, verbose_name=u'товар')
	image = SorlImageField(upload_to=make_upload_path, verbose_name=u'изображение')
	is_main = models.BooleanField(verbose_name=u'главное', default=False)
	is_active = models.BooleanField(verbose_name=u'активно', default=True)
	sort = models.IntegerField(verbose_name=u'порядок', default=0)
	
	objects = models.Manager()
	activs = ActiveManager()
	
	def get_title(self): return self.image.url
	def get_image(self): return self.image
	
	def __unicode__(self):
		return self.get_title()
		
	class Meta: 
		verbose_name = u'изображение' 
		verbose_name_plural = u'галерея'
		ordering = ['sort', '-id']
		
	def save(self, *args, **kwargs):
		if self.is_main:
			ProductGallery.objects.filter(product=self.product, is_main=True).update(is_main=False)
		super(ProductGallery, self).save(*args, **kwargs)
		
##########################################################################
##########################################################################
Пример #6
0
class NewsArticle(MetaModel, ActiveSortModel, DateCreateModel):
	def make_upload_path(instance, filename):
		return make_file_path(filename, u'upload/news/')
		
	title = models.CharField(max_length=100, verbose_name=u'заголовок')
	image = SorlImageField(max_length=100, upload_to=make_upload_path, verbose_name=u'изображение', help_text=u'рекомендованный размер изображения - 350px*200px')
	announcement = models.TextField(max_length=1000, verbose_name=u'краткое описание')
	text = RedactorField(max_length=100000, verbose_name=u'полное описание')
	
	is_public = models.BooleanField(verbose_name=u'является публичной', default=False)
	
	objects = models.Manager()	
	publics = PublicManager()
	
	def get_title(self): return self.title
	def get_image(self): return self.image
	def get_announcement(self): return self.announcement
	def get_text(self): return self.text
	def get_comment_count(self): return self.text
	
	def __unicode__(self):
		return self.get_title()

	@models.permalink
	def get_absolute_url(self):
		return ('news_item_url', (), {'id': self.id})
		
	class Meta: 
		verbose_name = u'новость'
		verbose_name_plural = u'новости'
		ordering = ['sort', '-created']
		
##########################################################################
##########################################################################
Пример #7
0
class Banner(models.Model):
	def make_upload_path(instance, filename):
		name, extension = os.path.splitext(filename)
		filename = u'%s%s' % (slugify(name), extension)
		return u'upload/banners/%s' % filename.lower()
		
	title = models.CharField(max_length=100, verbose_name=u'заголовок')
	image = SorlImageField(upload_to=make_upload_path, verbose_name=u'изображение', help_text=u'150x150 px размер баннера ')
	description = RedactorField(max_length=1000, verbose_name=u'описание', blank=True)
	is_active = models.BooleanField(verbose_name=u'активно', default=True)
	sort = models.IntegerField(verbose_name=u'порядок', default=0)
	
	def get_title(self): return self.title
	def get_image(self): return self.image
	def get_description(self): return self.description
          
	def __unicode__(self):
		return self.get_title()
     
	class Meta:
		verbose_name = u'баннер'
		verbose_name_plural = u'баннеры'
		ordering = ['sort', '-id']
		
################################################################################################################
################################################################################################################
Пример #8
0
class Profile(models.Model):
    OAUTH_GITHUB = '1'
    OAUTH_GOOGLE = '2'
    OAUTH_FACEBOOK = '3'
    OAUTH_NAVER = '4'

    user = models.OneToOneField(UserModel, on_delete=models.CASCADE)
    oauth_type = models.CharField(max_length=1,
                                  choices=(
                                      (OAUTH_GITHUB, ('github')),
                                      (OAUTH_GOOGLE, ('google')),
                                      (OAUTH_FACEBOOK, ('facebook')),
                                      (OAUTH_NAVER, ('naver')),
                                  ),
                                  default=OAUTH_GITHUB)

    name = models.CharField(max_length=100, blank=True, default='')
    bio = models.TextField(max_length=4000, blank=True, default='')
    email = models.EmailField(blank=True, default='')
    phone = models.CharField(max_length=100, blank=True, default='')
    organization = models.CharField(max_length=100, blank=True, default='')
    nationality = models.CharField(max_length=100, blank=True, default='')
    image = SorlImageField(upload_to='profile', blank=True, default='')
    avatar_url = models.CharField(max_length=500, blank=True, default='')

    def __str__(self):
        return f'{self.name}'
Пример #9
0
class Item(models.Model):
    def make_upload_path(instance, filename):
        name, extension = os.path.splitext(filename)
        filename = u'%s%s' % (slugify(name), extension)
        return u'upload/news/item/%s' % filename.lower()

    title = models.CharField(max_length=500, verbose_name=u'заголовок')
    slug = models.CharField(max_length=500, verbose_name=u'псевдоним', unique=True)
    text = RichTextField(max_length=100000, verbose_name=u'текст')
    image = SorlImageField(upload_to=make_upload_path, verbose_name=u'изображение', blank=True)
    created_at = models.DateTimeField(verbose_name=u'дата создания', auto_now_add=True)
    is_active = models.BooleanField(verbose_name=u'активно', default=True)
    sort = models.IntegerField(verbose_name=u'порядок', default=0)

    objects = models.Manager()
    activs = ActiveManager()

    description = models.TextField(u'описание', blank=True)
    keywords = models.TextField(u'ключевые слова', blank=True)

    def get_title(self):
        return self.title

    def get_slug(self):
        return self.slug

    def get_text(self):
        return self.text

    def get_image(self):
        return self.image

    def get_created_at(self):
        return self.created_at

    def get_description(self):
        return self.description

    def get_keywords(self):
        return self.keywords

    def __unicode__(self):
        return self.get_title()

    @models.permalink
    def get_absolute_url(self):
        return ('news_url', (), {'slug': self.slug})

    def get_admin_url(self):
        return reverse('admin:%s_%s_change' % (self._meta.app_label, self._meta.module_name),
                       args=[self.id])

    class Meta:
        verbose_name = u'новость'
        verbose_name_plural = u'новости'
        ordering = ['sort', '-created_at', '-id']

####################################################################################################
####################################################################################################
Пример #10
0
class Banner(models.Model):
    name = models.CharField(max_length=100)
    url = models.CharField(max_length=255, null=True, blank=True)
    image = SorlImageField(upload_to='banner')
    desc = models.TextField(null=True, blank=True)

    begin = models.DateTimeField(null=True, blank=True)
    end = models.DateTimeField(null=True, blank=True)
Пример #11
0
class ArticleItem(MetaModel, ActiveSortModel, DateCreateModel,
                  TextAnnouncementModelReq):
    def make_upload_path(instance, filename):
        return make_file_path(filename, u'upload/article/')

    category = models.ForeignKey(CategoryArticle,
                                 verbose_name=u'категория',
                                 related_name='products_category')
    title = models.CharField(max_length=100, verbose_name=u'заголовок')
    image = SorlImageField(
        max_length=500,
        upload_to=make_upload_path,
        verbose_name=u'изображение',
        help_text=u'рекомендованный размер изображения - 140px*140px')

    is_public = models.BooleanField(verbose_name=u'является публичной',
                                    default=False)

    objects = models.Manager()
    publics = PublicManager()

    def get_title(self):
        return self.title

    def get_image(self):
        return self.image

    def __unicode__(self):
        return self.get_title()

    @models.permalink
    def get_absolute_url(self):
        return ('article_item_url', (), {'id': self.id})

    def small_image(self):
        if self.image:
            f = get_thumbnail(self.image,
                              '100',
                              crop='center',
                              quality=99,
                              format='PNG')
            html = '<a href="%s"><img src="%s" title="%s" /></a>'
            return html % (self.image.url, f.url, self.title)
        else:
            return u"Нет изображения"

    small_image.short_description = u"Изображение"
    small_image.allow_tags = True

    class Meta:
        verbose_name = u"статья"
        verbose_name_plural = u"статьи"
        ordering = ['sort', 'created', 'id']


################################################################################################################
################################################################################################################
Пример #12
0
class Staff(models.Model):
    name = models.CharField(max_length=100)
    display_name = models.CharField(max_length=100, null=True, blank=True)
    phrase = models.TextField(max_length=1000, null=True, blank=True)
    image = SorlImageField(upload_to=profile_image, null=True, blank=True)
    user = models.ForeignKey(User,
                             on_delete=models.CASCADE,
                             null=True,
                             blank=True)
Пример #13
0
class Photo(models.Model):
    title = models.CharField(_(u'title'), max_length=50)
    desctiption = models.CharField(_(u'description'),
                                   max_length=100,
                                   blank=True)
    photo = SorlImageField(_(u'photo'),
                           upload_to='photos/%Y/%m/%d',
                           blank=True)

    def __unicode__(self):
        return self.title
Пример #14
0
class PostImage(models.Model):
    """
    帖子里的图片
    """

    id = models.UUIDField(primary_key=True)
    image = SorlImageField(verbose_name='用户上传的图片',
                           upload_to='uploads/community/post_image')
    uploader = models.ForeignKey(UserProfile, on_delete=models.DO_NOTHING,
                                 related_name='%(class)s_uploader')
    uploadTime = models.DateTimeField('本图片的上传时间', default=now)
Пример #15
0
class Project(models.Model):
    title = models.CharField(unique=True, max_length=250)
    description = models.TextField(max_length=500)
    url = models.URLField()
    image = SorlImageField(_('Image'),
                           upload_to=upload_to,
                           default='img/image_not_found.png')

    class Meta:
        verbose_name = _('Project')
        verbose_name_plural = _('Projects')
Пример #16
0
class PhotoGallery(models.Model):
    def make_upload_path(instance, filename):
        return u'upload/gallery/%s' % filename.lower()

    category = models.ForeignKey(CategoryGallery,
                                 verbose_name=_("category"),
                                 related_name='gallery_photos')
    title = models.CharField(max_length=100, verbose_name=_("title"))
    image = SorlImageField(upload_to=make_upload_path, verbose_name=_("image"))
    is_main = models.BooleanField(verbose_name=_("is main"), default=False)
    is_active = models.BooleanField(verbose_name=_("is active"), default=True)
    order = models.IntegerField(verbose_name=_("order"), default=0)

    objects = models.Manager()
    activs = PhotoGalleryManager()

    def get_title(self):
        return self.title

    def get_image(self):
        return self.image

    def __unicode__(self):
        return self.get_title()

    def clean(self, *args, **kwargs):
        r = re.compile('^([a-zA-Z0-9_-]+)\.(jpg|jpeg|png|bmp|gif)$',
                       re.IGNORECASE)
        if self.get_image():
            if not r.findall(os.path.split(self.get_image().url)[1]):
                raise ValidationError(_("File name validation error."))

        file = self.image
        if file.size > 2621440:
            raise ValidationError(
                u'Загруженный файл слишком велик - %s. Уменьшите изображение перед загрузкой. Допустимый размер файла до 2.5 МБ'
                % filesizeformat(file.size))

    def save(self, *args, **kwargs):
        if self.is_main:
            PhotoGallery.objects.filter(category=self.category,
                                        is_main=True).update(is_main=False)
        super(PhotoGallery, self).save(*args, **kwargs)

    class Meta:
        verbose_name = _("gallery photo")
        verbose_name_plural = _("gallery photos")
        ordering = ['order', '-id']


##########################################################################
##########################################################################
Пример #17
0
class ImageModelReq(models.Model):
    u'''Абстрактный класс обязательный файл'''
    def make_upload_path(instance, filename):
        name, extension = os.path.splitext(filename)
        filename = u'%s%s' % (slugify(name), extension)
        return u'upload/image/%s' % filename.lower()

    image = SorlImageField(max_length=500,
                           upload_to=make_upload_path,
                           verbose_name=u'изображение')

    class Meta:
        abstract = True
Пример #18
0
class ElectronicCatalogItem(MetaModel, ActiveSortModel, DateCreateModel):
	def make_upload_path(instance, filename):
		return u'upload/electronic_catalog/%s' % filename.lower()
		
	category = models.ForeignKey(CategoryElectronicCatalog, verbose_name=u'категория', related_name='сategory_rel_e_c')	
	
	is_public = models.BooleanField(verbose_name=u'публичное', default=False, help_text=u'Объявление будет доступно и для незарегистрированных пользователей.')
	
	objects = models.Manager()	
	publics = PublicManager()
	
	title = models.CharField(max_length=500, verbose_name=u'заголовок')
	announcement = models.TextField(max_length=10000, verbose_name=u"краткое описание")
	text = RedactorField(max_length=10000, verbose_name=u"полное описание")
	image = SorlImageField(max_length=500, upload_to=make_upload_path, verbose_name=u'изображение')
	cost = models.IntegerField(verbose_name='цена', default=0)
	
	def __unicode__(self):
		return u'%s' % self.title
		
	def get_title(self): return self.title
	def get_announcement(self): return self.announcement
	def get_text(self): return self.text
	def get_image(self): return self.image
	def get_cost(self): return self.cost
	def get_type_cost(self): return u'руб.'
	
	def get_all_cost(self):
		if self.get_cost():
			return u'%s %s' % (self.get_cost(), self.get_type_cost())
		else: return u'не указано'
	
	@models.permalink
	def get_absolute_url(self):
		return ('electronic_catalog_item_url', (), {'id':self.id})
		
	@models.permalink
	def get_order_url(self):
		return ('electronic_catalog_order_url', (), {'id':self.id})
		
	@models.permalink
	def get_profile_electronic_catalog_url(self):
		return ('profile_electronic_catalog_url', (), {})
		
	class Meta: 
		verbose_name = u'объявление электронного каталога'
		verbose_name_plural = u'объявления электронного каталога'
		ordering = ['sort', '-created', '-modified', '-id']
		
################################################################################################################
################################################################################################################
Пример #19
0
class SocialMeta(models.Model):
    # opengraph truncates titles over 95chars
    title = models.CharField(max_length=95, blank=True)
    description = models.TextField(blank=True)
    url = models.URLField(blank=True)
    card = SorlImageField(null=True, blank=True)

    def __str__(self):
        related = ""
        if hasattr(self, "revenueprogram"):
            related = ("revenueprogram", "Revenue Program")
        if related:
            return f'Social media Metatags for {related[1]} "{getattr(self, related[0])}"'
        return f"Social media Metatags: {self.title}"
Пример #20
0
class Brand(models.Model):
    title = models.CharField(max_length=500, verbose_name=_("title"))
    slug = models.SlugField(unique=True,
                            max_length=500,
                            verbose_name=_("slug"),
                            blank=True)
    image = SorlImageField(upload_to=u'upload/brand/',
                           verbose_name=_("image"),
                           blank=True,
                           null=True)
    is_popular = models.BooleanField(verbose_name=_("is popular"),
                                     default=False)
    is_active = models.BooleanField(verbose_name=_("is active"), default=True)
    sort = models.IntegerField(verbose_name=_("sort"), default=0)

    def __unicode__(self):
        return u'%s' % self.title

    def clean(self):
        r = re.compile('^([a-zA-Z0-9_-]+)\.(jpg|png|bmp|gif)$')
        if self.image:
            if not r.findall(os.path.split(self.image.url)[1]):
                raise ValidationError(_("File name validation error."))

    def small_image(self):
        if self.image:
            f = get_thumbnail(self.image, '80x80', crop='center', quality=99)
            html = '<a href="%s"><img src="%s" title="%s" /></a>'
            return html % (self.image.url, f.url, self.title)
        else:
            return _("No image")

    small_image.short_description = _("Image")
    small_image.allow_tags = True

    def get_dealers(self):
        return self.dealers.filter(is_banned=False, is_active=True)

    def get_count_dealers(self):
        return self.get_dealers().count()

    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        super(Brand, self).save(*args, **kwargs)

    class Meta:
        verbose_name = _("brand")
        verbose_name_plural = _("brands")
        ordering = ['sort', 'title']
Пример #21
0
class Submission(models.Model):
    '''
    PhotoCompetition Model Class - Candidates Submission
    '''
    DEVICE_CHOICE = (
        ('MobilePhone', _('手机')),
        ('Camera', _('相机')),
    )
    CATEGORY_CHOICE = (
        ('Nature', _('风景')),
        ('Culture', _('人文')),
    )
    THEME_CHOICE = (
        ('Beauty', _('美的定义')),
        ('Water', _('水的模样')),
    )

    submissionId = models.UUIDField(primary_key=True,
                                    default=uuid.uuid4,
                                    editable=False)
    submissionUserId = models.ForeignKey(adminModel.UserProfile,
                                         on_delete=models.DO_NOTHING)
    submissionTime = models.DateTimeField(auto_now_add=True)

    deviceType = models.CharField(verbose_name=_("设备类型"),
                                  choices=DEVICE_CHOICE,
                                  max_length=30,
                                  default="MobilePhone",
                                  null=True)
    categoryType = models.CharField(verbose_name=_("题材类型"),
                                    choices=CATEGORY_CHOICE,
                                    max_length=30,
                                    default="Nature",
                                    null=True)
    themeType = models.CharField(verbose_name=_("主题类型"),
                                 choices=THEME_CHOICE,
                                 max_length=30,
                                 default="Beauty",
                                 null=True)
    upload_photo = SorlImageField(verbose_name=_("上传作品"),
                                  null=True,
                                  upload_to=_GetUserDir)
    description = models.CharField(verbose_name=_("作品简述"), max_length=250)

    def get_absolute_url(self):
        return reverse("myCSSAhub:PhotoComp:submission-detail",
                       kwargs={"pk": self.pk})
Пример #22
0
class ActionArticle(models.Model):
    title = models.CharField(max_length=100, verbose_name=_("title"))
    image = SorlImageField(upload_to=u'upload/action/',
                           verbose_name=_("image"),
                           blank=True,
                           null=True,
                           help_text=_("If exist flash then it has show."))
    flash = models.FileField(upload_to=u'upload/action/',
                             verbose_name=_("flash"),
                             help_text=_('Recommended size 250x150 px.'),
                             blank=True,
                             null=True)
    text = TinymceField.HTMLField(max_length=100000, verbose_name=_("text"))
    created_at = models.DateTimeField(verbose_name=_("date_created"),
                                      default=datetime.datetime.now())

    is_active = models.BooleanField(verbose_name=_("is_active"), default=True)
    sort = models.IntegerField(verbose_name=_("order"), default=0)

    def __unicode__(self):
        return u'%s' % self.title

    @models.permalink
    def get_absolute_url(self):
        return ('action_url', (), {})

    @models.permalink
    def get_item_url(self):
        return ('action_item_url', (), {'id': self.id})

    def clean(self):
        r = re.compile('^([a-zA-Z0-9_-]+)\.([a-zA-Z0-9_-]+)$')
        if self.image:
            if not r.findall(os.path.split(self.image.url)[1]):
                raise ValidationError(_("File name validation error"))
        if self.flash:
            if not r.findall(os.path.split(self.flash.url)[1]):
                raise ValidationError(_("File name validation error"))

    class Meta:
        verbose_name = _("action article")
        verbose_name_plural = _("actions")
        ordering = ['sort', '-created_at', '-id']


##########################################################################
##########################################################################
Пример #23
0
class NewsArticle(models.Model):
	def make_upload_path(instance, filename):
		name, extension = os.path.splitext(filename)
		filename = u'%s%s' % (slugify(name), extension)
		return u'upload/news/%s' % filename.lower()
		
	title = models.CharField(max_length=100, verbose_name=u'заголовок')
	image = SorlImageField(upload_to=make_upload_path, verbose_name=u'изображение', blank=True)
	announcement = models.TextField(max_length=500, verbose_name=u'анонс')
	text = RedactorField(max_length=100000, verbose_name=u'текст')
	slug = models.SlugField(max_length=500, verbose_name=u'псевдоним', unique=True)
	created_at = models.DateTimeField(verbose_name=u'дата создания')
	is_active = models.BooleanField(verbose_name=u'активно', default=True)
	sort = models.IntegerField(verbose_name=u'порядок', default=0)
	
	description = models.TextField(u'описание', blank=True)
	keywords = models.TextField(u'ключевые слова через запятую', blank=True)
	
	def get_title(self): return self.title
	def get_image(self): return self.image
	def get_announcement(self): return self.announcement
	def get_text(self): return self.text
	def get_created_at(self): return self.created_at
	def get_id(self): return self.id
	
	def __unicode__(self):
		return u'%s' % self.get_title()
		
	@models.permalink
	def get_absolute_url(self):
		return ('news_url', (), {})
		
	@models.permalink
	def get_item_url(self):
		return ('news_item_url', (), {'slug':self.slug})
		
	def get_admin_url(self):
		return u'/admin/news/newsarticle/%d/' % self.id
		
	class Meta: 
		verbose_name = u'новость'
		verbose_name_plural = u'новости'
		ordering = ['sort', '-created_at']
		
##########################################################################
##########################################################################
Пример #24
0
class DealerBanner(models.Model):
    dealer = models.ForeignKey(Dealer, verbose_name=_("dealer"))
    title = models.CharField(max_length=500, verbose_name=_("title"))
    image = SorlImageField(
        upload_to=u'upload/banner/image/',
        verbose_name=_("image"),
        blank=True,
        null=True,
        help_text=_("Help text image or flash banner 250x100 px"))
    flash = models.FileField(upload_to=u'upload/banner/flash/',
                             verbose_name=_("flash"),
                             blank=True,
                             null=True)
    width = models.IntegerField(verbose_name=_("width"),
                                default=250,
                                help_text=_("0<width<250"))
    height = models.IntegerField(verbose_name=_("height"), default=200)
    site = models.URLField(verbose_name=_("site"),
                           help_text=_("Example: http://web-aspect.ru"),
                           blank=True)
    is_active = models.BooleanField(verbose_name=_("is active"), default=True)
    sort = models.IntegerField(verbose_name=_("order"), default=0)

    def __unicode__(self):
        return u'%s' % self.title

    @models.permalink
    def get_admin_url(self):
        return ('banner_admin_url', (), {'id': self.id})

    def clean(self):
        r = re.compile('^([a-zA-Z0-9_-]+)\.([a-zA-Z0-9_-]+)$')
        if self.image:
            if not r.findall(os.path.split(self.image.url)[1]):
                raise ValidationError(_("File name validation error"))
        if self.flash:
            if not r.findall(os.path.split(self.flash.url)[1]):
                raise ValidationError(_("File name validation error"))

        if self.width > 250:
            raise ValidationError(_("Error width banner."))

    class Meta:
        verbose_name = _("banner")
        verbose_name_plural = _("banners")
        ordering = ['sort', '-id']
Пример #25
0
class Social(models.Model):
    def make_upload_path(instance, filename):
        name, extension = os.path.splitext(filename)
        filename = u'%s%s' % (slugify(name), extension)
        return u'upload/contacts/social/%s' % filename.lower()

    contacts = models.ForeignKey(Contacts, verbose_name=u'контакты')
    title = models.CharField(max_length=100,
                             verbose_name=u'название',
                             blank=True)
    social_url = models.URLField(max_length=100,
                                 verbose_name=u'ссылка',
                                 blank=True)
    icon = SorlImageField(upload_to=make_upload_path,
                          verbose_name=u'иконка',
                          blank=True)
    is_active = models.BooleanField(verbose_name=u'активно', default=True)
    sort = models.IntegerField(verbose_name=u'порядок', default=0)

    objects = models.Manager()
    activs = ActiveManager()

    def get_title(self):
        return self.title

    def get_social_url(self):
        return re.sub(u'(^http://|/$)', u'', self.social_url)

    def get_full_url(self):
        return self.social_url

    def get_icon(self):
        return self.icon

    def __unicode__(self):
        return u'%s' % self.get_title()

    class Meta:
        verbose_name = u'социальная сеть'
        verbose_name_plural = u'социальные сети'
        ordering = ['sort', 'id']


####################################################################################################
####################################################################################################
Пример #26
0
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    phone = models.CharField(max_length=100, null=True, blank=True)
    organization = models.CharField(
        max_length=100,
        null=True,
        blank=True,
        help_text=_('여기에 기입한 조직 이름이 행사 당일 이름표에 표시됩니다.'))
    image = SorlImageField(upload_to=profile_image, null=True, blank=True)
    bio = models.TextField(max_length=4000, null=True, blank=True)

    def get_absolute_url(self):
        return reverse('profile')

    @property
    def is_empty(self):
        return self.name == '' or self.phone is None or self.organization is None or self.bio is None
Пример #27
0
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    phone = models.CharField(max_length=100, null=True, blank=True)
    organization = models.CharField(max_length=100, null=True, blank=True)
    image = SorlImageField(upload_to='profile', null=True, blank=True)
    bio = models.TextField(max_length=4000, null=True, blank=True)

    @receiver(post_save, sender=User)
    def create_user_profile(sender, instance, created, **kwargs):
        if created:
            Profile.objects.create(user=instance)

    def get_absolute_url(self):
        return reverse('profile')

    @property
    def is_empty(self):
        return self.name == '' or self.phone is None or self.organization is None or self.bio is None
Пример #28
0
class Sponsor(models.Model):
    class Meta:
        ordering = ['paid_at', 'id']
    slug = models.SlugField(max_length=100, null=True, blank=True,
                            help_text='후원사 상세 페이지의 path로 사용됩니다')
    creator = models.ForeignKey(User, on_delete=models.CASCADE,
                                help_text=_('후원사를 등록한 유저'))
    name = models.CharField(max_length=255,
                            help_text=_('후원사의 이름입니다. 서비스나 회사 이름이 될 수 있습니다.'))
    level = models.ForeignKey(SponsorLevel, null=True,
                              on_delete=models.SET_NULL, blank=True,
                              help_text=_('후원을 원하시는 등급을 선택해주십시오. 모두 판매된 등급은 선택할 수 없습니다.'))
    desc = models.TextField(null=True, blank=True,
                            help_text=_('후원사 설명입니다. 이 설명은 홈페이지에 게시됩니다.'))
    manager_name = models.CharField(max_length=100, help_text=_(
        '준비위원회와 후원과 관련된 논의를 진행할 담당자의 이름을 입력해주십시오.'))
    manager_email = models.CharField(
        max_length=100, help_text=_('입력하신 메일로 후원과 관련된 안내 메일이나 문의를 보낼 예정입니다. 후원 담당자의 이메일 주소를 입력해주십시오.'))
    business_registration_number = models.CharField(max_length=100,
                                                    help_text=_('후원사 사업자 등록번호입니다. 세금 계산서 발급에 사용됩니다.'))
    business_registration_file = models.FileField(
        upload_to=registration_file_upload_to,
        help_text=_('후원사 사업자 등록증 스캔본입니다. 세금 계산서 발급에 사용됩니다.'))
    url = models.CharField(max_length=255, null=True, blank=True,
                           help_text=_('파이콘 홈페이지에 공개되는 후원사 홈페이지 주소입니다.'))
    logo_image = SorlImageField(upload_to=logo_image_upload_to, null=True, blank=True,
                                help_text=_('홈페이지에 공개되는 후원사 로고 이미지입니다.'))
    comment = models.TextField(null=True, blank=True,
                               help_text=_('파이콘 한국 준비위원회에게 행사나 후원 관련해 전달할 내용을 추가로 기입합니다. 이 내용은 홈페이지에 게시되지 않습니다.'))
    paid_at = models.DateTimeField(null=True, blank=True,
                                   help_text='후원금이 입금된 일시입니다. 아직 입금되지 않았을 경우 None이 들어갑니다.')
    submitted = models.BooleanField(default=False,
                                    help_text='사용자가 제출했는지 여부를 저장합니다. 요청이 제출되면 준비위원회에서 검토하고 받아들일지를 결정합니다')
    accepted = models.BooleanField(default=False,
                                   help_text='후원사로 확정되었을 경우 True로 설정됩니다.')
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return f'{self.name}/{self.level}'

    def get_absolute_url(self):
        return reverse('sponsor', args=[self.pk])
Пример #29
0
class Category (models.Model):
	def make_upload_path(instance, filename):
		name, extension = os.path.splitext(filename)
		filename = u'%s%s' % (slugify(name), extension)
		return u'upload/catalog/category/%s' % filename.lower()
		
	title		= models.CharField(max_length=100, verbose_name=u'название')
	image		= SorlImageField(upload_to=make_upload_path, verbose_name=u'изображение', blank=True, null=True)
	announcement= models.TextField(max_length=500, verbose_name=u'анонс')
	text		= RedactorField(max_length=100000, verbose_name=u'текст', blank=True, null=True)
	slug 		= models.SlugField(max_length=500, verbose_name=u'псевдоним', unique=True)
	is_active 	= models.BooleanField(verbose_name=u'активно', default=True)
	sort 		= models.IntegerField(verbose_name=u'порядок', default=0)
	
	description = models.TextField(u'описание', blank=True)
	keywords = models.TextField(u'ключевые слова через запятую', blank=True)
	
	def get_title(self): return self.title
	def get_image(self): return self.image
	def get_announcement(self): return self.announcement
	def get_text(self): return self.text
	
	def __unicode__(self):
		return u'%s' % self.get_title()
		
	@models.permalink
	def get_absolute_url(self):
		return ('catalog_url', (), {})
		
	@models.permalink
	def get_category_url(self):
		return ('category_url', (), {'slug':self.slug})
		
	def get_admin_url(self):
		return u'/admin/catalog/category/%d/' % self.id
		
	def get_admin_product_list_url(self):
		return u'/admin/catalog/product/?category__id__exact=%d' % self.id
		
	class Meta: 
		verbose_name = u'категория'
		verbose_name_plural = u'категории'
		ordering = ['sort', '-id']
Пример #30
0
class Product (models.Model):
	def make_upload_path(instance, filename):
		name, extension = os.path.splitext(filename)
		filename = u'%s%s' % (slugify(name), extension)
		return u'upload/catalog/product/%s' % filename.lower()
	
	category	= models.ForeignKey(Category, verbose_name=u'категория')	
	title		= models.CharField(max_length=100, verbose_name=u'название')
	slug 		= models.SlugField(max_length=500, verbose_name=u'псевдоним', unique=True)
	code		= models.CharField(max_length=100, verbose_name=u'номер в каталоге', blank=True)
	text		= RedactorField(max_length=100000, verbose_name=u'текст')
	image		= SorlImageField(upload_to=make_upload_path, verbose_name=u'изображение', blank=True, null=True)
	file		= models.FileField(upload_to=make_upload_path, verbose_name=u'файл', blank=True)
	is_active 	= models.BooleanField(verbose_name=u'активно', default=True)
	sort 		= models.IntegerField(verbose_name=u'порядок', default=0)
	
	description = models.TextField(u'описание', blank=True)
	keywords = models.TextField(u'ключевые слова через запятую', blank=True)
	
	def get_title(self): return self.title
	def get_image(self): return self.image
	def get_code(self): return self.code
	def get_text(self): return self.text
	def get_file(self): return self.file
	
	def __unicode__(self):
		return u'%s' % self.get_title()
		
	@models.permalink
	def get_absolute_url (self):
		return ('product_url', (), {'slug_category':self.category.slug, 'slug':self.slug})
		
	def get_admin_url(self):
		return u'/admin/catalog/product/%d/' % self.id
	
	class Meta: 
		verbose_name = u'товар'
		verbose_name_plural = u'продукция'
		ordering = ['sort', '-id']
	
##########################################################################
##########################################################################