[Django Homepage] jone models.py
from django.db import models
from ckeditor.fields import RichTextField
from ckeditor_uploader.fields import RichTextUploadingField
from filer.fields.image import FilerImageField
from filer.fields.file import FilerFileField
from django.shortcuts import get_object_or_404
from django.utils import timezone
from django.contrib.auth.models import User
from crum import get_current_user
from datetime import date
from .utils import send_sms
import logging
logger = logging.getLogger('appName')
# Define code
STATUS = (
(1, 'Active'),
(2, 'Inactive'),
)
CODE_CATEGORY = (
(1, 'Category1'),
(2, 'Category2'),
(3, 'Category3'),
(4, 'Category4'),
(5, 'Category5'),
)
YESNO = (
(1, 'YES'),
(2, 'NO'),
)
# Define model
class Codegroup(models.Model):
code_group_ko = models.CharField(max_length=500)
code_group_en = models.CharField(max_length=500, blank=True)
description = models.TextField(blank=True)
status = models.IntegerField(choices=STATUS, default=1)
def __str__(self):
return self.code_group_ko
class Code(models.Model):
code_group = models.ForeignKey(Codegroup, on_delete=models.PROTECT, related_name='code_code_group', blank=True, null=True)
code_ko = models.CharField(max_length=500)
code_en = models.CharField(max_length=500, blank=True)
description = models.TextField(blank=True)
display_order = models.IntegerField(default=0, blank=True)
category = models.IntegerField(choices=CODE_CATEGORY, default=1)
default = models.IntegerField(choices=YESNO, default=2)
status = models.IntegerField(choices=STATUS, default=1)
def __str__(self):
return self.code_ko
class Content(models.Model):
content_type = models.ForeignKey(Code, on_delete=models.PROTECT, limit_choices_to={'code_group': get_object_or_404(Codegroup, code_group_en='content_type').id}, related_name='content_content_type', blank=True, null=True)
content_type1 = models.ForeignKey(Code, on_delete=models.PROTECT, limit_choices_to={'code_group': get_object_or_404(Codegroup, code_group_en='content_type1').id}, related_name='content_content_type1', blank=True, null=True)
name = models.CharField(max_length=500)
title = models.CharField(max_length=500, blank=True)
short_description = models.TextField(blank=True)
long_description = models.TextField(blank=True)
category = models.ForeignKey(Code, on_delete=models.PROTECT, limit_choices_to={'code_group': get_object_or_404(Codegroup, code_group_en='category').id}, related_name='content_category', blank=True, null=True)
process = models.ForeignKey(Code, on_delete=models.PROTECT, limit_choices_to={'code_group': get_object_or_404(Codegroup, code_group_en='process').id}, related_name='content_process', blank=True, null=True)
class_level = models.ForeignKey(Code, on_delete=models.PROTECT, limit_choices_to={'code_group': get_object_or_404(Codegroup, code_group_en='class_level').id}, related_name='content_class_level', blank=True, null=True)
university_line = models.ForeignKey(Code, on_delete=models.PROTECT, limit_choices_to={'code_group': get_object_or_404(Codegroup, code_group_en='university_line').id}, related_name='content_university_line', blank=True, null=True)
datetime = models.DateTimeField(default=timezone.now)
location = models.CharField(max_length=500, blank=True)
component = models.ForeignKey(Code, on_delete=models.PROTECT, limit_choices_to={'code_group': get_object_or_404(Codegroup, code_group_en='component').id}, related_name='content_component', blank=True, null=True)
url_type = models.ForeignKey(Code, on_delete=models.PROTECT, limit_choices_to={'code_group': get_object_or_404(Codegroup, code_group_en='url_type').id}, related_name='content_url_type', blank=True, null=True)
url = models.CharField(max_length=500, blank=True)
url_parameter = models.CharField(max_length=500, blank=True)
display_order = models.IntegerField(default=0, blank=True)
query_count = models.IntegerField(default=0, blank=True)
status = models.IntegerField(choices=STATUS, default=1)
content_body = RichTextUploadingField(blank=True, null=True)
image1 = FilerImageField(on_delete=models.PROTECT, null=True, blank=True, related_name="content_image1")
image2 = FilerImageField(on_delete=models.PROTECT, null=True, blank=True, related_name="content_image2")
image3 = FilerImageField(on_delete=models.PROTECT, null=True, blank=True, related_name="content_image3")
image4 = FilerImageField(on_delete=models.PROTECT, null=True, blank=True, related_name="content_image4")
image5 = FilerImageField(on_delete=models.PROTECT, null=True, blank=True, related_name="content_image5")
file1 = FilerFileField(on_delete=models.PROTECT, null=True, blank=True, related_name="content_file1")
file2 = FilerFileField(on_delete=models.PROTECT, null=True, blank=True, related_name="content_file2")
file3 = FilerFileField(on_delete=models.PROTECT, null=True, blank=True, related_name="content_file3")
text1 = models.CharField(max_length=500, blank=True)
text2 = models.CharField(max_length=500, blank=True)
text3 = models.CharField(max_length=500, blank=True)
int1 = models.IntegerField(default=0, blank=True)
int2 = models.IntegerField(default=0, blank=True)
int3 = models.IntegerField(default=0, blank=True)
creator = models.ForeignKey(User, on_delete=models.PROTECT, related_name='content_creator', null=True, blank=True)
modifier = models.ForeignKey(User, on_delete=models.PROTECT, related_name='content_modifier', null=True, blank=True)
created = models.DateTimeField(default=timezone.now)
modified = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.name
def save(self, *args, **kwargs):
''' On save, update timestamps '''
user = get_current_user()
if not self.id:
self.created = timezone.now()
try:
self.creator = user
except:
self.creator = self.creator
self.modified = timezone.now()
try:
self.modifier = user
except:
self.modifier = self.modifier
return super(Content, self).save(*args, **kwargs)
class Related(models.Model):
content = models.ForeignKey(Content, on_delete=models.PROTECT, related_name='related_content', blank=True, null=True)
name = models.CharField(max_length=500)
title = models.CharField(max_length=500, blank=True)
short_description = models.TextField(blank=True)
long_description = models.TextField(blank=True)
category = models.ForeignKey(Code, on_delete=models.PROTECT, limit_choices_to={'code_group': get_object_or_404(Codegroup, code_group_en='category').id}, related_name='related_category', blank=True, null=True)
process = models.ForeignKey(Code, on_delete=models.PROTECT, limit_choices_to={'code_group': get_object_or_404(Codegroup, code_group_en='process').id}, related_name='related_process', blank=True, null=True)
class_level = models.ForeignKey(Code, on_delete=models.PROTECT, limit_choices_to={'code_group': get_object_or_404(Codegroup, code_group_en='class_level').id}, related_name='related_class_level', blank=True, null=True)
university_line = models.ForeignKey(Code, on_delete=models.PROTECT, limit_choices_to={'code_group': get_object_or_404(Codegroup, code_group_en='university_line').id}, related_name='related_university_line', blank=True, null=True)
datetime = models.DateTimeField(default=timezone.now)
location = models.CharField(max_length=500, blank=True)
component = models.ForeignKey(Code, on_delete=models.PROTECT, limit_choices_to={'code_group': get_object_or_404(Codegroup, code_group_en='component').id}, related_name='related_component', blank=True, null=True)
url_type = models.ForeignKey(Code, on_delete=models.PROTECT, limit_choices_to={'code_group': get_object_or_404(Codegroup, code_group_en='url_type').id}, related_name='related_url_type', blank=True, null=True)
url = models.CharField(max_length=500, blank=True)
url_parameter = models.CharField(max_length=500, blank=True)
display_order = models.IntegerField(default=0, blank=True)
query_count = models.IntegerField(default=0, blank=True)
status = models.IntegerField(choices=STATUS, default=1)
content_body = RichTextUploadingField(blank=True, null=True)
image1 = FilerImageField(on_delete=models.PROTECT, null=True, blank=True, related_name="related_image1")
image2 = FilerImageField(on_delete=models.PROTECT, null=True, blank=True, related_name="related_image2")
image3 = FilerImageField(on_delete=models.PROTECT, null=True, blank=True, related_name="related_image3")
image4 = FilerImageField(on_delete=models.PROTECT, null=True, blank=True, related_name="related_image4")
image5 = FilerImageField(on_delete=models.PROTECT, null=True, blank=True, related_name="related_image5")
file1 = FilerFileField(on_delete=models.PROTECT, null=True, blank=True, related_name="related_file1")
file2 = FilerFileField(on_delete=models.PROTECT, null=True, blank=True, related_name="related_file2")
file3 = FilerFileField(on_delete=models.PROTECT, null=True, blank=True, related_name="related_file3")
text1 = models.CharField(max_length=500, blank=True)
text2 = models.CharField(max_length=500, blank=True)
text3 = models.CharField(max_length=500, blank=True)
int1 = models.IntegerField(default=0, blank=True)
int2 = models.IntegerField(default=0, blank=True)
int3 = models.IntegerField(default=0, blank=True)
creator = models.ForeignKey(User, on_delete=models.PROTECT, related_name='related_creator', null=True, blank=True)
modifier = models.ForeignKey(User, on_delete=models.PROTECT, related_name='related_modifier', null=True, blank=True)
created = models.DateTimeField(default=timezone.now)
modified = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.name
def save(self, *args, **kwargs):
''' On save, update timestamps '''
user = get_current_user()
if not self.id:
self.created = timezone.now()
try:
self.creator = user
except:
self.creator = self.creator
self.modified = timezone.now()
try:
self.modifier = user
except:
self.modifier = self.modifier
return super(Related, self).save(*args, **kwargs)
class Smsrelated(models.Model):
content = models.ForeignKey(Content, on_delete=models.PROTECT, related_name='smsrelated_content', blank=True, null=True)
related = models.ForeignKey(Content, on_delete=models.PROTECT, related_name='smsrelated_related', blank=True, null=True)
name = models.CharField(max_length=100)
phone_number = models.CharField(max_length=11)
auth_number = models.CharField(max_length=4)
auth_flag = models.CharField(max_length=20)
marketing = models.BooleanField(default=True)
created = models.DateTimeField(default=timezone.now)
modified = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.name
def save(self, *args, **kwargs):
''' On save, update timestamps '''
if not self.id:
self.created = timezone.now()
self.modified = timezone.now()
return super(Smsrelated, self).save(*args, **kwargs)
class Userdb(models.Model):
phone_number = models.CharField(max_length=11)
auth_number = models.CharField(max_length=4)
auth_flag = models.CharField(max_length=20)
name = models.CharField(max_length=100)
school = models.CharField(max_length=500)
class_level = models.ForeignKey(Code, on_delete=models.PROTECT, limit_choices_to={'code_group': get_object_or_404(Codegroup, code_group_en='class_level').id}, related_name='userdb_class_level')
university_line = models.ForeignKey(Code, on_delete=models.PROTECT, limit_choices_to={'code_group': get_object_or_404(Codegroup, code_group_en='university_line').id}, related_name='userdb_university_line')
marketing = models.BooleanField(default=True)
created = models.DateTimeField(default=timezone.now)
modified = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.phone_number
def save(self, *args, **kwargs):
''' On save, update timestamps '''
if not self.id:
self.created = timezone.now()
self.modified = timezone.now()
return super(Userdb, self).save(*args, **kwargs)
class Authsms(models.Model):
phone_number = models.CharField(max_length=11)
auth_number = models.IntegerField()
auth_flag = models.IntegerField(choices=YESNO, default=2)
created = models.DateTimeField(default=timezone.now)
modified = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.phone_number
def save(self, *args, **kwargs):
''' On save, update timestamps '''
if not self.id:
self.created = timezone.now()
self.modified = timezone.now()
return super(Authsms, self).save(*args, **kwargs)
class Questiondb(models.Model):
QUESTION_STATUS = (
(1, '신청'),
(2, '통보'),
)
phone_number = models.CharField(max_length=11)
auth_number = models.CharField(max_length=4)
auth_flag = models.CharField(max_length=20)
name = models.CharField(max_length=100)
question = models.TextField(blank=True)
status = models.IntegerField(choices=QUESTION_STATUS, default=1)
created = models.DateTimeField(default=timezone.now)
modified = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.phone_number
def save(self, *args, **kwargs):
''' On save, update timestamps '''
if not self.id:
self.created = timezone.now()
self.modified = timezone.now()
sms_msg = '[1:1질문 신청] ' + self.name + '(' + self.phone_number + ') - ' + self.question
sms_receiver = Code.objects.filter(code_group__code_group_en='sms_receiver')
for receiver in sms_receiver:
# logger.info('[SMS] ' + receiver.code_en + ' : ' + receiver.code_ko)
send_sms(receiver.code_en, sms_msg)
return super(Questiondb, self).save(*args, **kwargs)
class Obslog(models.Model):
who_user = models.ForeignKey(User, on_delete=models.DO_NOTHING, related_name='obslog_what_user', null=True, blank=True) # user username
who_ip = models.CharField(max_length=50, blank=True, null=True) # ip address
who_useragent = models.CharField(max_length=500, blank=True, null=True) # usergent full string
who_device = models.CharField(max_length=200, blank=True, null=True) # device string
who_device_type = models.CharField(max_length=50, blank=True, null=True) # device type
who_device_family = models.CharField(max_length=50, blank=True, null=True) # device family
who_device_brand = models.CharField(max_length=50, blank=True, null=True) # device brand
who_device_model = models.CharField(max_length=50, blank=True, null=True) # device model
who_os = models.CharField(max_length=200, blank=True, null=True) # os string
who_os_family = models.CharField(max_length=50, blank=True, null=True) # os family
who_os_version_string = models.CharField(max_length=50, blank=True, null=True) # os version
who_browser = models.CharField(max_length=200, blank=True, null=True) # browser string
who_browser_family = models.CharField(max_length=50, blank=True, null=True) # browser family
who_browser_version_string = models.CharField(max_length=50, blank=True, null=True) # browser version
what_object_type = models.CharField(max_length=50, blank=True, null=True) # page, content
what_object_name = models.CharField(max_length=50, blank=True, null=True) # content type name
what_object = models.ForeignKey(Content, on_delete=models.DO_NOTHING, related_name='obslog_what_object', null=True, blank=True) # content/related id
what_object_title = models.CharField(max_length=500, blank=True, null=True) # object title
when_datetime = models.DateTimeField(default=timezone.now) # datetime
when_date = models.DateField(default=date.today) # date
where_ip = models.CharField(max_length=50, blank=True, null=True) # ip address
where_continent = models.CharField(max_length=50, blank=True, null=True) # continent
where_country = models.CharField(max_length=50, blank=True, null=True) # country
where_city = models.CharField(max_length=50, blank=True, null=True) # city
where_zipcode = models.CharField(max_length=50, blank=True, null=True) # zipcode
where_latitude = models.CharField(max_length=50, blank=True, null=True) # latitude
where_longitude = models.CharField(max_length=50, blank=True, null=True) # longitude
where_region = models.CharField(max_length=50, blank=True, null=True) # region
where_timezone = models.CharField(max_length=50, blank=True, null=True) # timezone
how_action = models.CharField(max_length=50, blank=True, null=True) # signup, signin, signout, list, read, create, update, delete, cart, buy
why = models.CharField(max_length=50, blank=True, null=True) # reason
created = models.DateTimeField(default=timezone.now)
modified = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.who_ip
def save(self, *args, **kwargs):
''' On save, update timestamps '''
if not self.id:
self.created = timezone.now()
self.modified = timezone.now()
return super(Obslog, self).save(*args, **kwargs)
댓글
댓글 쓰기