class Author(models.Model): external_id = models.CharField(max_length=50) screen_name = models.CharField(max_length=100) name = models.CharField(max_length=100, null=True) bio = models.TextField(null=True) language = models.CharField(max_length=10, null=True) location = models.ForeignKey(Location, null=True) zipcode = models.CharField(max_length=10, null=True, blank=True) national_id = models.CharField(max_length=20, null=True, blank=True) address = models.CharField(max_length=200, null=True, blank=True) email = models.EmailField(max_length=254, null=True, blank=True) friends = models.IntegerField(editable=False, default=0) followers = models.IntegerField(editable=False, default=0) groups = models.IntegerField(editable=False, default=0) posts_count = models.IntegerField(editable=False, default=0) url = models.URLField(null=True, blank=True) channel = models.CharField(max_length=50, choices=( ('consultation_platform', 'Consultation Platform'), ('social_network', 'Social Network'), )) social_network = models.ForeignKey(SocialNetworkApp, null=True) consultation_platform = models.ForeignKey(ConsultationPlatform, null=True) # Property to save any other information payload = models.TextField(null=True, editable=False) def __unicode__(self): return self.screen_name
class Comment(BaseContent): text = models.TextField() url = models.URLField(null=True) location = models.ForeignKey(Location, null=True) parent = models.CharField(max_length=10, choices=(('idea','Idea'),('comment','Comment'),)) parent_idea = models.ForeignKey(Idea, null=True) parent_comment = models.ForeignKey('Comment', null=True) # Additional Metric positive_votes = models.IntegerField(default=0) negative_votes = models.IntegerField(default=0) comments = models.IntegerField(default=0)
class Idea(BaseContent): title = models.CharField(max_length=255, null=True) text = models.TextField() url = models.URLField(null=True) location = models.ForeignKey(Location, null=True) # Social Network Metrics re_posts = models.IntegerField(default=0) # e.g. Share in Facebook, RT in Twitter bookmarks = models.IntegerField(default=0) # e.g. Favourite in Twitter # Additional Metric positive_votes = models.IntegerField(default=0) negative_votes = models.IntegerField(default=0) comments = models.IntegerField(default=0)
class SocialNetworkApp(models.Model): name = models.CharField(max_length=50) url = models.URLField(null=True, blank=True) connector = models.ForeignKey(connectors.models.SocialNetworkConnector) blocked = models.DateTimeField(null=True, editable=False, default=None) app_id = models.CharField(max_length=50) app_secret = models.CharField(max_length=50, null=True, blank=True) redirect_uri = models.URLField(null=True, blank=True) community = models.ForeignKey(SocialNetworkAppCommunity, null=True, blank=True) app_access_token = models.CharField(max_length=300, null=True, blank=True) callback_real_time_updates = models.URLField(null=True, blank=True) object_real_time_updates = models.CharField(max_length=100, null=True, blank=True, default='page') field_real_time_updates = models.CharField(max_length=50, null=True, blank=True, default='feed') token_real_time_updates = models.CharField(max_length=100, null=True, editable=False) subscribed_read_time_updates = models.BooleanField(default=False, editable=False) last_real_time_update_sig = models.CharField(max_length=100, null=True, editable=False) batch_requests = models.BooleanField(default=False) max_batch_requests = models.IntegerField(null=True, blank=True) def __unicode__(self): return self.name
class Campaign(models.Model): external_id = models.IntegerField(editable=False) name = models.CharField(max_length=100) initiative = models.ForeignKey(Initiative) hashtag = models.CharField(max_length=20, null=True, help_text="Max length 20 characters " "(do not include '#')") def __unicode__(self): return self.name
class Initiative(models.Model): external_id = models.IntegerField(editable=False) name = models.CharField(max_length=50, editable=False) platform = models.ForeignKey(ConsultationPlatform, editable=False) social_network = models.ManyToManyField(SocialNetworkApp, blank=True) hashtag = models.CharField(unique=True, max_length=14, null=True, help_text="Max length 14 characters (do not include '#')") url = models.URLField(editable=False) users = models.IntegerField(editable=False, default=0) ideas = models.IntegerField(editable=False, default=0) votes = models.IntegerField(editable=False, default=0) comments = models.IntegerField(editable=False, default=0) active = models.BooleanField(default=False) language = models.CharField(max_length=5, default='en', choices=(('en', 'English'), ('es', 'Spanish'), ('it', 'Italian'),)) notification_emails = models.BooleanField(default=False) def __unicode__(self): return self.name
class Vote(BaseContent): value = models.IntegerField(choices=( (1, 'Positive'), (-1, 'Negative'), ), default=1) parent = models.CharField(max_length=10, choices=( ('idea', 'Idea'), ('comment', 'Comment'), )) parent_idea = models.ForeignKey(Idea, null=True) parent_comment = models.ForeignKey(Comment, null=True)