Changeset 366 in main


Ignore:
Timestamp:
10/03/11 15:40:37 (8 years ago)
Author:
pcosquer
Message:

promote: change the owner to the company if the new state is official

Location:
trunk/openPLM
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/openPLM/plmapp/controllers/plmobject.py

    r365 r366  
    2828import re 
    2929 
     30from django.conf import settings 
    3031from django.core.exceptions import ObjectDoesNotExist 
    3132 
     
    150151                                     {"first" :state.name, "second" : new_state} 
    151152                self._save_histo("Promote", details, roles=["sign_"]) 
     153                if self.object.state == lifecycle.official_state: 
     154                    cie = models.User.objects.get(username=settings.COMPANY) 
     155                    self.set_owner(cie) 
    152156            except IndexError: 
    153157                # FIXME raises it ? 
     
    163167        :raise: :exc:`.PermissionError` if the use can not sign :attr:`object` 
    164168        """ 
     169        if not self.is_editable: 
     170            raise PromotionError() 
    165171        state = self.object.state 
    166172        lifecycle = self.object.lifecycle 
  • trunk/openPLM/plmapp/management/commands/createcompany.py

    r365 r366  
    127127 
    128128        cie.groups.add(gr) 
     129        p = cie.get_profile() 
     130        p.is_contributor = True 
     131        p.save() 
    129132 
    130133        print "Company created successfully." 
  • trunk/openPLM/plmapp/tests/controllers.py

    r364 r366  
    3232from django.db import IntegrityError 
    3333from django.contrib.auth.models import User 
    34 from django.test import TestCase 
    3534from django.core.files.base import ContentFile 
    3635from django.core.files import File 
     
    4544from openPLM.cad.models import * 
    4645 
    47  
    48 class ControllerTest(TestCase): 
     46from openPLM.plmapp.tests.base import BaseTestCase 
     47 
     48class ControllerTest(BaseTestCase): 
    4949    CONTROLLER = PLMObjectController 
    5050    TYPE = "Part" 
    5151    DATA = {} 
    52  
    53     def setUp(self): 
    54         self.user = User(username="user") 
    55         self.user.set_password("password") 
    56         self.user.save() 
    57         self.user.get_profile().is_contributor = True 
    58         self.user.get_profile().save() 
    59         self.group = GroupInfo(name="grp", owner=self.user, creator=self.user, 
    60                 description="grp") 
    61         self.group.save() 
    62         self.user.groups.add(self.group) 
    63         self.DATA["group"] = self.group 
    6452 
    6553    def test_create(self): 
     
    161149        self.assertEqual(controller.state.name, "official") 
    162150        self.failIf(controller.is_editable) 
     151        self.assertRaises(PromotionError, controller.demote) 
     152        lcl = LifecycleList("diop", "official", "draft",  
     153                "issue1", "official", "deprecated") 
     154        lc = Lifecycle.from_lifecyclelist(lcl) 
     155        controller.lifecycle = lc 
     156        controller.state = State.objects.get(name="draft") 
     157        controller.save() 
     158        controller.promote() 
     159        self.assertEqual(controller.state.name, "issue1") 
    163160        controller.demote() 
    164161        self.assertEqual(controller.state.name, "draft") 
     
    462459        self.assertEqual(self.controller.state.name, "official") 
    463460        self.failIf(self.controller.is_editable) 
     461        lcl = LifecycleList("diop", "official", "draft",  
     462                "issue1", "official", "deprecated") 
     463        lc = Lifecycle.from_lifecyclelist(lcl) 
     464        self.controller.lifecycle = lc 
     465        self.controller.state = State.objects.get(name="draft") 
     466        self.controller.save() 
     467        self.controller.promote() 
     468        self.assertEqual(self.controller.state.name, "issue1") 
    464469        self.controller.demote() 
    465470        self.assertEqual(self.controller.state.name, "draft") 
  • trunk/openPLM/plmapp/tests/views.py

    r360 r366  
    3636from openPLM.office.models import * 
    3737from openPLM.cad.models import * 
     38 
     39from openPLM.plmapp.tests.base import BaseTestCase 
    3840         
    39 class CommonViewTest(TestCase): 
     41class CommonViewTest(BaseTestCase): 
    4042    TYPE = "Part" 
    4143    CONTROLLER = PartController 
     
    4345 
    4446    def setUp(self): 
    45         self.user = User(username="user") 
    46         self.user.set_password("password") 
    47         self.user.save() 
    48         self.user.get_profile().is_contributor = True 
    49         self.user.get_profile().save() 
    50         self.group = GroupInfo(name="grp", owner=self.user, creator=self.user, 
    51                 description="grp") 
    52         self.group.save() 
    53         self.user.groups.add(self.group) 
    54         self.DATA["group"] = self.group 
     47        super(CommonViewTest, self).setUp() 
    5548        self.client.post("/login/", {'username' : 'user', 'password' : 'password'}) 
    5649        self.controller = self.CONTROLLER.create("Part1", self.TYPE, "a", 
     
    114107        self.assertEqual(lifecycles, wanted) 
    115108        # demote 
     109        lcl = LifecycleList("diop", "official", "draft",  
     110                "issue1", "official", "deprecated") 
     111        lc = Lifecycle.from_lifecyclelist(lcl) 
     112        self.controller.lifecycle = lc 
     113        self.controller.state = State.objects.get(name="draft") 
     114        self.controller.save() 
     115        self.controller.promote() 
     116        self.assertEqual(self.controller.state.name, "issue1") 
    116117        response = self.client.post(self.base_url + "lifecycle/",  
    117118                                    {"action" : "DEMOTE"}) 
    118119        self.assertEqual(response.status_code, 200) 
    119120        lifecycles = tuple(response.context["object_lifecycle"]) 
    120         wanted = (("draft", True), ("official", False), ("deprecated", False)) 
     121        wanted = (("draft", True), ("issue1", False), ("official", False), 
     122                ("deprecated", False)) 
    121123        self.assertEqual(lifecycles, wanted) 
    122124 
  • trunk/openPLM/settings_tests.py

    r238 r366  
    128128#: Max file size for documents in bytes, -1 means illimited 
    129129MAX_FILE_SIZE = -1 
     130 
     131COMPANY = "company" 
     132 
  • trunk/openPLM/templates/DisplayObjectLifecycle.htm

    r279 r366  
    66{% block content %} 
    77    <form action="" method="POST"> 
    8     {% if is_signer_dm %} 
     8        {% if is_signer_dm and obj.is_editable %} 
    99        <input name="action" type="submit" value="DEMOTE"/> 
    1010        {% endif %} 
Note: See TracChangeset for help on using the changeset viewer.