/recometproject/recomet/models.py
Python | 164 lines | 106 code | 28 blank | 30 comment | 0 complexity | e8fa613a7172e515462ebcb856670ef8 MD5 | raw file
- # -*- coding: utf-8 -*-
- from django.db import models
- import datetime
- class Cuisine(models.Model):
- cuisine = models.CharField(max_length=28)
- def __unicode__(self):
- return self.cuisine
-
- #Table Recommender_Rule
- class Recommender_rule(models.Model):
- rule = models.TextField()
- def __unicode__(self):
- return self.rule
- #Table many to many by atribute_group.
- class Atribute_Group(models.Model):
- # id_atribute_group = models.AutoField(primary_key=True)
- group = models.CharField(max_length=32, null=True)
- def __unicode__(self):
- return self.group
-
- #Table atribute
- class Atribute(models.Model):
- #id_atribute = models.AutoField(max_length=10, primary_key=True)
- group = models.ForeignKey(Atribute_Group)
- value = models.CharField(max_length=32)
- def __unicode__(self):
- return self.value
-
- #Table restaurantChain.
- class RestaurantChain(models.Model):
- #id_chain = models.AutoField(max_length=10, primary_key=True)
- is_international = models.BooleanField()
- name = models.CharField(max_length=128)
- speciality = models.CharField(max_length=128)
- year_founded = models.PositiveSmallIntegerField(null=True)
- locations_worldwide = models.PositiveSmallIntegerField(null=True)
-
- def __unicode__(self):
- return self.name
- class Item(models.Model):
- # id_item = models.OneToOneField(Restaurant) #IntegerField(max_length=10)
- recommender_rule = models.ForeignKey(Recommender_rule, null=True)
-
-
- #Table for restaurant.
- class Restaurant(models.Model):
- #id_item = models.AutoField(max_length=10, primary_key=True)
- item = models.OneToOneField(Item, primary_key=True)
- atribute = models.ManyToManyField(Atribute)
- cuisine = models.ManyToManyField(Cuisine)
- name = models.CharField(max_length=255)
- address = models.TextField(max_length=512, null=True)
- description = models.TextField()
- needs_reservation = models.BooleanField()
- price_range = models.CharField(max_length=64)
- url = models.URLField(max_length=512, null=True)
- phone = models.CharField(max_length=18, null=True)
- hours = models.TextField(max_length=128, null=True)
- slug_name = models.SlugField(max_length=18, null=True)
- chain = models.ForeignKey(RestaurantChain, null=True)
- lat = models.DecimalField(max_digits=8, decimal_places=5, null=True)
- alt = models.DecimalField(max_digits=8, decimal_places=5, null=True)
- pub_date = models.DateTimeField('date published')
- def __unicode__(self):
- return self.name
-
-
- #------------------------------------------------------------#
- # MODELO DE USUARIO #
- #------------------------------------------------------------#
- #Table container.
- class Container(models.Model):
- # id_container = models.AutoField(max_length=10, primary_key=True)
- container_name = models.CharField(max_length=64) #Entero en el modelo
- is_public = models.BooleanField()
- def __unicode__(self):
- return self.container_name
- #Table rating_dimension.
- class Rating_Dimension(models.Model):
- #id_dimension = models.AutoField(max_length=10, primary_key=True)
- dimension_name = models.CharField(max_length=64)
- priority = models.IntegerField(null=True)
-
- def __unicode__(self):
- return self.dimension_name
- #Table user.
- class Users(models.Model):
- # id_user = models.AutoField(max_length=10, primary_key=True)
- username = models.CharField(max_length=20)
- container = models.ManyToManyField(Container, through='Container_User')
- ratings = models.ManyToManyField(Item, through='Rating', related_name='ratings')
- reviews = models.ManyToManyField(Item, through='Review', related_name='reviews')
-
- def __unicode__(self):
- return self.username
-
- LANG = (
- ('es', 'EspaĆol'),
- ('en', 'English'),
- ('fr', 'French'),
- ('jp', 'Japanese'),
- )
-
- #Table Review.
- class Review(models.Model):
- item_reviewed = models.ForeignKey(Item)
- id_user = models.ForeignKey(Users)
- title = models.CharField(max_length=128)
- review = models.TextField()
- status = models.PositiveSmallIntegerField(null=True)
- review_time = models.DateTimeField()
- helpful_yes = models.IntegerField(max_length=128)
- helpful_no = models.IntegerField(max_length=128)
- language = models.CharField(max_length=2, choices=LANG)
-
- def __unicode__(self):
- return self.title
-
- #Table user rating.
- class Rating(models.Model):
- id_item = models.ForeignKey(Item)
- id_user = models.ForeignKey(Users)
- id_dimension = models.ForeignKey(Rating_Dimension)
- date = models.DateTimeField()
- rating = models.PositiveSmallIntegerField()
- def __unicode__(self):
- return self.rating
-
- #Table of Friends for an user. Assigns a related name for the relationship.
- class Friends(models.Model):
- id_user = models.ForeignKey(Users, related_name='user')
- id_friend = models.ForeignKey(Users, related_name='friends') #models.IntegerField(max_length=10)
- time_added = models.DateTimeField(null=True)
-
- def __unicode__(self):
- return self.time_added
- #-----------------------------------------------------------------------------
- #CONTENEDORES
- #-----------------------------------------------------------------------------
- #Table user container.
- class Container_User(models.Model):
- id_container = models.ForeignKey(Container)
- id_user = models.ForeignKey(Users)
- id_itemid_item = models.ForeignKey(Item)
- #Table Tag.
- class Tag(models.Model):
- # id_tag = models.AutoField(max_length=10, primary_key=True)
- tag = models.CharField(max_length=18)
- id_item = models.ForeignKey(Item)
-
- def __unicode__(self):
- return self.tag
- # Create your models here.