class Installment(models.Model): Title=models.CharField(verbose_name='عنوان', max_length=100, db_index=True) Description=models.TextField(verbose_name='توضیحات', blank=True) FK_UserCreator=models.ForeignKey(User, on_delete=models.SET_NULL, verbose_name='سازنده', related_name='User_Creator', null=True) Company=models.CharField(verbose_name='میزان مشارکت بازار نخل', max_length=15) Entity=models.CharField(verbose_name='میزان مشارکت سازمان', max_length=15) FK_Receiver=models.ManyToManyField(User, verbose_name='گیرندگان اقساط', related_name='User_Installment', blank=True) FK_Product=models.ManyToManyField(Product, verbose_name='محصولات', related_name='Product_Installment', blank=True) FK_Shop=models.ManyToManyField(Shop, verbose_name='حجره ها', related_name='Shop_Installment', blank=True) StartDate=jmodels.jDateTimeField(verbose_name='تاریخ شروع خرید اقساطی') EndDate=jmodels.jDateTimeField(verbose_name='تاریخ پایان خرید اقساطی') AVAILABLE_STATUS =( (True,'فعال'), (False,'غیر فعال'), ) PUBLISH_STATUS =( (True,'منتشر شده'), (False,'در انتظار تایید'), ) Available=models.BooleanField(verbose_name='وضعیت ثبت خرید اقساطی', choices=AVAILABLE_STATUS, default=True) Publish=models.BooleanField(verbose_name='وضعیت انتشار خرید اقساطی', choices=PUBLISH_STATUS, default=False) FK_User=models.ForeignKey(User, on_delete=models.SET_NULL, verbose_name='تایید کننده', related_name='Installment_Accept', blank=True, null=True) # Output Customization Based On Title def __str__(self): return "{}".format(self.Title) # Ordering With DateCreate class Meta: ordering = ('id',) verbose_name = "قسط" verbose_name_plural = "اقساط"
class Post(models.Model): status = (('draft', 'Draft'), ('published', 'Published')) post_id = models.AutoField(primary_key=True) post_status = models.CharField(max_length=10, choices=status, default='draft', verbose_name="وضعیت") author = models.ForeignKey(members, related_name='blog_posts', on_delete=models.CASCADE, verbose_name="نویسنده") Title = models.CharField(max_length=250, verbose_name="عنوان") Text = models.TextField(verbose_name="متن") ImageUrl = models.TextField(null=True, blank=True) Group = models.ForeignKey(NarGroups, default="عمومی", related_name='group_posts', verbose_name="گروه") publish = jmodels.jDateTimeField(default=jdatetime.datetime.now, verbose_name="تاریخ انتشار") created = jmodels.jDateTimeField(auto_now_add=True) updated = jmodels.jDateTimeField(auto_now=True) def __str__(self): return self.Title class Meta: ordering = ('-publish', )
class TimeStampedModel(models.Model): objects = jmodels.jManager() created = jmodels.jDateTimeField(auto_now_add=True) modified = jmodels.jDateTimeField(auto_now=True) class Meta: abstract = True
class realstateModel(models.Model): class Meta: verbose_name = "املاک" verbose_name_plural = "املاک" schoices = ((0, "غیرفعال"), (1, "فعال")) logo = models.ImageField(verbose_name="لوگو", upload_to="logo", null=True) header = models.ImageField(verbose_name="بنر", upload_to="headers", null=True) name = models.CharField(verbose_name="نام", max_length=20) bio = RichTextField(verbose_name="توضیحات", ) address = models.TextField(verbose_name="آدرس", ) create_time = jmodels.jDateTimeField(auto_now_add=True) update_time = jmodels.jDateTimeField(auto_now=True) status = models.SmallIntegerField(verbose_name="وضعیت", choices=schoices, default=1) def __str__(self): return self.name def delete_post(self): self.status = 0 self.save()
class Order(models.Model): REGISTERED_STATUS = '1' DELIVERED_STATUS = '2' LOADING_STATUS = '3' SENDING_STATUS = '4' CLEARED_STATUS = '5' ORDER_STATUS = ( (REGISTERED_STATUS, _('Order is begin registered')), (DELIVERED_STATUS, _('Delivered to the sales unit')), (LOADING_STATUS, _('Loading')), (SENDING_STATUS, _('Sending')), (CLEARED_STATUS, _('Cleared')), ) objects = jmodels.jManager() order_number = models.CharField(max_length=100, default=set_order_number, verbose_name=_("Order number")) order_status = models.CharField(choices=ORDER_STATUS, max_length=1, default=REGISTERED_STATUS, verbose_name=_('Order status')) total_cost = models.PositiveIntegerField(verbose_name=_("Total cost")) off = models.PositiveIntegerField(verbose_name=_("Off"), default=0) phone_number = models.CharField(max_length=13,verbose_name=_("Phone number"), null=True, blank=True) first_name = models.CharField(max_length=100, verbose_name=_("First name")) last_name = models.CharField(max_length=100, verbose_name=_("last name")) created_at = jmodels.jDateTimeField(auto_now_add=True, verbose_name=_("Created at")) updated_at = jmodels.jDateTimeField(auto_now=True, verbose_name=_("Updated at")) class Meta: verbose_name = _("Order") verbose_name_plural = _("Orders") def __str__(self): return self.order_number
class Blog(models.Model): creation_datetime = jmodels.jDateTimeField(auto_now_add=True) last_modified_datetime = jmodels.jDateTimeField(auto_now=True) publication_datetime = jmodels.jDateTimeField(null=True) # because it's blog post title, a maximum length of 100 is ideal. title = models.CharField(max_length=100, unique=True) slug = models.SlugField(allow_unicode=True, unique=True, db_index=True) text = models.TextField() auther = models.ForeignKey(ManyxUser, on_delete=models.SET_NULL, null=True) # likes, dislikes, reports likes = models.PositiveIntegerField(default=0) dislikes = models.PositiveIntegerField(default=0) reports = models.PositiveIntegerField(default=0) # tags are our new categories tags = JSONField(null=True, blank=True) def __str__(self): return "{} - {}".format(self.publication_datetime, self.auther) def get_slug(self): from django.utils.text import slugify return slugify(self.title, allow_unicode=True) def save(self, force_insert=False, force_update=False, using=None, update_fields=None, *args, **kwargs): if not self.slug: self.slug = self.get_slug() if not self.publication_datetime: self.publication_datetime = jdatetime.datetime.now() return super(Blog, self).save(*args, **kwargs) objects = models.Manager() # published posts manager published = BlogPublishManager()
class Order_request(models.Model): user = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='user_profile', verbose_name="کارشناس فروش") customer = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='customer_profile', verbose_name="خریدار") item = models.ForeignKey(Item, on_delete=models.CASCADE, verbose_name="فایل") final_price = models.CharField(max_length=200, default='نامشخص', verbose_name="قیمت نهایی") prepayment = models.CharField(max_length=200, default='نامشخص', verbose_name="بیعانه") description = models.TextField(max_length=1000, null=True, blank=True, verbose_name="توضیحات") CHOICES = (('تکمیل شده', 'تکمیل شده'), ('لغو شده', 'لغو شده'), ('دریافت پیش پرداخت', 'دریافت پیش پرداخت'), ('در حال بررسی', 'در حال بررسی'), ('جدید', 'جدید')) status = models.CharField(max_length=30, choices=CHOICES, default='جدید', verbose_name="وضعیت") date_created = jmodels.jDateTimeField(auto_now_add=True, verbose_name="تاریخ") date_updated = jmodels.jDateTimeField(auto_now=True, verbose_name="آخرین ویرایش") def __str__(self): return " درخواست " + str( self.item ) + ' برای ' + self.customer.user.first_name + ' ' + self.customer.user.last_name @property def short_description(self): return truncatechars(self.description, 70) def get_absolute_url(self): return reverse('order_req_detail', args=[self.id]) def get_absolute_edit_url(self): return reverse('order_edit', args=[self.id]) class Meta: verbose_name = "درخواست خرید" verbose_name_plural = "درخواست های خرید"
class Comment(models.Model): post = models.ForeignKey(Post, related_name="post_comments") member = models.ForeignKey(members, verbose_name="نام") Text = models.TextField(verbose_name="متن") created = jmodels.jDateTimeField(auto_now_add=True) updated = jmodels.jDateTimeField(auto_now=True) active = models.BooleanField(default=False) class Meta: ordering = ('created', ) def __str__(self): return 'نوشته شده توسط {} در {}'.format(self.member, self.post)
class ProjectModel(models.Model): schoices = ( (0, "در حال اجرا"), (1, "تکمیل شده"), (2, "غیر فعال/فروخته شده"), ) class Meta: verbose_name = "پروژه" verbose_name_plural = "پروژه" # class Meta: # verbose_name="آلبوم" # verbose_name_plural="آلبوم ها" # albumname = models.CharField(max_length=30, default=get_album_name, editable=False) project = models.ForeignKey("accounts.realstateModel", verbose_name="مربوط به املاک ", related_name='Project_amlak', on_delete=models.CASCADE, null=True) title = models.CharField(verbose_name="عنوان", max_length=20) description = models.TextField() # parent=models.ForeignKey("self",verbose_name="مربوط به آلبوم",on_delete=models.PROTECT) group = models.ForeignKey("group", verbose_name="مربوط به گروه", on_delete=models.PROTECT) status = models.SmallIntegerField(verbose_name="وضعیت", choices=schoices, default=1) create_time = jmodels.jDateTimeField(auto_now_add=True) update_time = jmodels.jDateTimeField(auto_now=True) def get_images(self): image = self.imagesA.all() return image def set_images(self, images): for i in images: self.imagesA.create(image=i) def default(self): return self.imagesA.filter(default=True).first() def thumbnails(self): return self.imagesA.filter(width__lt=100, length_lt=100) def __str__(self): return str(self.id)
class AbstractBaseSmsCode(models.Model): user = models.ForeignKey(User, verbose_name=_('User'), on_delete=models.CASCADE) code = models.CharField(_('Code'), max_length=6, null=True, blank=True) created_at = jmodels.jDateTimeField(_('Created at'), auto_now_add=True, blank=True, null=True) class Meta: abstract = True def send_sms(self, prefix='', type='sms'): # data = { # 'username': self.users.username, # 'phone': self.users.phone, # 'code': self.code, # 'type': type, # } data = "کد فعالسازی کیشوند مارکت: {}".format(self.code) return send_multi_format_sms(data, target_phone=self.user.phone) def __str__(self): return str(self.code)
class LogMixin(models.Model): log = models.OneToOneField("Log", on_delete=models.CASCADE, null=True, blank=True) employee = models.ForeignKey("Employee", on_delete=models.CASCADE, default=1) datetime_occured = jmodels.jDateTimeField(auto_now_add=True) class Meta: abstract = True def get_type_info(self): pass def save(self, *args, **kwargs): super().save(*args, **kwargs) _log = Log( employee=self.employee, event_message=str(self), event_type=self.get_type_info(), ) _log.save() self.log = _log
class Blog(models.Model): title = models.CharField(max_length=120, null=True, unique=False, verbose_name="عنوان", help_text="توجه کنید که عنوان فارسی باشد.") author = models.ForeignKey(User, related_name='blogs', on_delete=models.CASCADE, null=True, verbose_name="نویسنده") description = models.TextField(verbose_name="توضیحات") price = models.IntegerField(default=0, null=True, verbose_name="قیمت") state = models.CharField(max_length=1, choices=STATE_TYPES, default='P', null=True, verbose_name="وضعیت") DateCreated = jmodels.jDateTimeField(null=True, verbose_name="زمان ایجاد") file = models.FileField(null=True, blank=True, upload_to='blog/files/', verbose_name="فایل") image = models.ImageField(null=True, blank=True, upload_to='blog/images/', verbose_name="عکس") def __str__(self): return str(self.id) class Meta: verbose_name = "بلاگ" verbose_name_plural = "بلاگها" ordering = ('title', '-price')
class Theater(models.Model): title = models.CharField(max_length=255, verbose_name='عنوان') director = models.ForeignKey(Director, verbose_name='کارگردان', on_delete=models.CASCADE) producer = models.ForeignKey(Producer, verbose_name='تهیه کننده', on_delete=models.CASCADE) running_time = jmodels.jDateTimeField(verbose_name='زمان نمایش فیلم') length = models.PositiveIntegerField(verbose_name='مدت زمان') language = models.ForeignKey(Language, verbose_name='زبان', on_delete=models.CASCADE) actors = models.ManyToManyField(Actor, verbose_name='ستارگان') description = HTMLField(verbose_name='خلاصه داستان') genre = models.ForeignKey(Genre, verbose_name='ژانر', on_delete=models.CASCADE) writer = models.ForeignKey(Writer, verbose_name='نویسنده', on_delete=models.CASCADE) cover = models.ImageField(upload_to='images/theaters/', verbose_name='کاور', default='') def __str__(self): return self.title def get_absolute_url(self): return reverse('tickets:theater_detail', kwargs={'pk': self.pk}) class Meta: ordering = ('-id', )
class AdCategory(models.Model): url = models.CharField(max_length=50, blank=False) title = models.CharField(max_length=200) def CatImage_directory_path(obj, filename): return 'CatImage/cat{0}-{1}-{2}'.format(obj.id, obj.title, filename) icon = models.ImageField(upload_to=CatImage_directory_path, blank=True) # number of person who visit the Cat visitCount = models.IntegerField(default=0, null=True, verbose_name='Visit Count') lastVisit = jmodels.jDateTimeField(auto_now=True, blank=True, null=True, verbose_name='Last Viewed by User') def get_url(self): return reverse('show_cat', args=(self.url, )) def __str__(self): return self.title class Meta: verbose_name = 'دسته بندی' verbose_name_plural = 'دسته بندی ها'
class Address(models.Model): STATUS_CHOICES = ( (1, _('Active')), (0, _('DeActive')), ) name = models.CharField(_('Name'), max_length=20, default='home') location = PointField( _('Location'), default="{'type': 'Point', 'coordinates': [54.006630, 26.544604]}") addr = models.TextField(_('Address'), max_length=300) phone = models.CharField(_('Phone number'), max_length=11) zip_code = models.CharField(_('ZipCode'), max_length=10) status = models.PositiveSmallIntegerField(_('Status'), default=1, choices=STATUS_CHOICES, help_text=_("Status of Address")) user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_('User'), null=True, blank=True, on_delete=models.CASCADE) created_at = jmodels.jDateTimeField(_('Created at'), auto_now_add=True, null=True) def __str__(self): return self.name + ': ' + str(self.addr[:15]) + '...' class Meta: verbose_name = _("Address") verbose_name_plural = _("Addresses")
class Packet(models.Model): objects = jmodels.jManager() profile_id = models.ForeignKey(Profile, on_delete=models.CASCADE, null=True) sDate = jmodels.jDateTimeField('Date Created', auto_now_add=True) def __str__(self): return '{0}/{1}/{2}'.format(self.sDate.year, self.sDate.month,self.sDate.day)
class Broker(models.Model): user = models.OneToOneField(User, on_delete=models.SET_NULL, null=True, related_name="broker") creator = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name="created_brokers") name = models.CharField(max_length=255, unique=True) username = models.CharField(max_length=255, unique=True) email = models.EmailField() # credit = models.BigIntegerField(default=0, editable=False) active = models.BooleanField(default=True) timestamp = jmodels.jDateTimeField(auto_now_add=True) # mcci_discount = models.DecimalField(max_digits=4, decimal_places=2, default=0) @staticmethod def get_brokers(): brokers_tuple = [] brokers = Broker.objects.all() for broker in brokers: brokers_tuple.append((str(broker.pk), broker.name)) return brokers_tuple def __str__(self): return self.name
class AvailabilityStatus(LogMixin): objects = jmodels.jManager() reason = models.CharField(max_length=20, choices=AVAILABILITY_STATUS_REASON_TYPES) until = jmodels.jDateTimeField() class Meta: verbose_name = "وضعیت کارمند" verbose_name_plural = "وضعیتهای کارمند" def get_type_info(self): return self.get_reason_display() @property def until_formatted(self): object_type = "date" if self.reason in DAYLONG_STATUS_TYPES else "datetime" formatted_datetime = get_formatted_jdatetime(self.until, object_type=object_type, show_seconds=False) return formatted_datetime def __str__(self): until_details = ("" if self.reason in INDEFINITE_STATUS_TYPES else f" تا {self.until_formatted}") return f"{self.employee} - {self.get_reason_display()} {until_details}"
class cuser(AbstractUser): username = None phone = models.CharField(max_length=11, unique=True) USERNAME_FIELD = 'phone' REQUIRED_FIELDS = [] objects = CustomUserManager() CATEGORYNAME = [ ("کاربر", "کاربر"), ("استارتاپ", "استارتاپ"), ("خدمت دهنده", "خدمت دهنده"), ("مرکز معرفی", "مرکز معرفی"), ] user_type = models.CharField(choices=CATEGORYNAME, max_length=11, default="کاربر") name_of_company = models.CharField(max_length=100, blank=True, null=True) logo = models.ImageField(upload_to=get_upload_logo_path, blank=True, null=True, default=None) email = models.EmailField(_('email address'), default='') address = models.CharField(max_length=100, blank=True, null=True) website = models.CharField(max_length=30, blank=True, null=True) linkedin = models.CharField(max_length=20, blank=True, null=True) content = RichTextField(blank=True, null=True) date_joined = jmodels.jDateTimeField(auto_now_add=True) def __str__(self): return self.last_name
class Event(models.Model): name = models.CharField(max_length=200, null=False, blank=False) poster = models.ImageField(upload_to='event_posters/', null=False, blank=False, validators=[validate_image_size]) summary = models.TextField(null=False, blank=False) description = RichTextUploadingField(null=False, blank=False) location = models.CharField(max_length=100, null=False, blank=False) date = jmodels.jDateTimeField(null=False, blank=False) def save(self, *args, **kwargs): im1 = Image.open(self.poster) output1 = BytesIO() im1 = im1.resize((300, 400)) im1.save(output1, format='png', quality=100) output1.seek(0) self.poster = InMemoryUploadedFile( output1, 'ImageField', "%s.jpg" % self.poster.name.split('.')[0], 'image/jpeg', sys.getsizeof(output1), None) super(Event, self).save(*args, **kwargs) def __str__(self): return self.name def get_persian_month(self): months = [ 'فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند' ] return months[self.date.month - 1] def get_persian_year(self): translate_table = str.maketrans('1234567890', '۱۲۳۴۵۶۷۸۹۰') return str(self.date.year).translate(translate_table)
class BarTime(models.Model): objects = jmodels.jManager() name = models.CharField(max_length=200) datetime = jmodels.jDateTimeField() def __str__(self): return "%s, %s" % (self.name, self.datetime)
class CustomUser(models.Model): GENDER = [ ('M', 'Male'), ('F', 'Female'), ] username = models.CharField(max_length=255) full_name = models.CharField(max_length=255) gender = models.CharField( max_length=1, choices=GENDER, ) national_code = models.CharField(max_length=10) birthday_date = jmodels.jDateField() ceremony_datetime = jmodels.jDateTimeField(null=True) country = models.CharField(default="Iran", max_length=255) def get_first_and_last_name(self): if self.full_name: first_name, last_name = str(self.full_name).split(' ') return { 'first_name': first_name.capitalize(), 'last_name': last_name.capitalize(), } return {} def get_age(self): return jmodels.jDateField.parse_date( jmodels.datetime.datetime.now()).year - self.birthday_date.year def is_birthday(self): today = jdate.today() birthday = self.birthday_date return today.month == birthday.month and today.day == birthday.day
class Post(models.Model): title = models.CharField(max_length=100, verbose_name='عنوان مقاله') slug = models.SlugField(max_length=100, unique=True, allow_unicode=True, verbose_name='آدرس مقاله') category = models.ManyToManyField(to=Category,verbose_name='دسته بندی',related_name="posts") description = models.TextField(verbose_name='محتوا') thumbnail = models.ImageField(upload_to='posts', verbose_name='تصویر مقاله') publish = jmodels.jDateTimeField(default=jdatetime.datetime.now, verbose_name='تاریخ انتشار') created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) STATUS_CHOICES = (('d', 'پیش نویس'), ('p', 'منتشر شده')) status = models.CharField(max_length=1, choices=STATUS_CHOICES, verbose_name='وضعیت') def __str__(self): return self.title def jpublish(self): return change_format_date(self.publish) def category_published(self): return self.category.filter(status=True) class Meta: verbose_name = "پست" verbose_name_plural = "پست ها" ordering = ('-publish',) jpublish.short_description = "زمان انتشار" objects = PostManager()
class Report(models.Model): tt = models.ForeignKey(acc.models.AdTestType0, on_delete=models.PROTECT) device = models.ForeignKey(acc.models.AllDevice, on_delete=models.PROTECT) has_pdf = models.BooleanField(default=False) request = models.ForeignKey(acc.models.Request, on_delete=models.PROTECT) date = jmodels.jDateTimeField() user = models.ForeignKey(User, on_delete=models.PROTECT) record = models.ForeignKey(acc.models.Record, on_delete=models.CASCADE, related_name='rr') ref_record = models.ForeignKey(acc.models.Record, on_delete=models.CASCADE, related_name='rrr') licence = models.ForeignKey(acc.models.Licence, on_delete=models.CASCADE, related_name='rl') status = models.ForeignKey(acc.models.AdAzStatus, on_delete=models.PROTECT) totalcomment = models.TextField(null=True, blank=True) is_done = models.BooleanField(default=False) is_recal = models.BooleanField(default=False) is_deleted = models.BooleanField(default=False) class Meta: verbose_name_plural = "سابقه گزارشات" def __str__(self): return ' - '.join(('report', str(self.tt), str(self.licence)))
def test_serialize_default_datetime_value(self): dt1 = datetime.datetime(2013, 6, 2, 10, 22, 23, 240000) field = jmodels.jDateTimeField(default=dt1) self.assertEqual( MigrationWriter.serialize(field), ('django_jalali.db.models.jDateTimeField(' 'default=datetime.datetime(2013, 6, 2, 10, 22, 23, 240000))', {'import django_jalali.db.models', 'import datetime'}))
class DrugPricing(models.Model): objects = jmodels.jManager() drug = models.ForeignKey('Drug', on_delete = models.CASCADE, null = False, blank = False, verbose_name = 'دارو') price = models.FloatField(null = False, blank = False, verbose_name = 'قیمت') insuranceRate = models.ForeignKey('InsuranceRate', on_delete = models.CASCADE, null = Flase, blank = False, verbose_name = 'نرخ بیمه') addDate = jmodels.jDateTimeField(default = jdatetime.datetime.now, null = False, blank = True, verbose_name = 'تاریخ ثبت قیمت') def __str__(self): return '%s : %s'%(self.drug.name,self.addDate)
class Section(models.Model): header = models.CharField(max_length=100) detail = models.TextField() start = jmodels.jDateTimeField() end = jmodels.jDateTimeField() available_from = jmodels.jDateTimeField() deletable_until = jmodels.jDateTimeField() def date(self): def date_format(j_date): month_dic = { 1: 'فروردین', 2: 'اردیبهشت', 3: 'خرداد', 4: 'تیر', 5: 'مرداد', 6: 'شهریور', 7: 'مهر', 8: 'آبان', 9: 'آذر', 10: 'دی', 11: 'بهمن', 12: 'اسفند' } return f"{fa_num(j_date.day)} {month_dic.get(j_date.month, j_date.month)} {fa_num(j_date.year)} {fa_num(j_date.hour)}:{fa_num(j_date.minute)}" middle_string = 'الی' return f"{date_format(self.start)} {middle_string} {date_format(self.end)}" def header_with_date(self): return f"{self.date()} - {self.header}" def __str__(self): return self.header_with_date() def is_full(self): return self.usr_set.count() >= 3 def anti_tatbiq(self): number_of_girls = 0 for usr in self.usr_set.all(): number_of_girls += usr.polluser.sex if number_of_girls == 0: return True
class Factor(models.Model): user = models.ForeignKey(cuser, on_delete=models.CASCADE) total_price = models.PositiveIntegerField(default=0) service = models.ForeignKey(Service, on_delete=models.CASCADE) date = jmodels.jDateTimeField(auto_now=True) qty = models.PositiveIntegerField() def __str__(self): return f'کاربر : {self.user} | سرویس : {self.service} | تعداد : {self.qty} | مبلغ کل : {self.total_price}'
class Message(models.Model): customer = models.ForeignKey(Customer, related_name="customer", on_delete="Cascade", verbose_name="مشتری") is_sender = models.BooleanField(verbose_name="مشتری پیام را فرستاده", default=True) title = models.CharField(max_length=100, verbose_name="عنوان") text = models.TextField(max_length=2000, verbose_name="متن") date = jmodels.jDateTimeField(verbose_name="تاریخ", auto_now_add=True) is_opened = models.BooleanField(verbose_name="وضعیت مشاهده", default=False) parent = models.ForeignKey("Message", related_name="parent_message", default=None, blank=True, null=True, on_delete="DoNothing")
class Order(models.Model): objects = jmodels.jManager() datetime = jmodels.jDateTimeField(default=jdatetime.datetime.now, null=False, blank=True, verbose_name="زمان سفارش") ORDER_TYPE_CHOICES = [ (1, "بیرون بر"), (2, "سالن"), ] title = models.PositiveSmallIntegerField(null=False, blank=False, choices=ORDER_TYPE_CHOICES, verbose_name="نوع") customer = models.ForeignKey("Customer", on_delete=models.DO_NOTHING, null=False, blank=False, unique_for_date='datetime', verbose_name="مشتری") branch = models.ForeignKey("Branch", on_delete=models.CASCADE, null=False, blank=False, verbose_name="مجموعه غذایی") table = models.ForeignKey("Table", on_delete=models.DO_NOTHING, null=True, blank=True, verbose_name="میز") foods = models.ManyToManyField("Food", verbose_name="غذا") @property def prices(self): foods = self.foods for food in foods: prices += food.price return prices def __str__(self): return "{1} -> {0}".format(self.branch.name, self.customer.user.username) class Meta: verbose_name = "سفارش" verbose_name_plural = "سفارشات"