Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
dj-kaos-webclipper / models.py
Size: Mime:
from building_blocks.models import Archivable, SluggedKaosModel, KaosModel, OrderableModel, UnnamedKaosModel
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
from django.db import models

from webclipper.abstracts import AbstractWebClip


class Form(
    SluggedKaosModel
):
    """"""


class FormFieldType(models.TextChoices):
    single_choice = 'single_choice'
    multi_choice = 'multi_choice'
    long_text = 'long_text'


class FormField(
    OrderableModel,
    KaosModel
):
    form = models.ForeignKey(Form, on_delete=models.CASCADE, related_name='fields')
    slug = models.SlugField(max_length=255)
    type = models.CharField(max_length=30, choices=FormFieldType.choices)

    choices = models.JSONField(default=list, blank=True)
    choices_endpoint = models.CharField(max_length=255, blank=True)

    class Meta(OrderableModel.Meta):
        unique_together = ('form', 'slug')
        ordering = ('form', *OrderableModel.Meta.ordering)
        # rules_permissions = Perms.all_is_staff

    def __str__(self):
        return f"{self.name} field on {self.form}"


class ClipperEndpoint(
    Archivable,
    SluggedKaosModel
):
    webclips_endpoint = models.CharField(max_length=255, blank=True)
    form = models.ForeignKey(Form, on_delete=models.SET_NULL, null=True, blank=True)


class WebClip(
    AbstractWebClip,
    UnnamedKaosModel
):
    source = "clipper"

    clipper_notes = models.TextField(blank=True)
    form_data = models.JSONField(null=True, blank=True)

    _pi_content_type = models.ForeignKey(ContentType, on_delete=models.SET_NULL, null=True, blank=True)
    _pi_object_id = models.PositiveIntegerField(null=True, blank=True)
    processed_item = GenericForeignKey('_pi_content_type', '_pi_object_id')


__all__ = (
    'Form',
    'FormField',
    'FormFieldType',
    'ClipperEndpoint',
    'WebClip',
)