Changeset 1224 in main


Ignore:
Timestamp:
06/14/12 16:16:25 (7 years ago)
Author:
zali
Message:

PLMObject Creation : add auto generate reference checkbox

Location:
trunk/openPLM
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/openPLM/media/js/create.js

    r1125 r1224  
    22    function (){ 
    33        var form = $("#creation_form"); 
     4        if($("#id_auto").attr("checked")=="checked"){ 
     5            $("#id_reference").attr("disabled","disabled"); 
     6        } 
    47        $("select#id_type").change( 
    58            function (){ 
     
    3235                    form.hideLoading(); 
    3336                } 
     37                if($("#id_auto").attr("checked")=="checked"){ 
     38                    $("#id_reference").attr("disabled","disabled"); 
     39                } 
    3440            }); 
    3541        }); 
     42        $("#id_auto").change( 
     43            function(){ 
     44                if ($("#id_auto").attr("checked")=="checked"){ 
     45                    $("#id_reference").attr("disabled","disabled"); 
     46                }else{ 
     47                    $("#id_reference").removeAttr("disabled"); 
     48                } 
     49            } 
     50        ) 
    3651    } 
    3752); 
  • trunk/openPLM/plmapp/forms.py

    r1195 r1224  
    3131from django.forms.models import modelform_factory, modelformset_factory, \ 
    3232        BaseModelFormSet 
     33from django.forms.fields import BooleanField 
    3334from django.contrib.auth.models import User, Group 
    3435from django.forms import ValidationError 
     
    142143        auto_complete_fields(Form, cls) 
    143144        if issubclass(cls, m.PLMObject): 
     145            Form.base_fields.insert(1,'auto',BooleanField(required=False,initial=True, help_text=_("Checking this case, you allow OpenPLM to set the reference of the object."))) 
    144146            Form.clean_reference = _clean_reference 
    145147            Form.clean_revision = _clean_revision 
     
    148150                ref = cleaned_data.get("reference", "") 
    149151                rev = cleaned_data.get("revision", "") 
     152                auto = cleaned_data.get("auto", False) 
    150153                if cls.objects.filter(type=cls.__name__, revision=rev, reference=ref).exists(): 
    151                     raise ValidationError(_("An object with the same type, reference and revision already exists")) 
     154                    if not auto: 
     155                        raise ValidationError(_("An object with the same type, reference and revision already exists")) 
     156                    else: 
     157                        cleaned_data["reference"] = get_new_reference(cls) 
    152158                elif cls.objects.filter(type=cls.__name__, reference=ref).exists(): 
    153                     raise ValidationError(_("An object with the same type and revision exists, you may consider to revise it.")) 
     159                    raise ValidationError(_("An object with the same type and reference exists, you may consider to revise it.")) 
    154160                return cleaned_data 
    155161            Form.clean = _clean 
  • trunk/openPLM/plmapp/tests/views.py

    r1190 r1224  
    122122                "type" : self.TYPE, 
    123123                "reference" : "mapart", 
     124                "auto" : False, 
    124125                "revision" : "a", 
    125126                "name" : "MaPart", 
     
    148149                "type" : self.TYPE, 
    149150                "reference" : "mapart", 
     151                "auto" : False, 
    150152                "revision" : "a", 
    151153                "name" : "MaPart", 
     
    174176        data.update({ 
    175177                "type" : self.TYPE, 
    176                 "reference" : ref,  
     178                "reference" : ref, 
     179                "auto" : False,  
    177180                "revision" : rev, 
    178181                "name" : "An invalid object", 
     
    184187        response = self.post("/object/create/", data) 
    185188        qset = m.PLMObject.objects.filter(type=self.TYPE, 
    186                 reference=ref, revision=ref) 
     189                reference=ref, revision=rev) 
    187190        self.assertFalse(response.context["creation_form"].is_valid()) 
    188191        self.assertFalse(qset.exists()) 
     192         
     193    def test_create_post_error_same_reference_and_revision(self): 
     194        """ 
     195        Tests that the creation of an object with the same type ,  
     196        reference and revision is forbidden when auto is not True. 
     197        """ 
     198        data = self.DATA.copy() 
     199        ref = self.controller.reference 
     200        rev = self.controller.revision 
     201        data.update({ 
     202                "type" : self.TYPE, 
     203                "reference" : ref, 
     204                "auto" : False,  
     205                "revision" : rev, 
     206                "name" : "An invalid object", 
     207                "group" : str(self.group.id), 
     208                "lifecycle" : m.get_default_lifecycle().pk, 
     209                "state" : m.get_default_state().pk, 
     210                }) 
     211        model_cls = m.get_all_plmobjects()[self.TYPE] 
     212        response = self.post("/object/create/", data) 
     213        qset = m.PLMObject.objects.filter(type=self.TYPE, 
     214                reference=ref, revision=rev) 
     215        self.assertFalse(response.context["creation_form"].is_valid()) 
     216         
     217    def test_create_post_same_reference_and_revision(self): 
     218        """ 
     219        Tests that when auto is True and we intent to create an object with  
     220        the same type, reference and revision: 
     221            * a new and available reference is given to the new object 
     222            * the object is created. 
     223        """ 
     224        data = self.DATA.copy() 
     225        ref = self.controller.reference 
     226        rev = self.controller.revision 
     227        data.update({ 
     228                "type" : self.TYPE, 
     229                "reference" : ref, 
     230                "auto" : True,  
     231                "revision" : rev, 
     232                "name" : "A valid object", 
     233                "group" : str(self.group.id), 
     234                "lifecycle" : m.get_default_lifecycle().pk, 
     235                "state" : m.get_default_state().pk, 
     236                }) 
     237        model_cls = m.get_all_plmobjects()[self.TYPE] 
     238        response = self.post("/object/create/", data) 
     239        obj = m.PLMObject.objects.get(type=self.TYPE, 
     240                revision=rev, name="A valid object") 
     241        self.assertNotEqual(ref, obj.reference) 
     242        self.assertEqual(self.group.id, obj.group_id) 
     243        self.assertEqual(self.user, obj.owner) 
     244        self.assertEqual(self.user, obj.creator) 
     245 
     246         
    189247 
    190248    def test_display_attributes(self): 
     
    9981056                "type" : self.TYPE, 
    9991057                "reference" : "doc2", 
     1058                "auto" : False, 
    10001059                "revision" : "a", 
    10011060                "name" : "Docc", 
     
    10241083                "type" : self.TYPE, 
    10251084                "reference" : "doc2", 
     1085                "auto" : False, 
    10261086                "revision" : "a", 
    10271087                "name" : "Docc", 
     
    10661126                "type" : self.TYPE, 
    10671127                "reference" : "mapart", 
     1128                "auto" : False, 
    10681129                "revision" : "a", 
    10691130                "name" : "MaPart", 
     
    10921153                "type" : self.TYPE, 
    10931154                "reference" : "mapart", 
     1155                "auto" : False, 
    10941156                "revision" : "a", 
    10951157                "name" : "MaPart", 
Note: See TracChangeset for help on using the changeset viewer.