def makethank (self): order = meta.Session.query(model.Order).filter_by(id=self.form_result['id']).first() if order is None: abort(404) if order.deleted: abort(410) # Теперь - проверка прав доступа (ответственный подразделения, подавшего эту заявку) if not (session.has_key('division') and session['division']): abort(401) if not (h.have_role('creator') and order.cust_id == session['division']): abort(403) thank = model.Action() thank.order_id = order.id thank.status = meta.Session.query(model.Status).get(14) thank.div_id = session['division'] perf = meta.Session.query(model.Person).get(session['id']) thank.performers.append(perf) # Если претензию подаёт оператор, то и его добавим if session.has_key("operator_id") and session["id"] != session["operator_id"]: thank.performers.append(meta.Session.query(model.Person).get(session["operator_id"])) thank.description = self.form_result['description'] meta.Session.add (thank) meta.Session.commit() h.flashmsg (u"Спасибо за " + h.literal("«") + u"спасибо" + h.literal("»") + "!") redirect_to(h.url_for(controller='order', action='view', id=order.id))
def create(self): h.requirerights("admin") div = model.Division() for key, value in self.form_result.items(): setattr(div, key, value) meta.Session.add(div) meta.Session.commit() h.flashmsg (u"Подразделение " + h.literal("«") + div.title + h.literal("»") + " добавлено.") redirect_to(h.url_for(controller='division', action='view', id=div.id))
def switch (self, id=None): h.requirerights("operator") userdivs =meta.Session.query(model.Person, model.Division).join(model.Division)\ .filter(and_(model.Person.deleted==False, model.Person.creator==True))\ .filter(or_(model.Person.chief==True, model.Person.responsible==True))\ .order_by(model.Division.title).order_by(model.Person.surname).all() #users = meta.Session.query(model.Person)\ # .filter_by(deleted=False).filter_by(creator=True).order_by(model.Person.login).order_by(model.Person.surname).all() #users.sort(key=lambda x:(x.division.title, x.surname)); #c.users = [[unicode(x.id), x.division.title + h.literal(" — ") + (h.name(x))] for x in users] c.users = [[unicode(x[0].id), x[1].title + h.literal(" — ") + (h.name(x[0]))] for x in userdivs] c.selected = id return render ("/users/switch.html")
def thank (self, id=None): # Если номер заявки не указан, то позволим выбрать. if id is not None: c.order = h.checkorder(id) if not session.has_key('division'): abort(401) elif c.order.cust_id != session['division']: abort(403) c.selectedorder = c.order.id else: c.selectedorder = None if not h.have_role('creator'): abort(403) orders = meta.Session.query(model.Order).filter("status_id<>:value and cust_id=:customer").params(value=4, customer=session['division']).all() c.orders =[['', u'-- выберите заявку, выполнением которой вы остались довольны --']] for order in orders: if h.can_complain(order): if len(order.title) > 32: order.title = order.title[:32] + u"…" str = unicode(order.id) + ". [" + order.work.title + h.literal(" — ") + order.category.title + "]: " + order.title c.orders.append([order.id, str]) return render("/actions/thank.html")