예제 #1
0
class MetaDataModel(models.Model):
    items = models.PositiveIntegerField(null=True)
    fields = models.PositiveSmallIntegerField(null=True)
    preview = models.FileField(null=True, upload_to=file_upload_path)
    fields_names = pg_fields.ArrayField(models.TextField(),
                                        blank=True,
                                        default=list)
    fields_with_urls = pg_fields.ArrayField(models.TextField(),
                                            blank=True,
                                            default=list)

    class Meta:
        abstract = True

    @property
    def data(self):
        if not self.preview:
            return {}

        self.preview.seek(0)

        preview = json.loads(self.preview.read())
        preview["labels"] = {}

        if "fields" in preview:
            for k, v in preview["fields"].items():
                label = self.get_data_source_meta().fields_labels.get(
                    k, {"type": v.get("dtype")})
                preview["labels"][k] = label

        return preview

    @property
    def shape(self):
        return [self.items, self.fields]
예제 #2
0
class AclAbstractModel(SimpleAclAbstractModel):
    _users = pg_fields.ArrayField(models.IntegerField(),
                                  default=list,
                                  blank=True)
    _groups = pg_fields.ArrayField(models.IntegerField(),
                                   default=list,
                                   blank=True)
    _public = models.BooleanField(default=False)

    class Meta:
        abstract = True

    @staticmethod
    @receiver(class_prepared,
              dispatch_uid='AclAbstractModel.prepare_acl_manager')
    def prepare_acl_manager(sender, **kwargs):
        if issubclass(sender, AclAbstractModel):
            manager = sender.objects
            orig_queryset_class = manager._queryset_class
            if issubclass(orig_queryset_class, AclQuerySet):
                parent = (orig_queryset_class, )
            else:
                parent = (AclQuerySet, orig_queryset_class)

            # Django abstract manager inheritance is pretty much non-existing so we just create it for each model
            queryset_class = type('AclQuery', parent, {})
            new_manager = sender.objects.from_queryset(queryset_class)()
            new_manager.name = manager.name
            new_manager.model = sender

            sender.objects = new_manager
예제 #3
0
class Metadata(models.Model):
    url = models.TextField()
    keywords = fields.ArrayField(models.TextField(), blank=True, default=list)
    entities = fields.ArrayField(models.TextField(), blank=True, default=list)

    def __str__(self):
        return self.url
예제 #4
0
class Survey(BaseDocumentModel):
    township = pg_fields.ArrayField(
        models.PositiveIntegerField(null=True, blank=True),
        help_text=ARRAY_FIELD_HELP_TEXT
    )
    section = pg_fields.ArrayField(
        models.PositiveIntegerField(null=True, blank=True),
        help_text=ARRAY_FIELD_HELP_TEXT
    )
    range = pg_fields.ArrayField(
        models.PositiveIntegerField(null=True, blank=True),
        help_text=ARRAY_FIELD_HELP_TEXT
    )
    map_number = models.CharField(max_length=255, null=True, blank=True)
    location = models.TextField(blank=True, null=True)
    description = models.TextField(blank=True, null=True)
    job_number = models.CharField(max_length=255, blank=True, null=True)
    number_of_sheets = models.CharField(max_length=255, blank=True, null=True)
    date = models.CharField(max_length=255, blank=True, null=True)
    cross_ref_area = models.PositiveIntegerField(blank=True, null=True)
    cross_ref_section = models.PositiveIntegerField(blank=True, null=True)
    cross_ref_map_number = models.CharField(
        max_length=255,
        blank=True,
        null=True
    )
    hash = models.CharField(max_length=255, null=True, blank=True)
    source_file = models.FileField(upload_to='SURVEYS')
예제 #5
0
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)
예제 #6
0
class Card(models.Model):
    id = models.CharField(primary_key=True, max_length=40)
    name = models.CharField(max_length=255)
    types = pgfields.ArrayField(models.CharField(max_length=128))
    costs = pgfields.ArrayField(models.CharField(max_length=5), default=list)
    number_cost = models.DecimalField(default=0,
                                      max_digits=14,
                                      decimal_places=4)
    id_external = models.CharField(max_length=100)
    id_rarity = models.CharField(choices=Rarity.ALL, max_length=40)
    # rarity = models.ForeignKey('Rarity', on_delete=models.PROTECT)
    # id_set = models.CharField(max_length=40)
    set = models.ForeignKey(
        'Set',
        on_delete=models.PROTECT,
        db_column='id_set',
        max_length=40,
        related_name='cards',
    )
    id_asset = models.CharField(max_length=40)
    rate = models.DecimalField(default=0, max_digits=14, decimal_places=4)
    rate_votes = models.DecimalField(default=0,
                                     max_digits=10,
                                     decimal_places=0)
    rules = pgfields.ArrayField(models.CharField(max_length=512), default=list)
    order_external = models.CharField(null=True, max_length=15)
    artist = models.CharField(null=True, max_length=255)
    flavor = models.TextField(null=True, max_length=1024)
    data = pgfields.JSONField(null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(null=True, auto_now=True)
    deleted_at = models.DateTimeField(null=True)

    def __str__(self):
        return self.name
예제 #7
0
class License(BaseDocumentModel):
    license_number = models.CharField(max_length=255, null=True, blank=True)
    description = models.TextField(null=True, blank=True)
    geometry = gis_models.GeometryCollectionField(blank=True, null=True)
    type = models.CharField(max_length=255, null=True, blank=True)
    entity = models.CharField(max_length=255, null=True, blank=True)
    diameter = models.PositiveIntegerField(null=True, blank=True)
    material = models.CharField(max_length=255, null=True, blank=True)
    end_date = models.CharField(max_length=255, null=True, blank=True)
    status = models.CharField(max_length=255, null=True, blank=True)
    agreement_type = models.CharField(max_length=255, null=True, blank=True)
    township = pg_fields.ArrayField(
        models.PositiveIntegerField(null=True),
        help_text=ARRAY_FIELD_HELP_TEXT,
        default=list
    )
    range = pg_fields.ArrayField(
        models.PositiveIntegerField(null=True),
        help_text=ARRAY_FIELD_HELP_TEXT,
        default=list
    )
    section = pg_fields.ArrayField(
        models.PositiveIntegerField(null=True),
        help_text=ARRAY_FIELD_HELP_TEXT,
        default=list
    )
    source_file = models.FileField(upload_to='LICENSES')
예제 #8
0
class Job(models.Model):
    source = models.CharField(max_length=50, blank=False, default="none")
    is_sample = models.BooleanField(blank=False)
    md5 = models.CharField(max_length=50, blank=False)
    observable_name = models.CharField(max_length=50, blank=True)
    observable_classification = models.CharField(max_length=50, blank=True)
    file_name = models.CharField(max_length=50, blank=True)
    file_mimetype = models.CharField(max_length=50, blank=True)
    status = models.CharField(max_length=50,
                              blank=False,
                              choices=STATUS,
                              default="pending")
    analyzers_requested = postgres_fields.ArrayField(
        models.CharField(max_length=900), blank=True, default=list)
    run_all_available_analyzers = models.BooleanField(blank=False,
                                                      default=False)
    analyzers_to_execute = postgres_fields.ArrayField(
        models.CharField(max_length=900), 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=utilities.file_directory_path)
예제 #9
0
class Application(AbstractApplication):
    owner = models.UUIDField(
        null=True,
        blank=True,
        db_index=True,
        help_text="Unique identifier for the owner of the application",
    )
    aggregator_for = models.ManyToManyField(
        Provider,
        blank=True,
        help_text="Provider the application is allowed to write for",
    )
    scopes = pg_fields.ArrayField(
        models.CharField(max_length=32),
        help_text="Application allowed scopes (separated with commas)",
    )

    users_allowed_scopes = pg_fields.ArrayField(
        models.CharField(max_length=32),
        help_text="User's allowed scopes (separated with commas)",
        default=list,
        blank=True,
    )

    def natural_key(self):
        return (self.client_id, )

    @property
    def scopes_string(self):
        return " ".join(sorted(set(self.scopes)))
예제 #10
0
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}")'
예제 #11
0
class Rules(models.Model):
    name = models.CharField(max_length=255)
    reply_to = models.TextField(blank=True, null=True)
    authors = fields.ArrayField(models.CharField(max_length=255),
                                blank=True,
                                null=True)  # This field type is a guess.
    branches = fields.ArrayField(models.CharField(max_length=255),
                                 blank=True,
                                 null=True)  # This field type is a guess.
    paths = fields.ArrayField(models.CharField(max_length=255),
                              blank=True,
                              null=True)  # This field type is a guess.
    projects = fields.ArrayField(models.CharField(max_length=255),
                                 blank=True,
                                 null=True)  # This field type is a guess.
    to = fields.ArrayField(models.CharField(max_length=255),
                           blank=True,
                           null=True)  # This field type is a guess.

    class Meta:
        managed = False
        db_table = 'rules'

    def get_absolute_url(self):
        return reverse("rules:detail", kwargs={"pk": self.pk})
예제 #12
0
class CVResult(models.Model):

    params = fields.JSONField(default=dict)
    gridsearch = models.ForeignKey(GridSearch, related_name='results')
    fit_time = fields.ArrayField(models.FloatField(default=0.), default=list)
    score_time = fields.ArrayField(models.FloatField(default=0.), default=list)
    errors = models.TextField(null=True, blank=True)
예제 #13
0
class CVResultScore(models.Model):

    scorer = models.CharField(max_length=256)
    cv_result = models.ForeignKey(CVResult, related_name='scores')
    train_scores = fields.ArrayField(models.FloatField(default=0.),
                                     default=list)
    test_scores = fields.ArrayField(models.FloatField(default=0.),
                                    default=list)
    score = models.FloatField(default=0.)
예제 #14
0
class Gene(models.Model):
    class Meta:
        db_table = "cognoma_genes"

    entrez_gene_id = models.IntegerField(primary_key=True)
    symbol = models.CharField(max_length=32)
    description = models.CharField(max_length=256)
    chromosome = models.CharField(max_length=8, null=True)
    gene_type = models.CharField(max_length=16)
    synonyms = postgresfields.ArrayField(models.CharField(max_length=32), null=True)
    aliases = postgresfields.ArrayField(models.CharField(max_length=256), null=True)
예제 #15
0
class Course(models.Model):
    """A course model.

    Note:
    * "sessions" is a JSONField, so it can't natively perform model-level
      validations of the data format. The input for "sessions" should be
      checked rigorously before creating/updating a Course instance.

      The input of "sessions" should be of the form:
        "sessions": [
            {
                "day": "",
                "period": "",
                "classrooms": ["", ""]
            },
            {
                "day": "",
                "period": "",
                "classrooms": [""]
            },
            ...
        ]


    """
    title = models.CharField(max_length=150)
    course_class_code = models.CharField(max_length=20)
    course_code = models.CharField(max_length=10, blank=True)
    level = models.CharField(
        max_length=100,
        blank=True)  # Ex. "Final stage advanced-level undergraduate"
    category = models.CharField(max_length=100,
                                blank=True)  # Ex. "Elective Subjects"
    eligible_year = models.CharField(max_length=50)  # Ex. "4th year and above"
    credits = models.IntegerField()
    main_language = models.CharField(max_length=50)
    campus = models.CharField(max_length=50, blank=True)
    year = models.CharField(max_length=10)
    term = models.CharField(max_length=50, blank=True)
    syllabus_url = models.URLField(blank=True)
    schools = postgres_fields.ArrayField(models.CharField(max_length=70),
                                         size=3,
                                         blank=True,
                                         null=True)
    academic_disciplines = postgres_fields.ArrayField(models.CharField(
        max_length=100, blank=True),
                                                      size=3,
                                                      blank=True,
                                                      null=True)
    instructors = postgres_fields.ArrayField(
        models.CharField(max_length=100, blank=True),
        size=43,
    )
    sessions = postgres_fields.JSONField()
예제 #16
0
class Team(models.Model):
    name = models.CharField(max_length=10, primary_key=True)
    elos = pgfields.ArrayField(base_field=models.FloatField())
    elo_changes = pgfields.ArrayField(base_field=models.FloatField())

    def calculate_changes(self):
        self.elo_changes = list()
        #no change for the first week
        self.elo_changes.append(0)
        for i in range(1, len(self.elos)):
            self.elo_changes.append(self.elos[i] - self.elos[i - 1])

    def __str__(self):
        return self.name
예제 #17
0
class RushProfile(models.Model):
    FRESHMAN = "FR"
    SOPHOMORE = "SO"
    JUNIOR = "JR"
    SENIOR = "SR"

    first_name = models.CharField(max_length=20)
    last_name = models.CharField(max_length=20)
    email = models.CharField(max_length=8)
    semester = models.CharField(max_length=3)
    phone_number = models.CharField(max_length=11)
    grade = models.CharField(max_length=2,
                             choices=((FRESHMAN, "Freshman"), (SOPHOMORE,
                                                               "Sophomore"),
                                      (JUNIOR, "Junior"), (SENIOR, "Senior")))
    channel = models.CharField(max_length=30)

    major_schools = fields.ArrayField(
        models.CharField(max_length=6))  # max_length => CAS,ENG,QST,Pardee
    majors = models.CharField(max_length=100)
    minors = models.CharField(max_length=100, blank=True, null=True)

    events_attended = fields.ArrayField(models.CharField(max_length=50),
                                        default=list)
    submitted_application = models.BooleanField(default=False)
    interview_wave = models.PositiveSmallIntegerField(null=True, blank=True)
    interview_prelim_yes = models.PositiveSmallIntegerField(null=True,
                                                            blank=True)
    interview_prelim_no = models.PositiveSmallIntegerField(null=True,
                                                           blank=True)
    interview_prelim_abstain = models.PositiveSmallIntegerField(null=True,
                                                                blank=True)
    interview_prelim_deliberate = models.NullBooleanField(null=True,
                                                          blank=True)
    interview_final_yes = models.PositiveSmallIntegerField(null=True,
                                                           blank=True)
    interview_final_no = models.PositiveSmallIntegerField(null=True,
                                                          blank=True)
    interview_final_abstain = models.PositiveSmallIntegerField(null=True,
                                                               blank=True)
    given_bid = models.NullBooleanField(null=True, blank=True)

    def __str__(self):
        return "%s %s (%[email protected])" % (self.first_name, self.last_name,
                                      self.email)

    class Meta:
        verbose_name = 'Rush Profile'
        ordering = ['last_name']
예제 #18
0
class Target(models.Model):
    """
    This contains Target(Course) related information
    """
    target_type = models.CharField(max_length=4, choices=TARGET_TYPES, default='HP')
    start_date = models.DateTimeField(db_index=True)
    end_date = models.DateTimeField()
    # Ids of the Users who are Owners/Admins for this Target
    admins = pg_fields.ArrayField(models.IntegerField(), db_index=True)
    # Ids of the Users who are Volunteers for this Target
    volunteers = pg_fields.ArrayField(models.IntegerField(), db_index=True)
    total_leads = models.IntegerField(default=0)
    is_complete = models.BooleanField(default=False)
    created_at = models.DateTimeField(default=timezone.now)
    updated_at = models.DateTimeField(default=timezone.now)
예제 #19
0
class Recipe(models.Model):
    origin_id = models.CharField(max_length=255, unique=True)
    group_name = models.CharField(max_length=100, default="Etc")
    title = models.TextField()
    image_url = models.URLField()
    ingredients = pgfields.ArrayField(models.TextField())
    instructions = pgfields.JSONField()
    sentences = pgfields.ArrayField(models.TextField())
    last_assigned = models.DateTimeField(default=timezone.now)
    is_unused = models.BooleanField(default=False)

    def __str__(self):
        return self.title

    """
예제 #20
0
class Source(models.Model):
    source_quote = models.TextField()
    source_url = models.TextField()
    source_title = models.TextField()
    source_name = models.TextField()
    source_date = models.DateTimeField(default=django.utils.timezone.now)
    other_article_urls = fields.ArrayField(models.TextField(),
                                           blank=True,
                                           default=list)
    other_article_titles = fields.ArrayField(models.TextField(),
                                             blank=True,
                                             default=list)

    def __str__(self):
        return self.source_quote
예제 #21
0
class Attendees(models.Model):
    """
    Storing attendees, useful only for frontend part
    """
    event = models.OneToOneField(Event,
                                 on_delete=models.CASCADE,
                                 related_name="attendees")
    departments = postgres_fields.ArrayField(models.IntegerField(),
                                             null=True,
                                             blank=True)
    individual_users = postgres_fields.ArrayField(
        models.CharField(max_length=200), blank=True, null=True)

    def __str__(self):
        return f"Departments: {self.departments}, Individual Users:{self.individual_users}"
예제 #22
0
class Team(models.Model):
    league = models.ForeignKey(League, on_delete=models.PROTECT)
    name = models.CharField(max_length=64)
    team_key = models.CharField(max_length=16, unique=True)
    avatar = models.TextField(blank=True)
    users = models.ManyToManyField(User, default=list)

    # team profile
    bio = models.CharField(max_length=1000, blank=True)
    divisions = fields.ArrayField(
        models.TextField(choices=TOURNAMENT_DIVISION_CHOICES), default=list)

    # scrimmages
    mu = models.FloatField(default=25)
    sigma = models.FloatField(default=8.333)
    auto_accept_ranked = models.BooleanField(default=False)
    auto_accept_unranked = models.BooleanField(default=False)
    wins = models.IntegerField(default=0)
    losses = models.IntegerField(default=0)
    draws = models.IntegerField(default=0)

    code = models.TextField(default="// Get started by reading the docs!")

    # metadata
    deleted = models.BooleanField(default=False)

    def __str__(self):
        return '{}: (#{}) {}'.format(self.league, self.id, self.name)
예제 #23
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})
예제 #24
0
class Tag(MTModel):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                             null=True,
                             on_delete=models.CASCADE)
    name = models.CharField(max_length=255)
    words = postgresfields.ArrayField(models.CharField(max_length=100),
                                      blank=True,
                                      default=list)
    slug = models.SlugField(null=True)

    def __str__(self):
        return 'Tag %s for User %s' % (self.name, self.user)

    class Meta:
        unique_together = ['user', 'slug']
        db_table = 'walletweb_tag'

    @property
    def transactions(self):
        """
        Returns all user transactions associated with this tag.
        :return: QuerySet[Transaction]
        """
        return Transaction.objects.filter(tags__slug=self.slug,
                                          user=self.user).all()

    def save(self, *args, **kwargs):
        if not self.id:
            # Newly created object, so set slug
            self.slug = slugify(self.name)

        super().save(*args, **kwargs)
예제 #25
0
class Order(models.Model):
    order_id = fields.IntegerField(primary_key=True)
    weight = fields.FloatField()
    region = fields.IntegerField()
    delivery_hours = pg_fields.ArrayField(fields.CharField(max_length=12))

    delivery_pack = ForeignKey(DeliveryPack, on_delete=CASCADE, default=None, blank=True, null=True)
    delivery_time = fields.IntegerField(default=None, blank=True, null=True)

    def is_completed(self):
        return self.delivery_time is not None

    def set_completed(self, seconds: int):
        if not self.is_completed():
            self.delivery_time = seconds

    def is_inside_working_time(self, courier: Courier):
        for available_period in self.delivery_hours:
            for delivery_period in courier.working_hours:
                result = time_utils.inside_bounds(available_period, delivery_period)
                if result:
                    return True
        return False

    def __getitem__(self, item):
        return getattr(self, item)

    def __setitem__(self, key, value):
        setattr(self, key, value)

    def get_list_of_fields(self):
        return self._meta.get_fields()
예제 #26
0
 class SpecialtyPizza(models.Model):
     toppings = postgres_fields.ArrayField(models.CharField(max_length=20), size=4)
     metadata = postgres_fields.HStoreField()
     price_range = postgres_fields.IntegerRangeField()
     sales = postgres_fields.BigIntegerRangeField()
     available_on = postgres_fields.DateTimeRangeField()
     season = postgres_fields.DateRangeField()
예제 #27
0
파일: report.py 프로젝트: fanshuai/kubrick
class ReportRecord(BasicModel):
    """ 举报记录 """
    class Meta:
        verbose_name = 'ReportRecord'
        verbose_name_plural = verbose_name
        index_together = ['kind', 'is_offend', 'is_solved']
        db_table = 'k_rt_reportrecord'
        ordering = ('-updated_at', )

    usrid = models.BigIntegerField('用户', db_index=True)
    touchid = models.BigIntegerField('对方', db_index=True)
    kind = models.PositiveSmallIntegerField('类型',
                                            choices=mc.ReportKind.choices,
                                            default=0)
    kind_txt = models.CharField('类型描述', max_length=50, default='')
    is_offend = models.BooleanField('是否反感', default=False)  # 有人身攻击或让人感觉不适
    offended = models.CharField('反感原因或感受', max_length=200, default='')
    evidence = fields.ArrayField(models.URLField(default=''),
                                 verbose_name='证据',
                                 size=5)
    is_solved = models.BooleanField('是否已解决', default=False)
    feedback = models.CharField('给举报者的反馈', max_length=200, default='')
    operator = models.PositiveIntegerField('运营操作员', default=0)
    memo = models.TextField('运营备忘', default='')

    objects = ReportRecordManager()

    @property
    def report_user(self):
        user = ReportUser.objects.get(touchid=self.touchid)
        return user
예제 #28
0
class Currency(models.Model):
    code = fields.CodeISOField(_('code ISO 4217'),
                               length=3,
                               primary_key=True,
                               regex=r'[A-Z]')

    numeric = fields.CodeISOField(_('code ISO 4217 numeric'),
                                  blank=True,
                                  length=3,
                                  regex=r'\d')

    name = models.CharField(_('name'), max_length=64)
    full_name = models.CharField(_('full name'), blank=True, max_length=64)

    minor_unit = models.PositiveSmallIntegerField(blank=True, null=True)
    symbol = models.CharField(_('symbol'), blank=True, max_length=4)

    unicode_hex = pg_fields.ArrayField(models.CharField(max_length=8),
                                       null=True,
                                       verbose_name=_('unicode hex'))

    class Meta:
        ordering = ('code', )
        verbose_name = _('currency')
        verbose_name_plural = _('currencies')

    def __str__(self):
        return self.code
예제 #29
0
class MarkedResult(models.Model):
    class Meta:
        unique_together = (('chat_date', 'client_id'), )
        indexes = [
            models.Index(fields=[
                'chat_date',
            ]),
            models.Index(fields=[
                'client_id',
            ]),
        ]

    chat_date = models.DateField()
    client_id = models.CharField(max_length=6)
    topic = models.ForeignKey(Topic, on_delete=models.SET_DEFAULT, default=-1)
    subtopic = models.ForeignKey(Subtopic,
                                 on_delete=models.SET_DEFAULT,
                                 default=-1)
    custom_topic = models.CharField(max_length=800, null=True)
    custom_subtopic = models.CharField(max_length=800, null=True)
    aggressive_client = models.BooleanField(default=False)
    non_standard_question = models.BooleanField(default=False)
    chosen_phrases = fields.ArrayField(models.TextField())

    def __str__(self):
        return f'{self.client_id};{self.topic};{self.subtopic};{self.custom_topic};{self.custom_subtopic};{self.aggressive_client};{self.non_standard_question};{self.chosen_phrases}'
예제 #30
0
class SearchTask(models.Model):
    user = models.ForeignKey(User)
    query = models.CharField("Пошуковий запит", max_length=150)
    deepsearch = models.BooleanField("Шукати скрізь", default=False)
    query_params = models.TextField("Опції",
                                    blank=True,
                                    default="",
                                    max_length=500)
    is_enabled = models.BooleanField("Активний", default=True, db_index=True)
    is_deleted = models.BooleanField("Видалений", default=False)
    found_total = models.IntegerField("Знайдено всього", default=0)
    found_week = models.IntegerField("Знайдено за тиждень", default=0)
    found_ids = fields.ArrayField(models.CharField(max_length=60),
                                  blank=True,
                                  default=[],
                                  verbose_name="Знайдені документи")
    last_run = models.DateTimeField("Останній запуск",
                                    null=True,
                                    blank=True,
                                    default=None)
    created = models.DateTimeField("Створений", auto_now_add=True, blank=True)

    def __str__(self):
        return self.query

    @property
    def title(self):
        title = self.query
        if not title:
            title = "(пустий) #{}".format(self.id)
        elif self.deepsearch:
            title += " (скрізь)"
        return title