PageRenderTime 18ms CodeModel.GetById 0ms RepoModel.GetById 0ms app.codeStats 0ms

/recometproject/recomet/models.py

https://code.google.com/p/recomet/
Python | 164 lines | 106 code | 28 blank | 30 comment | 0 complexity | e8fa613a7172e515462ebcb856670ef8 MD5 | raw file
  1. # -*- coding: utf-8 -*-
  2. from django.db import models
  3. import datetime
  4. class Cuisine(models.Model):
  5. cuisine = models.CharField(max_length=28)
  6. def __unicode__(self):
  7. return self.cuisine
  8. #Table Recommender_Rule
  9. class Recommender_rule(models.Model):
  10. rule = models.TextField()
  11. def __unicode__(self):
  12. return self.rule
  13. #Table many to many by atribute_group.
  14. class Atribute_Group(models.Model):
  15. # id_atribute_group = models.AutoField(primary_key=True)
  16. group = models.CharField(max_length=32, null=True)
  17. def __unicode__(self):
  18. return self.group
  19. #Table atribute
  20. class Atribute(models.Model):
  21. #id_atribute = models.AutoField(max_length=10, primary_key=True)
  22. group = models.ForeignKey(Atribute_Group)
  23. value = models.CharField(max_length=32)
  24. def __unicode__(self):
  25. return self.value
  26. #Table restaurantChain.
  27. class RestaurantChain(models.Model):
  28. #id_chain = models.AutoField(max_length=10, primary_key=True)
  29. is_international = models.BooleanField()
  30. name = models.CharField(max_length=128)
  31. speciality = models.CharField(max_length=128)
  32. year_founded = models.PositiveSmallIntegerField(null=True)
  33. locations_worldwide = models.PositiveSmallIntegerField(null=True)
  34. def __unicode__(self):
  35. return self.name
  36. class Item(models.Model):
  37. # id_item = models.OneToOneField(Restaurant) #IntegerField(max_length=10)
  38. recommender_rule = models.ForeignKey(Recommender_rule, null=True)
  39. #Table for restaurant.
  40. class Restaurant(models.Model):
  41. #id_item = models.AutoField(max_length=10, primary_key=True)
  42. item = models.OneToOneField(Item, primary_key=True)
  43. atribute = models.ManyToManyField(Atribute)
  44. cuisine = models.ManyToManyField(Cuisine)
  45. name = models.CharField(max_length=255)
  46. address = models.TextField(max_length=512, null=True)
  47. description = models.TextField()
  48. needs_reservation = models.BooleanField()
  49. price_range = models.CharField(max_length=64)
  50. url = models.URLField(max_length=512, null=True)
  51. phone = models.CharField(max_length=18, null=True)
  52. hours = models.TextField(max_length=128, null=True)
  53. slug_name = models.SlugField(max_length=18, null=True)
  54. chain = models.ForeignKey(RestaurantChain, null=True)
  55. lat = models.DecimalField(max_digits=8, decimal_places=5, null=True)
  56. alt = models.DecimalField(max_digits=8, decimal_places=5, null=True)
  57. pub_date = models.DateTimeField('date published')
  58. def __unicode__(self):
  59. return self.name
  60. #------------------------------------------------------------#
  61. # MODELO DE USUARIO #
  62. #------------------------------------------------------------#
  63. #Table container.
  64. class Container(models.Model):
  65. # id_container = models.AutoField(max_length=10, primary_key=True)
  66. container_name = models.CharField(max_length=64) #Entero en el modelo
  67. is_public = models.BooleanField()
  68. def __unicode__(self):
  69. return self.container_name
  70. #Table rating_dimension.
  71. class Rating_Dimension(models.Model):
  72. #id_dimension = models.AutoField(max_length=10, primary_key=True)
  73. dimension_name = models.CharField(max_length=64)
  74. priority = models.IntegerField(null=True)
  75. def __unicode__(self):
  76. return self.dimension_name
  77. #Table user.
  78. class Users(models.Model):
  79. # id_user = models.AutoField(max_length=10, primary_key=True)
  80. username = models.CharField(max_length=20)
  81. container = models.ManyToManyField(Container, through='Container_User')
  82. ratings = models.ManyToManyField(Item, through='Rating', related_name='ratings')
  83. reviews = models.ManyToManyField(Item, through='Review', related_name='reviews')
  84. def __unicode__(self):
  85. return self.username
  86. LANG = (
  87. ('es', 'EspaƄol'),
  88. ('en', 'English'),
  89. ('fr', 'French'),
  90. ('jp', 'Japanese'),
  91. )
  92. #Table Review.
  93. class Review(models.Model):
  94. item_reviewed = models.ForeignKey(Item)
  95. id_user = models.ForeignKey(Users)
  96. title = models.CharField(max_length=128)
  97. review = models.TextField()
  98. status = models.PositiveSmallIntegerField(null=True)
  99. review_time = models.DateTimeField()
  100. helpful_yes = models.IntegerField(max_length=128)
  101. helpful_no = models.IntegerField(max_length=128)
  102. language = models.CharField(max_length=2, choices=LANG)
  103. def __unicode__(self):
  104. return self.title
  105. #Table user rating.
  106. class Rating(models.Model):
  107. id_item = models.ForeignKey(Item)
  108. id_user = models.ForeignKey(Users)
  109. id_dimension = models.ForeignKey(Rating_Dimension)
  110. date = models.DateTimeField()
  111. rating = models.PositiveSmallIntegerField()
  112. def __unicode__(self):
  113. return self.rating
  114. #Table of Friends for an user. Assigns a related name for the relationship.
  115. class Friends(models.Model):
  116. id_user = models.ForeignKey(Users, related_name='user')
  117. id_friend = models.ForeignKey(Users, related_name='friends') #models.IntegerField(max_length=10)
  118. time_added = models.DateTimeField(null=True)
  119. def __unicode__(self):
  120. return self.time_added
  121. #-----------------------------------------------------------------------------
  122. #CONTENEDORES
  123. #-----------------------------------------------------------------------------
  124. #Table user container.
  125. class Container_User(models.Model):
  126. id_container = models.ForeignKey(Container)
  127. id_user = models.ForeignKey(Users)
  128. id_itemid_item = models.ForeignKey(Item)
  129. #Table Tag.
  130. class Tag(models.Model):
  131. # id_tag = models.AutoField(max_length=10, primary_key=True)
  132. tag = models.CharField(max_length=18)
  133. id_item = models.ForeignKey(Item)
  134. def __unicode__(self):
  135. return self.tag
  136. # Create your models here.