class BlogPost(models.Model): ESTADOS = ( (1, "Publicado"), (2, "Archivado"), (3, "Necesita Editarse"), (4, "Necesita Aprobacion") ) #objects_panel = models.Manager() #objects = PostManager() status = models.IntegerField(choices = ESTADOS, default = 4) title = models.CharField(max_length = 150) author = models.ForeignKey(User) time = models.DateTimeField() categories_post = models.ManyToManyField(Categories) image = models.ImageField(upload_to = 'photos', blank = True) body = tinymce_models.HTMLField() class Meta: db_table = 'inputs' ordering = ['-time'] verbose_name_plural = 'Posts' def __unicode__(self): return self.title
class LunchObject(WithMapAndAddress, WithPublished, WithSite): """ LunchObject model inherited from WithMapAndAddress """ title = models.CharField(_('title'), max_length=250) image = models.ImageField(_('logo'), blank=True, null=True, upload_to="uploads/lunch/%Y/%m/") description = tinymce_models.HTMLField(_('full text'), blank=True, null=True) label = models.CharField(_('label title'), max_length=250, null=True, blank=True) start_date = models.DateTimeField(_('start date'), blank=True, null=True) end_date = models.DateTimeField(_('end date'), blank=True, null=True) objects = LunchObjectManager() class Meta: verbose_name = _('Lunch Object') verbose_name_plural = _('Lunch Objects') def __unicode__(self): return self.title
class NewsPost(models.Model): title = models.CharField(max_length=80) description = models.CharField(max_length=400) thumbnail_url = models.CharField(max_length=50, default='img/defaults/default_thumbnail.jpg') tags = models.ManyToManyField(Tag,related_name='tags') image = models.ImageField(upload_to='img/article_images', default='img/article_images/default.jpg') image_home_big = ImageSpecField(source='image', processors=[ResizeToFill(540, 450)], format='JPEG', options={'quality': 100}) image_home_small = ImageSpecField(source='image', processors=[ResizeToFill(550, 420)], format='JPEG', options={'quality': 100}) text = tinymce_models.HTMLField() published_on = models.DateTimeField(default = datetime.now, blank=True) published_by = models.CharField(max_length=20, default='Everton News') visible = models.BooleanField(default=False) def __str__(self): return "("+str(self.id)+") " + self.title class Meta: verbose_name_plural = "News" ordering = ['-published_on']
class Comment(models.Model): # blog=models.ForeignKey(Blogs,on_delete=models.CASCADE,default="") name = models.CharField(max_length=200, default="") email = models.EmailField(max_length=200, default="") website = models.CharField(max_length=200, default="") message = tinymce_models.HTMLField('Message') date = models.DateTimeField(default=datetime.now, blank=True)
class Content(models.Model): detail = tinymce_models.HTMLField() author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) create_time = models.DateTimeField(default=timezone.now) update_time = models.DateTimeField(default=timezone.now) published_date = models.DateTimeField(blank=True, null=True) @property def score(self): score = Vote.objects.filter(content=self).aggregate( total=Sum("value"))["total"] return score if score else 0 @property def num_voter(self): num_voter = Vote.objects.filter(content=self).aggregate( total=Count("value"))["total"] return num_voter if num_voter else 0 @property def is_published_recently(self): return self.create_time >= timezone.now() - datetime.timedelta(days=1) @property def tags(self): return [ obj.tag.title for obj in ContentTag.objects.filter(content__exact=self) ]
class Section(models.Model): ORDER_CHOICES = ( (1, 'One'), (2, 'Two'), (3, 'Three'), (4, 'Four'), (5, 'Five'), (6, 'Six'), (7, 'Seven'), (8, 'Eight'), (9, 'Nine'), (10, 'Ten'),) POSITION_CHOICES=(('left', 'Left'), ('right', 'Right'), ('full', 'Full')) edition = models.ForeignKey(Edition) title = models.CharField(_('Title'), max_length=255, help_text="Acts like a new page when printed.") category = models.ForeignKey(SectionCategory, blank=True, null=True) image = FilerImageField(blank=True, null=True) image_position = models.CharField(_('Image position'), max_length=5, default="full", choices=POSITION_CHOICES, blank=True, null=True) page_content=tinymce_models.HTMLField(_('Content'), blank=True, null=True) order = models.IntegerField(_('Order'), default=1, choices=ORDER_CHOICES) class Meta: verbose_name = 'Section' verbose_name_plural = 'Sections' ordering = ['order'] def __unicode__(self): return u'%s in the %s newsletter' % (self.title, self.edition.publish_on)
class Event(models.Model): ''' Defines a group event. ''' name = models.CharField(max_length=100) slug = models.SlugField(max_length=100) short_description = models.TextField(max_length=280) # size of tweet description = tinymce_models.HTMLField() # wysiwyg start = models.DateTimeField() end = models.DateTimeField() published = models.BooleanField(default=False) location = models.ForeignKey('Location', on_delete=models.PROTECT) def __str__(self): return self.name @property def slugify_start(self): ''' Event.start.date as slug ''' return self.start.strftime('%Y-%m-%d') class Meta: ordering = ['start']
class Course(models.Model): title = models.CharField(max_length = 200) section = models.CharField(max_length = 10) number = models.CharField(max_length = 10) description = tinymce_models.HTMLField() semester = models.ForeignKey(Semester) faculty = models.ManyToManyField(User, related_name = _('Faculty')) teaching_assistants = models.ManyToManyField(User, related_name = _('Teaching Assistants')) members = models.ManyToManyField(User, related_name = _('Members')) private = models.BooleanField(default=False, blank=True) credits = models.DecimalField(max_digits = 3, decimal_places = 1, default = '3.0') campus = models.CharField(max_length = 200, choices = getattr(settings, 'CAMPUSES', [('main', 'Main'),] ), ) location = models.CharField(max_length = 200) def full_title(self): return "{}-{} {}".format(self.number, self.section, self.title) def __unicode__(self): return "%s" % (self.title) class Admin: js = ( 'tiny_mce/tiny_mce.js', '/appmedia/admin/js/textareas.js', ),
class Interview(WithPublished, WithSite): """ Intreview class inherited from WithPusblished """ title = models.CharField(_('title'), max_length=250) image = ImageWithThumbnailsField(upload_to=gen_file_name, thumbnail={ 'size': (272, 128), 'options': { 'crop': ',10' }, 'quality': (100), 'subdir': '_thumb' }, verbose_name=_('image'), blank=True, null=True) full_text = tinymce_models.HTMLField(_('full text')) objects = InterviewManager() class Meta: verbose_name = _('Interview') verbose_name_plural = _('Interviews') def __unicode__(self): return self.title @models.permalink def get_absolute_url(self): """Returns absolute url for interview by id """ return 'interview_detail', {}, {"interview_id": self.pk}
class News(models.Model): category = models.ForeignKey('Category') title = models.CharField(max_length=100, unique=True) sub_title = models.CharField(max_length=255, unique=True) slug = models.SlugField(max_length=100, unique=True) photo = models.ImageField('Photo', upload_to="news", blank=True) body = tinymce_models.HTMLField() source = models.CharField('Source', max_length=70) writer = models.ForeignKey('Person', related_name='news_writer') date_added = models.DateTimeField('Added Date', auto_now_add=True) date_modify = models.DateTimeField('Modified Date', auto_now=True) class Meta: db_table = 'news' verbose_name_plural = 'news' def __unicode__(self): return '%s' % self.title def get_absolute_url(self): return reverse('view_news_post', None, [self.id, self.slug]) @property def url(self): return self.get_absolute_url()
class GlobalAnnouncement(models.Model): title = models.CharField(max_length = MAX_LENGTH_TITLE) author = models.CharField(max_length = MAX_LENGTH_STANDARDFIELDS, default= "") description = tinymce_models.HTMLField(max_length = MAX_LENGTH_DESCRIPTION, default= "") created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True)
class Estimate(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) title = models.CharField(max_length=250) code = models.CharField(max_length=10) catagory = models.CharField(max_length=250, null=True) description = tinymce_models.HTMLField() asking_price = models.FloatField(null=True) estimated_price = models.FloatField(null=True) created = models.DateTimeField(default=datetime.now) asking_time = models.IntegerField(null=True) estimated_time = models.IntegerField(null=True) contact_method = models.CharField(choices=CONTACT_CHOICES, max_length=25) contact_address = models.CharField(max_length=100) comment = models.TextField(null=True) status = models.BooleanField(default=False) payment_link = models.TextField(null=True) def __str__(self): return self.title def ran_gen(self, size, chars=string.ascii_uppercase + string.digits): return ''.join(random.choice(chars) for x in range(size)) def save(self, *args, **kwargs): self.code = self.ran_gen(8) super(Estimate, self).save(*args, **kwargs)
class Post(models.Model): statuses = [ ("D", "Draft"), ("P", "Published"), ] title = models.CharField(max_length=255) slug = models.SlugField(unique=True, blank=True) content = tinymce_models.HTMLField() status = models.CharField(max_length=1, choices=statuses) category = models.ForeignKey(Category, on_delete=models.CASCADE) author = models.ForeignKey(Profile, on_delete=models.CASCADE) date = models.DateField(auto_now_add=True) image = models.ImageField(upload_to="blog/post", blank=True) def __str__(self): return self.title def save(self, *args, **kwargs): self.slug = slugify(self.title) super().save(*args, **kwargs) def get_absolute_url(self): return reverse('post-detail', kwargs={'slug': self.slug}) def update_reverse_path(self): return reverse('update-blog', kwargs={'slug': self.slug}) def delete_reverse_path(self): return reverse('delete-blog', kwargs={'slug': self.slug})
class Theme(models.Model): title = models.CharField(max_length=200, unique=True, db_index=True) description = tinymce_models.HTMLField() keyid = models.CharField(max_length=200, unique=True, db_index=True) order = models.IntegerField(default=0) def __unicode__(self): return u'%s' % (self.title)
class Bio(models.Model): user = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL, related_name="bio") name = models.CharField(max_length=100, blank=True, null=True, unique=True) job_title = models.CharField(max_length=100) job_category = models.ForeignKey(JobCategory, blank=True, null=True, on_delete=models.SET_NULL, related_name="bios") image = models.FileField(upload_to="img", blank=True) text = tinymce_models.HTMLField() slug = models.SlugField(blank=True, null=True) visible = models.BooleanField(default=True) @models.permalink def get_absolute_url(self): return ('kucb.about.views.profile', [], {'slug': self.slug}) def __unicode__(self): return self.name def save(self, *args, **kwargs): if not self.slug: self.slug = slugify(self.name) super(Bio, self).save(*args, **kwargs)
class CraftPost(models.Model): author = models.ForeignKey('auth.User') title = models.CharField(max_length=200) text = tinymce_models.HTMLField(blank=True, null=True) created_date = models.DateTimeField(default=timezone.now) published_date = models.DateTimeField(blank=True, null=True) photo = models.ImageField(blank=True, null=True) link = models.URLField(max_length=200, blank=True, null=True) FOOD = "Food" CRAFT = "Craft" POSTCATEGORY = ( (CRAFT, 'Craft'), (FOOD, 'Food'), ) postcategory = models.CharField(max_length=5, choices=POSTCATEGORY, default=CRAFT) def publish(self): self.published_date = timezone.now() self.save() def __str__(self): return self.title def approved_comments(self): return self.comments.filter(approved_comment=True) def unapproved_comments(self): return self.comments.filter(approved_comment=False)
class Program(models.Model): title = models.CharField(max_length=500, unique=True) slug = models.SlugField(null=True, blank=True, editable=False) producer = models.ForeignKey(Bio, blank=True, null=True, on_delete=models.SET_NULL) producer_name = models.CharField( help_text='Optional, if not a KUCB person', blank=True, max_length=100) description = tinymce_models.HTMLField() link = models.CharField(max_length=200, blank=True) class Meta: ordering = ['title'] def save(self, *args, **kwargs): if not self.slug: self.slug = slugify(self.title) super(Program, self).save(*args, **kwargs) @models.permalink def get_absolute_url(self): return ('kucb.about.views.program', [], {'slug': self.slug}) def __unicode__(self): return self.title
class Slid(models.Model): category = models.ForeignKey(Category, verbose_name=u"Категория") name = models.CharField(max_length=250, verbose_name="Название") link = models.CharField(max_length=250, default="", blank=True, verbose_name="Ссылка") image = models.ImageField(upload_to=make_upload_path, blank=True, verbose_name="Изображение") text = tinymce_model.HTMLField(blank=True, verbose_name="Содержание RU") published = models.BooleanField(verbose_name="Опубликован") ordering = models.IntegerField(verbose_name="Порядок сортировки", default=0, blank=True, null=True) def __unicode__(self): return self.name def pic(self): if self.image: return u'<img src="%s" width="70"/>' % self.image.url else: return '(none)' pic.short_description = u'Большая картинка' pic.allow_tags = True class Meta: verbose_name_plural = "Слайды" verbose_name = "Слайд"
class LastMagazinePreferences(Preferences): __module__ = 'preferences.models' anotation = tinymce_models.HTMLField(_('Last Magazine Anotation')) class Meta(): verbose_name = "Last Magazine Anotation" verbose_name_plural = "Last Magazine Anotations"
class Article(Common): name = models.CharField(u'Название', max_length=200) abstract = tinymce_models.HTMLField(u'Абстракт') goods = models.ManyToManyField(Good, verbose_name=u'Относится к товарам', related_name='articles', blank=True, null=True) brands = models.ManyToManyField(Brand, verbose_name=u'Относится к брендам', related_name='articles', blank=True, null=True) categories = models.ManyToManyField(Category, verbose_name=u'Относится к категориям', related_name='articles', blank=True, null=True) class Meta(Common.Meta): verbose_name = u'Статья' verbose_name_plural = u'Статьи' def __unicode__(self): return self.name def get_absolute_url(self): return "/%i/" % self.id
class Note(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='Пользователь') head = models.CharField(max_length=50, verbose_name='Заголовок', blank=True) #body = models.TextField(verbose_name='Текст заметки') body = tinymce_models.HTMLField('Текст заметки') create_date = models.DateTimeField(verbose_name='Дата создания', auto_now_add=True) category = models.ForeignKey(Category, on_delete=models.SET_NULL, null=True, verbose_name='Категория', blank=True) favorites = models.BooleanField(default=False, verbose_name='Избранная') uuid = models.CharField(max_length=25, blank=True, verbose_name='Идентификатор') public = models.BooleanField(default=False, verbose_name='Публичная заметка') class Meta: verbose_name = 'Заметка' verbose_name_plural = 'Заметки' def __str__(self): return self.head if self.head else self.body[:25]
class Text(Common): title = models.CharField(u'Заголовок', max_length=200) body = tinymce_models.HTMLField(u'Текст') on_main_page = models.BooleanField(u'На главной') rel = models.PositiveIntegerField(u'Позиция', blank=True, null=True) position = models.PositiveSmallIntegerField( u'Расположение', blank=True, null=True, choices=((0, u'Левая колонка'), (1, u'Центр'), (2, u'Правая колонка'))) article = models.ForeignKey(Article, related_name='texts', blank=True, null=True) action = models.ForeignKey(Action, related_name='texts', blank=True, null=True) brand = models.ForeignKey(Brand, related_name='texts', blank=True, null=True) category = models.ForeignKey(Category, related_name='texts', blank=True, null=True) class Meta(Common.Meta): verbose_name = u'Текст' verbose_name_plural = u'Тексты' ordering = ['rel'] def __unicode__(self): return self.title
class Post(WithAuthors, WithPublished, WithSite): """Post class""" tags = models.ManyToManyField('tagging.Tag', verbose_name=_('tags'), related_name="blog", null=True, blank=True) title = models.CharField(_('title'), max_length=250) slug = models.SlugField(unique=True) short_text = models.CharField(_('short_text'), max_length=500) full_text = tinymce_models.HTMLField(_('full text')) is_fixed = models.BooleanField(_('is fixed'), default=False) num_comments = models.PositiveIntegerField(_('number of comments'), default=0) objects = PostManager() class Meta: verbose_name = _(u'WebLogItem') verbose_name_plural = _(u'WebLog') def __unicode__(self): return self.title @models.permalink def get_absolute_url(self): """Returns absolute url for blog item by slug """ return u'post_detail', {}, {u"slug" : self.slug}
class Post(models.Model): title = models.CharField(max_length=255) slug = models.SlugField(max_length=255) body = tinymce_models.HTMLField() # wysiwyg author = models.ForeignKey(User, on_delete=models.PROTECT) created = models.DateTimeField(auto_now_add=True) def __str__(self): return self.title def get_absolute_url(self): from django.urls import reverse return reverse( 'blog_post_detail', args=[ self.slug, self.pk, ], ) def author_name(self): if self.author.first_name and self.author.last_name: return f'{self.author.first_name} {self.author.last_name}' elif self.author.first_name: return self.author.first_name else: return self.author
class SeoBlock(models.Model): title = models.CharField(max_length=255, verbose_name='Заголовок СЕО', null=False, blank=False) meta_description = models.CharField(max_length=255, verbose_name='Мета описание СЕО', null=False, blank=False) keywords = models.TextField(max_length=255, verbose_name='Ключевые слова страницы', null=False, blank=False) description = tiny_mce_model.HTMLField(verbose_name='Описание', null=False, blank=False) content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) object_id = models.PositiveIntegerField() content_object = GenericForeignKey('content_type', 'object_id') def __str__(self): return self.title class Meta: app_label = 'api' verbose_name_plural = 'SEO блоки' verbose_name = 'SEO блок'
class Post(models.Model): STATUS_CHOICES = ( ('d', 'Draft'), ('p', 'Published'), ) CAT_CHOICES = ( ('Gaming', "Game"), ('devel', 'Development'), ('art', 'Arts'), ) USERS = ( ('ermia', 'Ermia'), ('sareha', 'Sareha'), ('Anonymous', 'Ghost'), ) title = models.CharField(max_length=255) slug = models.SlugField(max_length=100, unique=True) description = models.TextField() body_text = tn.HTMLField() thumbnail = models.ImageField(upload_to='images') cat = models.CharField(max_length=255, choices=CAT_CHOICES, default=None) publish = models.DateTimeField(default=timezone.now) created = models.DateTimeField(auto_now_add=True) author = models.CharField(max_length=100, choices=USERS) status = models.CharField(max_length=1, choices=STATUS_CHOICES, default='d') def __str__(self): return self.title
class ProductForm(models.Model): name = models.CharField(max_length=250) description = tinymce_models.HTMLField() price = models.PositiveIntegerField() category = models.ForeignKey(Category, on_delete=models.DO_NOTHING) uploadedDate = models.DateTimeField(auto_now=True) stock = models.PositiveIntegerField() image = models.ImageField(upload_to='product_images/', height_field=None, width_field=None, max_length=100) class Meta: verbose_name = 'Products' verbose_name_plural = 'Products' def save(self): super().save() # saving image first img = Image.open(self.image.path) # Open image using self if img.height > 500 or img.width > 300: new_img = (300, 500) img.thumbnail(new_img) img.save(self.image.path) # saving image at the same path def __str__(self): return self.name
class Product(CategoryProductBase): image = models.ImageField(upload_to='product/', null=True, blank=True) body = tinymce_models.HTMLField() weigth_in_grams = models.PositiveIntegerField(null=True, blank=True) lenght_in_centimeters = models.PositiveIntegerField(null=True, blank=True) width_in_centimeters = models.PositiveIntegerField(null=True, blank=True) height_in_centimeters = models.PositiveIntegerField(null=True, blank=True) @property def dimensions(self): if self.lenght_in_centimeters and self.width_in_centimeters and self.height_in_centimeters: return { 'length': self.lenght_in_centimeters, 'width': self.width_in_centimeters, 'height': self.height_in_centimeters } return None @property def weight(self): return self.weigth_in_grams def clean(self): from django.core.exceptions import ValidationError if not ((self.lenght_in_centimeters and self.width_in_centimeters and self.height_in_centimeters) \ or self.weigth_in_grams): raise ValidationError('Dimensions or weight required.') class Meta: abstract = False app_label = 'simple'
class FashionItem(WithAuthors, WithPublished, WithSite): """FashionItem class""" title = models.CharField(_('title'), max_length=250) slug = models.SlugField(unique=True) short_text = models.CharField(_('short_text'), max_length=500) full_text = tinymce_models.HTMLField(_('full text')) image = models.ImageField(_('image'), upload_to="uploads/fashion/%Y/%m", null=True, blank=True) tags = models.ManyToManyField('tagging.Tag', verbose_name=_('tags'), related_name="fashion", null=True, blank=True) is_fixed = models.BooleanField(_('is fixed'), default=False) objects = FashionItemManager() class Meta: verbose_name = _('Fashion item') verbose_name_plural = _('Fashion items') def __unicode__(self): return self.title @models.permalink def get_absolute_url(self): """Returns absolute url for fashion item by slug """ return 'fashion_detail', {}, {"slug" : self.slug} def get_image(self): """Returns no_image.gif if image is blank""" return self.image if self.image else 'i/no_image.gif'
class Concept(models.Model): titre = models.CharField(max_length=128, blank=True) texte = tinymce_models.HTMLField(blank=True) published = models.BooleanField(default=False) def __str__(self): return self.titre