Advertisement
Guest User

Models for JSON

a guest
Jun 30th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.11 KB | None | 0 0
  1. class AnswerArea(TimeStampedModel):
  2.     """
  3.    Class for an answer containing the following attributes:
  4.    - font_style: JSON which may contain the following keys:
  5.        * font_family: Raleway (for now)
  6.        * font_size: Integer value, the size of the text, in SP
  7.        * font_color_selector: JSON (default_color, selected_color, other) ARGB string values (default: #000000)
  8.        * typeface: List of typeface strings, may contain values: Bold / Italic / Underline / Strikethrough / Default
  9.        * slider_font_size_selector: JSON (default_value, selected_value, other) - Integer values, (default: 12sp)
  10.        * vertical_alignment: top / middle / bottom (default: bottom)
  11.        * horizontal_alignment: left / center / right (default: left)
  12.    - margins: JSON which may contain the following keys:
  13.        * left: Integer value (default: 0dp)
  14.        * right: Integer value (default: 0dp)
  15.        * top: Integer value (default: 0dp)
  16.        * bottom: Integer value (default: 0dp)
  17.    - configurations: JSON which may contain the following keys:
  18.        * max_length: Integer value
  19.        * min_length: Integer value
  20.        * min_selected_buttons: Integer value
  21.        * max_selected_buttons: Integer value
  22.        * number_of_stars: Integer value
  23.        * start_value: Integer value
  24.        * end_value: Integer value
  25.        * step: Integer value
  26.        * label_step: Integer value
  27.        * randomize_answers: true / false
  28.        * order: ASC / DESC (default: ASC)
  29.        * default_value: Integer Value
  30.        * double_ended_slider: true / false
  31.        * fit_content: true / false
  32.    - style: JSON which may contain the following keys:
  33.        * button_width: Integer value
  34.        * button_height: Integer value
  35.        * button_spacing: Integer value
  36.        * border_width: Integer value (default: 0dp)
  37.        * corner_radius: Integer value (default: 0dp)
  38.        * border_color_selector: JSON (default_color, selected_color)
  39.        * background_color_selector: JSON (default_color, selected_color)
  40.        * layout_direction: horizontal / vertical (default: vertical)
  41.        * label_vertical_alignment: above / below / inside (default: below)
  42.        * thumb_color: ARGB string value
  43.        * thumb_radius: Integer value
  44.        * slider_height: Integer value
  45.    - column: JSON which may contain the following keys:
  46.        * margins: JSON (left, right, top, bottom)
  47.        * border_width: Integer value (default: 0dp)
  48.        * corner_radius: Integer value (default: 0dp)
  49.        * border_color_selector: JSON (default_color, selected_color)
  50.        * background_color_selector: JSON (default_color, selected_color)
  51.    - answer_type: Open-Ended /  Star Rating / Slider / Single/Multiple Choice / Ranking / Number Picker
  52.    """
  53.  
  54.     font_style = JSONField(null=True, blank=True)
  55.     margins = JSONField(null=True, blank=True)
  56.     configurations = JSONField(null=True, blank=True)
  57.     style = JSONField(null=True, blank=True)
  58.     column = JSONField(null=True, blank=True)
  59.     answer_type = models.PositiveSmallIntegerField(choices=ANSWER_TYPES.CHOICES)
  60.  
  61.  
  62. class MediaArea(TimeStampedModel):
  63.     """
  64.    Class for media area containing the following attributes:
  65.    - margins: JSON which may contain the following keys:
  66.        * left: Integer value (default: 0dp)
  67.        * right: Integer value (default: 0dp)
  68.        * top: Integer value (default: 0dp)
  69.        * bottom: Integer value (default: 0dp)
  70.    - type (required): Video / Audio / Image
  71.    - url (required): URL string value
  72.    """
  73.  
  74.     margins = JSONField(null=True, blank=True, help_text=_('It may contain: left, right, top, bottom.'))
  75.  
  76.     TYPES = Choices(
  77.         ('IMAGE', 1, _('Image')),
  78.         ('VIDEO', 2, _('Video')),
  79.         ('AUDIO', 3, _('Audio')),
  80.     )
  81.     type = models.PositiveSmallIntegerField(choices=TYPES.CHOICES)
  82.     # url = models.URLField()
  83.     url = models.FileField(upload_to='upload/screens', null=True, blank=True)
  84.  
  85. class QuestionArea(TimeStampedModel):
  86.     """
  87.    Class for a question containing the following attributes:
  88.    - text (required): The question text
  89.    - font_style: JSON which may contain the following keys:
  90.        * font_size: Integer value, the size of the text, in SP
  91.        * font_color: ARGB string value starting with #
  92.        * font_family: String representing font family name
  93.        * typeface: List of typeface strings, may contain values: Bold / Italic / Underline / Strikethrough
  94.        * vertical_alignment: top / bottom / middle
  95.        * horizontal_alignment: left / right / center
  96.    - margins: JSON which may contain the following keys:
  97.        * left: Integer value (default: 0dp)
  98.        * right: Integer value (default: 0dp)
  99.        * top: Integer value (default: 0dp)
  100.        * bottom: Integer value (default: 0dp)
  101.    """
  102.  
  103.     text = models.TextField(default='', help_text=_('The question text.'))
  104.     font_style = JSONField(null=True, blank=True, help_text=_('It may contain: font_size, font_color, typeface, vertical_alignment, horizontal_alignment.'))
  105.     margins = JSONField(null=True, blank=True, help_text=_('It may contain: left, right, top, bottom.'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement