odoo-ide / pycharm-odoo-old

PyCharm plugin for Odoo

Home Page:https://plugins.jetbrains.com/plugin/13499-odoo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Error Indexing some controllers/main.py files

eng-eslam-a-y opened this issue · comments

Error while indexing /home/eslam/PycharmProjects/Odoo12-dev/SerpentCS_Contributions/website_product_brand/controllers/main.py
To reindex this file IDEA has to be restarted

com.intellij.openapi.project.IndexNotReadyException: Please change caller according to com.intellij.openapi.project.IndexNotReadyException documentation
at com.intellij.openapi.project.IndexNotReadyException.create(IndexNotReadyException.java:81)
at com.intellij.util.indexing.FileBasedIndexImpl.handleDumbMode(FileBasedIndexImpl.java:715)
at com.intellij.util.indexing.FileBasedIndexImpl.ensureUpToDate(FileBasedIndexImpl.java:665)
at com.intellij.util.indexing.FileBasedIndexEx.processAllKeys(FileBasedIndexEx.java:119)
at com.intellij.util.indexing.FileBasedIndexEx.processAllKeys(FileBasedIndexEx.java:108)
at com.intellij.util.indexing.FileBasedIndexEx.getAllKeys(FileBasedIndexEx.java:102)
at dev.ngocta.pycharm.odoo.module.OdooModuleIndex.getAllModules(OdooModuleIndex.java:95)
at dev.ngocta.pycharm.odoo.module.OdooModuleIndex.getAllModules(OdooModuleIndex.java:112)
at dev.ngocta.pycharm.odoo.module.OdooAddonsMembersProvider.getMembersByQName(OdooAddonsMembersProvider.java:19)
at com.jetbrains.python.psi.types.PyModuleMembersProvider.getMembers(PyModuleMembersProvider.java:38)
at com.jetbrains.python.psi.types.PyModuleMembersProvider.resolveMember(PyModuleMembersProvider.java:54)
at com.jetbrains.python.psi.types.PyModuleType.resolveByMembersProviders(PyModuleType.java:260)
at com.jetbrains.python.psi.types.PyModuleType.resolveMemberInPackageOrModule(PyModuleType.java:105)
at com.jetbrains.python.psi.types.PyModuleType.resolveMember(PyModuleType.java:68)
at com.jetbrains.python.psi.resolve.PyResolveUtil.lambda$null$4(PyResolveUtil.java:288)
at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:271)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.AbstractList$RandomAccessSpliterator.forEachRemaining(AbstractList.java:720)
at one.util.streamex.AbstractStreamEx.forEach(AbstractStreamEx.java:306)
at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:550)
at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:517)
at one.util.streamex.AbstractStreamEx.toArray(AbstractStreamEx.java:344)
at com.jetbrains.python.psi.resolve.PyResolveUtil.resolveQualifiedNameInScope(PyResolveUtil.java:292)
at com.jetbrains.python.psi.impl.PyClassImpl.classTypeFromQName(PyClassImpl.java:1699)
at com.jetbrains.python.psi.impl.PyClassImpl.fillSuperClassesNoSwitchToAst(PyClassImpl.java:1388)
at com.jetbrains.python.psi.impl.PyClassImpl.getSuperClassTypes(PyClassImpl.java:1333)
at com.jetbrains.python.psi.types.PyClassTypeImpl.getSuperClassTypes(PyClassTypeImpl.java:118)
at com.jetbrains.python.psi.impl.PyClassImpl.mroLinearize(PyClassImpl.java:416)
at com.jetbrains.python.psi.impl.PyClassImpl.getMROAncestorTypes(PyClassImpl.java:1623)
at com.jetbrains.python.psi.impl.PyClassImpl.lambda$getAncestorTypesWithMetaClassInstances$5(PyClassImpl.java:1421)
at com.jetbrains.python.psi.PyUtil.getNullableParameterizedCachedValue(PyUtil.java:750)
at com.jetbrains.python.psi.PyUtil.getParameterizedCachedValue(PyUtil.java:728)
at com.jetbrains.python.psi.impl.PyClassImpl.getAncestorTypesWithMetaClassInstances(PyClassImpl.java:1417)
at com.jetbrains.python.psi.impl.PyClassImpl.getAncestorTypes(PyClassImpl.java:1412)
at com.jetbrains.python.psi.impl.PyClassImpl.getAncestorClasses(PyClassImpl.java:211)
at com.jetbrains.python.psi.impl.PyClassImpl.isSubclass(PyClassImpl.java:224)
at dev.ngocta.pycharm.odoo.model.OdooModelInfo.getInfoInner(OdooModelInfo.java:61)
at dev.ngocta.pycharm.odoo.model.OdooModelInfo.lambda$getInfo$0(OdooModelInfo.java:53)
at com.intellij.psi.util.CachedValuesManager$1.compute(CachedValuesManager.java:158)
at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:54)
at com.intellij.util.CachedValueBase.lambda$getValueWithLock$1(CachedValueBase.java:235)
at com.intellij.openapi.util.RecursionManager$1.doPreventingRecursion(RecursionManager.java:117)
at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:75)
at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:236)
at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:43)
at com.intellij.util.CachedValuesManagerImpl.getCachedValue(CachedValuesManagerImpl.java:73)
at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:154)
at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:136)
at dev.ngocta.pycharm.odoo.model.OdooModelInfo.getInfo(OdooModelInfo.java:52)
at dev.ngocta.pycharm.odoo.model.OdooModelIndex$1.visitPyClass(OdooModelIndex.java:58)
at com.jetbrains.python.psi.impl.PyClassImpl.acceptPyVisitor(PyClassImpl.java:133)
at com.jetbrains.python.psi.impl.PyBaseElementImpl.accept(PyBaseElementImpl.java:69)
at com.intellij.psi.impl.source.tree.SharedImplUtil.acceptChildren(SharedImplUtil.java:199)
at com.intellij.psi.impl.source.PsiFileImpl.acceptChildren(PsiFileImpl.java:730)
at dev.ngocta.pycharm.odoo.model.OdooModelIndex.lambda$getIndexer$0(OdooModelIndex.java:54)
at com.intellij.util.indexing.impl.MapReduceIndex.mapByIndexer(MapReduceIndex.java:317)
at com.intellij.util.indexing.impl.MapReduceIndex.mapInput(MapReduceIndex.java:309)
at com.intellij.util.indexing.VfsAwareMapReduceIndex.mapInput(VfsAwareMapReduceIndex.java:150)
at com.intellij.util.indexing.VfsAwareMapReduceIndex.mapInput(VfsAwareMapReduceIndex.java:40)
at com.intellij.util.indexing.impl.MapReduceIndex.calculateUpdateData(MapReduceIndex.java:267)
at com.intellij.util.indexing.impl.MapReduceIndex.update(MapReduceIndex.java:239)
at com.intellij.util.indexing.FileBasedIndexImpl.updateSingleIndex(FileBasedIndexImpl.java:1253)
at com.intellij.util.indexing.FileBasedIndexImpl.lambda$doIndexFileContent$20(FileBasedIndexImpl.java:1181)
at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.freezeFileTypeTemporarilyIn(FileTypeManagerImpl.java:722)
at com.intellij.util.indexing.FileBasedIndexImpl.doIndexFileContent(FileBasedIndexImpl.java:1161)
at com.intellij.util.indexing.FileBasedIndexImpl.indexFileContent(FileBasedIndexImpl.java:1147)
at com.intellij.util.indexing.UnindexedFilesUpdater.lambda$indexFiles$1(UnindexedFilesUpdater.java:128)
at com.intellij.openapi.project.CacheUpdateRunner.lambda$null$1(CacheUpdateRunner.java:224)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1106)
at com.intellij.openapi.project.CacheUpdateRunner.lambda$null$2(CacheUpdateRunner.java:240)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:164)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:625)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:570)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:61)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:151)
at com.intellij.openapi.project.CacheUpdateRunner.lambda$createRunnable$3(CacheUpdateRunner.java:237)
at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:210)
at com.intellij.util.ConcurrencyUtil.lambda$underThreadNameRunnable$3(ConcurrencyUtil.java:198)
at com.intellij.util.RunnableCallable.call(RunnableCallable.java:20)
at com.intellij.util.RunnableCallable.call(RunnableCallable.java:11)
at com.intellij.openapi.application.impl.ApplicationImpl$1.call(ApplicationImpl.java:255)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)

the file

See LICENSE file for full copyright and licensing details.

import werkzeug
from odoo import http
from odoo.http import request
import odoo.addons.website_sale.controllers.main
from odoo.addons.http_routing.models.ir_http import slug
from odoo.addons.website_sale.controllers.main import TableCompute, QueryURL

PPG = 20
PPR = 4

class WebsiteSale(odoo.addons.website_sale.controllers.main.WebsiteSale):
@http.route(['/shop', '/shop/page/int:page',
'/shop/category/<model("product.public.category"):category>',
'/shop/category/<model("product.public.category"):category>
/page/int:page', '/shop/brands'], type='http',
auth='public', website=True)
def shop(self, page=0, category=None, search='', brand=None, **post):
values = {}
domain = request.website.sale_product_domain()
if search:
domain += ['|', '|', '|',
('name', 'ilike', search),
('description', 'ilike', search),
('description_sale', 'ilike', search),
('product_variant_ids.default_code', 'ilike', search)]
if category:
domain += [('public_categ_ids', 'child_of', int(category))]
attrib_list = request.httprequest.args.getlist('attrib')
attrib_values = [map(int, v.split('-')) for v in attrib_list if v]
attrib_set = set([v[1] for v in attrib_values])
if attrib_values:
attrib = None
ids = []
for value in attrib_values:
if not attrib:
attrib = value[0]
ids.append(value[1])
elif value[0] == attrib:
ids.append(value[1])
else:
domain += [('attribute_line_ids.value_ids', 'in', ids)]
attrib = value[0]
ids = [value[1]]

        if attrib:
            domain += [('attribute_line_ids.value_ids', 'in', ids)]
    keep = QueryURL('/shop', category=category and int(category),
                    search=search, attrib=attrib_list)

    pricelist_context = dict(request.env.context)
    if not pricelist_context.get('pricelist'):
        pricelist = request.website.get_current_pricelist()
        pricelist_context['pricelist'] = pricelist.id
    else:
        pricelist = request.env['product.pricelist'].browse(
            pricelist_context['pricelist'])

    product_obj = request.env['product.template']

    # Brand's product search
    if brand:
        values.update({'brand': brand})
        product_designer_obj = request.env['product.brand']
        brand_ids = product_designer_obj.search([('id', '=', int(brand))])
        domain += [('product_brand_id', 'in', brand_ids.ids)]
    url = '/shop'
    product_count = product_obj.search_count(domain)
    if search:
        post['search'] = search
    if category:
        category = request.env['product.public.category']. \
            browse(int(category))
        url = '/shop/category/%s' % slug(category)
    pager = request.website. \
        pager(url=url, total=product_count, page=page, step=PPG,
              scope=7, url_args=post)
    products = product_obj. \
        search(domain, limit=PPG, offset=pager['offset'],
               order='website_published desc, website_sequence desc')
    style_obj = request.env['product.style']
    styles = style_obj.search([])
    category_obj = request.env['product.public.category']
    categories = category_obj.search([])
    categs = filter(lambda x: not x.parent_id, categories)
    if category:
        selected_id = int(category)
        children_ids = category_obj. \
            search([('parent_id', '=', selected_id)])
        values.update({'child_list': children_ids})
    attributes_obj = request.env['product.attribute']
    attributes = attributes_obj.search([])
    from_currency = request.env.user.company_id.currency_id
    to_currency = pricelist.currency_id
    compute_currency = self.currency_compute(from_currency, to_currency)
    values.update({'search': search,
                   'category': category,
                   'attrib_values': attrib_values,
                   'attrib_set': attrib_set,
                   'pager': pager,
                   'pricelist': pricelist,
                   'products': products,
                   'bins': TableCompute().process(products),
                   'rows': PPR,
                   'styles': styles,
                   'categories': categs,
                   'attributes': attributes,
                   'compute_currency': compute_currency,
                   'keep': keep,
                   'style_in_product':
                       lambda style, product: style.id in [
                           s.id for s in product.website_style_ids],
                   'attrib_encode': lambda attribs: werkzeug.url_encode
                   ([('attrib', i) for i in attribs])})
    return request.render('website_sale.products', values)

def currency_compute(self, from_currency, to_currency):
    return lambda price: from_currency.compute(price,
                                               to_currency)

# Method to get the brands.
@http.route(['/page/product_brands'], type='http', auth='public',
            website=True)
def product_brands(self, **post):
    brand_values = []
    brand_obj = request.env['product.brand']
    domain = []
    if post.get('search'):
        domain += [('name', 'ilike', post.get('search'))]
    brand_ids = brand_obj.search(domain)
    for brand_rec in brand_ids:
        brand_values.append(brand_rec)

    keep = QueryURL('/page/product_brands', brand_id=[])
    values = {'brand_rec': brand_values, 'keep': keep}
    if post.get('search'):
        values.update({'search': post.get('search')})
    return request.render('website_product_brand.product_brands', values)

This was fixed in version 3.7. Thank you for reporting.