class Contact(models.Model): """ Contact Information """ address = RichTextField( help_text="Elizabeth St, Melbourne 1202 Australia.") maps_src = models.CharField( blank=True, null=True, max_length=256, help_text="iframe src link from google maps embed") description = RichTextField(blank=True, null=True, help_text="Contact Us Section Description") whatsapp = models.CharField(blank=True, null=True, max_length=30, help_text="Whatsapp mobile no. +9188xxxxxx") whatsapp_text = models.TextField( blank=True, null=True, help_text="Whatsapp default message template.") is_background_dark = models.BooleanField( default=False, help_text="Is the selected background color dark ?") is_active = models.BooleanField(default=True) def save(self, *args, **kwargs): if self.is_active: Contact.objects.filter(is_active=True).update(is_active=False) super(Contact, self).save(*args, **kwargs) def __str__(self) -> str: return format_html('{}'.format(self.address)) class Meta: db_table = "tbl_contacts"
class Post(models.Model): title = models.CharField(max_length=50) lead = RichTextField(field_settings='mini') content = RichTextField() def __str__(self): return self.title
class Competition(models.Model): title = models.CharField(max_length=250) slug = models.SlugField() summary = models.TextField() image = models.ImageField() categories = models.TextField() description = RichTextField() terms_conditions = RichTextField() start = models.DateField() finish = models.DateField() finals = models.DateField() organizer = models.CharField(max_length=250) email = models.EmailField(max_length=250) def is_open(self): now = timezone.now() return now > self.start and now < self.finish def has_finals(self): now = timezone.now() return now > self.finals @property def categories_list(self): return self.categories.split(', ') def __str__(self): return "%s %s" % (self.finals, self.title)
class Empresa(models.Model): class Meta: verbose_name_plural = "Empreses" nom = models.CharField(max_length=255, unique=True) direccio = RichTextField() poblacio = models.CharField(max_length=255) cp = models.CharField(max_length=5) telefon = models.IntegerField() email = models.EmailField() web = models.URLField(blank=True) # loc inicial al mar, enfront al Maresme (2.6875,41.5600) localitzacio = gismodels.PointField(blank=True, default=Point(2.6875, 41.5600)) descripcio = RichTextField(blank=True) # usuaris administradors admins = models.ManyToManyField(User, blank=True, related_name="empreses_admin") # logo imatge = models.ImageField(upload_to='imatgesCentre', blank=True) # empreses adscrites a centres educatius adscripcio = models.ManyToManyField( Centre, blank=True, related_name="empreses", symmetrical=False, help_text="Centres educatius als que està adscrita l'empresa. ") def __str__(self): return self.nom
class Activity(models.Model): '''社團舉辦的活動,所有學生都能參加''' name = models.CharField(max_length=200) # 活動名稱 begin = models.DateTimeField(auto_now=False) # 起始時日 end = models.DateTimeField(auto_now=False) # 終了時日 deadline = models.DateTimeField(auto_now=False) # 報名截止時日 principal = models.ForeignKey(Member, on_delete=models.CASCADE) # 活動負責人學號 club = models.ForeignKey(Club, on_delete=models.CASCADE) # 主辦社團 content = RichTextField() # 活動內容 site = models.CharField(max_length=40) # 活動場地 contact = models.TextField() # 聯絡方式 fee = models.IntegerField() # 參加費用 meal = models.BooleanField(default=False) # 是否供餐 insure = models.BooleanField(default=True) # 是否保險 note = RichTextField() # 備註 log_add_time = models.DateTimeField(auto_now_add=True) # 活動紀錄建立時間 timestamp = models.DateTimeField(auto_now=True) # 活動內容變更-時間戳記 is_activate = models.BooleanField(default=True) class Meta: ordering = ['-timestamp'] permissions = ( ("can_view", "Can view Activity"), ("can_add", "Can add Activity"), ("can_edit", "Can edit Activity"), ("can_close", "Can close Activity"), ("can_delete", "Can delete Activity"), ) def __str__(self): return self.name
class institution(models.Model): #need to change function and additional information to TextField name = models.CharField(max_length=200) name_korean = models.CharField(max_length=200) tripartite_tag = models.CharField( max_length=200, blank=True) #replace iwth foreign key when able function_tags = models.ManyToManyField(dprk_institution_tag, blank=True) function = RichTextField(null=True, blank=True) additional_figures = RichTextField(null=True, blank=True) organization_structure = RichTextField(null=True, blank=True) additional_information = RichTextField(null=True, blank=True) sources_add = RichTextField( null=True, blank=True, default= '''<a href="https://nkinfo.unikorea.go.kr/nkp/main/portalMain.do">[1]</a> Ministry of Unification, '2019년 북한 기관별 인명록' 2018-12-27' Party of Korea (WPK)''' ) update_date = models.DateField(auto_now=True) class Meta: ordering = ('name', ) def __str__(self): return self.name def get_absolute_url(self): return (reverse('institution_detail', args=[str(self.name)]))
def test_sanitizer_handles_none(self): """ value_from_datadict doesn't sanitize None values """ field = RichTextField(blank=True, null=True) try: field.clean(None, None) except Exception: raise AssertionError('Expected no errors')
class Question(PolymorphicModel): title = models.CharField(max_length=300, null=True, blank=True) text = RichTextField(null=True, blank=True) answer = models.TextField(null=True, blank=True) max_submission_allowed = models.IntegerField(default=5, blank=True) tutorial = RichTextField(null=True, blank=True) time_created = models.DateTimeField(auto_now_add=True) time_modified = models.DateTimeField(auto_now=True) author = models.ForeignKey(MyUser, on_delete=models.SET_NULL, null=True, blank=True) category = models.ForeignKey(QuestionCategory, on_delete=models.SET_NULL, null=True, blank=True) difficulty = models.CharField(max_length=100, choices=DIFFICULTY_CHOICES, default="EASY") event = models.ForeignKey(Event, on_delete=models.CASCADE, related_name='question_set', null=True, blank=True, db_index=True) is_verified = models.BooleanField(default=False) grader = None @property def type_name(self): return self._meta.verbose_name def __str__(self): return "{} ({})".format(self.type_name, self.id) @property def token_value(self): return get_token_value(self.category, self.difficulty) @property def success_rate(self): total_tried = self.user_junctions.annotate( Count('submissions')).filter(submissions__count__gt=0).count() total_solved = self.user_junctions.filter(is_solved=True).count() if total_tried == 0: return 0 return total_solved / total_tried def save(self, *args, **kwargs): super().save(*args, **kwargs) ensure_uqj(None, self)
class Post(models.Model): title = models.CharField(max_length=50) lead = RichTextField(field_settings='mini') content = RichTextField() def get_absolute_url(self): return reverse('post_detail', kwargs={'pk': self.pk}) def get_add_comment_url(self): return reverse('post_add_comment', kwargs={'pk': self.pk}) def __str__(self): return self.title
class LowonganKerja(models.Model): DAERAH_CHOICES = [('JKT', 'Jakarta'), ('JABAR', 'Jawa Barat'), ('JATENG', 'Jawa Tengah'), ('JATIM', 'Jawa Timur')] daerah = models.CharField(max_length=short_text, choices=DAERAH_CHOICES) posisi = models.CharField(max_length=long_text) kota = models.CharField(max_length=short_text) jenis = models.CharField(max_length=short_text) persyaratan = RichTextField(field_settings='advanced') tanggung_jawab = RichTextField(field_settings='advanced') def __str__(self): return self.posisi + " " + self.kota class Meta: verbose_name_plural = "Lowongan Kerja"
class Checklist(models.Model): title = models.CharField(max_length=100) # https://pypi.org/project/django-richtextfield/ - to store rich text in database [ GitHub: https://github.com/jaap3/django-richtextfield ] content = RichTextField() date_posted = models.DateTimeField(default=timezone.now) author = models.ForeignKey(User, on_delete=models.CASCADE) visibility = models.PositiveIntegerField(default=0) category = models.ForeignKey("Category", null=True, on_delete=models.SET_NULL) is_draft = models.BooleanField(default=False) def __str__(self): return self.title def get_absolute_url(self): return reverse("checklist-detail", kwargs={"pk": self.id}) @classmethod def get_checklists(cls, is_draft=False, author=None): if author is None: return cls.objects.filter( is_draft=is_draft).order_by("-date_posted") else: return Checklist.objects.filter( author=author, is_draft=is_draft).order_by("-date_posted")
class Club_apply(models.Model): '''學生加入/退出社團申請書''' student = models.ForeignKey("users_mgt.Student", on_delete=models.CASCADE) # 學生學號 club = models.ForeignKey(Club, on_delete=models.CASCADE) # 申請社團 IO_CHOICES = ((True, '入社'), (False, '退社')) in_out = models.BooleanField(verbose_name="申請入社or退社", choices=IO_CHOICES, default=True) reason = RichTextField(blank=False, null=False) # 申請原因說明 text1 = models.TextField(blank=True, null=True) # 其他欄位1 text2 = models.TextField(blank=True, null=True) # 其他欄位2 bool1 = models.BooleanField() # 布林值1 bool2 = models.BooleanField() # 布林值2 # text1, text2, bool1, bool2 作為各社團申請書中的自定義項(例如填入推薦人,或是否參與比賽...) log_add_time = models.DateTimeField(auto_now_add=True) # log建立時間 timestamp = models.DateTimeField(auto_now=True) # 紀錄變更-時間戳記(若有變更) BOOL_CHOICES = ((True, '是'), (False, '否')) is_permitted = models.BooleanField(verbose_name="是否通過申請?", choices=BOOL_CHOICES, default=False) #是否已經處理過 class Meta: ordering = ['-timestamp'] permissions = ( ("can_view", "Can view Club_apply"), ("can_add", "Can add Club_apply"), ("can_edit", "Can edit Club_apply"), ("can_delete", "Can delete Club_apply"), ) def __str__(self): strings = [self.student, self.club] return '$'.join(strings)
class Club(models.Model): name = models.CharField(max_length=20, verbose_name="社團名字(中文)", unique=True) # 社團名字(中文) name_eng = models.CharField(max_length=50, verbose_name="社團名字(英文)", blank=True, null=True, unique=True) # 社團名字(英文) leader = models.ForeignKey("users_mgt.Student", on_delete=models.CASCADE, verbose_name="社長", blank=True, null=True) # 學生學號(負責人) teacher = models.ForeignKey("users_mgt.Teacher", on_delete=models.CASCADE, verbose_name="指導老師", blank=True, null=True) # 教師編號(指導老師) manager = models.ForeignKey("users_mgt.CustomUser", on_delete=models.CASCADE, verbose_name="社團中心負責人", blank=True, null=True) # 社團中心負責人 office = models.CharField(max_length=15, verbose_name="社辦", blank=True, null=True) # 社團辦公室 activity_place = models.CharField(max_length=50, blank=True, null=True, verbose_name="活動地點") # 活動地點 fee = models.IntegerField(blank=True, null=True, verbose_name="社費") # 社費 activity_time = models.TextField(blank=True, null=True, verbose_name="活動時間") # 活動時間 web = models.CharField(max_length=100, blank=True, null=True, verbose_name="粉專連結") # 粉專連結 contact = models.TextField(blank=True, null=True, verbose_name="聯絡資訊") # 聯絡資訊 info = RichTextField(blank=True, null=True, verbose_name="社團簡介") # 社團簡介 log_add_time = models.DateTimeField(auto_now_add=True) # 紀錄建立時間 timestamp = models.DateTimeField(auto_now=True) # 紀錄時間戳記 is_activate = models.BooleanField(default=True, verbose_name="社團運作中") class Meta: ordering = ['-timestamp'] permissions = ( ("can_view", "Can view Club"), ("can_add", "Can add Club"), ("can_edit", "Can edit Club"), ("can_close", "Can close Club"), ("can_delete", "Can delete Club"), ) def __str__(self): # return "_".join([self.name, self.timestamp]) return self.name
class Post(models.Model): author = models.ForeignKey(settings.AUTH_USER_MODEL, default=1, on_delete=models.CASCADE) title = models.CharField(max_length=255) slug = models.SlugField(allow_unicode=True, unique=True) keyword = models.CharField(max_length=255) category = models.ForeignKey(Category, on_delete=models.CASCADE) excerpt = models.TextField() content = RichTextField() image = models.ImageField(blank=True, null=True, height_field="height_field", width_field="width_field", upload_to='media') height_field = models.IntegerField(default=0) width_field = models.IntegerField(default=0) draft = models.BooleanField(default=False) publish = models.DateField(auto_now=False, auto_now_add=False) updated = models.DateTimeField(auto_now=True, auto_now_add=False) timestamp = models.DateTimeField(auto_now=False, auto_now_add=True) class Meta: ordering = ["-timestamp", "-updated"] def __str__(self): return self.title def get_message_as_markdown(self): return mark_safe(markdown(self.content, safe_mode='escape'))
class Recipe(models.Model): title = models.CharField(max_length=50, blank=False, null=True) created_at = models.DateField(auto_now_add=True) image = models.ImageField(upload_to='recipes', blank=False, null=True) description = models.TextField(blank=False) long_description = RichTextField('long description') category = models.ForeignKey('Category', on_delete=models.CASCADE, related_name='recipes', null=True) updated_at = models.DateTimeField(auto_now=True) owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name='recipes', default=1) view_count = models.PositiveIntegerField( 'View count', default=0) # checks how many ppl watched the recipe def __str__(self): return self.title class Meta: ordering = ('-created_at', ) verbose_name = 'Resept' verbose_name_plural = 'Reseptler'
def test_formfield_widget_passes_settings(self): """ Model field passes setting to widget """ settings = {'foo': True, 'bar': [1, 2, 3]} widget = RichTextField(field_settings=settings).formfield().widget self.assertEqual(widget.field_settings, settings)
class ContactUsModel(models.Model): """Contact Us Model for the site by User""" email = models.EmailField("Email", max_length=50, blank=True, validators=[EMAILREGEX]) first_name = models.CharField("First Name", max_length=40, validators=[NAMEREGEX], blank=True) last_name = models.CharField("Last Name", max_length=40, validators=[NAMEREGEX], blank=True, null=True) mobile_number = models.CharField("Mobile Number", max_length=16, blank=False, validators=[MOBILEREGEX]) message = RichTextField("message", blank=False) def __str__(self): return email class Meta: verbose_name_plural = "Post Contact Us"
class Project(models.Model): ProjectStatusChoices = [('Testing', 'Testing'), ('Deployed', 'Deployed'), ('Production', 'Production'), ('Development', 'Development'), ('Scrapped', 'Scrapped'), ('Finished', 'Finished')] name = models.CharField(max_length=50, unique=True) wiki = RichTextField(blank=True, null=True) timestamp = models.DateTimeField(default=datetime.now, blank=True, null=True) creator = models.ForeignKey(User, on_delete=models.CASCADE, related_name='creator') link = models.URLField(default='', blank=True, null=True) members = models.ManyToManyField(User, related_name='project_member_related', related_query_name='project_member', blank=True) status = models.CharField(max_length=20, choices=ProjectStatusChoices, default="Testing", blank=True, null=True) def __str__(self): return self.name def get_latest_projects(): return Project.objects.order_by('-timestamp').all()[:5] class Meta: ordering = ['-timestamp']
class SermonBiblePassage(UUIDModel): UNKNOWN = 0 PROPHECY = 1 PSALM = 2 EPISTLE = 3 GOSPEL = 4 OTHER = 5 TYPE_CHOICES = { (PROPHECY, "PROPHECY (or other Old Testament)"), (PSALM, "PSALM"), (EPISTLE, "EPISTLE (or Acts / Revelation)"), (GOSPEL, "GOSPEL"), (OTHER, "OTHER"), } sermon = models.ForeignKey("Sermon", verbose_name="Sermon", on_delete=models.CASCADE, null=False) type = models.IntegerField(default=UNKNOWN, choices=TYPE_CHOICES, null=False, blank=False) passage = models.CharField(max_length=256, blank=False, null=False) text = models.TextField(blank=False, null=False) html = RichTextField(blank=False, null=False) version = models.CharField( choices=zip(BibleVersions.VERSIONS.keys(), BibleVersions.VERSIONS.keys()), blank=True, null=True, max_length=256, )
class Project(models.Model): user = models.ForeignKey(User, related_name='project_user', on_delete=models.CASCADE) name = models.CharField(max_length=100) wiki = RichTextField() date = models.DateTimeField(auto_now_add=True) version = models.DecimalField(max_digits=4, decimal_places=2) members = models.ManyToManyField(User, related_name='member_user') logo = models.ImageField(upload_to='./project_media/logo', null=True) def __str__(self): return self.name def no_of_issues(self): length = len(Issue.objects.filter(project=self)) return length def members_detail(self): members = [] for user in self.members.all(): member = {} member['id'] = user.id member['name'] = user.first_name + ' ' + user.last_name member['profile'] = user.profile members.append(member) return members class Meta: ordering = ['-pk']
class Service(models.Model): """ Services Config """ title = models.CharField(max_length=256, help_text="Service Title") image = models.ImageField(blank=True, null=True, help_text="Service Image", upload_to='assets/images/services/') description = RichTextField(blank=True, null=True, help_text="Service Description") icon_class = models.CharField( blank=True, null=True, max_length=100, help_text= "Choose from https://lineicons.com/icons/ (lni lni-whatsapp) or https://fontawesome.com/icons?d=gallery&m=free (fas fa-whatsapp)" ) is_published = models.BooleanField(db_index=True, default=False) order = models.PositiveIntegerField(default=0, blank=False, null=False) def __str__(self) -> str: return '{}'.format(self.title) class Meta: ordering = ('order', ) db_table = "tbl_services"
class Package(models.Model): """ Package Information & Pricing """ title = models.CharField(max_length=256, help_text="Product Title") image = models.ImageField(blank=True, null=True, help_text="Package Image", upload_to='assets/images/package/') original_price = models.CharField(max_length=50, blank=True, null=True, help_text="Strike through price") pre_discount_price_text = RichTextField( blank=True, null=True, help_text="Text which appears before Product Price") discount_price = models.CharField(max_length=50, help_text="Product Price") is_published = models.BooleanField(db_index=True, default=False) order = models.PositiveIntegerField(default=0, blank=False, null=False) def __str__(self) -> str: return '{} - {}'.format(self.title, self.original_price) class Meta: ordering = ('order', ) db_table = "tbl_packages"
class Issue(models.Model): title = models.CharField(max_length=127) description = RichTextField(blank=True) project = models.ForeignKey(Project, on_delete=models.CASCADE) reporter = models.ForeignKey(User, on_delete=models.CASCADE, related_name='issue_creator') tags = models.ManyToManyField(Tag, blank=True) status = models.ForeignKey(IssueStatus, default=IssueStatus.get_default_issue_status, null=True, on_delete=models.SET_NULL) assigned_to = models.ForeignKey(User, blank=True, null=True, related_name='issue_asignee', on_delete=models.SET_NULL) timestamp = models.DateTimeField() def __str__(self): return "%s - %s" % (self.title, self.project) def get_latest_issues(): return Issue.objects.order_by('-timestamp').all()[:5] class Meta: ordering = ['-timestamp']
class ItemTwoColumn(models.Model): """items with 2 columns: image + text""" title = models.CharField( max_length=200, blank=True, null=True, ) img = models.ImageField( verbose_name='Single Image', upload_to=get_img_path, blank=True, null=True ) content = RichTextField() url = models.CharField( max_length=200, blank=True, null=True, ) url_text = models.CharField( max_length=200, blank=True, null=True, ) create_time = models.DateTimeField(auto_now_add=True)
class UserApplyJob(models.Model): """Jobseeker Apply job Model""" user = models.ForeignKey( MyUser, on_delete=models.CASCADE, related_name='user_favourite', ) job = models.ForeignKey( JobManagement, on_delete=models.CASCADE, related_name="company_job", ) hire_question = RichTextField("why_should_we_hire_you", blank=True, null=True) resume = models.URLField("user_resume", blank=True, null=True) is_favourite = models.BooleanField(default=False) is_apply = models.BooleanField(default=False) is_accepted = models.BooleanField(default=False) is_approved = models.BooleanField(default=False) job_seeker_is_completed = models.BooleanField(default=False) employer_is_completed = models.BooleanField(default=False) def __str__(self): return self.user.email class Meta: verbose_name_plural = "User Apply Job"
class Sermon(UUIDModel): title = models.CharField(max_length=255, verbose_name="Sermon title", help_text="Sermon Title") location = models.ForeignKey("SermonLocation", null=True, blank=True, on_delete=models.SET_NULL) file = models.FileField( verbose_name="File", help_text="The sermon in Microsoft Word or text format", blank=True, null=True ) text = models.TextField(verbose_name="Text", help_text="The full content of the sermon", blank=True, null=True) content = RichTextField( verbose_name="Formatted Content", help_text="The formatted content of the sermon", blank=True, null=True ) summary = models.TextField(verbose_name="Summary", help_text="A summary of the sermon", blank=True, null=True) auto_summary = models.TextField( verbose_name="Auto-summary", help_text="An auto-generated summary of the sermon", blank=True, null=True ) notes = models.TextField(verbose_name="Notes", help_text="Publicly displayed Notes", blank=True, null=True) private_notes = models.TextField( verbose_name="Notes (private)", help_text="Notes (Internal only)", blank=True, null=True ) primary_date_and_time_given = models.DateTimeField( verbose_name="Date and Time Given", help_text="The primary date given (used for sorting). More than one date and time can be added on the date and time tab", null=True, blank=True, ) # tags = TaggableManager() def save(self, *args, **kwargs): self.auto_summary = self.getSummary() return super().save(*args, **kwargs) def __str__(self): return "{} - {} - {}".format(self.title, self.primary_date_and_time_given, self.location)
class Project(models.Model): project_name = models.CharField(max_length=200) wiki = RichTextField() project_members = models.ManyToManyField(User) class Meta: ordering = ['project_name']
class Bug(models.Model): STATUS_CHOICES = (("P", "Pending"), ("R", "Resolved"), ("T", "To be Discussed")) def __str__(self): return self.name project = models.ForeignKey(Project, related_name="bugs", on_delete=models.CASCADE) creator = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="bugs", on_delete=models.CASCADE) name = RichTextField(blank=True) description = models.CharField(max_length=200, blank=True) issued_at = models.DateTimeField("Creation Time", auto_now_add=True) status = models.CharField(max_length=100, choices=STATUS_CHOICES) important = models.BooleanField(default=False) assigned_to = models.ForeignKey(User, related_name="issues_assigned_to_users", on_delete=models.SET_NULL, blank=True, null=True) domain = models.CharField(choices=(('f', 'frontend'), ('b', 'backend'), ('o', 'other')), max_length=100, null=True, blank=True) class Meta: ordering = ['-issued_at']
class News(models.Model): author = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.CASCADE ) title = models.CharField(max_length=150) description = RichTextField(blank=True,null=True) date = models.DateTimeField(default=datetime.now, blank=True) publish_date = models.DateTimeField(default=datetime.now, blank=True) slug = models.SlugField( default='', editable=False, ) is_published=models.BooleanField(default=False) def get_first_image(self): return self.images.first() def get_absolute_url(self): kwargs = { 'pk': self.id, 'slug': self.slug } return reverse('article-pk-slug-detail', kwargs=kwargs) def save(self, *args, **kwargs): value = self.title self.slug = slugify(value, allow_unicode=True) super().save(*args, **kwargs)
class Programs(models.Model): title = models.CharField(max_length=200, verbose_name='titleProg') storyPrograms = RichTextField() previewPrograms = models.ImageField(upload_to='', verbose_name='Каритинка 260х180') slug = models.SlugField(unique=True, verbose_name='URL') languegesPrograms = models.TextField( default='', verbose_name='языки которые поддерживает программа') demandPrograms = models.TextField(default='', verbose_name='Требования') memoryPrograms = models.TextField(default='', verbose_name='Место, на жестком диске') uploadPrograms = models.TextField(default='', verbose_name='Сыллка с установкой') date = models.DateTimeField(auto_now=True) class Meta: ordering = ['-date'] verbose_name = 'Программы' verbose_name_plural = 'Программы' def __unicode__(self): return self.title def __str__(self): return self.title def get_absolute_url(self): return "/programms/%s/" % (self.slug)