Skip to content

Instantly share code, notes, and snippets.

Avatar

Harsh harshvb7

  • Cologne, Germany
View GitHub Profile
View some_stuff.txt
tests/views/test_project_detail_view.py
tests/views/.....
>> Views must ONLY test input and status code of the response. Mock the business logic to test the status code.
Ideally our views should be very SLIM and all the logic must go in services and helper functions
If we need to access some variables from request in the service, then better destructure it in the view and pass ONLY the variable in the service NEVER the request object.
In case of API view, call the service from the serializer after validating the input. Don't come back to the view with the validated input and then put the input again in the service.
tests/services/test_document_service.py
View multi_fields.py
# we also index a keyword version of the field
name = Text(
analyzer=my_custom_analyzer,
fields={'keyword': es.Keyword()}
)
# and use it with facets like this
'city': TermsFacet(field='user.city.name.keyword'),
View filters.py
from elasticsearch_dsl import FacetedSearch, TermsFacet
class TweetSearch(FacetedSearch):
facets = {
# use bucket aggregations to define facets
'city': TermsFacet(field='user.city.name'),
}
View analyzer.py
# an example from elasticsearch-dsl docs
from elasticsearch_dsl import analyzer
html_strip = analyzer('html_strip',
tokenizer="standard",
filter=["standard", "lowercase", "stop", "snowball"],
char_filter=["html_strip"]
)
View update_by_query.py
from elasticsearch_dsl import connections, UpdateByQuery
def bulk_update_docs(ids, instance, fields_changed=[]):
"""
Arguments:
ids: {list} -- list of ids of documents we want to update
instance {Model instance} -- The updated user model object
fields_changed {list} -- list of the model fields changed
"""
View sample_update.py
"""
Assume the structure of the document looks like this
{
"user": {
"first_name": "Foo",
"last_name": "Bar",
"age": "30",
"city": {
"id": 5,
View fix11.py
for offer in basket.offer_set.published().exclude(ticket_price__state=13):
_voucher_ids = list(offer.ticket_price.ticket_vouchers_multiple.all().values_list('id', flat=True))
if (offer.ticket_price.ticket_voucher and offer.ticket_price.ticket_voucher != ticket_price) or (_voucher_ids and ticket_price.id not in _voucher_ids):
....
View fix.py
def get_reserved_tickets(self, performance=None):
Offer = apps.get_model('events', 'Offer')
Order = apps.get_model('events', 'Order')
offers = Offer.objects.published().filter(
state=1,
ticket_price=self,
)
if performance:
offers = offers.filter(performance=performance)
pending_tickets = offers.filter(basket__state=0).distinct() \
View index_documents.py
from pydoc import locate
from django.conf import settings
from django.core.management.base import BaseCommand
class Command(BaseCommand):
def __init__(self):
super(Command, self).__init__()