class Pet(models.Model): DOG = 'dog' CAT = 'cat' PARROT = 'parrot' UNKNOWN = 'unknown' PET_TYPES = ( (DOG, 'Dog'), (CAT, 'Cat'), (PARROT, 'Parrot'), (UNKNOWN, 'Unknown'), ) type = models.CharField(max_length=7, choices=PET_TYPES, default=UNKNOWN) name = models.CharField(max_length=6, blank=False) age = models.IntegerField(blank=False) description = models.TextField(blank=False) # image = models.ImageField( # upload_to='pets', # ) image = cloudinary_models.CloudinaryField('image') user = models.ForeignKey(UserProfile, on_delete=models.CASCADE) def __str__(self): return f'{self.id}; {self.name}; {self.age}'
class Recipes(models.Model): title = models.CharField(max_length=30) image = cloudinary_models.CloudinaryField("image") description = models.TextField() ingredients = models.CharField(max_length=250) time = models.IntegerField() timestamp = models.DateTimeField(default=datetime.now) user = models.ForeignKey(UserProfile, on_delete=models.CASCADE) def __str__(self): # for Django admin return f'{self.id}; {self.title}; {self.user}'
class Images(models.Model): imgType = (('0', 'Profile Pic'), ('1', 'Post Pic'), ('2', 'Article Pic'), ('3', 'Banner Pic')) user = models.ForeignKey(UserExtend, on_delete=models.CASCADE, related_name='images') img = cmodels.CloudinaryField('image') img_type = models.CharField(max_length=1, choices=imgType, default='1') datetime = models.DateTimeField(auto_now=True) def __str__(self): return self.img.public_id
class Lesson(models.Model): title = models.CharField(max_length=30) content = models.TextField() subject = models.ForeignKey(Subject, on_delete=models.CASCADE) teacher = models.ForeignKey( User, on_delete=models.CASCADE, ) # image = models.ImageField( # upload_to='lesson_pics/', # blank=True, # default='', # ) image = cloudinary_models.CloudinaryField('image') def __str__(self): return self.title
class User(AbstractUser): is_student = models.BooleanField(default=False) is_teacher = models.BooleanField(default=False) school = models.CharField(max_length=100) email = models.EmailField(unique=True) # date_of_birth = models.DateField(blank=True, default='0000-00-00') # profile_picture = models.ImageField( # upload_to='profile_pics/', # blank=True, # default='', # ) profile_picture = cloudinary_models.CloudinaryField('image', blank=True) def __str__(self): return self.username
class Game(models.Model): developer = models.ForeignKey(User, on_delete=models.CASCADE) name = models.CharField(max_length=150) url = models.URLField() cover = cloudinary_models.CloudinaryField("cover", blank=True) price = models.IntegerField(default=0) tags = models.ManyToManyField(Tag, blank=True, verbose_name="Tags") created = models.DateTimeField(editable=False) def get_absolute_url(self): return reverse('game', args=[str(self.id)]) def save(self, *args, **kwargs): if not self.id: # If the object is created, its creation date is set self.created = timezone.now() return super(Game, self).save(*args, **kwargs) def __str__(self): return self.name
class Profile(models.Model): user = models.OneToOneField(get_user_model(), on_delete=models.CASCADE) image = cloudinary.CloudinaryField('image') google_image = models.CharField(max_length=255, null=True) favorites = models.ListField(default=[]) location = models.EmbeddedModelField( model_container=Location, ) google_id = models.CharField(max_length=255, null=True) access_token = models.CharField(max_length=255, null=True) refresh_token = models.CharField(max_length=255, null=True) def get_image(self): if self.image: return self.image.url else: return self.google_image objects = models.DjongoManager() def __str__(self): return self.user.username
class Product(models.Model): image = cloud_models.CloudinaryField('image')
class Post(models.Model): POST_VISIBILITY_CHOICE = (('1', 'Public'), ('2', 'Only folowers'), ('3', 'Private')) DEFAULT_TOPIC = 1 title = models.CharField(max_length=300) sub_title = models.CharField(max_length=150, blank=True) head_img = cmodels.CloudinaryField('images') content = models.TextField() created_on = models.DateTimeField(auto_now_add=True) updated_on = models.DateTimeField(auto_now=True) draft = models.BooleanField(default=False) upvote = models.PositiveIntegerField(default=0) user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) visibility = models.CharField(max_length=1, choices=POST_VISIBILITY_CHOICE, default='1') post_tags = models.CharField(max_length=255, help_text='Tags seperated with a space') post_topic = models.CharField(max_length=1, choices=POST_TOPICS, default='0') def __str__(self): return self.title def add_upvote(self, username): self.upvote = models.F('upvote') + 1 PostLikers.objects.create(post=self, user=username) self.save() def remove_upvote(self, username): self.upvote = F('upvote') - 1 PostLikers.objects.filter(post=self, user=username).delete() self.save() def all_likers(self): l = [i.users_id for i in self.likers.all()] return l def get_read_time(self): time = len(strip_tags(self.content).split(' ')) / 255 return round(time) def get_comments_count(self): return len(self.comment_set.all()) def get_short_story(self): return strip_tags(self.content)[:200] + '...' def save(self): super().save() followers = self.user.userextend.get_followers() text = self.user.get_full_name() + " just posted." print(followers) for u in followers: if self.created_on == self.updated_on: Notice.objects.create(user=u.current_user, sender=self.user, text=text, category='1', c_id=self.pk)
class ImageAttach(models.Model): image = clm.CloudinaryField('image') place = models.ForeignKey(ProtoPlace, to_field='event_id', on_delete=models.CASCADE, related_name='images')
class UserProfile(models.Model): profile_picture = cloudinary_models.CloudinaryField("image") user = models.OneToOneField(User, on_delete=models.CASCADE) def __str__(self): return self.user.username