Changeset 338 in main


Ignore:
Timestamp:
09/27/11 14:05:58 (8 years ago)
Author:
pcosquer
Message:

implement group modification

Location:
trunk/openPLM/plmapp
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/openPLM/plmapp/models.py

    r337 r338  
    195195        "Returns fields which should not be available in a creation form" 
    196196        return ["owner", "creator", "ctime", "mtime"] 
    197     
     197 
     198    @classmethod 
     199    def get_creation_fields(cls): 
     200        """ 
     201        Returns fields which should be displayed in a creation form. 
     202 
     203        By default, it returns :attr:`attributes` less attributes returned by 
     204        :meth:`excluded_creation_fields` 
     205        """ 
     206        fields = [] 
     207        for field in cls().attributes: 
     208            if field not in cls.excluded_creation_fields(): 
     209                fields.append(field) 
     210        return fields 
     211 
     212    @classmethod 
     213    def excluded_modification_fields(cls): 
     214        """ 
     215        Returns fields which should not be available in a modification form 
     216         
     217        By default, it returns :attr:`attributes` less attributes returned by 
     218        :meth:`excluded_modification_fields` 
     219        """ 
     220        return [ugettext_noop("name"), ugettext_noop("creator"), 
     221                ugettext_noop("owner"), ugettext_noop("ctime"), 
     222                ugettext_noop("mtime")] 
     223 
     224    @classmethod 
     225    def get_modification_fields(cls): 
     226        "Returns fields which should be displayed in a modification form" 
     227        fields = [] 
     228        for field in cls().attributes: 
     229            if field not in cls.excluded_modification_fields(): 
     230                fields.append(field) 
     231        return fields 
     232 
    198233    @property 
    199234    def is_editable(self): 
     
    676711    res = {} 
    677712    _get_all_subclasses(PLMObject, res) 
     713    res["Group"] = GroupInfo 
    678714    del res["PLMObject"] 
    679715    return res 
  • trunk/openPLM/plmapp/views/main.py

    r337 r338  
    751751###    Manage html pages for part / document creation and modification                 ### 
    752752########################################################################################## 
    753 def get_non_modifyable_attributes_list(current_obj, current_user, cls=models.PLMObject): 
     753def get_non_modifyable_attributes(obj, user, cls=models.PLMObject): 
    754754    """ 
    755755    Create a list of object's attributes we can't modify' and set them a value 
     
    758758        >>> MyClass 
    759759        <class 'openPLM.plmapp.models.Part'> 
    760         >>> get_non_modifyable_attributes_list(MyClass) 
     760        >>> get_non_modifyable_attributes(MyClass) 
    761761        [('owner', 'Person'), 
    762762         ('creator', 'Person'), 
     
    767767    :return: list 
    768768    """ 
    769     non_modifyable_fields_list = cls.excluded_creation_fields() 
    770     non_modifyable_attributes_list=[] 
    771     if current_obj == 'create': 
    772         for field in non_modifyable_fields_list: 
     769    non_modifyable_fields = cls.excluded_creation_fields() 
     770    non_modifyable_attributes = [] 
     771    if obj == 'create': 
     772        for field in non_modifyable_fields: 
    773773            if field in ('ctime', 'mtime'): 
    774                 non_modifyable_attributes_list.append(('datetime', field, datetime.datetime.now())) 
     774                non_modifyable_attributes.append(('datetime', field, 
     775                    datetime.datetime.now())) 
    775776            elif field in ('owner', 'creator'): 
    776                 non_modifyable_attributes_list.append(('User', field, current_user.username)) 
     777                non_modifyable_attributes.append(('User', field, 
     778                    user.username)) 
    777779            elif field == 'state': 
    778                 non_modifyable_attributes_list.append(('State', field, models.get_default_state())) 
    779     else: 
    780         for field in non_modifyable_fields_list: 
    781             field_value = getattr(current_obj.object, field) 
    782             if type(field_value).__name__=='datetime': 
    783                 non_modifyable_attributes_list.append(('datetime', field, field_value)) 
    784             elif type(field_value).__name__=='User': 
    785                 non_modifyable_attributes_list.append(('User', field, field_value.username)) 
    786             elif type(field_value).__name__=='State': 
    787                 non_modifyable_attributes_list.append(('State', field, field_value.name)) 
    788     return non_modifyable_attributes_list 
     780                non_modifyable_attributes.append(('State', field, 
     781                    models.get_default_state())) 
     782    else: 
     783        for field in non_modifyable_fields: 
     784            value = getattr(obj, field) 
     785            if isinstance(value, datetime.datetime): 
     786                non_modifyable_attributes.append(('datetime', field, value)) 
     787            elif isinstance(value, User): 
     788                non_modifyable_attributes.append(('User', field, value.username)) 
     789            elif isinstance(value, models.State): 
     790                non_modifyable_attributes.append(('State', field, value.name)) 
     791    return non_modifyable_attributes 
    789792 
    790793########################################################################################## 
     
    811814                    class_for_div="ActiveBox4Part" 
    812815                creation_form = get_creation_form(cls, {'revision':'a', 'lifecycle': str(models.get_default_lifecycle()), }, True) 
    813                 non_modifyable_attributes_list = get_non_modifyable_attributes_list('create', request.user, cls) 
     816                non_modifyable_attributes = get_non_modifyable_attributes('create', request.user, cls) 
    814817    elif request.method == 'POST': 
    815818        if request.POST: 
     
    822825                else: 
    823826                    class_for_div="ActiveBox4Part" 
    824                 non_modifyable_attributes_list = get_non_modifyable_attributes_list('create', request.user, cls) 
     827                non_modifyable_attributes = get_non_modifyable_attributes('create', request.user, cls) 
    825828                creation_form = get_creation_form(cls, request.POST) 
    826829                if creation_form.is_valid(): 
     
    832835                'creation_form': creation_form, 
    833836                'object_type': type_form.cleaned_data["type"], 
    834                 'non_modifyable_attributes': non_modifyable_attributes_list }) 
     837                'non_modifyable_attributes': non_modifyable_attributes }) 
    835838    return r2r('DisplayObject4creation.htm', ctx, request) 
    836839 
     
    851854    :return: a :class:`django.http.HttpResponse` 
    852855    """ 
    853     current_object, ctx, request_dict = get_generic_data(request, obj_type, obj_ref, obj_revi) 
    854     if obj_type == 'User': 
    855         cls = models.get_all_plmobjects()['UserProfile'] 
    856     else: 
    857         cls = models.get_all_plmobjects()[obj_type] 
    858     non_modifyable_attributes_list = get_non_modifyable_attributes_list(current_object, request.user, cls) 
    859     if request.method == 'POST': 
    860         if request.POST: 
    861             modification_form = get_modification_form(cls, request.POST) 
    862             if modification_form.is_valid(): 
    863                 current_object.update_from_form(modification_form) 
    864                 return HttpResponseRedirect(current_object.plmobject_url) 
    865             else: 
    866                 pass 
    867         else: 
    868             modification_form = get_modification_form(cls, instance = current_object.object) 
    869     else: 
    870         modification_form = get_modification_form(cls, instance = current_object.object) 
     856    obj, ctx, request_dict = get_generic_data(request, obj_type, obj_ref, obj_revi) 
     857    cls = models.get_all_plmobjects()[obj_type] 
     858    non_modifyable_attributes = get_non_modifyable_attributes(obj, request.user, cls) 
     859    if request.method == 'POST' and request.POST: 
     860        modification_form = get_modification_form(cls, request.POST) 
     861        if modification_form.is_valid(): 
     862            obj.update_from_form(modification_form) 
     863            return HttpResponseRedirect(obj.plmobject_url) 
     864    else: 
     865        modification_form = get_modification_form(cls, instance=obj.object) 
    871866    request.session.update(request_dict) 
    872867    ctx.update({'modification_form': modification_form, 
    873                 'non_modifyable_attributes': non_modifyable_attributes_list}) 
     868                'non_modifyable_attributes': non_modifyable_attributes}) 
    874869    return r2r('DisplayObject4modification.htm', ctx, request) 
    875870 
Note: See TracChangeset for help on using the changeset viewer.