Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ValueError: 'EnterpriseCustomer' instance needs to have a primary key value before this relationship can be used. when setting default_language on create #2333

Open
tramck opened this issue Feb 4, 2025 · 0 comments

Comments

@tramck
Copy link

tramck commented Feb 4, 2025

Environment:

Python version: 3.11
Open edX version: redwood
Enterprise version: 4.17.4

Issue

When creating an Enterprise Customer via django-admin and setting the Learner Default Language field, the enterprise_customer.enterprise_customer_users relationship is accessed prior to the enterprise customer instance being created which triggers an uncaught exception: ValueError: 'EnterpriseCustomer' instance needs to have a primary key value before this relationship can be used.

Stack Trace

 Traceback (most recent call last):                                                                                              
   File "/openedx/venv/lib/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner                        
     response = get_response(request)                                                                                            
                ^^^^^^^^^^^^^^^^^^^^^                                                                                            
   File "/openedx/venv/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response                    
     response = wrapped_callback(request, *callback_args, **callback_kwargs)                                                     
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                     
   File "/opt/pyenv/versions/3.11.8/lib/python3.11/contextlib.py", line 81, in inner                                             
     return func(*args, **kwds)                                                                                                  
            ^^^^^^^^^^^^^^^^^^^                                                                                                  
   File "/openedx/venv/lib/python3.11/site-packages/newrelic/hooks/framework_django.py", line 529, in wrapper                    
     return wrapped(*args, **kwargs)                                                                                             
            ^^^^^^^^^^^^^^^^^^^^^^^^                                                                                             
   File "/openedx/venv/lib/python3.11/site-packages/django/contrib/admin/options.py", line 688, in wrapper                       
     return self.admin_site.admin_view(view)(*args, **kwargs)                                                                    
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                    
   File "/openedx/venv/lib/python3.11/site-packages/django/utils/decorators.py", line 134, in _wrapper_view                      
     response = view_func(request, *args, **kwargs)                                                                              
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                              
   File "/openedx/venv/lib/python3.11/site-packages/django/views/decorators/cache.py", line 62, in _wrapper_view_func            
     response = view_func(request, *args, **kwargs)                                                                              
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                              
   File "/openedx/venv/lib/python3.11/site-packages/django/contrib/admin/sites.py", line 242, in inner                           
     return view(request, *args, **kwargs)                                                                                       
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                       
   File "/openedx/venv/lib/python3.11/site-packages/django/contrib/admin/options.py", line 1886, in add_view                     
     return self.changeform_view(request, None, form_url, extra_context)                                                         
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                         
   File "/openedx/venv/lib/python3.11/site-packages/django/utils/decorators.py", line 46, in _wrapper                            
     return bound_method(*args, **kwargs)                                                                                        
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                        
   File "/openedx/venv/lib/python3.11/site-packages/django/utils/decorators.py", line 134, in _wrapper_view                      
     response = view_func(request, *args, **kwargs)                                                                              
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                              
   File "/openedx/venv/lib/python3.11/site-packages/django/contrib/admin/options.py", line 1747, in changeform_view              
     return self._changeform_view(request, object_id, form_url, extra_context)                                                   
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                   
   File "/openedx/venv/lib/python3.11/site-packages/django/contrib/admin/options.py", line 1798, in _changeform_view             
     self.save_model(request, new_object, form, not add)                                                                         
   File "/openedx/venv/lib/python3.11/site-packages/simple_history/admin.py", line 228, in save_model                            
     super().save_model(request, obj, form, change)                                                                              
   File "/openedx/venv/lib/python3.11/site-packages/django/contrib/admin/options.py", line 1227, in save_model                   
     obj.save()                                                                                                                  
   File "/openedx/venv/lib/python3.11/site-packages/model_utils/models.py", line 37, in save                                     
     super().save(*args, **kwargs)                                                                                               
   File "/openedx/venv/lib/python3.11/site-packages/django/db/models/base.py", line 814, in save                                 
     self.save_base(                                                                                                             
   File "/openedx/venv/lib/python3.11/site-packages/django/db/models/base.py", line 861, in save_base                            
     pre_save.send(                                                                                                              
   File "/openedx/venv/lib/python3.11/site-packages/django/dispatch/dispatcher.py", line 176, in send                            
     return [                                                                                                                    
            ^                                                                                                                    
   File "/openedx/venv/lib/python3.11/site-packages/django/dispatch/dispatcher.py", line 177, in <listcomp>                      
     (receiver, receiver(signal=self, sender=sender, **named))                                                                   
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                    
   File "/openedx/venv/lib/python3.11/site-packages/enterprise/signals.py", line 110, in update_lang_pref_of_all_learners        
     unset_language_of_all_enterprise_learners(instance)                                                                         
   File "/openedx/venv/lib/python3.11/site-packages/enterprise/utils.py", line 2230, in unset_language_of_all_enterprise_learners
     user_ids = list(enterprise_customer.enterprise_customer_users.values_list('user_id', flat=True))                            
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                             
   File "/openedx/venv/lib/python3.11/site-packages/django/db/models/manager.py", line 87, in manager_method                     
     return getattr(self.get_queryset(), name)(*args, **kwargs)                                                                  
                    ^^^^^^^^^^^^^^^^^^^                                                                                          
   File "/openedx/venv/lib/python3.11/site-packages/django/db/models/fields/related_descriptors.py", line 718, in get_queryset   
     raise ValueError(                                                                                                           
 ValueError: 'EnterpriseCustomer' instance needs to have a primary key value before this relationship can be used.      
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant