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 ConsultationPlatform(models.Model): name = models.CharField(max_length=50) url = models.URLField(null=True, blank=True) connector = models.OneToOneField(connectors.models.Connector) def __unicode__(self): return self.name
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 SocialNetworkAppCommunity(models.Model): external_id = models.CharField(max_length=50) name = models.CharField(max_length=50) token = models.CharField(max_length=300, null=True, editable=False) type = models.CharField(max_length=5, default='en', choices=(('page', 'Page'), ('group', 'Group'), ('user_account', 'User Account'),)) url = models.URLField(default=None) members = models.ManyToManyField(SocialNetworkAppUser, editable=False) admins = models.ManyToManyField(SocialNetworkAppUser, related_name='SocialNetworkAppAdmin') def __unicode__(self): return self.name
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 Initiative(models.Model): external_id = models.IntegerField(editable=False) community_id = models.IntegerField(editable=True) name = models.CharField(max_length=50, editable=False) platform = models.ForeignKey(ConsultationPlatform, editable=True) 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) site_url = models.URLField(editable=True, default=None, null=True, blank=True) survey_url = models.URLField(editable=True, default=None, null=True, blank=True) 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 SocialNetworkAppUser(models.Model): external_id = models.CharField(max_length=50) name = models.CharField(max_length=100, null=True) url = models.URLField(null=True, blank=True) email = models.EmailField() snapp = models.ForeignKey('SocialNetworkApp') access_token = models.CharField(max_length=300) access_token_exp = models.DateTimeField(editable=False) read_permissions = models.BooleanField(default=False, editable=False) write_permissions = models.BooleanField(default=False, editable=False) def __unicode__(self): if self.name: return self.name else: return self.external_id