def add_groups(l_input): #TODO add for rm group db_groups = get_all_group() l_name_groups = [g.url for g in db_groups] ## add group for group in l_input: if group['url'] not in l_name_groups: db_group = Group() db_group.name = group['name'] if group['name'] else None db_group.url = group['url'] session.add(db_group) status = True try: session.commit() logger.info('Commited.') except exc.SQLAlchemyError as e: session.rollback() logger.error('Database rollback.{}'.format(e)) status = False finally: #session.close() logger.info('Database close') return status
def post(self, key): group = self.getGroup(key) if group is None: group = Group() group.name = self.request.get('group[name]') group.password = self.request.get('group[password]') try: slots = int(self.request.get('group[slots]')) if slots <= 0: raise ValueError('Below zero') group.slots = slots except ValueError as e: raise ValidationError( errors={ 'group[slots]': 'Must be an integer number above zero' }) project_key = self.request.get('group[project]') project = Project.get(project_key) if project_key != '' else None group.setProject(project) group.put() error_code = 1 if key == 'new' else 2 self.redirect('/admin/groups/{}'.format(group.key()), {'error': error_code})
def group(request): dbsession = DBSession() name = clean_matchdict_value(request, 'group') group = Group() group.name = name group.timestamp = get_timestamp() dbsession.add(group) transaction.commit() return {'status': 'success'}
def insert(self, group_name): existing_group = self._get_group(group_name=group_name) if existing_group: return existing_group group = Group() group.user = self.user_key group.name = group_name group.put() return group
def create(): group = Group() if request.form.get('group'): group = ndb.Key(urlsafe=request.form.get('group')).get() if request.form.get('group_name'): group.name = request.form.get('group_name') group.user = users.get_current_user() group.put() return redirect('/groups')
def save_new_group(request): if request.method == 'POST': form = GroupForm(request.POST) if form.is_valid(): group = Group() group.name = form.cleaned_data['name'] group.max_loan_days = form.cleaned_data['max_loan_days'] group.save() return HttpResponseRedirect('/webconf/couchauth/')
def groups(request): if request.method == "GET": groups = Group.objects.all() return HttpResponse(format_groups(groups), mimetype="application/json") elif request.method == "POST": group = Group() data = json.loads(request.raw_post_data) if len(data["name"]) > 0: group.name = data["name"] group.save() return HttpResponse(format_groups([group]), mimetype="application/json") raise "Got Error?"
def create(self, params): group_name = params['group_name'] try: self.db.session.query(Group).filter(Group.name == group_name).one() return self.get(warning="Group name already exists") except NoResultFound, e: group = Group() group.name = group_name sha1 = hashlib.sha1() sha1.update(group.name) group.hash_name = sha1.hexdigest()[0:10] self.db.session.add(group) self.db.session.commit() return redirect(url_for('scoreboard', hash_name=group.hash_name))
def user_remove(given_token, element_type): user = User.query.filter_by(token=given_token).first() #TODO check if he doesnt already have group if (check_element_type(element_type)): group = Group.query.filter_by(name=element_type).first() if group is None: group = Group() group.name = element_type db.session.add(group) user.groups.remove(group) else: return "Type does not exist", 400 db.session.commit() return "Removed to " + user.name + " the type " + group.name, 200
def edit_prod(self): self.error_field.setStyleSheet("") name = unicode(self.name.text()) if name == "": self.error_field.setStyleSheet("font-size:20px; color: red") self.error_field.setText(u"Ce champ est obligatoire.") return False group = Group() try: group.name = name group.save() self.cancel() self.parent.table_group.refresh_() except sqlite3.IntegrityError: self.error_field.setStyleSheet("font-size:20px; color: red") self.error_field.setText(u"%s existe déjà" % name)
def __init__(self, parent, *args, **kwargs): QDialog.__init__(self, parent, *args, **kwargs) vbox = QVBoxLayout() vbox.addWidget(FBoxTitle(u"<h3>Ajout de contact </h3>")) self.combo_grp = QComboBox() groups = Group() groups.name = "Aucun" self.list_grp = Group.all() self.list_grp.append(groups) self.list_grp.reverse() for index in self.list_grp: sentence = u"%(name)s" % {'name': index.name} self.combo_grp.addItem(sentence) self.full_name = LineEdit() self.msg_e_or_c = FLabel("") self.full_name.setFont(QFont("Arial", 16)) self.phone_number = IntLineEdit() self.phone_number.setInputMask("D9.99.99.99") self.phone_number.setAlignment(Qt.AlignCenter) self.phone_number.setFont(QFont("Arial", 16)) send_butt = Button(u"Enregistrer") send_butt.clicked.connect(self.save_form) cancel_but = Button(u"Fermer") cancel_but.clicked.connect(self.cancel) formbox = QGridLayout() formbox.addWidget(FLabel(u"Groupes:"), 0, 0) formbox.addWidget(self.combo_grp, 1, 0) formbox.addWidget(FLabel(u"Nom complèt: "), 0, 1) formbox.addWidget(self.full_name, 1, 1) formbox.addWidget(FLabel(u"Numéro: "), 0, 2) formbox.addWidget(self.phone_number, 1, 2) formbox.addWidget(send_butt, 2, 1) formbox.addWidget(cancel_but, 2, 0) formbox.addWidget(self.msg_e_or_c, 3, 0, 3, 2) vbox.addLayout(formbox) self.setLayout(vbox)
def show_group(request, group_id): try: group = Group.get(group_id) except: return HttpResponseRedirect('/webconf/couchauth/show_groups/') form = GroupForm(instance=group) if form.is_valid(): group = Group() group.name = form.cleaned_data['name'] group.max_loan_days = form.cleaned_data['max_loan_days'] group.save() form_url = "/webconf/couchauth/save_group/%s/" % group_id context = { 'form': form, 'form_title': 'Editar Grupo', 'group': group, 'form_url': form_url, } return render_to_response('webconf/couchauth/form_group.html', context, context_instance=RequestContext(request) )
def show_group(request, group_id): try: group = Group.get(group_id) except: return HttpResponseRedirect('/webconf/couchauth/show_groups/') form = GroupForm(instance=group) if form.is_valid(): group = Group() group.name = form.cleaned_data['name'] group.max_loan_days = form.cleaned_data['max_loan_days'] group.save() form_url = "/webconf/couchauth/save_group/%s/" % group_id context = { 'form': form, 'form_title': 'Editar Grupo', 'group': group, 'form_url': form_url, } return render_to_response('webconf/couchauth/form_group.html', context, context_instance=RequestContext(request))
def parse_xml(self, path, module): logger.debug("parsing xml: %s", path) # lookup tables lookup = {} lookup["encounter"] = {} lookup["page"] = {} lookup["map"] = {} lookup["image"] = {} lookup["npc"] = {} lookup["quest"] = {} # arrays pages = [] maps = [] groups = [] encounters = [] # xml tree tree = ElementTree.parse(path) root = tree.getroot() # NPCS logger.info("parsing npcs") for category in root.findall("./npc/category"): for node in category.findall("*"): tag = node.tag name = node.find("name").text npc = NPC() npc.name = name lookup["npc"][tag] = npc # PAGES logger.info("parsing pages") parent = Group() parent.name = "Story" parent.slug = slugify(parent.name) groups.append(parent) for category in root.findall("./encounter/category"): group = Group() group.name = category.get("name") group.slug = slugify(group.name) group.parent = parent if group.name == None or group.name == "": group = parent else: groups.append(group) # get all pages for node in category.findall("*"): # tag tag = node.tag # create page page = Page() page.meta["tag"] = tag page.name = node.find("name").text page.slug = slugify(page.name) page.content = ElementTree.tostring( node.find("text"), encoding='utf-8', method='xml').decode('utf-8') page.parent = group pages.append(page) lookup["page"][tag] = page # QUESTS logger.info("parsing quests") parent = Group() parent.name = "Quests" parent.slug = slugify(parent.name) groups.append(parent) # some modules got, so use this instead for node in root.findall("./quest/*/*"): # for node in root.findall("./quest/*"): # tag tag = node.tag # create quest page = Page() page.meta["tag"] = id page.name = node.find("name").text page.slug = slugify(page.name) page.content = ElementTree.tostring(node.find("description"), encoding='utf-8', method='xml').decode('utf-8') cr = node.find("cr").text if node.find("cr") else "" xp = node.find("xp").text if node.find("xp") else "" page.content += '<p><strong>CR:</strong> ' + cr + ' <strong>XP:</strong> ' + xp + '</p>' page.parent = parent pages.append(page) lookup["quest"][tag] = page # sort pages_sorted = humansorted(pages, key=lambda x: x.name) # MAPS & IMAGES logger.info("parsing images and maps") parent = Group() parent.name = "Maps & Images" parent.slug = slugify(parent.name) groups.append(parent) for category in root.findall("./image/category"): group = Group() group.name = category.get("name") group.slug = slugify(group.name) group.parent = parent if group.name == None or group.name == "": group = parent else: groups.append(group) for node in category.findall("*"): # tag tag = node.tag # create image image = Image() image.tag = tag image.bitmap = node.find("./image/bitmap").text.replace( "\\", "/") image.name = node.find("name").text lookup["image"][tag] = image markers = [] # get shortcouts (markers) for shortcut in node.findall("./image/shortcuts/shortcut"): # create marker marker = Marker() marker.x = shortcut.find("x").text marker.y = shortcut.find("y").text shortcut_ref = shortcut.find("recordname").text.replace( "encounter.", "").replace("@*", "") page = None if shortcut_ref in lookup["page"]: page = lookup["page"][shortcut_ref] # remove chapter numbers from page name # maybe use a regex? name = page.name if " " in page.name: first, second = page.name.split(' ', 1) if "." in first: name = second marker.name = name marker.contentRef = "/page/" + page.slug markers.append(marker) if markers: # if markers not empty, its a map map = Map() map.parent = group map.meta["tag"] = tag map.name = image.name map.slug = slugify(map.name) map.image = image.bitmap if node.find("./image/gridsize") != None: map.gridSize = node.find("./image/gridsize").text if node.find("./image/gridoffset") != None: gridOffset = node.find("./image/gridoffset").text map.gridOffsetX = gridOffset.split(",")[0] map.gridOffsetY = gridOffset.split(",")[1] map.markers = markers maps.append(map) lookup["map"][tag] = map else: # otherwise, its a image page = Page() page.parent = group page.meta["tag"] = tag page.name = image.name page.slug = slugify(page.name) page.content = '<p><img class="size-full" src="' + image.bitmap + '" /></p>' pages_sorted.append(page) # do not add to lookup tables # sort maps_sorted = humansorted(maps, key=lambda x: x.name) # ENCOUNTERS logger.info("parsing encounters") parent = Group() parent.name = "Encounters" parent.slug = slugify(parent.name) groups.append(parent) for category in root.findall("./battle/category"): group = Group() group.name = category.get("name") group.slug = slugify(group.name) group.parent = parent if group.name == None or group.name == "": group = parent else: groups.append(group) for node in category.findall("*"): # tag tag = node.tag # create encounter encounter = Encounter() encounter.meta["tag"] = tag encounter.parent = group encounter.name = node.find("name").text encounter.slug = slugify(encounter.name) encounters.append(encounter) lookup["encounter"][tag] = encounter # get combatants for npcnode in node.find("npclist").findall("*"): # get positions maplinks = npcnode.findall("./maplink/*") # combatants count count = int(npcnode.find("count").text) # iterate for x in range(count): combatant = Combatant() combatant.name = npcnode.find("name").text encounter.combatants.append(combatant) # if position on map if len(maplinks) == count: maplinknode = maplinks[x] if maplinknode.find("./imagex") != None: combatant.x = maplinknode.find("./imagex").text if maplinknode.find("./imagey") != None: combatant.y = maplinknode.find("./imagey").text encounters_sorted = humansorted(encounters, key=lambda x: x.name) # custom regex for processing links def href_replace(match): key = str(match.group(2)).split("@")[0] type = match.group(1) if type == "image" and key in lookup["map"]: return 'href="/map/' + lookup["map"][key].slug elif type == "image" and key in lookup["image"]: return 'href="' + lookup["image"][key].bitmap elif type == "encounter" and key in lookup["page"]: return 'href="' + lookup["page"][key].slug elif type == "battle" and key in lookup["encounter"]: return 'href="/encounter/' + lookup["encounter"][key].slug elif type == "quest" and key in lookup["quest"]: return 'href="' + lookup["quest"][key].slug else: return key # fix content tags in pages for page in pages_sorted: content = page.content # maybe regex content = content.replace('<text type="formattedtext">', '').replace('<text>', '').replace('</text>', '') content = content.replace('<description type="formattedtext">', '').replace('<description>', '').replace( '</description>', '') content = content.replace('<frame>', '<blockquote class="read">').replace( '</frame>', '</blockquote>') content = content.replace('<frameid>DM</frameid>', '') content = content.replace('\r', '<br />') content = content.replace('<h>', '<h3>').replace('</h>', '</h3>') content = content.replace('<list>', '<ul>').replace('</list>', '</ul>') # content = content.replace("<linklist>", "<ul>").replace("</linklist>", "</ul>") content = content.replace('<linklist>', '').replace('</linklist>', '') content = content.replace('<link', '<p><a').replace('</link>', '</a></p>') content = content.replace(' recordname', ' href') content = content.strip() # fix links content = re.sub( r'href=[\'"]?(encounter|battle|image|quest)\.([^\'">]+)', href_replace, content) # add title if content.startswith('<h3>'): page.content = content.replace('<h3>', '<h2>', 1).replace('</h3>', '</h2>', 1) else: page.content = '<h2>' + page.name + '</h2>' + content # assign data to module module.groups = groups module.pages = pages_sorted module.maps = maps_sorted module.encounters = encounters_sorted return module
def add_update_game_interact(request): game_id = request.POST.get('game_id') name = request.POST.get('name') rows = request.POST.get('rows') columns = request.POST.get('columns') groups_num = request.POST.get('groups_num') panels_per_group = request.POST.get('panels_per_group') wait_time = request.POST.get('wait_time') total_time = request.POST.get('total_time') warning_time = request.POST.get('warning_time') switch_cost = request.POST.get('switch_cost') #parse to int try: rows = int(rows) columns = int(columns) groups_num = int(groups_num) panels_per_group = int(panels_per_group) wait_time = int(wait_time) except: return HttpResponse('Error') try: game = Game.objects.get(pk = game_id) except: game = Game() game.create_time = datetime.now() needInitGroupsPanels = True if game.rows and game.columns and game.groups_num \ and game.panels_per_group \ and game.rows * game.columns==rows*columns \ and game.groups_num==groups_num and game.panels_per_group==panels_per_group: needInitGroupsPanels = False game.name = name game.rows = rows game.columns = columns game.groups_num = groups_num game.panels_per_group = panels_per_group game.wait_time = wait_time game.total_time = total_time game.warning_time = warning_time game.switch_cost = switch_cost game.save() #initial Groups and Panels if needInitGroupsPanels: Group.objects.filter(game = game).delete() for i in range(groups_num): group = Group() group.game = game group.name = "Group %d" % (i+1) group.save() for j in range(panels_per_group): panel = Panel() panel.group = group panel.game = game panel.name = "Panel %d" % (j+1) panel.progress = '0' * rows * columns panel.save() nextUrl = reverse('mine.views.mine_admin_view') return HttpResponseRedirect(nextUrl)
def initData(request): if not request: xls = '../static/data.xls' else: from FTknowledge.settings import STATIC_ROOT from models import Group, TaxKind, TaxTicket, BBField, BBFieldValue, KJKM, KJKMTicket xls = '%s/data.xls'%STATIC_ROOT bbdict = {} s=u'关联增值税报表主表 关联增值税报表主表一 关联增值税报表主表二 固定资产抵扣 关联企业所得税主表 关联税收优惠明细表 关联所得税与流转税对比表 关联财务报表利润表' for ss in s.split(' '): if not bbdict.has_key(ss): bbdict[ss]=BBField.objects.get(fieldname=ss) bk = xlrd.open_workbook(xls) for sheetname in bk.sheet_names(): if 'Sheet3' == sheetname: continue if request: if Group.objects.filter(name=sheetname).count()==0: group = Group() group.name = sheetname group.is_active = True group.save() else: group = Group.objects.get(name=sheetname) startrow = 2 # if u'商业类' != sheetname: # continue print sheetname sh = bk.sheet_by_name(sheetname) nrows = sh.nrows nclos = sh.ncols l = countRows(2,nrows,0,sh) for s,e in l: print '(%s,%s):%s'%(s,0,sh.cell_value(s,0)) if request: sname=sh.cell_value(s,0) if TaxKind.objects.filter(name=sname).count()==0: tax = TaxKind() tax.name = sname tax.fatherKind = None tax.is_active = True tax.save() else: tax = TaxKind.objects.get(name=sname) zl = countRows(s,e+1,1,sh) for ss,ee in zl: print '(%s,%s):%s'%(ss,1,sh.cell_value(ss,1)) if request: ssname = sh.cell_value(ss,1) if TaxKind.objects.filter(name=ssname,fatherKind=tax).count()==0: sstax = TaxKind() sstax.name = ssname sstax.fatherKind = tax sstax.is_active = True sstax.save() else: sstax = TaxKind.objects.get(name =ssname,fatherKind=tax) pl = countRows(ss,ee+1,2,sh) for ps,pe in pl: print '(%s,%s):%s'%(ps,2,sh.cell_value(ps,2)) if request: psname = sh.cell_value(ps,2) if TaxTicket.objects.filter(name=psname,group=group,taxkind=sstax).count()==0: ticket = TaxTicket() ticket.name = psname ticket.group = group ticket.taxkind = sstax ticket.save() else: ticket = TaxTicket.objects.get(name=psname,group=group,taxkind=sstax) try: t = Ticket() t.name = psname t.save() except: pass print '(%s,%s):%s'%(ps,3,sh.cell_value(ps,3)) if request: kjkmname = sh.cell_value(ps,3) if KJKM.objects.filter(name = kjkmname).count()==0: kjkm = KJKM() kjkm.name = kjkmname kjkm.save() else: kjkm = KJKM.objects.get(name=kjkmname) if KJKMTicket.objects.filter(kjkm=kjkm,tickets=ticket).count()==0: kjkmticket = KJKMTicket() kjkmticket.kjkm = kjkm kjkmticket.tickets = ticket kjkmticket.save() else: kjkmticket = KJKMTicket.objects.get(kjkm=kjkm,tickets=ticket) for j in range(nclos): if bbdict.has_key(sh.cell_value(1,j)): v = sh.cell_value(ps,j) if BBFieldValue.objects.filter(kjkmticket=kjkmticket,bbfield=bbdict[sh.cell_value(1,j)]).count()==0: bbv = BBFieldValue() else: bbv = BBFieldValue.objects.get(kjkmticket=kjkmticket,bbfield=bbdict[sh.cell_value(1,j)]) if v and v!=u'无': bbv.value = v bbv.kjkmticket = kjkmticket bbv.bbfield = bbdict[sh.cell_value(1,j)] bbv.save() elif bbv.pk: bbv.delete() # print sh.cell_value(11,0) if request: return getResult(True,u'success')