コード例 #1
0
class DataStore(TimeStampedModel):
    name = pg_fields.CICharField(max_length=200)
    version = models.IntegerField(default=1)
    uuid = models.UUIDField(unique=True, db_index=True, default=uuid.uuid4, editable=False)
    data = pg_fields.JSONField(default=dict)
    cleaned_data = pg_fields.JSONField(default=dict)
    fields = pg_fields.ArrayField(models.CharField(max_length=200), default=list)
    field_tracker = FieldTracker(fields=['data', 'cleaned_data', 'fields'])
    author_type = models.ForeignKey(
        ContentType, db_constraint=False, on_delete=models.PROTECT,
        related_name="%(app_label)s_%(class)s_authored",
    )
    author_id = models.CharField(max_length=128)
    author = GenericForeignKey('author_type', 'author_id')

    objects = DataStoreManager()
    all_objects = models.Manager()

    class Meta:
        abstract = True

    def save(self, *args, **kwargs):
        request = get_request()
        if not self.pk:
            if request:
                if not request.session.session_key:
                    request.session.save()
                session_object = request.session._get_session_from_db()
                self.author_type_id = ContentType.objects.get_for_model(session_object._meta.model).id
                self.author_id = session_object.pk
        return super().save(*args, **kwargs)
コード例 #2
0
ファイル: models.py プロジェクト: lcpojr/barbershop-api
class Profile(models.Model):
    """
    This model contains the profile data.
    Profiles represents the phisical profile data.
    It may be allways related to an user.
    """

    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    user = models.OneToOneField(
        settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    first_name = models.CharField(max_length=150, verbose_name='First Name')
    last_name = models.CharField(max_length=150, verbose_name='Last Name')
    mothers_name = models.CharField(
        max_length=150, verbose_name="Mother's Name", null=True)
    fathers_name = models.CharField(
        max_length=150, verbose_name="Father's Name", null=True)
    phones = pg.JSONField(default=list)
    addresses = pg.JSONField(default=list)
    documents = pg.JSONField(default=list)
    birthdate = models.DateField(null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        verbose_name_plural = 'Profiles'

    def __str__(self):
        return self.first_name

    def get_full_name(self):
        return "{} {}".format(self.first_name, self.last_name)

    def get_age(self):
        return timezone.now().year - self.birthdate.year
コード例 #3
0
ファイル: models.py プロジェクト: lionel-panhaleux/django-mds
class Provider(models.Model):

    id = models.UUIDField(primary_key=True, default=uuid.uuid4)
    name = UnboundedCharField(blank=True, default="")
    logo_b64 = UnboundedCharField(null=True, blank=True, default=None)

    # The following fields are for us pulling data from the provider
    base_api_url = UnboundedCharField(default="",
                                      blank=True,
                                      verbose_name="Base Provider API URL")
    oauth2_url = UnboundedCharField(default="",
                                    blank=True,
                                    verbose_name="OAuth2 URL (if different)")
    api_authentication = pg_fields.JSONField(
        default=provider_api_authentication_default,
        blank=True,
        verbose_name="Provider API Authentication",
    )
    api_configuration = pg_fields.JSONField(
        default=provider_api_configuration_default,
        blank=True,
        verbose_name="Provider API Configuration",
    )
    # We may poll a provider, e.g. LADOT sandbox that replies for many providers
    # but has no device itself.
    # So we cannot just rely on checking the latest event record saved.
    last_start_time_polled = models.DateTimeField(blank=True, null=True)

    # The following fields are for the provider pushing data to us
    agency_api_authentication = pg_fields.JSONField(
        default=agency_api_authentication_default,
        blank=True,
        verbose_name="Agency API Authentication",
    )
    agency_api_configuration = pg_fields.JSONField(
        default=agency_api_configuration_default,
        blank=True,
        verbose_name="Agency API Configuration",
    )
    colors = pg_fields.JSONField(
        default=dict,
        blank=True,
        verbose_name="colors for distinguishing provider icons",
        validators=[colors_validator],
    )

    objects = ProviderQuerySet.as_manager()

    def __str__(self):
        return "{} ({})".format(self.name or "Provider object",
                                short_uuid4(self.id))

    @property
    def device_categories(self):
        # This will fail if you didn't call objects.with_device_categories()
        device_categories = {}
        for category in enums.DEVICE_CATEGORY:
            device_categories[category.name] = getattr(
                self, "device_category_%s" % category.name)
        return device_categories
コード例 #4
0
ファイル: collection.py プロジェクト: wuwx/galaxy
class CollectionImport(Task):
    """Collection import task info."""

    name = models.CharField(max_length=64)
    version = models.CharField(max_length=64)

    messages = psql_fields.JSONField(default=list)
    lint_records = psql_fields.JSONField(default=list)

    namespace = models.ForeignKey(Namespace, on_delete=models.CASCADE)
    imported_version = models.ForeignKey(CollectionVersion,
                                         null=True,
                                         on_delete=models.SET_NULL,
                                         related_name='import_tasks')

    def add_log_record(self, record: logging.LogRecord):
        self.messages.append({
            'message': record.msg,
            'level': record.levelname,
            'time': record.created,
        })

    def add_lint_record(self, lint_record: lintutils.LintRecord) -> None:
        self.lint_records.append(attr.asdict(lint_record))

    def get_message_stats(self):
        """Returns total number of errors and warnings."""
        # TODO(cutwater): Replace with SQL query
        errors, warnings = 0, 0
        for msg in self.messages:
            if msg['level'] == 'ERROR':
                errors += 1
            elif msg['level'] == 'WARNING':
                warnings += 1
        return errors, warnings
コード例 #5
0
class CredentialType(Auditable):
    schema = models.ForeignKey(Schema,
                               related_name="credential_types",
                               on_delete=models.CASCADE)
    issuer = models.ForeignKey(Issuer,
                               related_name="credential_types",
                               on_delete=models.CASCADE)
    description = models.TextField(blank=True, null=True)
    processor_config = contrib.JSONField(blank=True, null=True)
    credential_def_id = models.TextField(db_index=True, null=True)
    logo_b64 = models.TextField(null=True)
    visible_fields = models.TextField(null=True)
    last_issue_date = models.DateTimeField(null=True)
    url = models.TextField(blank=True, null=True)
    claim_descriptions = contrib.JSONField(blank=True, null=True)
    claim_labels = contrib.JSONField(blank=True, null=True)
    category_labels = contrib.JSONField(blank=True, null=True)

    class Meta:
        db_table = "credential_type"
        unique_together = (("schema", "issuer"), )
        ordering = ('id', )

    def get_has_logo(self):
        return bool(self.logo_b64 or (self.issuer and self.issuer.logo_b64))
コード例 #6
0
ファイル: models.py プロジェクト: colindith/Taveuni
class ItemPrototype(models.Model):
    # TODO: Item should not be in Inventory app
    name = models.CharField(max_length=40)
    code = models.CharField(primary_key=True, max_length=40)
    type = models.IntegerField(default='Item.UNDEFINED', choices=TYPE_OPTIONS)
    store_price = models.IntegerField(default=2)
    sold_price = models.IntegerField(default=1)
    display_fields = postgres_fields.JSONField(null=True, blank=True)

    # generator will create and return an item instance accourding to rules
    generator = models.CharField(max_length=255, null=True, blank=True)
    rules = postgres_fields.JSONField(null=True, blank=True)

    def generate_item(self):
        # return a Item objects if success, else False

        from game.utils import load_class
        generator = load_class(self.generator)
        if not generator:
            from item.libs.item_generator import default_generator
            generator = default_generator
        if self.rules:
            return generator(item_prototype=self, **self.rules)
        else:
            return generator(item_prototype=self)
コード例 #7
0
ファイル: models.py プロジェクト: yoshasiregar/IntelOwl
class Job(models.Model):
    class Meta:
        indexes = [
            models.Index(fields=[
                "md5",
                "status",
            ]),
        ]

    source = models.CharField(max_length=50, blank=False, default="none")
    is_sample = models.BooleanField(blank=False, default=False)
    md5 = models.CharField(max_length=32, blank=False)
    observable_name = models.CharField(max_length=512, blank=True)
    observable_classification = models.CharField(max_length=12, blank=True)
    file_name = models.CharField(max_length=512, blank=True)
    file_mimetype = models.CharField(max_length=80, blank=True)
    status = models.CharField(max_length=32,
                              blank=False,
                              choices=STATUS,
                              default="pending")
    analyzers_requested = postgres_fields.ArrayField(
        models.CharField(max_length=128), blank=True, default=list)
    run_all_available_analyzers = models.BooleanField(blank=False,
                                                      default=False)
    analyzers_to_execute = postgres_fields.ArrayField(
        models.CharField(max_length=128), blank=True, default=list)
    analysis_reports = postgres_fields.JSONField(default=list,
                                                 null=True,
                                                 blank=True)
    received_request_time = models.DateTimeField(auto_now_add=True)
    finished_analysis_time = models.DateTimeField(blank=True, null=True)
    force_privacy = models.BooleanField(blank=False, default=False)
    disable_external_analyzers = models.BooleanField(blank=False,
                                                     default=False)
    errors = postgres_fields.ArrayField(models.CharField(max_length=900),
                                        blank=True,
                                        default=list,
                                        null=True)
    file = models.FileField(blank=True, upload_to=file_directory_path)
    tags = models.ManyToManyField(Tag, related_name="jobs", blank=True)
    runtime_configuration = postgres_fields.JSONField(default=dict,
                                                      null=True,
                                                      blank=True)

    @classmethod
    def object_by_job_id(cls, job_id, transaction=False):
        try:
            if transaction:
                job_object = cls.objects.select_for_update().get(id=job_id)
            else:
                job_object = cls.objects.get(id=job_id)
        except cls.DoesNotExist:
            raise AnalyzerRunException(f"No Job with ID:{job_id} retrieved")

        return job_object

    def __str__(self):
        if self.is_sample:
            return f'Job("{self.file_name}")'
        return f'Job("{self.observable_name}")'
コード例 #8
0
ファイル: refining.py プロジェクト: L3oNav/gathering_server
class RefiningModel(BaseModel):

    user = models.EmailField(max_length=255)

    tax = models.IntegerField()
    type_of = models.CharField(max_length=56)

    focus = IntegerRangeField(min_value=0,
                              max_value=30000,
                              blank=True,
                              null=True)

    purchased_resources = models.BooleanField(default=False)

    resouces_cost = fields.ArrayField(fields.JSONField(),
                                      blank=False,
                                      null=False)

    resources_to_refining = fields.ArrayField(fields.JSONField(),
                                              blank=False,
                                              null=False)

    refined_total = fields.ArrayField(fields.JSONField(),
                                      blank=False,
                                      null=False)

    refining_prices = fields.ArrayField(fields.JSONField(),
                                        blank=False,
                                        null=False)
コード例 #9
0
ファイル: collection.py プロジェクト: wuwx/galaxy
class CollectionVersion(mixins.TimestampsMixin, pulp_models.Content):
    """
    A model representing an Ansible Content Collection version.

    :var version: Collection version string in semantic version format.
    :var hidden: Indicates if a version should not be displayed and allowed
        for installation.
    :var metadata: Collection metadata in JSON format.
    :var contents: Collection contents in JSON format.
    :var collection: A reference to a related collection object.
    """

    TYPE = 'collection-version'

    # Fields
    version = models.CharField(max_length=64)
    hidden = models.BooleanField(default=False)

    metadata = psql_fields.JSONField(default=dict)
    contents = psql_fields.JSONField(default=list)
    quality_score = models.FloatField(
        null=True,
        validators=[MinValueValidator(0.0),
                    MaxValueValidator(5.0)],
    )

    readme_mimetype = models.CharField(max_length=32, blank=True)
    readme_text = models.TextField(blank=True)
    readme_html = models.TextField(blank=True)

    # References
    collection = models.ForeignKey(Collection,
                                   on_delete=models.CASCADE,
                                   related_name='versions')
    _parent_ref = models.OneToOneField(pulp_models.Content,
                                       on_delete=models.CASCADE,
                                       parent_link=True,
                                       db_column='id')

    class Meta:
        unique_together = (
            'collection',
            'version',
        )

    def __str__(self):
        return '{}.{}-{}'.format(self.collection.namespace.name,
                                 self.collection.name, self.version)

    def get_content_artifact(self) -> pulp_models.ContentArtifact:
        """Returns a ContentArtifact object related to collection version."""
        return pulp_models.ContentArtifact.objects.filter(content=self).first()

    def get_download_url(self) -> str:
        """Builds artifact download url pointing to Pulp's content app."""
        prefix = settings.GALAXY_DOWNLOAD_URL
        repository = settings.GALAXY_PULP_REPOSITORY
        ca = self.get_content_artifact()
        return '/' + '/'.join(
            s.strip('/') for s in (prefix, repository, ca.relative_path))
コード例 #10
0
ファイル: models.py プロジェクト: DiscordApps/logviewer
class Log(models.Model):
    owner = models.ForeignKey('auth.User',
                              on_delete=models.CASCADE,
                              related_name='logs',
                              help_text='Log owner.')
    uuid = models.CharField(primary_key=True,
                            max_length=22,
                            editable=False,
                            help_text='Log\'s UUID.')
    created = models.DateTimeField(auto_now_add=True,
                                   help_text='Log creation date.')
    expires = models.DateTimeField(null=True, help_text='Log expiration date.')
    content = models.TextField(editable=False, help_text='Raw log content.')
    type = models.CharField(max_length=40, null=True, help_text='Log type.')
    users = fields.JSONField(default=list, help_text='List of users in log.')
    privacy = models.CharField(max_length=10, default='public')
    guild = models.IntegerField(null=True)
    data = fields.JSONField(default=dict, help_text='Extraneous data.')

    class Meta:
        permissions = [
            ('api_access', 'Can access the API'),
            ('extended_expiry', 'Can set an expiry time of up to two weeks'),
            ('no_expiry', 'Can set an infinite expiry time, or none at all')
        ]
        ordering = ['created']

    @classmethod
    def generate_uuid(cls, content):
        """Generate short uuid, used to uniquely identify logs based on content."""
        return shortuuid.uuid(str(content))

    def __str__(self):
        return f'Log {self.uuid}'
コード例 #11
0
ファイル: user.py プロジェクト: KooCook/koocook-dj
class KoocookUser(SerialisableModel, models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    # author from Author's OneToOneField
    preferences = fields.JSONField(default=_default_preferences)
    user_settings = fields.JSONField(default=_default_preferences)
    following = models.ManyToManyField('self')
    followers = models.ManyToManyField('self')

    class Meta:
        db_table = "koocook_user"

    def follow(self, user: '******'):
        pass

    def unfollow(self, user: '******'):
        pass

    @property
    def name(self):
        if self.user.get_full_name():
            return self.user.get_full_name()
        else:
            return self.user.username

    @property
    def full_name(self):
        return self.user.get_full_name()
コード例 #12
0
class ApiRequest(models.Model):
    REQUEST_TYPE = [("GET", "get"), ("POST", "post"), ("PUT", "put"),
                    ("DELETE", "delete")]
    request_type = models.CharField(choices=REQUEST_TYPE, max_length=16)
    request_url = models.CharField(max_length=1024)
    body = pgJson.JSONField(null=True, blank=True)
    response = pgJson.JSONField(null=True, blank=True)
    created_on = models.DateTimeField(auto_now_add=True)
    updated_on = models.DateTimeField(auto_now_add=True)
コード例 #13
0
class KoocookUser(SerialisableModel, models.Model):
    """

    Attributes:
        author (Author): from OneToOneField in ``Author``

    Notes:
        Automatically created when ``User`` is  created.
    """
    exclude = ('user', 'preferences', 'user_settings')
    avatar = fields.JSONField(default=dict)
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    preferences = fields.JSONField(default=_default_preferences)
    user_settings = fields.JSONField(default=_default_preferences)
    following = models.ManyToManyField('self')
    followers = models.ManyToManyField('self')

    class Meta:
        db_table = 'koocook_auth_user'
        default_related_name = 'koocook_user'

    @property
    def formal_preferences(self):
        from koocook_core.support import PreferenceManager
        return PreferenceManager.from_koocook_user(self)

    def follow(self, user: '******'):
        self.following.add(user)
        user.followers.add(self)

    def unfollow(self, user: '******'):
        self.following.remove(user)
        user.followers.remove(self)
        self.save()

    @property
    def name(self):
        if self.user.get_full_name():
            return self.user.get_full_name()
        else:
            return self.user.username

    @classmethod
    def from_dj_user(cls, user: User):
        return cls.objects.get(user=user)

    @property
    def full_name(self):
        return self.user.get_full_name()

    @property
    def avatar_url(self):
        if 'content' in self.avatar:
            return self.avatar['content']
        else:
            return None
コード例 #14
0
class Riding(models.Model):

    riding_id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=100)

    results = pgfields.JSONField(default=None)
    percents = pgfields.JSONField(default=None)
    swings = pgfields.JSONField(default=None)

    def __str__(self):
        return self.name
コード例 #15
0
ファイル: models.py プロジェクト: nadeemcite/wall-e
class Event(models.Model):
    app = models.CharField(max_length=200)
    okind = models.CharField(max_length=200, null=True)
    oid = models.CharField(max_length=200, null=True)
    odata = pg.JSONField(null=True)
    ekind = models.CharField(max_length=200, null=True)
    edata = pg.JSONField(null=True)
    user_id = models.IntegerField(null=True)
    tracker = models.CharField(max_length=200, null=True)
    ip = models.CharField(max_length=200, null=True)
    user_agent = models.CharField(max_length=200, null=True)
    visit_id = models.IntegerField(null=True)
コード例 #16
0
class Student(models.Model):
    """Student model: contains information used by the dashboard."""

    student_id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=20)
    email = models.CharField(max_length=29)
    avatar = models.CharField(max_length=20000)
    reference_number = models.CharField(max_length=12)
    tutor = models.CharField(max_length=50)
    timetable = fields.JSONField()
    attendance = fields.JSONField()
    markbook = fields.JSONField()
コード例 #17
0
ファイル: models.py プロジェクト: uttamaniket/irobot
class Token(models.Model):
    """ table to store the tokens associated with different teams """
    id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
    team = models.CharField(max_length=100)
    auth_token_json = fields.JSONField()
    access_token_json = fields.JSONField()
    created_on = models.DateTimeField(auto_now_add=True)
    last_modified_on = models.DateTimeField(auto_now=True)

    @property
    def access_token(self):
        return self.access_token_json.get('access_token')
コード例 #18
0
ファイル: models.py プロジェクト: trungtranle/ilab_molecular
class HCVStandardCurve(models.Model):
    name = models.CharField(max_length=100,
                            default=datetime.now().strftime('%Y-%m-%d'))
    std_curve = fields.JSONField()
    r_2 = models.FloatField()
    eff = models.FloatField()
    slope = models.FloatField()
    stds = fields.JSONField()
    B = models.FloatField()
    factor = models.FloatField()

    def __str__(self):
        return self.name
コード例 #19
0
class Form(models.Model):
    objects = FormManager()

    sha1 = models.CharField(max_length=40, db_index=True)
    form_spec = pg_fields.JSONField()
    form_i18n = pg_fields.JSONField(blank=True, null=True)

    class Meta:
        abstract = apps.get_containing_app_config(__name__) is None
        ordering = ('id',)
        verbose_name = _("Form")
        verbose_name_plural = _("Forms")

    @cached_property
    def frozen_spec(self):
        return bytefy(self.form_spec)

    @cached_property
    def frozen_i18n(self):
        return bytefy(self.form_i18n)

    @cached_property
    def form_class(self):
        return DynamicForm.get_form_class_by(self)

    @cached_property
    def form_class_or_dummy(self):
        try:
            return self.form_class
        except ValueError as error:
            logger.critical("DB has invalid form_spec with id %d: %s", self.id, error)
            return DummyForm

    def clean(self):
        # try to create a class -> ensures form_spec is readable
        try:
            self.form_class
        except AttributeError as e:
            raise ValidationError({
                'form_spec': format_lazy(_("Invalid form_spec: {error}"), error=str(e)),
            }) from e

    def save(self, **kwargs):
        if not self.sha1:
            self.frozen_spec = frozen_spec = bytefy(self.form_spec)
            self.frozen_i18n = frozen_i18n = bytefy(self.form_i18n)
            self.sha1 = freeze_digest(frozen_spec, frozen_i18n)
        return super().save(**kwargs)

    def __str__(self):
        return "<Form {}, {} fields, sha1:{}>".format(self.pk, len(self.form_spec), self.sha1)
コード例 #20
0
ファイル: models.py プロジェクト: jatinderjit/django-indices
class Index(models.Model):
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    name = models.TextField()
    unique = models.BooleanField()
    field = pg.JSONField()
    where = pg.JSONField(null=True, blank=True)

    def get_structure(self):
        return {
            "name": self.name,
            "fields": set(self.field),
            "unique": self.unique,
            "where": set(self.where) if self.where else None,
        }
コード例 #21
0
class Log(models.Model):
    """
    Store requests made against the API for easier debugging
    """
    METHODS = ('HEAD', 'OPTIONS', 'GET', 'PATCH', 'POST', 'PUT', 'DELETE')

    date = models.DateTimeField(auto_now_add=True)
    path = models.CharField(max_length=100)
    method = models.CharField(max_length=10)
    headers = postgres.JSONField()
    body = models.TextField(default="")
    get = postgres.JSONField()
    post = postgres.JSONField()

    objects = LogManager()
コード例 #22
0
ファイル: models.py プロジェクト: jomibg/Nutri
class Post(MetaTagBase):
    title = models.CharField(max_length=200)
    text = FroalaField(image_upload=True)
    topic = models.ForeignKey(Topic,
                              on_delete=models.SET_NULL,
                              related_name='posts',
                              null=True,
                              blank=True)
    published_date = models.DateField(blank=True, null=True)
    tags = fields.ArrayField(models.CharField(max_length=200),
                             blank=True,
                             default=list)
    clicks = models.IntegerField(blank=True, default=0)
    likes = models.IntegerField(blank=True, default=0)
    dislikes = models.IntegerField(blank=True, default=0)
    preferences = fields.JSONField(blank=True, default=dict)
    objects = models.Manager()
    published = PublishedMenager()

    class Meta:
        ordering = ['-published_date']
        indexes = [
            models.Index(fields=['-published_date']),
        ]

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('blog:post_detail', kwargs={'pk': self.pk})
コード例 #23
0
ファイル: models.py プロジェクト: varun-nyu/ancile
class DataProvider(models.Model):
    provider_type = models.TextField(default="OAUTH")
    path_name = models.CharField(max_length=128, unique=True)
    display_name = models.TextField(unique=True, blank=True)
    client_id = models.TextField(default=None)
    client_secret = models.TextField(default=None)
    access_token_url = models.TextField(default=None)
    auth_url = models.TextField(default=None)
    extra_params = fields.JSONField(default=dict)

    @property
    def request_headers(self):
        basic_header = str(
            b64encode(bytes(self.client_id + ":" + self.client_secret,
                            "utf8")), "utf-8")
        return {"Authorization": "basic " + basic_header}

    def generate_url(self, base):
        scopes = [s.value for s in Scope.objects.filter(provider=self)]
        session = OAuth2Session(client_id=self.client_id,
                                redirect_uri=self.redirect_url(base),
                                scope=scopes)

        extra_params = json.loads(self.extra_params) \
            if isinstance(self.extra_params, str) else self.extra_params

        auth_url, state = session.authorization_url(self.auth_url,
                                                    **extra_params)
        return auth_url, state

    def redirect_url(self, base):
        return parse.urljoin(base, f"/oauth/{self.path_name}/callback")
コード例 #24
0
class Organizer(models.Model):
    slug = models.SlugField(max_length=50,unique=True)
    name = models.CharField(max_length=50)
    description = models.TextField()
    config = postgres_fields.JSONField(default=dict)
    def __unicode__(self):
        return self.name
コード例 #25
0
class UserDefGroupTallyBaseNonStored(UserDefTallyBaseNonStored):

    get_group = pg_fields.JSONField(
        default=None,
        blank=True, null=True,
    )

    def as_tally(self, **kwargs):
        return super().as_tally(get_group=decode(self.get_group), **kwargs)

    class UserTally(Group, UserDefTallyBaseNonStored.UserTally):

        def __init__(self, get_group=None, **kwargs):
            super(Group, self).__init__(**kwargs)
            self._get_group = get_group

        def get_group(self, value):
            return run(
                self._get_group,
                Env(
                    env={'value': value},
                    base_env=self._env,
                ),
                log=True,
            )

    class Meta:
        abstract = True
コード例 #26
0
class CollectionImport(models.Model):
    """A model representing a collection import task details."""

    task = models.OneToOneField(Task,
                                on_delete=models.CASCADE,
                                editable=False,
                                related_name="+",
                                primary_key=True)
    messages = psql_fields.JSONField(default=list, editable=False)

    class Meta:
        ordering = ["task__pulp_created"]

    def add_log_record(self, log_record):
        """
        Records a single log message but does not save the CollectionImport object.

        Args:
            log_record(logging.LogRecord): The logging record to record on messages.

        """
        self.messages.append({
            "message": log_record.msg,
            "level": log_record.levelname,
            "time": log_record.created
        })
コード例 #27
0
class BotSetting(ModelReprMixin, models.Model):
    """A configuration entry for the bot."""

    name = models.CharField(primary_key=True,
                            max_length=50,
                            validators=(validate_bot_setting_name, ))
    data = pgfields.JSONField(help_text="The actual settings of this setting.")
コード例 #28
0
class Run(models.Model):
    RUNNING = 'running'
    SUCCEEDED = 'succeeded'
    FAILED = 'failed'
    STATUS_CHOICES = [(x, x) for x in (RUNNING, SUCCEEDED, FAILED)]

    workflow = models.ForeignKey(Workflow, models.PROTECT)
    submitted_time = models.DateTimeField()
    scheduled_time = models.DateTimeField(null=True)
    status = models.TextField(default=RUNNING, choices=STATUS_CHOICES)
    parameters = fields.JSONField(default=dict)

    def update_status(self):
        from yawn.task.models import Task

        task_statuses = self.task_set.all().values_list('status', flat=True)

        if all([status == Task.SUCCEEDED for status in task_statuses]):
            self.status = self.SUCCEEDED
        elif any([
                status in [Task.WAITING, Task.QUEUED, Task.RUNNING]
                for status in task_statuses
        ]):
            self.status = self.RUNNING
        else:
            self.status = self.FAILED

        self.save()

    def __str__(self):
        return 'Workflow {} Run {}'.format(self.workflow_id, self.id)
コード例 #29
0
ファイル: models.py プロジェクト: paryoja/dashboard
class PeopleImage(models.Model):
    """이미지."""

    url = models.URLField(unique=True, max_length=400)
    title = models.TextField(max_length=500)
    category = models.ForeignKey(
        Category, on_delete=models.SET_NULL, null=True, blank=True
    )
    page = models.CharField(max_length=60)
    selected = models.BooleanField(null=True, blank=True)
    user_id = models.CharField(max_length=20)
    meta = fields.JSONField(null=True, blank=True)
    content_parsed = models.BooleanField(null=True, blank=True, default=None)

    def get_user_id(self):
        """URL 의 5번째 항목."""
        return self.url.split("/")[5]

    def save(
        self, force_insert=False, force_update=False, using=None, update_fields=None
    ):
        """저장시 user_id 세팅."""
        self.user_id = self.get_user_id()
        super().save(force_insert, force_update, using, update_fields)

    def __str__(self):
        return str(self.url)
コード例 #30
0
ファイル: models.py プロジェクト: paryoja/dashboard
class Stock(models.Model):
    """주식 정보."""

    code = models.CharField(max_length=10)
    name = models.CharField(max_length=30)
    is_etf = models.BooleanField(default=False)
    price_list = fields.JSONField(null=True, blank=True)