コード例 #1
0
ファイル: forms.py プロジェクト: zedd42/journal_app
 class Meta:
     model = Note
     fields = ['text']
     labels = {'text': ''}
     widgets = {'text': RichTextField()}
コード例 #2
0
ファイル: models.py プロジェクト: alliocha1805/DCThemis
class projet(models.Model):
    projetThemis = models.BooleanField(
        'Projet Thémis',
        default=True,
        help_text=
        "Décochez la coche, s’il s’agit d’un projet pour le compte d’une autre société"
    )
    nomProjet = models.CharField('Nom du projet', max_length=300)
    client = models.ForeignKey(client, on_delete=models.CASCADE, null=True)
    budget = models.DecimalField(decimal_places=2,
                                 max_digits=11,
                                 default=0.0,
                                 blank=True,
                                 null=True)
    nbJourHomme = models.IntegerField('Nombre de jours hommes',
                                      blank=True,
                                      default=0)
    dateDebut = models.DateField('date de début du Projet', null=True)
    dateFin = models.DateField('date de fin du Projet', blank=True, null=True)
    resumeProjet = RichTextField('Résumé du Projet',
                                 default='',
                                 blank=True,
                                 null=True,
                                 help_text='Bref résumé du projet en 3 lignes')
    contexteMission = RichTextField('Contexte et Enjeux',
                                    default='',
                                    blank=True,
                                    null=True)
    demarcheenjeux = RichTextField(
        'Démarche et réalisations',
        default='',
        blank=True,
        null=True,
        help_text=
        'Merci d’y ajouter aussi l’environnement technique de la mission')
    livrables = RichTextField(
        default='',
        blank=True,
        null=True,
        help_text='Listez les livrables sous forme de bullet point')
    benefClient = RichTextField(
        'Bénéfices Client',
        default='',
        blank=True,
        null=True,
        help_text=
        'Se mettre à la place du client et lister les bénéfices obtenus')
    BUProjet = models.ForeignKey(
        BU,
        on_delete=models.SET_NULL,
        blank=True,
        null=True,
        verbose_name='BU rattaché au projet',
        help_text='Indiquez le nom de la BU s’il s’agit d’une mission Thémis')
    gestionManageriale = models.ManyToManyField(
        gestionManagerialeProjet,
        blank=True,
        verbose_name='Gestion Managériale',
        help_text="Indiquez le nom du Manager responsable du projet")
    gestionCommerciale = models.ManyToManyField(
        gestionCommercialeProjet,
        blank=True,
        verbose_name='Gestion Commerciale',
        help_text="Indiquez le nom du Commercial responsable du projet")

    #experiencesLiees = models.ManyToManyField(experiences)
    def __str__(self):
        return self.nomProjet
コード例 #3
0
class ComPage(models.Model):
    """Model til en komiteside"""

    com = models.ForeignKey(Group, on_delete=models.CASCADE)

    picture = models.ImageField(
        upload_to="uploads/com_pictures",
        null=True,
        blank=True,
        verbose_name="Bilde",
        help_text=("Last opp din undergruppes logo."),
    )

    is_interest_group = models.BooleanField(
        verbose_name="Interessegruppe",
        help_text="Er ikke fullverdig komité",
        default=True,
    )

    description = RichTextField(
        config_name="basic",
        verbose_name="Beskrivelse",
        help_text="Teksten på komitésiden",
        blank=True,
    )

    slug = models.CharField(
        verbose_name="Slug til URL-er",
        max_length=50,
        blank=False,
        unique=True,
        editable=False,
    )

    last_changed_date = models.DateTimeField(verbose_name="Sist redigert",
                                             auto_now=True,
                                             null=True)

    last_changed_by = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        verbose_name="Sist endret av",
        related_name="%(class)s_edited",
        editable=False,
        on_delete=models.CASCADE,
        blank=True,
        null=True,
    )

    class Meta:
        verbose_name = "komiteside"
        verbose_name_plural = "komitesider"

    def __str__(self):
        return self.com.name

    def has_been_edited(self):
        return self.last_changed_by is not None

    def get_canonical_name(self):
        return slugify(str(self))

    def get_absolute_url(self):
        return reverse("show_com_page", kwargs={"slug": self.slug})

    def save(self, *args, **kwargs):
        self.slug = self.get_canonical_name()
        super().save(*args, **kwargs)

    def get_picture_url(self):
        """Return the absolute url of the main picture"""
        domain = Site.objects.get_current().domain  # noqa: F821
        media_url = settings.MEDIA_URL
        filename = self.picture.name
        return f"http://{domain}{media_url}{filename}"
コード例 #4
0
ファイル: models.py プロジェクト: adammakowski/mentoro
class Mentor(models.Model):
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
    title = models.CharField(
        max_length=150,
        blank=False,
        null=False,
        verbose_name='Tytuł',
        help_text='Tytuł to coś bardzo ważnego, zastanów się nad nim dobrze')
    category = models.ForeignKey(
        Category,
        on_delete=models.CASCADE,
        verbose_name="Kategoria",
        help_text='Wybierz kategorię w której nauczasz',
        default=Category)
    language = models.ForeignKey(Language,
                                 on_delete=models.CASCADE,
                                 verbose_name="Język",
                                 help_text='Wybierz język w którym nauczasz',
                                 default=Language)
    price = models.DecimalField(
        null=False,
        blank=False,
        max_digits=7,
        decimal_places=2,
        default='50',
        verbose_name='Cena',
        help_text=
        'Ustal cenę która będziesz pobierać miesiecznie za nauczanie od każdego ucznia'
    )
    who_am_i = RichTextField(
        blank=False,
        null=False,
        verbose_name='Kim jestem?',
        help_text=
        'Napisz jak najwięcej o sobie, kim jesteś, czego nauczasz i w jaki sposób'
    )
    description = RichTextField(
        blank=False,
        null=False,
        verbose_name='Szczegółowy opis i dodatkowe informacje',
        help_text=
        'Czym więcej informacji dla potencjalnego ucznia tym lepiej, napisz jak najwięcej.'
    )
    what_can_i_teach_you = RichTextField(blank=False,
                                         null=False,
                                         verbose_name='Czego mogę nauczyć')
    requirements = RichTextField(blank=False,
                                 null=False,
                                 verbose_name='Moje wymagania od ucznia')
    image_preview = ImageField(blank=False,
                               null=False,
                               manual_crop="",
                               verbose_name='Zdjęcie podglądowe')
    video_presentation = FileField(blank=True,
                                   null=True,
                                   verbose_name='Wideo prezentacja')
    created_date = models.DateTimeField(auto_now_add=True)
    published_date = models.DateTimeField(auto_now=True)
    status = models.IntegerField(choices=STATUS,
                                 default=0,
                                 help_text='Status publikacji')
    active = models.BooleanField(default=False, verbose_name='Zatwierdzone')

    class Meta:
        ordering = ['-created_date']

    def __str__(self):
        return self.title
コード例 #5
0
class PageModel(models.Model):
    class_name = models.CharField(max_length=200, blank=True)
    title = models.CharField(max_length=200)
    content = RichTextField(null=True, blank=True)
    slug = models.SlugField(unique=True, db_index=True, blank=True, null=True)
    site = models.ForeignKey(Site,
                             related_name="site_page",
                             on_delete=models.CASCADE,
                             null=True,
                             blank=True)
    owner = models.ForeignKey(Member,
                              null=True,
                              blank=True,
                              on_delete=models.CASCADE,
                              related_name="page_owner",
                              verbose_name='owner')
    created_date = models.DateTimeField(db_index=True,
                                        default=datetime.datetime.now)
    is_published = models.BooleanField(default=False, db_index=True)
    is_preview = models.BooleanField(default=False, db_index=True)
    banner_image_1 = models.ImageField(
        upload_to='cp/user_uploads/banner_images/', null=True, blank=True)
    banner_image_2 = models.ImageField(
        upload_to='cp/user_uploads/banner_images/', null=True, blank=True)
    banner_image_3 = models.ImageField(
        upload_to='cp/user_uploads/banner_images/', null=True, blank=True)
    meta_description = models.CharField(max_length=1000,
                                        default="",
                                        blank=True)
    meta_keyword = TaggableManager(blank=True)
    page_view = models.IntegerField(default=0)

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

    def get_banner_image_1_url(self):
        return ("/media/%s" % self.banner_image_1)

    def get_banner_image_2_url(self):
        return ("/media/%s" % self.banner_image_2)

    def get_banner_image_3_url(self):
        return ("/media/%s" % self.banner_image_3)

    def get_page_url(self):
        return "/%s/" % (self.slug)

    def get_absolute_url(self):
        return "/%s/" % (self.slug)

    def get_edit_url(self):
        return "%s" % (reverse('cms:page_edit_delete',
                               kwargs={
                                   'action': 'edit',
                                   'pk': self.pk
                               }))

    def get_delete_url(self):
        return "%s" % (reverse('cms:page_edit_delete',
                               kwargs={
                                   'action': 'delete',
                                   'pk': self.pk
                               }))

    def get_class_name(self):
        return self.class_name
コード例 #6
0
class GRB(models.Model):
    """Model that defines metadata about a grb

        :param grb_name: Name of grb being sold.
        :type grb_name: str

        :param description: Description of grb being sold.
        :type description: str
    """
    grb_name = models.CharField(max_length=200, help_text='Name of GRB')

    comments = RichTextField(
        help_text='Additional info about the GRB that may be of note')

    ra_host = models.CharField(max_length=20,
                               null=True,
                               blank=True,
                               verbose_name='Right Ascension of Host',
                               help_text='Right Ascension, in degrees.')
    dec_host = models.CharField(max_length=20,
                                null=True,
                                blank=True,
                                verbose_name='Declination of Host',
                                help_text='Declination, in degrees.')
    tel_pos = models.CharField(
        max_length=20,
        null=True,
        blank=True,
        verbose_name='Telescope Position',
        help_text='Telescope from which sky location is derived')
    tel_pos_ref = models.CharField(
        max_length=20,
        null=True,
        blank=True,
        verbose_name='Telescope Reference',
        help_text='Reference for sky location information.')

    host_morphology = models.CharField(max_length=20,
                                       null=True,
                                       blank=True,
                                       verbose_name='Host Galaxy Morphology',
                                       help_text='Host galaxy Morphology.')

    host_sf = models.CharField(max_length=20,
                               null=True,
                               blank=True,
                               verbose_name='Host Galaxy Star Formation',
                               help_text='Host Galaxy Star Formation.')

    t90 = models.FloatField(null=True,
                            blank=True,
                            verbose_name='T 90',
                            help_text='??')

    t90_err_upper = models.FloatField(null=True,
                                      blank=True,
                                      verbose_name='T 90',
                                      help_text='??')

    t90_err_lower = models.FloatField(null=True,
                                      blank=True,
                                      verbose_name='T 90',
                                      help_text='??')

    fluence = models.FloatField(null=True,
                                blank=True,
                                verbose_name='Fluence',
                                help_text='??')
    fluence_err_upper = models.FloatField(null=True,
                                          blank=True,
                                          verbose_name='Fluence Upper Error',
                                          help_text='??')
    fluence_err_lower = models.FloatField(null=True,
                                          blank=True,
                                          verbose_name='Fluence Lower Error',
                                          help_text='??')

    xray = models.CharField(
        max_length=3,
        null=True,
        blank=True,
        verbose_name='Reference',
        help_text='Reference for sky location information.')
    opt = models.CharField(max_length=3,
                           null=True,
                           blank=True,
                           verbose_name='Reference',
                           help_text='Reference for sky location information.')
    radio = models.CharField(
        max_length=3,
        null=True,
        blank=True,
        verbose_name='Reference',
        help_text='Reference for sky location information.')

    offset = models.FloatField(null=True,
                               blank=True,
                               verbose_name='Offset',
                               help_text='Offset')
    offset_err_upper = models.FloatField(null=True,
                                         blank=True,
                                         verbose_name='Offset Upper Error',
                                         help_text='Offset Upper Error')
    offset_err_lower = models.FloatField(null=True,
                                         blank=True,
                                         verbose_name='Offset Lower Error',
                                         help_text='Offset Lower Error')

    offset_kpc = models.FloatField(null=True,
                                   blank=True,
                                   verbose_name='Offset KPC',
                                   help_text='Offset in KPC')
    offset_kpc_err_upper = models.FloatField(
        null=True,
        blank=True,
        verbose_name='Offset KPC Upper Error',
        help_text='Offset KPC Upper Error')
    offset_kpc_err_lower = models.FloatField(
        null=True,
        blank=True,
        verbose_name='Offset KPC Lower Error',
        help_text='Offset KPC Lower Error')

    z = models.FloatField(null=True,
                          blank=True,
                          verbose_name='Red Shift',
                          help_text='Red Shift')
    z_err_upper = models.FloatField(null=True,
                                    blank=True,
                                    verbose_name='Red Shift Upper Error',
                                    help_text='Red Shift Upper Error')
    z_err_lower = models.FloatField(null=True,
                                    blank=True,
                                    verbose_name='Red Shift Lower Error',
                                    help_text='Red Shift Lower Error')
    z_ref = models.CharField(
        max_length=100,
        null=True,
        blank=True,
    )

    mass = models.FloatField(null=True,
                             blank=True,
                             verbose_name='Mass',
                             help_text='Mass')
    mass_err_upper = models.FloatField(null=True,
                                       blank=True,
                                       verbose_name='Mass Upper Error',
                                       help_text='Mass Upper Error')
    mass_err_lower = models.FloatField(null=True,
                                       blank=True,
                                       verbose_name='Mass Lower Error',
                                       help_text='Mass Lower Error')

    age = models.FloatField(null=True,
                            blank=True,
                            verbose_name='Age',
                            help_text='Age')
    age_err_upper = models.FloatField(null=True,
                                      blank=True,
                                      verbose_name='Age Upper Error',
                                      help_text='Age Upper Error')
    age_err_lower = models.FloatField(null=True,
                                      blank=True,
                                      verbose_name='Age Lower Error',
                                      help_text='Age Lower Error')

    logzsol = models.FloatField(null=True,
                                blank=True,
                                verbose_name='Log Solar Metallicity',
                                help_text='Log Solar Metallicity.')
    logzsol_err_upper = models.FloatField(
        null=True,
        blank=True,
        verbose_name='Log Solar Metallicity Upper Error',
        help_text='Log Solar Metallicity Upper Error')
    logzsol_err_lower = models.FloatField(
        null=True,
        blank=True,
        verbose_name='Log Solar Metallicity Lower Error',
        help_text='Log Solar Metallicity Lower Error')

    gas_logz = models.FloatField(null=True,
                                 blank=True,
                                 verbose_name='Gas Log Solar Metallicity',
                                 help_text='Gas Log Solar Metallicity.')
    gas_logz_err_upper = models.FloatField(
        null=True,
        blank=True,
        verbose_name='Gas Log Solar Metallicity Upper Error',
        help_text='Gas Log Solar Metallicity Upper Error')
    gas_logz_err_lower = models.FloatField(
        null=True,
        blank=True,
        verbose_name='Gas Log Solar Metallicity Lower Error',
        help_text='Gas Log Solar Metallicity Lower Error')

    dust1 = models.FloatField(null=True,
                              blank=True,
                              verbose_name='dust1',
                              help_text='dust1.')
    dust1_err_upper = models.FloatField(null=True,
                                        blank=True,
                                        verbose_name='Dust1 Upper Error',
                                        help_text='Dust1 Upper Error')
    dust1_err_lower = models.FloatField(null=True,
                                        blank=True,
                                        verbose_name='Dust1 Lower Error',
                                        help_text='Dust1 Lower Error')

    dust2 = models.FloatField(null=True,
                              blank=True,
                              verbose_name='dust2',
                              help_text='dust2.')
    dust2_err_upper = models.FloatField(null=True,
                                        blank=True,
                                        verbose_name='Dust2 Upper Error',
                                        help_text='Dust2 Upper Error')
    dust2_err_lower = models.FloatField(null=True,
                                        blank=True,
                                        verbose_name='Dust2 Lower Error',
                                        help_text='Dust2 Lower Error')

    sfr = models.FloatField(null=True,
                            blank=True,
                            verbose_name='Star Formation Rate',
                            help_text='Star Formation Rate.')
    sfr_err_upper = models.FloatField(
        null=True,
        blank=True,
        verbose_name='Star Formation Rate Upper Error',
        help_text='Star Formation Rate Upper Error')
    sfr_err_lower = models.FloatField(
        null=True,
        blank=True,
        verbose_name='Star Formation Rate Lower Error',
        help_text='Star Formation Rate Lower Error')

    phot = ArrayField(models.FloatField(
        null=True,
        blank=True,
    ),
                      blank=True,
                      null=True)
    phot_err = ArrayField(models.FloatField(
        null=True,
        blank=True,
    ),
                          blank=True,
                          null=True)
    phot_wave = ArrayField(models.FloatField(
        null=True,
        blank=True,
    ),
                           blank=True,
                           null=True)
    phot_refs = ArrayField(models.CharField(
        max_length=100,
        null=True,
        blank=True,
    ),
                           blank=True,
                           null=True)
    filters = ArrayField(models.CharField(
        max_length=100,
        null=True,
        blank=True,
    ),
                         blank=True,
                         null=True)
    telescopes = ArrayField(models.CharField(
        max_length=100,
        null=True,
        blank=True,
    ),
                            blank=True,
                            null=True)

    spec = models.FileField(upload_to='observed_spectrum/',
                            null=True,
                            blank=True,
                            validators=[validate_file_extension])
    spec_tel = models.CharField(
        max_length=100,
        null=True,
        blank=True,
    )
    spec_ref = models.CharField(
        max_length=100,
        null=True,
        blank=True,
    )

    mod_phot = models.FileField(upload_to='model_phot/',
                                null=True,
                                blank=True,
                                validators=[validate_file_extension])
    mod_spec = models.FileField(upload_to='model_spectrum/',
                                null=True,
                                blank=True,
                                validators=[validate_file_extension])

    corner = models.ImageField(upload_to='images/',
                               null=True,
                               blank=True,
                               validators=[validate_image_extension])

    sed = models.ImageField(upload_to='images/',
                            null=True,
                            blank=True,
                            validators=[validate_image_extension])

    color = models.ImageField(upload_to='images/',
                              null=True,
                              blank=True,
                              validators=[validate_image_extension])

    h5 = models.FileField(upload_to='samples/',
                          null=True,
                          blank=True,
                          validators=[validate_file_extension])

    json_metadata = models.FileField(upload_to='json/',
                                     null=True,
                                     blank=True,
                                     validators=[validate_file_extension])

    gcn = models.URLField(max_length=300,
                          null=True,
                          blank=True,
                          verbose_name='URL for GCN',
                          help_text='URL for GCN')

    def __str__(self):
        return self.grb_name
コード例 #7
0
class Product(models.Model):
    name = models.CharField(u'Name', max_length=255, unique=True)
    slug = models.SlugField(
        u'Slug', max_length=255, unique=True,
        help_text=u'Unique value for product page URL, created from name.')

    brand_name = models.ForeignKey(
        BrandName, verbose_name=u'Название бренда', blank=True, null=True)

    not_available = models.BooleanField(u'Нет в наличии')
    is_bestseller = models.BooleanField(u'Лучшие продажи', default=False)
    is_aqua = models.BooleanField(verbose_name=u'Жидкость')
    is_new = models.BooleanField(verbose_name=u'Новинка')
    description = RichTextField()

    old_id = models.CharField(
        max_length=20,
        verbose_name=u'id страницы со старого сайта для редиректа', blank=True)

    meta_title = models.CharField(
        u'Meta title', max_length=255, help_text=u'Тег title', blank=True)

    meta_description = models.CharField(
        u'Meta description', max_length=255,
        help_text=u'Content for description meta tag', blank=True)

    created_at = models.DateTimeField(u'Created at', auto_now_add=True)
    updated_at = models.DateTimeField(u'Updated at', auto_now=True)

    categories = models.ManyToManyField(
        Category, verbose_name=u'Categories',
        help_text=u'Categories for product')

    feel = models.ManyToManyField(
        FeelName, verbose_name=u'Вкус', blank=True)

    itemsAttached = models.ManyToManyField(
        'self', verbose_name=u'Выберите прилагающиеся товары', blank=True)

    objects = models.Manager()
    bestseller = BestsellerProductManager()
    aqua = AquaProductManager()
    new = NewProductManager()

    class Meta:
        db_table = 'products'
        ordering = ['-created_at']
        verbose_name_plural = _(u'Products')

    def __unicode__(self):
        return self.name

    def get_absolute_url(self):
        return '/product/%s/' % self.slug

    @property
    def sale_price(self):
        sale_atr = None
        atributes = ProductVolume.objects.filter(product=self)
        for atr in atributes:
            if atr.new_price != 0.00:
                sale_atr = atr
            else:
                sale_atr = ProductVolume.objects.get(product=self, default=True)
        return sale_atr

    def get_atributes(self):
        return ProductVolume.objects.get(product=self, default=True)

    def get_image(self):
        image = ProductImage.objects.get(product=self, default=True)
        return image

    def is_not_available(self):
        return self.not_available is True
コード例 #8
0
ファイル: models.py プロジェクト: amanovishnu/car-zone
class Car(models.Model):
    state_choice = (
        ('AL', 'Alabama'),
        ('AK', 'Alaska'),
        ('AZ', 'Arizona'),
        ('AR', 'Arkansas'),
        ('CA', 'California'),
        ('CO', 'Colorado'),
        ('CT', 'Connecticut'),
        ('DE', 'Delaware'),
        ('DC', 'District Of Columbia'),
        ('FL', 'Florida'),
        ('GA', 'Georgia'),
        ('HI', 'Hawaii'),
        ('ID', 'Idaho'),
        ('IL', 'Illinois'),
        ('IN', 'Indiana'),
        ('IA', 'Iowa'),
        ('KS', 'Kansas'),
        ('KY', 'Kentucky'),
        ('LA', 'Louisiana'),
        ('ME', 'Maine'),
        ('MD', 'Maryland'),
        ('MA', 'Massachusetts'),
        ('MI', 'Michigan'),
        ('MN', 'Minnesota'),
        ('MS', 'Mississippi'),
        ('MO', 'Missouri'),
        ('MT', 'Montana'),
        ('NE', 'Nebraska'),
        ('NV', 'Nevada'),
        ('NH', 'New Hampshire'),
        ('NJ', 'New Jersey'),
        ('NM', 'New Mexico'),
        ('NY', 'New York'),
        ('NC', 'North Carolina'),
        ('ND', 'North Dakota'),
        ('OH', 'Ohio'),
        ('OK', 'Oklahoma'),
        ('OR', 'Oregon'),
        ('PA', 'Pennsylvania'),
        ('RI', 'Rhode Island'),
        ('SC', 'South Carolina'),
        ('SD', 'South Dakota'),
        ('TN', 'Tennessee'),
        ('TX', 'Texas'),
        ('UT', 'Utah'),
        ('VT', 'Vermont'),
        ('VA', 'Virginia'),
        ('WA', 'Washington'),
        ('WV', 'West Virginia'),
        ('WI', 'Wisconsin'),
        ('WY', 'Wyoming'),
    )

    year_choice = []
    for r in range(2000, (datetime.now().year + 1)):
        year_choice.append((r, r))

    features_choices = (
        ('Cruise Control', 'Cruise Control'),
        ('Audio Interface', 'Audio Interface'),
        ('Airbags', 'Airbags'),
        ('Air Conditioning', 'Air Conditioning'),
        ('Seat Heating', 'Seat Heating'),
        ('Alarm System', 'Alarm System'),
        ('ParkAssist', 'ParkAssist'),
        ('Power Steering', 'Power Steering'),
        ('Reversing Camera', 'Reversing Camera'),
        ('Direct Fuel Injection', 'Direct Fuel Injection'),
        ('Auto Start/Stop', 'Auto Start/Stop'),
        ('Wind Deflector', 'Wind Deflector'),
        ('Bluetooth Handset', 'Bluetooth Handset'),
    )

    door_choices = (
        ('2', '2'),
        ('3', '3'),
        ('4', '4'),
        ('5', '5'),
        ('6', '6'),
    )

    car_title = models.CharField(max_length=255)
    state = models.CharField(choices=state_choice, max_length=100)
    city = models.CharField(max_length=255)
    color = models.CharField(max_length=255)
    model = models.CharField(max_length=255)
    year = models.IntegerField(('year'), choices=year_choice)
    condition = models.CharField(max_length=255)
    price = models.IntegerField()
    description = RichTextField()
    car_photo = models.ImageField(upload_to='photos/%Y/%m/%d/')
    car_photo_1 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    car_photo_2 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    car_photo_3 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    car_photo_4 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    features = MultiSelectField(choices=features_choices)
    body_style = models.CharField(max_length=255)
    engine = models.CharField(max_length=255)
    transmission = models.CharField(max_length=255)
    interior = models.CharField(max_length=255)
    miles = models.IntegerField()
    doors = models.CharField(choices=door_choices, max_length=10)
    passengers = models.IntegerField()
    vin_no = models.CharField(max_length=255)
    milage = models.IntegerField()
    fuel_type = models.CharField(max_length=50)
    no_of_owners = models.CharField(max_length=255)
    is_featured = models.BooleanField(default=False)
    created_date = models.DateTimeField(default=datetime.now, blank=True)
コード例 #9
0
class Migration(migrations.Migration):

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='Cancellation',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('reason',
                 models.CharField(max_length=255, verbose_name='reason')),
                ('date', models.DateField(verbose_name='date')),
            ],
            options={},
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='Category',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('title', models.CharField(max_length=255,
                                           verbose_name='title')),
            ],
            options={
                'verbose_name_plural': 'Categories',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='Event',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('start_date',
                 models.DateTimeField(verbose_name='start date')),
                ('end_date', models.DateTimeField(verbose_name='end date')),
                ('all_day',
                 models.BooleanField(default=False, verbose_name='all day')),
                ('repeat',
                 models.CharField(default='NEVER',
                                  max_length=15,
                                  verbose_name='repeat',
                                  choices=[('NEVER', 'Never'),
                                           ('DAILY', 'Every Day'),
                                           ('WEEKDAY', 'Every Weekday'),
                                           ('WEEKLY', 'Every Week'),
                                           ('BIWEEKLY', 'Every 2 Weeks'),
                                           ('MONTHLY', 'Every Month'),
                                           ('YEARLY', 'Every Year')])),
                ('end_repeat',
                 models.DateField(null=True,
                                  verbose_name='end repeat',
                                  blank=True)),
                ('title', models.CharField(max_length=255,
                                           verbose_name='title')),
                ('description',
                 RichTextField(max_length=32768, blank=True, null=True)),
                ('background_color',
                 models.CharField(default='eeeeee',
                                  max_length=10,
                                  verbose_name='background color',
                                  choices=[('eeeeee', 'gray'),
                                           ('ff0000', 'red'),
                                           ('0000ff', 'blue'),
                                           ('00ff00', 'green'),
                                           ('000000', 'black'),
                                           ('ffffff', 'white')])),
                ('background_color_custom',
                 models.CharField(
                     help_text=
                     'Must be a valid hex triplet. Default is gray (eeeeee)',
                     max_length=6,
                     verbose_name='background color custom',
                     blank=True)),
                ('font_color',
                 models.CharField(default='000000',
                                  max_length=10,
                                  verbose_name='font color',
                                  choices=[('eeeeee', 'gray'),
                                           ('ff0000', 'red'),
                                           ('0000ff', 'blue'),
                                           ('00ff00', 'green'),
                                           ('000000', 'black'),
                                           ('ffffff', 'white')])),
                ('font_color_custom',
                 models.CharField(
                     help_text=
                     'Must be a valid hex triplet. Default is black (000000)',
                     max_length=6,
                     verbose_name='font color custom',
                     blank=True)),
                ('categories',
                 models.ManyToManyField(to='happenings.Category',
                                        verbose_name='categories',
                                        blank=True)),
                ('created_by',
                 models.ForeignKey(related_name='events',
                                   verbose_name='created by',
                                   to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'verbose_name': 'event',
                'verbose_name_plural': 'events',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='Location',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('name', models.CharField(max_length=255,
                                          verbose_name='Name')),
                ('address_line_1',
                 models.CharField(max_length=255,
                                  verbose_name='Address Line 1',
                                  blank=True)),
                ('address_line_2',
                 models.CharField(max_length=255,
                                  verbose_name='Address Line 2',
                                  blank=True)),
                ('address_line_3',
                 models.CharField(max_length=255,
                                  verbose_name='Address Line 3',
                                  blank=True)),
                ('state',
                 models.CharField(max_length=63,
                                  verbose_name='State / Province / Region',
                                  blank=True)),
                ('city',
                 models.CharField(max_length=63,
                                  verbose_name='City / Town',
                                  blank=True)),
                ('zipcode',
                 models.CharField(max_length=31,
                                  verbose_name='ZIP / Postal Code',
                                  blank=True)),
                ('country',
                 models.CharField(max_length=127,
                                  verbose_name='Country',
                                  blank=True)),
                ('description',
                 RichTextField(max_length=32768, blank=True, null=True)),
            ],
            options={},
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='Tag',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('name', models.CharField(max_length=255,
                                          verbose_name='name')),
            ],
            options={},
            bases=(models.Model, ),
        ),
        migrations.AddField(
            model_name='event',
            name='location',
            field=models.ManyToManyField(to='happenings.Location',
                                         verbose_name='locations',
                                         blank=True),
            preserve_default=True,
        ),
        migrations.AddField(
            model_name='event',
            name='tags',
            field=models.ManyToManyField(to='happenings.Tag',
                                         verbose_name='tags',
                                         blank=True),
            preserve_default=True,
        ),
        migrations.AddField(
            model_name='cancellation',
            name='event',
            field=models.ForeignKey(related_query_name='cancellation',
                                    related_name='cancellations',
                                    to='happenings.Event'),
            preserve_default=True,
        ),
    ]
コード例 #10
0
class Event(models.Model):
    identifier = models.CharField(max_length=64,
                                  unique=True,
                                  help_text="Unique Identifier for events")
    title = models.CharField(max_length=255)
    event_image = models.ImageField(upload_to='event_images/',
                                    null=True,
                                    blank=True,
                                    validators=[validate_image_size])
    description = RichTextField(blank=True, null=True)

    # Choices of status
    STATUS = (
        ('DRAFT', 'Draft'),
        ('FINAL', 'Final'),
    )
    # Choices of event type
    TYPE = (
        ('ONLINE', 'Online'),
        ('WORKSHOP', 'Workshop'),
        ('TALK', 'Talk Show'),
        ('OFFLINE', 'Other Offline'),
    )

    event_type = models.CharField(max_length=64, choices=TYPE)
    venue = models.CharField(max_length=255,
                             blank=True,
                             null=True,
                             help_text="Venue for Offline Events.")
    url = models.URLField(max_length=255,
                          blank=True,
                          null=True,
                          help_text="URL for Online Events.")
    event_timing = models.DateTimeField(blank=True, null=True)
    facebook_link = models.URLField(null=True, blank=True)
    pub_date = models.DateTimeField(auto_now=True)
    pub_by = models.CharField(max_length=255, blank=True, null=True)
    edited_by = models.CharField(max_length=255, blank=True, null=True)
    status = models.CharField(max_length=64, choices=STATUS)
    show = models.BooleanField(default=True)
    add_to_timeline = models.BooleanField(default=False,
                                          help_text="To add to timeline.")
    featured = models.BooleanField(default=False)
    upcoming = models.BooleanField(default=True)

    def __str__(self):
        return self.identifier

    def save(self, *args, **kwargs):
        # Check if Set to 'DRAFT' then set show to false
        # Check online/offline and set url or venue accordingly
        # Offline events may have links for other purpose
        if self.status == "DRAFT":
            self.show = False

        if self.event_type == "ONLINE":
            self.venue = None
        super().save(*args, **kwargs)

        if (self.add_to_timeline == True):
            if not Timeline.objects.filter(event_name=self.title).exists():
                Timeline.objects.create(event_name=self.title,
                                        detail=self.description)
コード例 #11
0
class Volunteer(models.Model):
    organization = models.ForeignKey(Organization, blank=True, null=True, db_index=True, verbose_name='Organization')
    first_name = models.CharField(max_length=100, db_index=True, verbose_name='First Name')
    preferred_name = models.CharField(max_length=100, blank=True, null=True, verbose_name='Preferred Name')
    middle_name = models.CharField(max_length=100, blank=True, null=True, verbose_name='Middle Name')
    last_name = models.CharField(max_length=100, blank=True, null=True, db_index=True, verbose_name='Last Name')
    suffix = models.CharField(max_length=20, blank=True, null=True, verbose_name='Suffix')
    email = models.EmailField(max_length=250, unique=True, db_index=True, verbose_name='Email')
    phone = models.CharField(max_length=100, blank=True, null=True, verbose_name='Phone')
    address_1 = models.CharField(max_length=250, blank=True, null=True, verbose_name='Address')
    address_2 = models.CharField(max_length=250, blank=True, null=True, verbose_name='Address (cont.)')
    city = models.CharField(max_length=100, blank=True, null=True, db_index=True, verbose_name='City')
    state = USStateField(blank=True, null=True, db_index=True, verbose_name='State')
    zip = USZipCodeField(blank=True, null=True, db_index=True, verbose_name='Zip')
    details = RichTextField(blank=True, null=True, verbose_name='Details')
    categories = models.ManyToManyField(Category, blank=True, verbose_name='Categories')
    dt_signed_petition = models.DateTimeField(blank=True, null=True, verbose_name='Signed Petition')
    date_signed_up = models.DateField(blank=True, null=True, verbose_name='Date Signed Up')
    date_contacted = models.DateField(blank=True, null=True, verbose_name='Date Contacted')
    contacted_by = models.CharField(max_length=250, blank=True, null=True, verbose_name='Contacted By')
    volunteer_commitment = models.CharField(max_length=250, blank=True, null=True, verbose_name='Volunteer Commitment')
    volunteer_activities = models.ManyToManyField(VolunteerActivity, blank=True, verbose_name='Volunteer Activities')
    volunteer_other = RichTextField(blank=True, null=True, verbose_name='Volunteer Other')
    previous_organizing_experience = RichTextField(blank=True, null=True, verbose_name='Previous Organizing Experience')
    active_in_presidential_primary = RichTextField(blank=True, null=True, verbose_name='Active in Presidential Primary')
    other_skills = RichTextField(blank=True, null=True, verbose_name='Other Skills')
    facebook_profile = models.URLField(blank=True, null=True, verbose_name='Facebook Profile')
    twitter_profile = models.URLField(blank=True, null=True, verbose_name='Twitter Profile')
    instagram_profile = models.URLField(blank=True, null=True, verbose_name='Instagram Profile')
    reddit_profile = models.URLField(blank=True, null=True, verbose_name='Reddit Profile')
    volunteer_comments = RichTextField(blank=True, null=True, verbose_name='Volunteer Comments')
    sources = models.ManyToManyField(VolunteerSource, blank=True, verbose_name='Sources')
    date_added_to_list = models.DateField(blank=True, null=True, verbose_name='Date Added To List')
    dt_created = models.DateTimeField(auto_now_add=True, verbose_name='Created On')
    dt_updated = models.DateTimeField(auto_now=True, verbose_name='Updated On')
    is_active = models.BooleanField(default=True, verbose_name='Active')
    phonecalls = GenericRelation('phonecall.PhoneCall', related_query_name='volunteer_phonecalls')

    objects = VolunteerManager()

    def save(self, *args, **kwargs):
        # try to get their city and state if needed based on zip
        if self.zip and (not self.city or not self.state):
            try:
                vzip = self.zip
                if '-' in vzip:
                    vzip = vzip.split('-')[0]

                zip_code = ZipCode.objects.get(zip=vzip)
                self.city = zip_code.city
                self.state = zip_code.state
            except ZipCode.DoesNotExist:
                pass  # we tried!

        # if they signed the petition, add that info
        if not self.dt_signed_petition:
            try:
                ps = PetitionSigner.objects.get(email__iexact=self.email)
                self.dt_signed_petition = ps.dt_signed
            except PetitionSigner.DoesNotExist:
                pass  # haven't signed

        super(Volunteer, self).save(*args, **kwargs)

    @property
    def full_name(self):
        name = self.first_name

        if self.middle_name:
            name += ' {}'.format(self.middle_name)

        name += ' {}'.format(self.last_name)

        if self.suffix:
            name += ' {}'.format(self.suffix)

        return name

    @property
    def short_name(self):
        if self.preferred_name:
            name = self.preferred_name
        else:
            name = self.first_name

        name += ' {}'.format(self.last_name)

        return name

    @property
    def signed_petition(self):
        if self.dt_signed_petition:
            return True
        else:
            return False

    def __str__(self):
        name = '{}, {}'.format(self.last_name, self.first_name)

        if self.preferred_name:
            name += ' ({})'.format(self.preferred_name)

        return name

    class Meta:
        verbose_name = 'Volunteer'
        verbose_name_plural = 'Volunteers'
        ordering = ['last_name', 'first_name', ]
コード例 #12
0
class Project(models.Model):
    identifier = models.CharField(max_length=64, unique=True)
    title = models.CharField(max_length=512)
    description = RichTextField()
    gitlink = models.URLField(null=True, blank=True)
コード例 #13
0
class Post(models.Model):
    Titulo = models.CharField(max_length=230)
    conteudo = RichTextField()
コード例 #14
0
ファイル: models.py プロジェクト: ngodoy/eventoL
class Event(models.Model):
    objects = EventManager()
    created_at = models.DateTimeField(_('Created At'), auto_now_add=True)
    updated_at = models.DateTimeField(_('Updated At'), auto_now=True)
    name = models.CharField(_('Event Name'), max_length=50)
    abstract = models.TextField(
        _('Abstract'),
        max_length=250,
        help_text=_('Short idea of the event (One or two sentences)'))
    limit_proposal_date = models.DateField(
        _('Limit Proposals Date'),
        help_text=_('Limit date to submit talk proposals'))
    registration_closed = models.BooleanField(
        default=False,
        help_text=_("set it to True to force the registration to be closed"))

    tags = models.ManyToManyField(
        EventTag,
        help_text=_("Select tags to show this event in the EventTag landing"))
    event_slug = models.SlugField(_('URL'),
                                  max_length=100,
                                  help_text=_('For example: flisol-caba'),
                                  unique=True)
    customForm = models.ForeignKey(CustomForm,
                                   verbose_name=_noop('Custom form'),
                                   blank=True,
                                   null=True)
    cname = models.CharField(_('CNAME'),
                             max_length=50,
                             blank=True,
                             null=True,
                             help_text=_('For example: flisol-caba'),
                             validators=[validate_url])
    registration_code = models.UUIDField(
        default=uuid4,
        editable=False,
        unique=True,
        verbose_name=_('code'),
        help_text=_('Code validator for in-place event self-registration'),
    )
    external_url = models.URLField(
        _('External URL'),
        blank=True,
        null=True,
        default=None,
        help_text=_('http://www.my-awesome-event.com'))
    email = models.EmailField(verbose_name=_('Email'))
    event_information = RichTextField(verbose_name=_('Event Information'),
                                      help_text=_('Event Information HTML'),
                                      blank=True,
                                      null=True)
    schedule_confirmed = models.BooleanField(_('Schedule Confirmed'),
                                             default=False)
    use_installations = models.BooleanField(_('Use Installations'),
                                            default=True)
    use_installers = models.BooleanField(_('Use Installers'), default=True)
    use_collaborators = models.BooleanField(_('Use Collaborators'),
                                            default=True)
    use_proposals = models.BooleanField(_('Use Proposals'), default=True)
    is_flisol = models.BooleanField(_('Is FLISoL'), default=False)
    use_schedule = models.BooleanField(_('Use Schedule'), default=True)
    place = models.TextField(_('Place'))
    image = ImageCropField(upload_to='images_thumbnails',
                           verbose_name=_('Image'),
                           blank=True,
                           null=True)
    cropping = ImageRatioField(
        'image',
        '700x450',
        size_warning=True,
        verbose_name=_('Cropping'),
        free_crop=True,
        help_text=_('The image must be 700x450 px. You can crop it here.'))
    activities_proposal_form_text = models.TextField(
        blank=True,
        null=True,
        help_text=_("A message to show in the activities proposal form"))
    template = models.FileField(
        _('Template'),
        upload_to='templates',
        blank=True,
        null=True,
        help_text=_('Custom template html for event index page'))
    css_custom = models.FileField(
        _('Custom css'),
        upload_to='custom_css',
        blank=True,
        null=True,
        help_text=_('Custom css file for event page'))

    @property
    def location(self):
        try:
            place = json.loads(self.place)
            components = place['address_components']
            components = filter(
                lambda componet: 'political' in componet['types'], components)
            components = map(lambda componet: componet['long_name'],
                             components)
            return components
        except json.JSONDecodeError as error:
            logger.error(error)
        return []

    @property
    def report(self):
        event_user = EventUser.objects.get_counts_by_event(self)
        collaborator = Collaborator.objects.get_counts_by_event(self)
        organizer = Organizer.objects.get_counts_by_event(self)
        attendee = Attendee.objects.get_counts_by_event(self)
        installer = Installer.objects.get_counts_by_event(self)
        activity = Activity.objects.get_counts_by_event(self)
        installation = Installation.objects.get_counts_by_event(self)
        speakers = []
        for talk in Activity.objects.filter(event=self, status='2'):
            speakers.append(talk.speakers_names.split(','))
        speakers_count = len(set(itertools.chain.from_iterable(speakers)))
        return {
            'event_user': event_user,
            'collaborator': collaborator,
            'organizer': organizer,
            'attendee': attendee,
            'installer': installer,
            'activity': activity,
            'installation': installation,
            'speakers': speakers_count
        }

    def get_absolute_url(self):
        if self.external_url:
            return self.external_url
        return reverse('event', kwargs={'event_slug': self.event_slug})

    def __str__(self):
        return self.name

    class Meta(object):
        ordering = ['name']
        verbose_name = _('Event')
        verbose_name_plural = _('Events')

    def save(self, *args, **kwargs):
        """
        Override default save

        it will add the slug field using slugify.
        """
        if not self.event_slug:
            self.event_slug = get_unique_slug(self, 'name', 'slug')
        super().save(*args, **kwargs)
コード例 #15
0
class Movie(NameSlugStampedModel):
    """Movie model"""
    # name field is overriden
    name = models.CharField(_('title'), max_length=245, unique=True)
    original_name = models.CharField(_('original title'),
                                     max_length=245,
                                     default='',
                                     blank=True)

    is_featured = models.BooleanField(_('featured'), default=False)

    # TODO: retrieve release_year from release_date
    release_date = models.DateField(_('release date'), blank=True, null=True)

    # release_date = models.PositiveSmallIntegerField(
    #     _('release year'),
    #     validators=[MinValueValidator(1100), MaxValueValidator(2100)])

    duration = models.PositiveSmallIntegerField(_('duration'),
                                                default=0,
                                                blank=True,
                                                help_text=_('in minutes'))

    # country
    # language

    imdb_rating = models.FloatField(
        _('IMDB rating'),
        default=0,
        blank=True,
        validators=[
            MinValueValidator(0.0, message=_('min. value cannot be negative')),
            MaxValueValidator(10.0,
                              message=_('max. value cannot be more then 10'))
        ],
        help_text=_('e.g. 6.8'))
    imdb_raters_count = models.PositiveIntegerField(  # TODO: if rating 0, this should be 0 also
        _('IMDB raters count'),
        default=0,
        blank=True)
    imdb_id = models.CharField(
        _('IMDB Id'), max_length=15, default='', blank=True,
        db_index=True)  # db_index is True for massive imports

    # TODO:
    # rottentomatoes_rating = models.FloatField(
    #     _('RottenTomatoes rating'), default=0, blank=True,
    #     help_text=_('e.g. 6.8'))

    intro = models.TextField(_('intro'),
                             default='',
                             blank=True,
                             max_length=500)
    content = RichTextField(_('content'), default='', blank=True)
    # TODO: MayBe: content_source be transformed into an MTM
    # or Text field
    content_source = models.URLField(_('content source'),
                                     default='',
                                     blank=True)
    # TODO: MayBe: an MTM for more trailers and BE for more
    # video sources
    trailer = models.URLField(
        _('trailer'),
        default='',
        blank=True,
        help_text=_('trailer url (ONLY for youtube videos yet)'))
    trailer_info = models.CharField(_('trailer info'),
                                    max_length=250,
                                    default='',
                                    blank=True)

    country = models.CharField(_('country'),
                               max_length=100,
                               default='',
                               blank=True)
    language = models.CharField(_('language'),
                                max_length=100,
                                default='',
                                blank=True)

    image = models.ImageField(_('image'),
                              upload_to=movie_directory_path,
                              blank=True,
                              null=True)
    image_credit = models.CharField(_('image credit'),
                                    max_length=250,
                                    default='',
                                    blank=True)

    pg_rating = models.ForeignKey(PgRating,
                                  on_delete=models.SET_NULL,
                                  blank=True,
                                  null=True,
                                  related_name='movies',
                                  verbose_name=_('PG rating'))

    genres = models.ManyToManyField(Genre,
                                    blank=True,
                                    related_name='movies',
                                    verbose_name=_('genre'))

    crews = models.ManyToManyField('celebs.Celebrity',
                                   through='MovieCrew',
                                   blank=True,
                                   related_name='movies',
                                   verbose_name=_('crews'))

    @cached_property
    def age(self):
        return get_age(self.release_date)

    @cached_property
    def trailer_video(self):
        return video_code(self.trailer)

    @cached_property
    def duration_humanize(self):
        return get_duration_humanize(self.duration)

    @cached_property
    def release_year(self):
        return self.release_date.year

    @property
    def producers(self):
        return self._get_crew('P')

    @property
    def directors(self):
        return self._get_crew('D')

    @property
    def writers(self):
        return self._get_crew('W')

    @property
    def casts(self):
        return self._get_crew('C')

    @property
    def all_crews(self):
        return self._get_crew('A')

    class Meta:
        verbose_name = _('movie')
        verbose_name_plural = _('movies')

    def get_absolute_url(self):
        return reverse('movie-detail', args=[self.slug])

    def clean(self, *args, **kwargs):
        if self.imdb_raters_count == 0 and self.imdb_rating != 0.0:
            raise ValidationError(
                _('With 0 raters, rating cannot be different than 0'))

    def _get_crew(self, duty_code='A'):
        """TODO: reduce queries"""
        result = []

        if duty_code == 'A':
            if hasattr(self, '_prefetched_objects_cache') \
                    and 'moviecrews' in self._prefetched_objects_cache:
                result = [
                    c for c in self._prefetched_objects_cache['moviecrews']
                ]
            else:
                result = self.moviecrews.all()
            return result

        if hasattr(self, '_prefetched_objects_cache') \
                and 'moviecrews' in self._prefetched_objects_cache:
            result = [
                c for c in self._prefetched_objects_cache['moviecrews']
                if c.duty.code == duty_code
            ]
        else:
            result = self.moviecrews.filter(duty__code=duty_code)

        return result
コード例 #16
0
class Ads(models.Model):
    ads = RichTextField(blank=True, null=True, default=None)
    date = models.DateTimeField(auto_now_add=True, auto_now=False)

    def __str__(self):
        return "%s" % (self.ads)
コード例 #17
0
class Blog(models.Model):

    YAYIN_TASLAK = ((None, 'Lütfen birini seçiniz..'), ('yayin', 'YAYIN'),
                    ('taslak', 'TASLAK'))

    title = models.CharField(max_length=100,
                             blank=False,
                             null=True,
                             verbose_name='Başlık Giriniz',
                             help_text='Başlık bilgisi burada girilir.')
    icerik = RichTextField(max_length=1000,
                           verbose_name='İçerik Giriniz',
                           blank=False,
                           null=True)
    # models.TextField(max_length=1000, verbose_name='İçerik Giriniz', blank=False, null=True)

    slug = models.SlugField(null=True, unique=True, editable=False)
    image = models.ImageField(default='default/default.png',
                              blank=True,
                              verbose_name='Resim',
                              null=True,
                              help_text='Kapak Fotoğrafı Yükleyiniz',
                              upload_to=upload_to)
    unique_id = models.CharField(max_length=100, editable=True, null=True)
    kategoriler = models.ManyToManyField(to=Kategori,
                                         related_name='blog',
                                         blank=True)
    createdDate = models.DateTimeField(auto_now_add=True, auto_now=False)
    yayin_taslak = models.CharField(choices=YAYIN_TASLAK,
                                    max_length=6,
                                    null=True,
                                    blank=False)

    user = models.ForeignKey(User,
                             default=1,
                             null=True,
                             on_delete=models.CASCADE,
                             verbose_name='User',
                             related_name='blog')

    class Meta:
        verbose_name_plural = 'Blog'
        ordering = ['-id']

    def __str__(self):
        return "%s - %s" % (self.title, self.user)

    def get_absolute_url(self):
        return reverse("post-detail", kwargs={"slug": self.slug})

    def get_image(self):
        if self.image:
            return self.image.url
        else:
            return '/media/default/default.png'

    def getUniqueSlug(self):
        sayi = 0
        slug = slugify(unidecode(self.title))
        new_slug = slug
        while Blog.objects.filter(slug=new_slug).exists():
            sayi += 1
            new_slug = "%s-%s" % (slug, sayi)

        slug = new_slug
        return slug

    def get_yayin_taslak_html(self):
        if self.yayin_taslak == 'taslak':
            return safe(
                '<small><span class="label label-{1}">{0}</span></small>'.
                format(self.get_yayin_taslak_display(), 'danger'))
        else:
            return safe(
                '<small><span class="label label-{1}">{0}</span></small>'.
                format(self.get_yayin_taslak_display(), 'success'))

    def save(self, *args, **kwargs):
        if self.id is None:
            new_unique_id = str(uuid4())
            self.unique_id = new_unique_id
            self.slug = self.getUniqueSlug()
        else:
            blog = Blog.objects.get(slug=self.slug)
            if blog.title != self.title:
                self.slug = self.getUniqueSlug()
        super(Blog, self).save(*args, **kwargs)

    def get_added_favorite_user(self):
        # self.favorite_blog.all()
        return self.favorite_blog.values_list('user__username', flat=True)

    def get_comments_count(self):
        yorum_sayisi = self.comment.count()
        if yorum_sayisi > 0:
            return yorum_sayisi
        return 'Yorum Yok'

    def get_favorite_count(self):
        favorite_count = self.favorite_blog.count()
        if favorite_count > 0:
            return favorite_count
        return 'Beğeni Yok'

    def get_added_favorite_users_object(self):
        data_list = []
        querySet = self.favorite_blog.all()
        for obj in querySet:
            data_list.append(obj.user)
        return data_list

    @classmethod
    def get_taslak_or_yayin(cls, taslak_yayin):
        return cls.objects.filter(yayin_taslak=taslak_yayin)

    def get_blog_comments(self):
        return self.comment.all()

    def get_blog_comment_count(self):
        return len(self.get_blog_new_comments())

    def get_blog_new_comments(self):
        content_type = ContentType.objects.get_for_model(self)
        object_id = self.id
        all_comment = NewComment.objects.filter(content_type=content_type,
                                                object_id=object_id)
        return all_comment
コード例 #18
0
ファイル: models.py プロジェクト: Ar-Raz/CFD
class Article(models.Model):
    title = models.CharField(max_length=32)
    category = models.ForeignKey("Category", on_delete=models.CASCADE)
    content = RichTextField()
    created_at = models.DateTimeField(default=datetime.now)
    author = models.OneToOneField(UserProfile, on_delete=models.CASCADE)
コード例 #19
0
class Page(models.Model):
    """Represents a Page that can be accessed via it's URL."""
    class Meta:
        """Meta class definition."""

        verbose_name = _("page")
        verbose_name_plural = _("pages")

    class Template:
        """Represents the templates available."""

        base = "simple_pages/base.html"
        default = "simple_pages/default.html"
        fade = "simple_pages/fade.html"
        raw = "simple_pages/raw.html"

        CHOICES = [
            (base, base),
            (default, default),
            (fade, fade),
            (raw, raw),
        ]

    title = models.CharField(
        verbose_name=_("title"),
        max_length=255,
        help_text=_("The title of this page."),
    )
    access_url = models.CharField(
        verbose_name=_("access URL"),
        max_length=255,
        unique=True,
        help_text=_("The URL at which this page can be accessed. "
                    "eg: /terms-and-conditions/"),
    )
    redirect_url = models.CharField(
        verbose_name=_("redirect URL"),
        max_length=255,
        blank=True,
        null=True,
        help_text=_("The URL to redirect to when this page is accessed."),
    )
    content = RichTextField(
        verbose_name=_("content"),
        blank=True,
        null=True,
        help_text=_("The content to be displayed in the body of this page."),
    )
    template_name = models.CharField(
        verbose_name=_("template name"),
        max_length=255,
        choices=Template.CHOICES,
        default=Template.default,
        help_text=_("The name of the template to use when rendering this "
                    "page."),
    )
    enabled = models.BooleanField(
        verbose_name=_("Enabled"),
        default=True,
        blank=True,
        help_text=_("If unchecked, this model is disabled."),
    )
    created = models.DateTimeField(
        verbose_name=_("Created date/time"),
        auto_now_add=True,
        help_text=_("The date and time on which this model instance was first "
                    "created."),
    )
    modified = models.DateTimeField(
        verbose_name=_("Modified date/time"),
        auto_now=True,
        help_text=_("The date and time on which this model instance was last "
                    "modified."),
    )

    def __str__(self):
        """Return a string representation for this object."""
        if self.redirect_url:
            return "{access_url} -> {redirect_url}".format(
                access_url=self.access_url, redirect_url=self.redirect_url)
        else:
            return "{access_url}".format(access_url=self.access_url)

    @property
    def is_redirect(self):
        """Return True if a redirect_url is set."""
        return bool(self.redirect_url)

    def get_absolute_url(self):
        """Get the URL to this page (used in the 'View on site' link)."""
        return self.access_url

    def clean(self):
        """Perform per-object validation."""
        if not self.access_url.startswith("/"):
            raise ValidationError(
                message=_("The access_url must start with a '/'."))

        if self.template_name and self.template_name.startswith("/"):
            raise ValidationError(
                message=_("The template_name must not start with a '/'."))
コード例 #20
0
ファイル: models.py プロジェクト: Phuca1/Django-Demo1
class BaiViet(models.Model):
    title = models.CharField(max_length=200)
    slug = models.SlugField(unique=True)
    content = RichTextField()
コード例 #21
0
class Profile(models.Model):
    def get_dp_path(self, filename):
        ext = filename.split('.')[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        return 'static/uploads/images/dp/' + filename

    def get_cover_path(self, filename):
        ext = filename.split('.')[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        return 'static/uploads/images/cover/' + filename

    def get_resume_path(self, filename):
        ext = filename.split('.')[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        return 'static/uploads/documents/resume/' + filename

    # Basic Info
    user = models.OneToOneField(
        User,
        on_delete=models.CASCADE,
        related_name='Profile',
        verbose_name='User',
    )
    email = models.EmailField(max_length=254)
    phone = models.CharField(max_length=12, blank=True, null=True)
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=50, blank=True, null=True)
    profile_pic = ProcessedImageField(
        default='',
        blank=True,
        verbose_name='Profile Picture',
        upload_to=get_dp_path,
        validators=[validate_file_size],
        **processed_image_field_specs,
        null=True,
    )

    # Additional Details
    role = models.CharField(max_length=256,
                            choices=ROLE_TYPE,
                            default='Member')
    githubUsername = models.CharField(max_length=50, null=True, blank=True)
    gitlabUsername = models.CharField(max_length=50, null=True, blank=True)
    customEmail = models.CharField(max_length=50, null=True, blank=True)
    telegram_id = models.CharField(max_length=50, null=True, blank=True)
    telegramUsername = models.CharField(max_length=50, null=True, blank=True)
    discord_id = models.CharField(max_length=50, null=True, blank=True)
    twitterUsername = models.CharField(max_length=50, null=True, blank=True)
    roll_number = models.CharField(max_length=25, null=True, blank=True)
    displayInWebsite = models.BooleanField(default=True,
                                           verbose_name="Display in website")
    batch = models.IntegerField(null=True,
                                help_text='Year of Admission',
                                blank=True)
    location = models.CharField(max_length=150, null=True, blank=True)
    birthday = models.DateField(null=True, help_text='YYYY-MM-DD', blank=True)
    tagline = models.CharField(max_length=80, null=True, blank=True)
    about = RichTextField(max_length=1000, null=True, blank=True)
    typing_speed = models.IntegerField(null=True, blank=True)
    resume = models.FileField(upload_to=get_resume_path,
                              verbose_name='Attach Resume',
                              null=True,
                              blank=True,
                              validators=[validate_file_size])
    system_no = models.IntegerField(null=True, blank=True)
    cover = ProcessedImageField(
        default='',
        blank=True,
        verbose_name='Cover Picture',
        upload_to=get_cover_path,
        validators=[validate_file_size],
        **processed_image_field_specs,
        null=True,
    )
    accent = models.CharField(max_length=15,
                              verbose_name='Accent Colour for Profile',
                              help_text='Hex value with #',
                              blank=True,
                              null=True)

    # Relational Fields
    languages = models.ManyToManyField(Language, blank=True)
    interests = models.ManyToManyField(Skill,
                                       related_name='interests',
                                       blank=True)
    expertise = models.ManyToManyField(Skill,
                                       related_name='expertise',
                                       blank=True)
    experiences = models.ManyToManyField(Organization,
                                         related_name='WorkExperiences',
                                         through='WorkExperience')
    qualifications = models.ManyToManyField(
        Organization,
        related_name='EducationalQualifications',
        through='EducationalQualification')
    links = models.ManyToManyField(Portal,
                                   related_name='SocialProfile',
                                   through='SocialProfile')

    class Meta:
        verbose_name_plural = "Profiles"
        verbose_name = "Profile"

    def __str__(self):
        return self.first_name
コード例 #22
0
class Article(models.Model):
    # the article id will be 4-digit number like 0001 so should be char not integer
    article_id = models.CharField(max_length=4)
    title = models.CharField(max_length=200)
    # preview picture
    preview = models.ImageField(upload_to="article",
                                blank=True,
                                null=True,
                                default=False)
    # preview video # Don't use EmbedVideoField! CharField is better!
    video = models.CharField(blank=True,
                             null=True,
                             default=False,
                             max_length=500)
    # the date will be shown on blog page
    timestamp = models.DateField(default=timezone.now)
    # DateTime only used to sort, not shown on blog page
    time = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(Author, on_delete=models.DO_NOTHING)
    category = models.ManyToManyField(Category)
    tag = models.ManyToManyField(Tag)
    recommend = models.BooleanField(default=False)
    top = models.BooleanField(default=False)
    featured = models.BooleanField(default=True)
    # the overview words will be edited in RichText Editor on admin page
    overview = RichTextField()
    body = models.TextField()
    view_count = models.IntegerField(default=0)
    comment_count = models.IntegerField(default=0)
    like_count = models.IntegerField(default=0)

    def remove_on_image_update(self):
        try:
            # is the object in the database yet?
            obj = Article.objects.get(id=self.id)
        except Article.DoesNotExist:
            # object is not in db, nothing to worry about
            return "Article.DoesNotExist"
        # is the save due to an update of the actual image file?
        if obj.preview and self.preview and obj.preview != self.preview:
            # delete the old image file from the storage in favor of the new file
            obj.preview.delete()

    def delete(self, *args, **kwargs):
        # object is being removed from db, remove the file from storage first
        self.preview.delete()
        return super(Article, self).delete(*args, **kwargs)

    def save(self, *args, **kwargs):
        # object is possibly being updated, if so, clean up.
        self.remove_on_image_update()
        return super(Article, self).save(*args, **kwargs)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('post:article', args=[str(self.article_id)])

    def viewed(self):
        self.view_count += 1
        self.save(update_fields=["view_count"])

    class Meta:
        # name the table in db
        db_table = "article"
        # multiple ordering priority
        ordering = ["-top", "-recommend", "-time"]
コード例 #23
0
ファイル: models.py プロジェクト: lovefromCode/tuber-app
class About(models.Model):

    aboutus = RichTextField()

    def __str__(self):
        return self.pk
コード例 #24
0
class Media(GenericModerateMixin, models.Model):
    TYPE_PHOTO = "photo"
    TYPE_VIDEO = "video"
    TYPES = ((TYPE_PHOTO, _("Photo")), (TYPE_VIDEO, _("Video")))

    content_type = models.ForeignKey(
        ContentType,
        verbose_name=_("Content type"),
        limit_choices_to=limit_choices_to_content_type,
        on_delete=models.CASCADE,
        null=True,
        blank=True,
    )
    object_id = models.UUIDField(_("Object UUID"), null=True, blank=True)
    content_object = GenericForeignKey("content_type", "object_id")
    content_object.short_description = _("Content object")

    creator = models.ForeignKey("users.User",
                                verbose_name=_("Creator"),
                                on_delete=models.CASCADE)
    title = models.CharField(_("Title"), max_length=255, null=True, blank=True)
    description = RichTextField(_("Description"),
                                config_name="basic",
                                null=True,
                                blank=True)

    image = models.ForeignKey("storage.Image",
                              verbose_name=_("Image"),
                              on_delete=models.SET_NULL,
                              null=True,
                              blank=True)
    video_code = models.TextField(_("Embed video code"), null=True, blank=True)

    hash_tags = ArrayField(models.CharField(max_length=255),
                           verbose_name=_("Hash tags"),
                           default=list)
    likes = models.ManyToManyField("users.User",
                                   verbose_name=_("Likes"),
                                   blank=True,
                                   related_name="like_media")
    views = models.PositiveIntegerField(_("Views"), default=0)

    media_type = models.CharField(_("Type"), max_length=16, choices=TYPES)

    comments = GenericRelation(Comment)

    fields_tracker = FieldTracker(fields=["status"])

    def get_title(self):
        title = self.title
        if not title and self.image:
            title = self.image.name
        return title

    @property
    def comments_count(self):
        return self.comments.filter(is_deleted=False).count()

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

    class Meta:
        verbose_name = _("Media")
        verbose_name_plural = _("Media")
コード例 #25
0
ファイル: models.py プロジェクト: alliocha1805/DCThemis
class collaborateurs(models.Model):
    nomCollaborateur = models.CharField('Nom du Collaborateur', max_length=200)
    prenomCollaborateur = models.CharField('Prénom du Collaborateur',
                                           max_length=200)
    trigramme = models.CharField(max_length=3, blank=True, null=True)
    titreCollaborateur = models.CharField(
        'Titre du Collaborateur',
        max_length=200,
        help_text=
        "Il s’agit du titre que l’on retrouve en première page du DC au-dessus du texte introductif (ex : Consultant AMOA)"
    )
    dateDeNaissance = models.DateField('Date de naissance',
                                       blank=True,
                                       null=True)
    texteIntroductifCv = RichTextField(
        'Texte introductif du DC',
        default='',
        blank=True,
        null=True,
        help_text=
        "Il s’agit du texte introductif que l’on retrouve en première page du DC au-dessous du titre introductif"
    )
    dateDebutExpPro = models.DateField('Date de début de carrière',
                                       blank=True,
                                       null=True)
    codePostal = models.CharField('Code Postal',
                                  default='',
                                  max_length=200,
                                  blank=True,
                                  null=True)
    telephone = models.CharField('Téléphone',
                                 default='',
                                 max_length=200,
                                 blank=True,
                                 null=True)
    mail = models.CharField(default='', max_length=200, blank=True, null=True)
    manager = models.ManyToManyField(gestionManagerialeConsultant)
    TYPE_CONTRAT = (
        ('I', 'CDI'),
        ('D', 'CDD'),
        ('N', 'Intérimaire'),
        ('A', 'Contrat d\'alternance'),
        ('X', 'Indépendant'),
        ('S', 'Sous-traitant'),
    )
    typeContrat = models.CharField('Type de Contrat',
                                   max_length=1,
                                   choices=TYPE_CONTRAT,
                                   default='I')
    GRADE = (('1', 'Consultant Junior'), ('2', 'Consultant'),
             ('3', 'Consultant Sénior'), ('4', 'Runner Manager'),
             ('5', 'Manager'), ('5', 'Directeur'))
    grade = models.CharField(max_length=1,
                             choices=GRADE,
                             default='1',
                             blank=True,
                             null=True)
    dateArrivee = models.DateField('date d\'arrivée chez Themis',
                                   blank=True,
                                   null=True)
    dateSortie = models.DateField('date de sortie de chez Themis',
                                  blank=True,
                                  null=True)
    expertiseSectorielle = models.ManyToManyField(
        expertiseSectorielle,
        blank=True,
        verbose_name='Expertise Sectorielle',
        help_text=
        'Indique le « secteur : Direction ou Service Client » (ex : Industrie Pharmaceutique : Achat, Service Financier)'
    )
    niveauxIntervention = models.ManyToManyField(
        niveauIntervention,
        blank=True,
        verbose_name='Niveau d’intervention',
        help_text='Idéalement en indiquer 5 et en ne dépassant pas les 10')
    expSignificative1 = models.CharField('Expérience Significative 1',
                                         max_length=500,
                                         blank=True,
                                         null=True)
    expSignificative2 = models.CharField('Expérience Significative 2',
                                         max_length=500,
                                         blank=True,
                                         null=True)
    expSignificative3 = models.CharField('Expérience Significative 3',
                                         max_length=500,
                                         blank=True,
                                         null=True)
    expSignificative4 = models.CharField('Expérience Significative 4',
                                         max_length=500,
                                         blank=True,
                                         null=True)
    expSignificative5 = models.CharField('Expérience Significative 5',
                                         max_length=500,
                                         blank=True,
                                         null=True)
    clientPrincipaux = models.ManyToManyField(
        client,
        blank=True,
        verbose_name='Clients Principaux',
        help_text='Idéalement en indiquer 5 et en ne dépassant pas les 10')
    listeCompetencesCles = models.ManyToManyField(
        competences, blank=True, verbose_name='Compétences Clés ')
    formation = models.ManyToManyField(
        obtentionFormation,
        blank=True,
        verbose_name='Formations & Certifications')
    parcours = RichTextField(default='', blank=True)
    methodologie = models.ManyToManyField(Methodo,
                                          blank=True,
                                          verbose_name='Méthodologies')
    langues = models.ManyToManyField(
        LanguesParlee,
        blank=True,
        help_text='Obligatoire, indiquez le niveau d’anglais')
    outilsCollaborateur = models.ManyToManyField(outils,
                                                 blank=True,
                                                 verbose_name='Outils')
    estEnIntercontrat = models.BooleanField(default=False)
    updated = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.nomCollaborateur + "-" + self.prenomCollaborateur

    def get_absolute_url(self):
        return "/consultant/%i/" % self.id

    class Meta:
        verbose_name = 'Consultant'
コード例 #26
0
class Post(models.Model):
    body = RichTextField(blank=True, null=True)
コード例 #27
0
ファイル: models.py プロジェクト: alliocha1805/DCThemis
class experiences(models.Model):
    missionThemis = models.BooleanField(
        'Mission Thémis',
        default=True,
        help_text=
        "Décochez la coche, s’il s’agit d’une mission pour le compte d’une autre société"
    )
    nomMission = models.CharField(
        'Niveau d’intervention',
        max_length=300,
        help_text=
        "Indiquez le poste occupé par le consultant lors de l’intervention ex : (Consultant BI)"
    )
    dateDebut = models.DateField('date de début de mission')
    dateFin = models.DateField('date de fin de mission', blank=True, null=True)
    client = models.ForeignKey(client, on_delete=models.CASCADE, null=True)
    employeur = models.CharField(
        'Employeur lors de l’intervention',
        max_length=300,
        default='',
        blank=True,
        help_text=
        " Dans le cas où la coche « Mission Thémis » est décochée, merci d’indiquer pour le compte de quelle société avez-vous effectué cette intervention ?"
    )
    mandataire = models.CharField(
        max_length=300,
        default='',
        blank=True,
        help_text=
        "Si vous êtes passez par un intermédiaire, merci d’indiquer le nom de la société sous-traitante (ex :Eugena)"
    )
    service = models.CharField(
        'Direction ou Service Client',
        max_length=300,
        default='',
        blank=True,
        help_text=
        'Indiquez la Direction ou le Service du client dans lequel le consultant est intervenu'
    )
    contactClient1 = models.TextField(default='', blank=True)
    contactClient2 = models.TextField(default='', blank=True)
    resumeIntervention = RichTextField('Contexte de l’intervention',
                                       default='',
                                       blank=True)
    descriptifMission = RichTextField(
        'Descriptif de la mission',
        default='',
        blank=True,
        help_text='Décrire l’intervention en détail')
    environnementMission = RichTextField('Environnement Technique',
                                         default='',
                                         blank=True,
                                         null=True)
    pourcentageIntervention = models.IntegerField(
        'Pourcentage du temps passé en intervention',
        default=100,
        validators=[MaxValueValidator(100),
                    MinValueValidator(1)],
        blank=True)
    collaborateurMission = models.ForeignKey(
        collaborateurs,
        on_delete=models.CASCADE,
        default='',
        verbose_name='Collaborateur',
        help_text=
        'Utilisez la liste pour rattacher le collaborateur à la mission')
    projetDeLaMission = models.ForeignKey(projet,
                                          on_delete=models.SET_NULL,
                                          default='',
                                          null=True,
                                          verbose_name='Projet de la mission',
                                          blank=True)

    def __str__(self):
        return self.nomMission

    def get_absolute_url(self):
        collab = self.collaborateurMission.id
        return "/consultant/%i/" % collab

    class Meta:
        verbose_name = 'Intervention'
コード例 #28
0
ファイル: models.py プロジェクト: Illuzzion/simple_shop
class Product(models.Model):
    name = models.CharField(max_length=150,
                            verbose_name='Название товара',
                            unique=True,
                            db_index=True)
    slug = models.SlugField(max_length=150, unique=True, db_index=True)

    category = models.ForeignKey(Category,
                                 verbose_name="Категория",
                                 related_name='products',
                                 on_delete=models.CASCADE)
    article = models.CharField(max_length=50,
                               blank=True,
                               verbose_name='Артикул')

    short_description = RichTextField(blank=True,
                                      verbose_name='Краткое описание')
    description = RichTextField(blank=True, verbose_name='Полное описание')

    image = models.ImageField(upload_to='products/',
                              blank=True,
                              verbose_name='Главная картинка')
    weight = models.IntegerField(default=0,
                                 blank=True,
                                 verbose_name='Вес товара')

    available = models.BooleanField(default=True,
                                    verbose_name="Доступен для заказа")
    sort_weight = models.PositiveIntegerField(
        default=0, verbose_name='Вес для сортировки')

    created = models.DateTimeField(verbose_name="Дата добавления товара",
                                   auto_now_add=True,
                                   null=True)
    updated = models.DateTimeField(auto_now=True,
                                   verbose_name='Дата изменения товара')

    owner = models.ForeignKey(User,
                              related_name='products',
                              verbose_name='Товар добавил',
                              on_delete=models.CASCADE)

    # поле доступное через менеджер
    # https://djbook.ru/rel1.9/topics/db/managers.html
    # objects = models.Manager()
    # availabled = AvailableManager()

    def showimg(self):
        if self.image:
            return "<img src='{path}' style='max-height:100px;'>".format(
                path=self.image.url)
        else:
            return "no image"

    showimg.short_description = 'Изображение'
    showimg.allow_tags = True

    class Meta:
        verbose_name = 'Товар'
        verbose_name_plural = "Товары"
        ordering = ('-sort_weight', '-id')

        index_together = [['id', 'slug']]

    def __str__(self):
        return self.name
コード例 #29
0
ファイル: models.py プロジェクト: Wangyans-git/django__mall
class Product(models.Model):
    """商品"""
    uid = models.UUIDField('商品id', default=uuid.uuid4, editable=False)  # 不能编写
    name = models.CharField('商品名称', max_length=128)
    desc = models.CharField('简单描述', max_length=256, null=True, blank=True)
    # content = models.TextField('商品描述')
    # 富文本
    content = RichTextField('商品描述')

    type = models.SmallIntegerField('商品类型',
                                    choices=constants.PRODUCT_TYPE_CHOICES,
                                    default=constants.PRODUCT_TYPE_ACTUAL)
    price = models.IntegerField('兑换价格(积分兑换)')
    origin_price = models.FloatField('原价')
    img = models.ImageField('主图', upload_to='%Y%m/product')
    buy_link = models.CharField('购买链接', max_length=256, null=True, blank=True)
    reorder = models.SmallIntegerField('排序', default=1)
    status = models.SmallIntegerField('商品状态',
                                      default=constants.PRODUCT_STATUS_OFF,
                                      choices=constants.PRODUCT_STATUS_CHOICES)
    sku_count = models.IntegerField('库存', default=0)
    remain_count = models.IntegerField('剩余库存', default=0)
    vies_count = models.IntegerField('浏览次数', default=0)
    score = models.FloatField('商品的评分', default=10.0)

    is_valid = models.BooleanField('是否有效', default=True)

    creat_at = models.DateTimeField('创建时间', auto_now_add=True)
    updated_at = models.DateTimeField('最后修改时间', auto_now_add=True)

    tags = models.ManyToManyField(
        Tag,
        verbose_name='标签',
        related_name='tags',
        # null=True,
        blank=True)
    classes = models.ManyToManyField(
        Classify,
        verbose_name='分类',
        related_name='classes',
        # null=True,
        blank=True)

    banners = GenericRelation(
        ImageFile,
        verbose_name='banner图',
        related_query_name='banners',
    )

    class Meta:
        db_table = 'mall_product'
        ordering = ['-reorder']
        verbose_name = '商品信息'
        verbose_name_plural = '商品信息'

    def update_store_count(self, count):
        """
        更改商品的库存信息
        :param count:
        :return:
        """
        self.remain_count = F('ramain_count') - abs(count)

    def __str__(self):
        return self.name
コード例 #30
0
class BlogPost1(models.Model):
    STATUS_CHOICES = (('draft', 'Draft'), ('published', 'Published'))
    title = models.CharField(max_length=256)
    slug = models.SlugField(max_length=264, unique_for_date='publish')
    author = models.ForeignKey(User,
                               on_delete=models.CASCADE,
                               related_name='blog_post')
    body = RichTextField(blank=True, null=True)
    publish = models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)
    update = models.DateTimeField(auto_now=True)
    TotalView = models.IntegerField(default=0)
    Likes = models.ManyToManyField(User,
                                   default=[0],
                                   blank=True,
                                   related_name='liked')
    Dis_Likes = models.ManyToManyField(User,
                                       default=[0],
                                       blank=True,
                                       related_name='unliked')
    status = models.CharField(max_length=10,
                              choices=STATUS_CHOICES,
                              default='draft')
    objects = CustomManager()
    tags = TaggableManager()

    class Meta:
        ordering = ('-publish', )

    def __str__(self):
        return self.title

    def total_likes(self):
        return self.Likes.count()

    def total_dislikes(self):
        return self.Dis_Likes.count()

    def get_absolute_url(self):
        lk = 0
        dis = 0
        return reverse('dashboard_url',
                       args=[
                           self.publish.year,
                           self.publish.strftime('%m'),
                           self.publish.strftime('%d'), self.slug, lk, dis
                       ])

    def get_url(self):
        lk = 1
        dis = 0
        return reverse('dashboard_url',
                       args=[
                           self.publish.year,
                           self.publish.strftime('%m'),
                           self.publish.strftime('%d'), self.slug, lk, dis
                       ])

    def get_url_dis(self):
        lk = 0
        dis = 1
        return reverse('dashboard_url',
                       args=[
                           self.publish.year,
                           self.publish.strftime('%m'),
                           self.publish.strftime('%d'), self.slug, lk, dis
                       ])