Changeset 2100 for trunk/loreality/loreality/controllers/campaign.py
- Timestamp:
- 07/02/10 14:49:40 (23 months ago)
- File:
-
- 1 edited
-
trunk/loreality/loreality/controllers/campaign.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/loreality/loreality/controllers/campaign.py
r2099 r2100 8 8 import loreality.model as model 9 9 10 import loreality.lib.helpers as h 11 from loreality.model.form import * 12 13 from authkit.authorize.pylons_adaptors import authorize 14 from pylons.decorators import validate 15 16 from formencode import htmlfill, variabledecode 17 from formencode.validators import Invalid 18 import uuid 10 19 11 20 log = logging.getLogger(__name__) … … 13 22 class CampaignController(BaseController): 14 23 15 def index(self ):24 def index(self, values=None, errors=None ): 16 25 c.title = "LoReality" 17 26 c.heading = "Campaign" 18 c.campaign_title = "My Campaign"19 27 c.campaigns = meta.Session.query(model.Campaign).all() 20 28 21 return render('/derived/page/campaign.html') 29 html = render('/derived/page/campaign.html') 30 return htmlfill.render(html, defaults=values, errors=errors) 31 32 def process(self, id=None): 33 action = request.params.getone('action') 34 values = dict(request.params) 35 # Don't use the values field for repopulation 36 del values['action'] 37 if action=='Add campaign': 38 # Assume we are trying to save the form 39 schema = CampaignNameForm() 40 try: 41 result = schema.to_python(dict(request.params), c) 42 except Invalid, e: 43 return self.index( 44 values=values, 45 errors=variabledecode.variable_encode( 46 e.unpack_errors() or {}, 47 add_repetitions=False 48 ) 49 ) 50 else: 51 camp = model.Campaign( result['name_campaign'] ) 52 meta.Session.add(camp) 53 meta.Session.commit() 54 return self.index() 55 elif action=='Add mission': 56 # Assume we are trying to save the form 57 schema = MissionNameForm() 58 try: 59 result = schema.to_python(dict(request.params), c) 60 except Invalid, e: 61 return self.index( 62 values=values, 63 errors=variabledecode.variable_encode( 64 e.unpack_errors() or {}, 65 add_repetitions=False 66 ) 67 ) 68 else: 69 campaign_q = meta.Session.query(model.Campaign) 70 campaign = campaign_q.filter_by(id=uuid.UUID(id)).first() 71 if campaign is None: 72 abort(404) 73 74 mis = model.Mission( result["name_mission"] ) 75 meta.Session.add( mis ) 76 campaign.missions.append( mis ) 77 78 meta.Session.commit() 79 return self.edit(id) 80 elif action=='Modify': 81 # Assume we are trying to save the form 82 schema = CampaignForm() 83 try: 84 result = schema.to_python(dict(request.params), c) 85 except Invalid, e: 86 return self.index( 87 values=values, 88 errors=variabledecode.variable_encode( 89 e.unpack_errors() or {}, 90 add_repetitions=False 91 ) 92 ) 93 else: 94 campaign_q = meta.Session.query(model.Campaign) 95 campaign = campaign_q.filter_by(id=uuid.UUID(id)).first() 96 if campaign is None: 97 abort(404) 98 99 campaign.name = result["name"] 100 meta.Session.commit() 101 return self.edit(id=id) 102 else: 103 raise Exception('Invalid action %s'%action) 104 105 @authorize(h.auth.is_creator) 106 def edit(self, id=None, values=None, errors=None ): 107 if id is None: 108 abort(404) 109 campaign_q = meta.Session.query(model.Campaign) 110 campaign = campaign_q.filter_by(id=uuid.UUID(id)).first() 111 if campaign is None: 112 abort(404) 113 114 c.title = "LoReality" 115 c.heading = "Edit %s"%campaign.name 116 c.campaign = campaign 117 118 if not values: values = {} 119 values["name"] = campaign.name 120 121 html = render('/derived/page/campaign_edit.html') 122 return htmlfill.render(html, defaults=values, errors=errors) 123 124 @authorize(h.auth.is_creator) 125 def delete(self, id): 126 values = dict(request.params) 127 missionid = values["missionid"] 128 if id is None: 129 abort(404) 130 campaign_q = meta.Session.query(model.Campaign) 131 campaign = campaign_q.filter_by(id=uuid.UUID(id)).first() 132 if campaign is None: 133 abort(404) 134 135 if missionid is None: 136 abort(404) 137 mission_q = meta.Session.query(model.Mission) 138 mission = mission_q.filter_by(id=uuid.UUID(missionid)).first() 139 if mission is None: 140 abort(404) 141 142 #- del now 143 campaign.missions.remove( mission ) 144 meta.Session.delete( mission ) 145 meta.Session.commit() 146 return self.edit( id ) 147 148 @authorize(h.auth.is_creator) 149 def deletecampaign(self, id): 150 if id is None: 151 abort(404) 152 campaign_q = meta.Session.query(model.Campaign) 153 campaign = campaign_q.filter_by(id=uuid.UUID(id)).first() 154 if campaign is None: 155 abort(404) 156 157 #- del now 158 for mis in campaign.missions: 159 campaign.missions.remove( mis ) 160 meta.Session.delete( mis ) 161 meta.Session.delete( campaign ) 162 meta.Session.commit() 163 return self.index()
Note: See TracChangeset
for help on using the changeset viewer.
