Advertisement
Guest User

Untitled

a guest
Jul 19th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.64 KB | None | 0 0
  1. from django.db import models
  2. from django.db.models import Avg
  3. from django.contrib.auth.models import User
  4. from django.urls import reverse
  5. from django.utils import timezone
  6.  
  7. class Accelerator(models.Model):
  8. name = models.CharField(max_length=100)
  9. website = models.CharField(max_length=100)
  10. locations = models.CharField(max_length=100)
  11. bio = models.TextField()
  12. sector_focus = models.CharField(max_length=100)
  13. stage = models.CharField(max_length=100)
  14. deal = models.CharField(max_length=200)
  15. duration = models.CharField(max_length=100)
  16. overall_rating = models.DecimalField(decimal_places=2, max_digits=3)
  17. author = models.ForeignKey(User, on_delete=models.CASCADE, default='admin')
  18. logo = models.ImageField(default='default.jpg', upload_to='logos')
  19.  
  20.  
  21. def __str__(self):
  22. return self.name
  23.  
  24. # Function to configure correct URL once new model instance has been created
  25. def get_absolute_url(self):
  26. return reverse('accelerator_detail', kwargs={'pk': self.pk})
  27.  
  28. @property
  29. def save(self):
  30. acc_reviews = Review.objects.filter(subject=self.name)
  31. if len(acc_reviews) > 0:
  32. self.overall_rating = acc_reviews.aggregate(Avg('overall'))
  33. else:
  34. self.overall_rating = 0
  35.  
  36. super(Accelerator, self).save()
  37.  
  38.  
  39. class Review(models.Model):
  40. RATINGS = (
  41. ('1', '1'),
  42. ('2', '2'),
  43. ('3', '3'),
  44. ('4', '4'),
  45. ('5', '5'),
  46. )
  47. subject = models.ForeignKey(Accelerator, on_delete=models.CASCADE, blank=False)
  48. author = models.ForeignKey(User, on_delete=models.CASCADE, blank=False, default='admin')
  49. feedback = models.TextField(blank=False)
  50. date_posted = models.DateTimeField(default=timezone.now)
  51. mentorship = models.CharField(choices=RATINGS, blank=False, max_length=1)
  52. hiring = models.CharField(choices=RATINGS, blank=False, max_length=1)
  53. community = models.CharField(choices=RATINGS, blank=False, max_length=1)
  54. fundraising = models.CharField(choices=RATINGS, blank=False, max_length=1)
  55. corporate_dev = models.CharField(choices=RATINGS, blank=False, max_length=1)
  56. overall = models.DecimalField(decimal_places=2, max_digits=3)
  57.  
  58. def __str__(self):
  59. return self.subject
  60.  
  61. def get_absolute_url(self):
  62. return reverse('review_detail', kwargs={'pk': self.pk})
  63.  
  64. def save(self, *args, **kwargs):
  65. # set the overall field when the model is saved
  66. self.overall = self.mentorship + self.hiring + self.community + \
  67. self.fundraising + self.corporate_dev / 5
  68. super(Review, self).save(*args, **kwargs)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement