Skip to content

Commit

Permalink
fix: add related field to product user
Browse files Browse the repository at this point in the history
  • Loading branch information
PalMit2002 committed Jul 23, 2023
1 parent d0e11d0 commit 3a9c4ec
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 25 deletions.
30 changes: 30 additions & 0 deletions buyandsell/migrations/0009_auto_20230723_1547.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Generated by Django 3.2.16 on 2023-07-23 10:17

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('users', '0040_remove_userprofile_followed_communities'),
('buyandsell', '0008_alter_product_category'),
]

operations = [
migrations.AlterField(
model_name='product',
name='followers',
field=models.ManyToManyField(blank=True, related_name='productsfollowed', to='users.UserProfile'),
),
migrations.AlterField(
model_name='product',
name='product_image',
field=models.TextField(blank=True, null=True),
),
migrations.AlterField(
model_name='product',
name='user',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='products', to='users.userprofile'),
),
]
59 changes: 34 additions & 25 deletions buyandsell/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,31 @@
MOD_EMAIL = '[email protected]'
# Create your models here.
class Category(models.Model):
id = models.IntegerField(primary_key=True,editable=False)
name = models.CharField(max_length=100,blank=False, null=False)
id = models.IntegerField(primary_key=True, editable=False)
name = models.CharField(max_length=100, blank=False, null=False)
numproducts = models.IntegerField(default=0, null=False, blank=False)

def __str__(self):
return self.name
class Product(models.Model):
##achievements, events, users
##achievements, events, users
# placement
CATEGORY_CHOICES = (
('electronics', 'Electronics'),
('stationery','Stationery'),
('stationery', 'Stationery'),
('Other', 'Other')
)
CONDITION_CHOICES = (
('1','01/10'),
('2','02/10'),
('3','03/10'),
('4','04/10'),
('5','05/10'),
('6','06/10'),
('7','07/10'),
('8','08/10'),
('9','09/10'),
('10','10/10'),
('1', '01/10'),
('2', '02/10'),
('3', '03/10'),
('4', '04/10'),
('5', '05/10'),
('6', '06/10'),
('7', '07/10'),
('8', '08/10'),
('9', '09/10'),
('10', '10/10'),
)
ACTION_CHOICES = (
('sell', 'Sell'),
Expand All @@ -46,60 +47,68 @@ class Product(models.Model):
name = models.CharField(max_length=PDT_NAME_MAX_LENGTH, blank=False, null=False)
description = models.TextField(blank=True, default='', null=False)
product_image = models.TextField(blank=True, null=True)
##TODO: Change the on_delete function to .
# TODO: Change the on_delete function to .
category = models.ForeignKey(Category, on_delete=models.SET_NULL, null=True, blank=True)
brand = models.CharField(max_length=PDT_NAME_MAX_LENGTH, blank=True,null=False,default='')
brand = models.CharField(max_length=PDT_NAME_MAX_LENGTH, blank=True, null=False, default='')
warranty = models.BooleanField(default=False)
packaging = models.BooleanField(default=False)
condition = models.CharField(max_length=2,choices=CONDITION_CHOICES, default='7',blank=False)
followers = models.ManyToManyField('users.UserProfile', related_name='followers+', blank=True)
action = models.CharField(max_length=10,choices=ACTION_CHOICES, default='sell', blank=False)
condition = models.CharField(max_length=2, choices=CONDITION_CHOICES, default='7', blank=False)
followers = models.ManyToManyField('users.UserProfile', related_name='productsfollowed', blank=True)
action = models.CharField(max_length=10, choices=ACTION_CHOICES, default='sell', blank=False)
status = models.BooleanField(default=True, blank=True, null=True)
deleted = models.BooleanField(default=False, blank=True, null=True)
price = models.IntegerField(blank=False, default=100)
negotiable = models.BooleanField(default=True)
user = models.ForeignKey('users.UserProfile', on_delete=models.CASCADE)
user = models.ForeignKey('users.UserProfile', on_delete=models.CASCADE, related_name='products')
contact_details = models.CharField(max_length=CONTACT_MAX_LENGTH, blank=False, null=False)
time_of_creation = models.DateTimeField(auto_now_add=True)
time_of_creation = models.DateTimeField(auto_now_add=True)

def __str__(self):
return self.name

def save(self, *args, **kwargs):
# self.category.numproducts+=1
self.str_id = get_url_friendly(self.name) + "-" + str(self.id)[:8]
super().save(*args, **kwargs)

def delete(self, *args, **kwargs):
# self.category.numproducts-=1
return super().delete(*args, **kwargs)

class Meta:
verbose_name = "Product"
verbose_name_plural = "Products"
ordering = ("-time_of_creation",)
indexes = [
models.Index(fields=['time_of_creation', ]),
]
#order by count of followers
# order by count of followers
class ImageURL(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
url = models.URLField(blank=False, null=False)

def __str__(self):
return self.url
class Ban(models.Model):
user = models.ManyToManyField('users.UserProfile')
endtime = models.DateTimeField()

def __str__(self):
return str(self.user)
class Limit(models.Model):
user = models.ForeignKey('users.UserProfile', on_delete=models.CASCADE)
endtime = models.DateTimeField(auto_created=True, null=True)
strikes = models.IntegerField(default=0)

def __str__(self):
return str(self.user)
class Report(models.Model):
moderator_email = MOD_EMAIL
product=ForeignKey(Product, on_delete=models.CASCADE)
reporter=ForeignKey('users.UserProfile', on_delete=SET('User_DNE'))
product = ForeignKey(Product, on_delete=models.CASCADE)
reporter = ForeignKey('users.UserProfile', on_delete=SET('User_DNE'))
reason = models.TextField(blank=False, null=False)
addressed = models.BooleanField(default=False)
accepted = models.BooleanField(default=False)

def __str__(self):
return str(self.product)+':'+str(self.reporter)
return str(self.product) + ':' + str(self.reporter)

0 comments on commit 3a9c4ec

Please sign in to comment.