from mongoengine import *


class ProductList(Document):
    name = StringField(required=True, unique=True)
    
    def import_offers(self, offers):
        for o in Offer.objects.filter(productlist=self.name):
            o.old=True
            o.save()
        
        for offer in offers:
            try:
                o = Offer.objects.get(
                    productlist=self.name, articlenumber=offer['articlenumber'])
            except Offer.DoesNotExist:
                o = Offer(
                    productlist=self.name, articlenumber=offer['articlenumber'],
                )
            o.productlist = self.name
            o.title = offer['title']
            # Update a bunch of fields
            # ...
            o.old = False
            o.save()
        
        query = Offer.objects.filter(productlist=self.name, old=True)
        if query:
            query.delete()


class Offer(Document):
    articlenumber = StringField(required=True)
    title = StringField()
    productlist = StringField()
    # Define a bunch of fields
    # ...
    old = BooleanField(default=False)

    meta = {
        'indexes': [('articlenumber', 'productlist')]
    }