Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.47 KB | None | 0 0
  1. from django.db import models
  2. from django.contrib.auth.models import User
  3. from django.contrib.sites.models import Site
  4. import datetime
  5.  
  6. CONTENT_TYPES = (
  7.     ('txt', 'text'),
  8.     ('img', 'image'),
  9.     ('vid', 'video'),
  10.     ('snd', 'sound'),
  11. )
  12.  
  13. FEATURE_TYPES = (
  14.     (0, 'share'),
  15.     (1, 'rate'),
  16.     (2, 'comment'),
  17.     (3, 'bookmark'),
  18.     (4, 'search'),
  19. )
  20.  
  21. FEATURE_LOOKUP = dict([(a[1], a[0]) for a in FEATURE_TYPES])
  22.  
  23. class DateAwareModel(models.Model):
  24.     inserted = models.DateTimeField(auto_now_add=True, editable=False)
  25.     updated = models.DateTimeField(auto_now=True, editable=False)    
  26.  
  27.     class Meta:
  28.         abstract = True
  29.  
  30. class Node(models.Model):
  31.     parent = models.ForeignKey(
  32.         'self',
  33.         related_name='children',
  34.         blank=True,
  35.         null=True)
  36.     content = models.TextField(blank=True)
  37.  
  38. class RBGroup(models.Model):
  39.     name = models.CharField(max_length=250)
  40.     short_name = models.CharField(max_length=25)
  41.     language = models.CharField(max_length=25,default="en")
  42.     blessed_tags = models.CharField(max_length=250,blank=True)
  43.     valid_domains = models.CharField(max_length=250,blank=True)
  44.  
  45.     # black/whitelist fields
  46.     anno_whitelist = models.CharField(max_length=250,blank=True)
  47.     img_whitelist = models.CharField(max_length=250,blank=True)
  48.     img_blacklist = models.CharField(max_length=250,blank=True)
  49.     no_readr = models.CharField(max_length=250,blank=True)
  50.    
  51.     # logo fields
  52.     logo_url_sm = models.URLField(blank=True,verify_exists=False)
  53.     logo_url_med = models.URLField(blank=True,verify_exists=False)
  54.     logo_url_lg = models.URLField(blank=True,verify_exists=False)
  55.    
  56.     # css
  57.     css_url = models.URLField(blank=True,verify_exists=False)
  58.    
  59.     def get_feature(self, name):
  60.         try:
  61.             feature_id = FEATURE_LOOKUP[name]
  62.         except:
  63.             raise Exception("Invalid feature name")
  64.         try:
  65.             return self.feature_set.values('text','images','flash').get(kind=feature_id)
  66.         except:
  67.             raise Exception("Feature instance not yet created")
  68.  
  69.     # TODO: write code to overwrite save method + create feature instances on
  70.     # the first save of the model.
  71.     # def save(self):
  72.  
  73.     def __unicode__(self):
  74.         return self.name
  75.        
  76.     class Meta:
  77.         ordering = ['short_name']
  78.  
  79. class Feature(models.Model):
  80.     kind = models.PositiveSmallIntegerField(choices=FEATURE_TYPES,default=1)
  81.     text = models.BooleanField()
  82.     images = models.BooleanField()
  83.     flash = models.BooleanField()
  84.     rb_group = models.ForeignKey(RBGroup,default=1)
  85.  
  86.     def __unicode__(self):
  87.         return (self.rb_group.short_name +":"+  FEATURE_TYPES[self.kind][1])
  88.  
  89. class RBSite(Site):
  90.     rb_group = models.ForeignKey(RBGroup)
  91.     include_selectors = models.CharField(max_length=250, blank=True)
  92.     no_rdr_selectors = models.CharField(max_length=250, blank=True)
  93.     css = models.URLField(blank=True)
  94.  
  95. class RBPage(models.Model):
  96.     rb_site = models.ForeignKey(RBSite)
  97.     url = models.URLField(verify_exists=False)
  98.     canonical_url = models.URLField(verify_exists=False)
  99.  
  100.     def __unicode__(self):
  101.         return self.canonical_url
  102.  
  103. class ContentNode(DateAwareModel):
  104.     user = models.ForeignKey(User)
  105.     content_type = models.CharField(max_length=3, choices=CONTENT_TYPES)
  106.     rb_page = models.ForeignKey(RBPage)
  107.     hash = models.CharField(max_length=32, editable=True)
  108.  
  109.     def __unicode__(self):
  110.         return self.hash
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement