Beispiel #1
0
class NewCollegeBasicInfoDocument(Document):
    name = fields.TextField(attr='college_name',
                            fields={
                                'suggest': fields.Completion(),
                            })
    city_name = fields.TextField(fields={
        'suggest': fields.Completion(),
    })

    def prepare_city_name(self, instance):
        try:
            city_text = NewCollegeCollegeCities.objects.get(id=instance.city)
        except NewCollegeCollegeCities.DoesNotExist:
            city_text = None
        if city_text:
            return city_text.city
        return "default"

    class Django:
        model = NewCollegeBasicInfo
        fields = [
            'id',
            'college_name',
        ]

    queryset_pagination = 50
Beispiel #2
0
class ForumPostDocument(Document):
    forum_comments = fields.NestedField(
        properties={
            'author':
            fields.TextField(
                attr="author",
                fields={
                    'raw': fields.TextField(analyzer=html_strip),
                    'suggest': fields.Completion(analyzer=sugg_analyzer)
                }),
            'text':
            fields.TextField(
                attr="text",
                fields={
                    'raw': fields.TextField(analyzer=html_strip),
                    'suggest': fields.Completion(analyzer=sugg_analyzer)
                })
        })

    class Index:
        # Name of the Elasticsearch index
        name = 'forum_posts_index'
        # See Elasticsearch Indices API reference for available settings
        settings = {'number_of_shards': 1, 'number_of_replicas': 0}

    class Django:
        """
            I no longer have an autocomplete defined as the amount of requests goes
            through the roof.
        """
        # text = fields.TextField(
        #     attr='text',
        #     fields={
        #         'raw': fields.TextField(analyzer=html_strip),
        #         'suggest': fields.Completion(analyzer=sugg_analyzer),
        #     }
        # )

        # title = fields.TextField(
        #     attr='title',
        #     fields={
        #         'raw': fields.TextField(analyzer=html_strip),
        #         'suggest': fields.Completion(analyzer=sugg_analyzer),
        #     }
        # )

        # author = fields.TextField(
        #     attr='title',
        #     fields={
        #         'raw': fields.TextField(analyzer=html_strip),
        #         'suggest': fields.Completion(analyzer=sugg_analyzer),
        #     })

        model = ForumPost
        fields = [
            'title',
            'text',
            'category',
            'author',
        ]
Beispiel #3
0
class ProfilDocument(Document):
    name = fields.TextField(fielddata=True,
                            attr='lastname',
                            fields={
                                'suggest': fields.Completion(),
                            })
    works = fields.NestedField(properties={
        "job": fields.TextField(),
        "title": fields.TextField()
    })
    promo = fields.TextField(attr="promo")
    links = fields.NestedField(properties={
        "url": fields.TextField(),
        "text": fields.TextField()
    })
    public_url = fields.TextField(attr="public_url")

    class Index:
        name = 'profils'
        settings = {"number_of_shards": 1, "number_of_replicas": 0}

    class Django(object):
        model = Profil
        fields = [
            "id", "firstname", "lastname", "acceptSponsor", "email",
            "department", "cp", "cursus", "mobile", "photo", "address", "town",
            "degree_year", "dtLastUpdate"
        ]

    def get_queryset(self):
        return super().get_queryset().select_related('extrauser')
Beispiel #4
0
class CarDocument(DocType):
    name = fields.TextField(attr='name',
                            fields={
                                'suggest': fields.Completion(),
                            })
    manufacturer = fields.ObjectField(properties={
        'name': fields.TextField(),
        'country_code': fields.TextField(),
    })
    auction_title = fields.TextField(attr='get_auction_title')
    points = fields.IntegerField()

    def prepare_points(self, instance):
        if instance.color == 'silver':
            return 2
        return 1

    class Meta:
        model = Car
        fields = [
            'id',
            'color',
            'description',
            'type',
        ]

        related_models = [Manufacturer]

    def get_queryset(self):
        return super().get_queryset().select_related('manufacturer')

    def get_instances_from_related(self, related_instance):
        if isinstance(related_instance, Manufacturer):
            return related_instance.car_set.all()
class ProductDocument(Document):
    name = fields.TextField(
        attr='name',
        fields={
            'suggest': fields.Completion(),
        }
    )
    url = fields.TextField(attr='get_absolute_url')

    class Django:
        model = Product
        fields = [
            'id',
            'thumbnail',
        ]

    def get_queryset(self):
        return super().get_queryset()
Beispiel #6
0
class IncidentDocument(DocType):

    title = fields.StringField(attr='incident_title',
                               fields={
                                   'raw':
                                   fields.StringField(analyzer='keyword'),
                                   'suggest': fields.Completion(),
                               })

    description = fields.StringField(
        attr='description',
        fields={
            'raw': fields.StringField(analyzer='keyword'),
        })

    class Meta:
        model = Incident
        fields = ['id', 'incident_title', 'description']
class CourseDocument(DocType):

    title = fields.StringField(
        attr='course_title',
        fields={
            'raw': fields.StringField(analyzer='keyword'),
            'suggest': fields.Completion(),
        }
    )

    course_level = fields.StringField(
        attr='level',
        fields={
            'raw': fields.StringField(analyzer='keyword'),
        }
    )

    class Meta:
        model = Course
        fields = [
            'id',
            'course_title',
            'level'
        ]
Beispiel #8
0
 class Index:
     title = fields.TextField(attr='name',
                              fields={
                                  'suggest': fields.Completion(),
                              })
Beispiel #9
0
class EmployeeDocument(Document):

    first_name = fields.TextField(attr='first_name',
                                  analyzer=trigram_analyzer,
                                  fields={
                                      'suggest': fields.Completion(),
                                  })

    middle_name = fields.TextField(attr='middle_name',
                                   analyzer=trigram_analyzer,
                                   fields={
                                       'suggest': fields.Completion(),
                                   })

    last_name = fields.TextField(attr='last_name',
                                 analyzer=trigram_analyzer,
                                 fields={
                                     'suggest': fields.Completion(),
                                 })

    work_email = fields.TextField(attr='work_email',
                                  analyzer=email_analyzer,
                                  fields={
                                      'suggest': fields.Completion(),
                                  })

    skills = fields.TextField(attr='skills',
                              analyzer=trigram_analyzer,
                              fields={
                                  'suggest': fields.Completion(),
                              })

    employee_id = fields.TextField(attr='employee_id',
                                   analyzer=trigram_analyzer,
                                   fields={
                                       'suggest': fields.Completion(),
                                   })

    position = fields.TextField()
    work_country_code = fields.TextField()
    id = fields.KeywordField()

    class Index:
        name = 'employee'
        doc_type = '_doc'

    class Django:
        model = Employee

    @staticmethod
    def default_search_fields_full_text():
        """
        Default searchable fields
        :return: tuple
        """
        default_search_fields = ("first_name", "middle_name", "last_name",
                                 "work_email", "employee_id", "position",
                                 "work_country_code")
        return default_search_fields

    def as_dict(self):
        """
        Convert the index data to dictionary
        :return:
        """
        result = dict()
        _fields = self.default_search_fields_full_text()
        for _field in _fields:
            result[_field] = getattr(self, _field)

        result['id'] = getattr(self, "id")

        return result