class Meta: model = Note fields = ['text'] labels = {'text': ''} widgets = {'text': RichTextField()}
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
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}"
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
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
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
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
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)
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, ), ]
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)
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', ]
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)
class Post(models.Model): Titulo = models.CharField(max_length=230) conteudo = RichTextField()
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)
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
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)
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
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)
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 '/'."))
class BaiViet(models.Model): title = models.CharField(max_length=200) slug = models.SlugField(unique=True) content = RichTextField()
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
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"]
class About(models.Model): aboutus = RichTextField() def __str__(self): return self.pk
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")
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'
class Post(models.Model): body = RichTextField(blank=True, null=True)
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'
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
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
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 ])