Esempio n. 1
0
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
Esempio n. 2
0
    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})
Esempio n. 3
0
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'}
Esempio n. 4
0
File: group.py Progetto: xplot/imeet
    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
Esempio n. 5
0
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')
Esempio n. 6
0
    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
Esempio n. 7
0
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/')
Esempio n. 8
0
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/')
Esempio n. 9
0
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?"
Esempio n. 10
0
 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))
Esempio n. 11
0
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
Esempio n. 12
0
    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)
Esempio n. 13
0
    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)
Esempio n. 14
0
    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)
Esempio n. 15
0
    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)
Esempio n. 16
0
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)
                              )
Esempio n. 17
0
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))
Esempio n. 18
0
    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
Esempio n. 19
0
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)
Esempio n. 20
0
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')