def approve_global_app(self): """Утверждение заявки по предприятию""" # Выбор нужных заявок и элементов заявок app_q = meta.Session.query(model.App) approved_apps = app_q.filter_by(campaign_id = app_globals.current_campaign_id).filter_by(status = 3).all() for approved_app in approved_apps: # Утверждение заявки try: approved_app.status = 4 meta.Session.commit() # Выбрать автора заявки users_q = meta.Session.query(model.User) user = users_q.filter_by(id = approved_app.author_id).first() # Отправить письмо mail = user.mail fromaddr = 'cniikometa.ru' toaddrs = str(mail) msg = "Subject: Заявка\nContent-Type: text/plain; charset='UTF-8'\nВаша заявка утверждена ответственным по предприятию." server = smtplib.SMTP('localhost') server.sendmail(fromaddr, toaddrs, msg) server.quit() except: pass h.redirect(url(controller='app', action='global_app'))
def delete_section(self): """Удаляет раздел и все дочерние разделы""" section_q = meta.Session.query(model.Section) section = section_q.filter_by(id=request.urlvars["id"]).first() meta.Session.delete(section) meta.Session.commit() h.redirect(url(controller="catalog", action="section", id=section.parent_section_id))
def create(self): """Создание новой заявочной кампании""" campaign = model.Campaign() campaign.start_date = self.form_result['start_date'] campaign.end_date = self.form_result['end_date'] campaign.status = '1' campaign.description = self.form_result['description'] meta.Session.add(campaign) meta.Session.flush() # Установка лимитов по подразделениям users = request.environ['authkit.users'] c.users = users for group in users.list_groups(): limit = model.Limit() limit.campaign_id = campaign.id limit.group_uid = users.group_uid(group) try: limit.limit_value = self.form_result['limit'+str(users.group_uid(group))] except: pass meta.Session.add(limit) meta.Session.flush() h.redirect(url(controller='campaign', action='assign_globals'))
def end(self): """Завершение кампании - окончена, неактивна""" campaign_q = meta.Session.query(model.Campaign) c.current_campaign = campaign_q.filter_by(id = request.urlvars['id']).first() c.current_campaign.status = 3 meta.Session.commit() h.redirect(url(controller='campaign', action='index'))
def delete_item(self): """Удаление объекта из заявки""" app_elements_q = meta.Session.query(model.AppElements) app_element = app_elements_q.filter_by(id = request.urlvars['id']).first() meta.Session.delete(app_element) meta.Session.commit() h.redirect(url(controller='app', action='user_app'))
def app_to_director(self): """Передача заявки по отделу ответственному по предприятию на устверждение. Сотрудникам, которые заполняли заявки, высылаются письма на e-mail""" # Выбор группы boss_q = meta.Session.query(model.User) boss_group = boss_q.filter_by(username = request.environ['REMOTE_USER']).first().group_uid # Выбор пользователей этой группы users_q = meta.Session.query(model.User) users_in_group = users_q.filter_by(group_uid = boss_group).all() # Выбор заявки и элементов заявки дла этой группы for user in users_in_group: app_q = meta.Session.query(model.App) current_app = app_q.filter_by(author_id = user.uid).filter_by(campaign_id = app_globals.current_campaign_id) current_app = current_app.filter(or_(model.App.status.like(2), model.App.status.like(3))).first() # Передача заявки ответственному по предприятию try: current_app.status = 3 meta.Session.commit() # Отправить письмо mail = user.mail fromaddr = 'cniikometa.ru' toaddrs = str(mail) msg = "Subject: Заявка\nContent-Type: text/plain; charset='UTF-8'\nВаша заявка утверждена ответственным по подразделению." server = smtplib.SMTP('localhost') server.sendmail(fromaddr, toaddrs, msg) server.quit() except: pass h.redirect(url(controller='app', action='group_app'))
def director_app_to_global(self): """Ответственный по предприятию добавляет свою заявку к общей""" app_q = meta.Session.query(model.App) current_app = app_q.filter_by(author_id = app_globals.user_id).filter_by(campaign_id = app_globals.current_campaign_id).first() if current_app.status == 1: current_app.status = 4 # Forwarding app to boss meta.Session.commit() h.redirect(url(controller='app', action='user_app'))
def assign_globals(self): """Инициализация глобальных переменных""" campaign_q = meta.Session.query(model.Campaign) c.current_campaign = campaign_q.filter_by(status = '1').first() app_globals.current_campaign_id = c.current_campaign.id app_globals.current_campaign_start_date = c.current_campaign.start_date app_globals.current_campaign_end_date = c.current_campaign.end_date h.redirect(url(controller='campaign', action='index'))
def create_section(self): """Создание раздела""" section = model.Section() section.name = self.form_result["name"] section.parent_section_id = self.form_result["parent_section"] section.description = self.form_result["description"] meta.Session.add(section) meta.Session.flush() h.redirect(url(controller="catalog", action="section", id=section.id))
def restore_item_group(self): """Восстановление объекта в заявке по отделу""" # Восстанавливает элемент. Статус меняется на 2. app_elements_q = meta.Session.query(model.AppElements) current_app_element = app_elements_q.filter_by(id = request.urlvars['id']).first() if current_app_element.status == 3: current_app_element.status = 2 meta.Session.commit() h.redirect(url(controller='app', action='group_app'))
def app_to_boss(self): """Передача заявки пользователя ответственному по отделу""" # Пользователять отправляет заявку ответственному по отделу app_q = meta.Session.query(model.App) current_app = app_q.filter_by(author_id = app_globals.user_id).filter_by(campaign_id = app_globals.current_campaign_id).first() if current_app.status == 1: current_app.status = 2 # Передача заявки ответственному по отделу meta.Session.commit() h.redirect(url(controller='app', action='user_app'))
def save_section(self): """Сохранения параметров раздела""" section_q = meta.Session.query(model.Section) section = section_q.filter_by(id=request.urlvars["id"]).first() section.name = self.form_result["name"] section.description = self.form_result["description"] section.edited = datetime.datetime.now() meta.Session.commit() h.redirect(url(controller="catalog", action="section", id=section.id))
def delete_item(self): """Удаление объекта""" item_q = meta.Session.query(model.Item) item = item_q.filter_by(id=request.urlvars["id"]).first() # Объект не удаляется из базы данных, а просто становится невидимым # Это необходимо, чтобы сохранилась информация в старых заявках item.deleted = 1 # meta.Session.delete(item) meta.Session.commit() h.redirect(url(controller="catalog", action="section", id=item.section_id))
def delete_item_group(self): """Удаление объекта из заявки по отделу""" # Удаление элементов из заявки. Они не удаляются полностью, статус меняется на 3 app_elements_q = meta.Session.query(model.AppElements) current_app_element = app_elements_q.filter_by(id = request.urlvars['id']).first() if current_app_element.status == 3: pass else: current_app_element.status = 3 meta.Session.commit() h.redirect(url(controller='app', action='group_app'))
def create_item(self): """Создание объекта""" item = model.Item() item.brand = self.form_result["brand"] item.model = self.form_result["model"] item.description = self.form_result["description"] item.section_id = self.form_result["section_id"] item.unit_id = self.form_result["unit_id"] item.price = self.form_result["price"] meta.Session.add(item) meta.Session.flush() h.redirect(url(controller="catalog", action="new_item"))
def save_item(self, id): """Сохранение параметров объекта""" item_q = meta.Session.query(model.Item) item = item_q.filter_by(id=id).first() item.brand = self.form_result["brand"] item.model = self.form_result["model"] item.description = self.form_result["description"] item.section_id = self.form_result["section_id"] item.unit_id = self.form_result["unit_id"] item.price = self.form_result["price"] item.edited = datetime.datetime.now() meta.Session.commit() h.redirect(url(controller="catalog", action="section", id=item.section_id))
def edit_item_group(self): """Изменения элемента заявки по отделу""" app_elements_q = meta.Session.query(model.AppElements) current_app_element = app_elements_q.filter_by(id = request.urlvars['id']).first() current_app_element.quarter1 = self.form_result[u'quarter1'] current_app_element.quarter2 = self.form_result[u'quarter2'] current_app_element.quarter3 = self.form_result[u'quarter3'] current_app_element.quarter4 = self.form_result[u'quarter4'] current_app_element.amount = int(current_app_element.quarter1) + int(current_app_element.quarter2) + int(current_app_element.quarter3) + int(current_app_element.quarter4) current_app_element.price = int(current_app_element.amount) * int(current_app_element.items.price) current_app_element.finsource = self.form_result[u'finsource'] current_app_element.needs = self.form_result[u'needs'] current_app_element.place = self.form_result[u'place'] current_app_element.note = self.form_result[u'note'] current_app_element.status = 1 meta.Session.commit() h.redirect(url(controller='app', action='edit_item_group_form', id=request.urlvars['id']))
def mail_sale_app(self): """Информирование сотрудников по e-mail о результатах реализации""" # Выбор пользователей users_q = meta.Session.query(model.User) users = users_q.all() for user in users: try: # Отправить письмо mail = user.mail fromaddr = 'cniikometa.ru' toaddrs = str(mail) msg = "Subject: Заявка\nContent-Type: text/plain; charset='UTF-8'\nВаша заявка реализована." server = smtplib.SMTP('localhost') server.sendmail(fromaddr, toaddrs, msg) server.quit() except: pass h.redirect(url(controller='app', action='sale_app'))
def save_user_app(self): """Сохранение изменений, внесённых в заявку пользователя""" app_q = meta.Session.query(model.App) current_app = app_q.filter_by(author_id = app_globals.user_id).filter_by(campaign_id = app_globals.current_campaign_id).first() app_elements_q = meta.Session.query(model.AppElements) current_app_elements = app_elements_q.filter_by(app_id = current_app.id) for element in current_app_elements: element.quarter1 = self.form_result[u'quarter1_el'+str(element.id)] element.quarter2 = self.form_result[u'quarter2_el'+str(element.id)] element.quarter3 = self.form_result[u'quarter3_el'+str(element.id)] element.quarter4 = self.form_result[u'quarter4_el'+str(element.id)] element.amount = int(element.quarter1) + int(element.quarter2) + int(element.quarter3) + int(element.quarter4) element.price = int(element.amount) * int(element.items.price) element.finsource = self.form_result[u'finsource_el'+str(element.id)] element.needs = self.form_result[u'needs_el'+str(element.id)] element.place = self.form_result[u'place_el'+str(element.id)] element.note = self.form_result[u'note_el'+str(element.id)] meta.Session.commit() h.redirect(url(controller='app', action='user_app'))
def save_sale_app(self): """Реализация заявок""" # Выбор нужных заявок и элементов заявок app_q = meta.Session.query(model.App) approved_apps = app_q.filter_by(campaign_id = app_globals.current_campaign_id) approved_apps = approved_apps.filter(or_(model.App.status.like(4), model.App.status.like(4))).all() for approved_app in approved_apps: app_elements_q = meta.Session.query(model.AppElements) app_elements = app_elements_q.filter_by(app_id = approved_app.id) for element in app_elements: element.quarter1p = self.form_result[u'quarter1p_el'+str(element.id)] element.quarter2p = self.form_result[u'quarter2p_el'+str(element.id)] element.quarter3p = self.form_result[u'quarter3p_el'+str(element.id)] element.quarter4p = self.form_result[u'quarter4p_el'+str(element.id)] element.amountp = int(element.quarter1p) + int(element.quarter2p) + int(element.quarter3p) + int(element.quarter4p) element.price = int(element.amount) * int(element.items.price) element.pricep = int(element.amountp) * int(element.items.price) element.status = self.form_result[u'action_el'+str(element.id)] meta.Session.commit() h.redirect(url(controller='app', action='sale_app'))
def add_item(self): """Добавление нового объекта в заявку""" app_q = meta.Session.query(model.App) c.current_app = app_q.filter_by(author_id = app_globals.user_id).filter_by(campaign_id = app_globals.current_campaign_id).first() if (c.current_app.status == 1) or (h.auth.authorized(h.auth.is_valid_user)): app_elements_q = meta.Session.query(model.AppElements) # Проверка, есть ли уже этот элемент в заявке c.repeat_element = app_elements_q.filter_by(app_id = c.current_app.id).filter_by(item_id = request.urlvars['id']).first() try: c.repeat_element.id except: app_elements = model.AppElements() app_elements.app_id = c.current_app.id app_elements.item_id = request.urlvars['id'] app_elements.quarter1 = '0' app_elements.quarter2 = '0' app_elements.quarter3 = '0' app_elements.quarter4 = '0' app_elements.quarter1p = '0' app_elements.quarter2p = '0' app_elements.quarter3p = '0' app_elements.quarter4p = '0' app_elements.amount = '0' app_elements.amountp = '0' app_elements.price = '0' app_elements.pricep = '0' app_elements.finsource = '1' app_elements.needs = '1' app_elements.place = '1' app_elements.note = u' ' app_elements.status = '0' meta.Session.add(app_elements) meta.Session.flush() else: # Javasctipt here pass h.redirect(url(controller='catalog', action='section', id=app_globals.current_section_id))
def change_item_group(self): """Замена элементы заявки по отделу на другой""" h.redirect(url(controller='app', action='group_app'))
def index(self): """Отображает список основных разделов (первый уровень)""" section_q = meta.Session.query(model.Section) c.section = section_q c.main_sections = section_q.filter_by(parent_section_id=1) h.redirect(url(controller="catalog", action="section", id=1))