예제 #1
0
def login(request):
    """Returns a tuple of (authenticated) uid, and a message string.
    If the user could not be authenticated (or they didn't try), the uid
    will be None. If the user successfully logged in, sets a session
    cookie for this session."""
    
    session = DBSession()

    uid = authenticated_userid(request)
    if uid:
        return session.query(User).get(uid), None

    if 'user' in request.params and 'passwd' in request.params:
        uid = request.params['user']
        passwd = request.params['passwd']
        user = session.query(User).get(uid)
        if not user:
            return None, "Invalid user or password."

        if user.check_pw(passwd):
            headers = remember(request, uid)
            request.response.headerlist.extend(headers)
            return user, "Logged in Successfully"
        else:
            return None, "Invalid user or password."
    else:
        return None, None
예제 #2
0
파일: views.py 프로젝트: Eugerome/BP_app
 def return_records(self):  # pylint: disable=R0201
     """Returns all records in the database."""
     logger.info("Return records")
     if not self.request.params:
         logger.info("Returns all records")
         records = DBSession.query(Record).order_by(
             Record.timestamp.desc()).all()
     else:
         logger.info("Searching records by params")
         for key in self.request.params.keys():
             logger.info("Invalid Query")
             if key not in Record.search_queries:
                 return Response(status=400)
         logger.info("Processing date queries")
         start_date = self.request.params.get("start_date", Record.min_date)
         start_date = Record.get_timestamp(start_date)
         end_date = self.request.params.get("end_date", Record.max_date)
         end_date = Record.get_timestamp(end_date)
         records = (DBSession.query(Record).filter(
             Record.timestamp.between(start_date, end_date)).order_by(
                 Record.timestamp.desc()).all())
     if records:
         records_json = []
         for record in records:
             records_json.append(record.to_dict())
         return records_json
     return Response(status=204)
 def _cleanup(self):
     now = time()
     session = DBSession()
     session.query(Data).filter(
         now - Data.timestamp > TIMEOUT_THRESHOLD).delete()
     session.commit()
     session.close()
    def edit(self):
        uid = self.request.matchdict['uid']
        transaction.commit()
        page = DBSession.query(User).filter_by(id=uid).first()

        edit_form = self.edit_form

        if 'submit' in self.request.params:
            controls = self.request.POST.items()
            try:
                appstruct = edit_form.validate(controls)
            except deform.ValidationFailure as e:
                return dict(page=page, form=e.render())

            # Change the content and redirect to the view
            page.First_Name = appstruct['First_Name']
            page.Age = appstruct['Age']
            page.Address = appstruct['Address']
            page.Last_Name = appstruct['Last_Name']
            transaction.commit()
            url = self.request.route_url('home', uid=page.id)
            return HTTPFound(url)

        form = self.edit_form.render(
            dict(uid=page.id,
                 First_Name=page.First_Name,
                 Address=page.Address,
                 Last_Name=page.Last_Name,
                 Age=page.Age))
        users = DBSession.query(User).all()
        return dict(results=users, form=form)
예제 #5
0
파일: gcalendar.py 프로젝트: tinawen/menu
def get_menu_desc(menu, for_calendar):
    desc = ''
    json_result = []
    if len(menu.menus) < 1:
        return ''
    for menu_item_id in menu.menus.split(' '):
        menu_item = DBSession.query(MenuItem).filter(MenuItem.id==menu_item_id).one()
        allergens = DBSession.query(Allergen).filter(Allergen.menu_item_id==menu_item.id).all()
        allergen_string = ', '.join([a.allergen for a in allergens])
        desc = '\n' + desc
        menu_item_name = menu_item.name.decode('utf8')
        desc = desc + menu_item_name
        if  menu_item.healthy:
            if for_calendar:
                desc = desc + '\n' + health_icon[menu_item.healthy-1].decode('utf8') + ' ' + HEALTHY_FACTOR[menu_item.healthy-1] + ' '
            else:
                desc = desc + '\n' + '(' + HEALTHY_FACTOR[menu_item.healthy-1] + ') '

        desc = desc + '\n'
        menu_item_desc = ''
        if len(menu_item.description.decode('utf8')):
            menu_item_desc = menu_item.description.decode('utf8')
            desc = desc + menu_item_desc + '\n'
        if len(allergen_string):
            desc = desc + '(' + allergen_string + ')\n\n'
        json_result.append((menu_item_name, menu_item_desc))
    return desc.strip('\n')
예제 #6
0
def getUser(request):

    username = request.headers["X-Webauth-User"]
    #now get the uuid
    uuid = ""
    print "UserName:"******"UUID:", uuid

    if uuid == "":
        user = DBSession.query(Owners).filter_by(username=username).all()
    else:
        user = DBSession.query(Owners).filter_by(uuid=uuid).all()

    if len(user) == 0:
        cur = Owners(username, uuid)
        DBSession.add(cur)
        DBSession.commit()
        user = DBSession.query(Owners).filter_by(username=username).all()

        print "Made"

    if len(user) == 1:
        print "Found"
        cur = user[0]

    # if user == "zemon1":
    #     user = "******"

    return cur
예제 #7
0
파일: views.py 프로젝트: tinawen/menu
def attach_pictures(request):
    menu_query = DBSession.query(Menu).filter(Menu.id==request.matchdict['menu_id'])
    images_id = menu_query.one().images_id
    images_id = images_id.split(' ') if images_id else []
    if images_id:
        images = DBSession.query(Image).filter(Image.id.in_(images_id)).all()
    added_thumbs = []
    if "data" in request.params:
        data = json.loads(request.params["data"])
        for image_info in data:
            image, thumb = image_info
            if not image or not thumb:
                continue
            ext = os.path.splitext(image)[-1].lower()
            if ext in (".jpg", ".jpeg", ".png"):
                new_image = Image(image_url=image, thumb_url=thumb)
                added_thumbs.append(thumb)
                DBSession.add(new_image)
                DBSession.flush()
                DBSession.refresh(new_image)
                images_id.append(new_image.id)
        menu_query.update({
                "images_id": ' '.join([str(i) for i in images_id]),
                })
    return json.dumps(added_thumbs)
예제 #8
0
    def get(self, grid):
        session = DBSession()
        q = session.query(Person).get(int(grid))
        group = session.query(PersonGroup).get(q.group_grid)
        setattr(q, 'group_name', group.name)

        return q
예제 #9
0
파일: views.py 프로젝트: vishakh/metamkt
def user_get(request):
    dbsession = DBSession()
    name = clean_matchdict_value(request, 'user')
    user = dbsession.query(User).filter(User.name == name).one()
    user_data = dbsession.query(UserData).filter(UserData.user_id == user.id).one()
    user_json = convert.decodeUser(request, dbsession, user, user_data)
    return {'status': 'success', 'user': user_json}
    def job_archive():
        """
        Returns the job archive from the database
        :return:
        """
        jobs_stmt = DBSession.query(Job).order_by(Job.updatetime.desc()).all()
        jobs_dict = []
        for jobs in jobs_stmt:
            job_outputs = DBSession.query(JobOutput).filter(JobOutput.jobid == jobs.id).all()
            jobs = jobs.__dict__

            if 'jobinfo' in jobs and jobs['jobinfo'] is not None:
                obj = jsonpickle.decode(jobs['jobinfo'])
                try:
                    jobs.update(obj)
                except BaseException as e:
                    print(str(e))

            if 'jobdetails' in jobs and jobs['jobdetails'] is not None:
                obj = jsonpickle.decode(jobs['jobdetails'])
                try:
                    jobs.update(obj)
                except BaseException as e:
                    print(str(e))
            jobs['number_of_joboutputs'] = len(job_outputs)
            jobs['joboutputs'] = []
            for outputs in job_outputs:
                jobs['joboutputs'].append(outputs.__dict__)
            jobs_dict.append(jobs)
        return jobs_dict
예제 #11
0
파일: auth.py 프로젝트: AnamAtiq/CDSR
def is_allowed(request, routename, method='ALL', check_route=True):
    """
    Given a request_object, routename and method; returns True if current user has access to that route,
    otherwise returns False.

    If check_route if False, does not check the DB to see if the route is in the list of protected routes
    """

    if check_route:
        route = DBSession.query(RoutePermission).filter_by(route_name=routename).first()
        if not route:
            return True

    if not isinstance(method, list):
        method = [method, ]

    user_permissions = request.session.get('auth_user_permissions', [])
    if request.session.get('auth_static_permission', None):
        user_permissions.append(request.session.get('auth_static_permission', None))

    has_permission = DBSession.query(func.count(RoutePermission.permission)).filter(
                                            RoutePermission.route_name == routename).filter(
                                            RoutePermission.method.in_(method)).filter(
                                            RoutePermission.permission.in_(user_permissions)).scalar()

    if has_permission > 0:
        return True
    else:
        return False
 def delete(self):
     uid = self.request.matchdict['uid']
     form = ReusableForm()
     DBSession.query(User).filter_by(id=uid).delete()
     transaction.commit()
     users = DBSession.query(User).all()
     return dict(form=form, results=users)
예제 #13
0
파일: views.py 프로젝트: tinawen/menu
def update_menu_item_desc(request):
    menu_item_id = request.matchdict['menu_item_id']
    menuItem = DBSession.query(MenuItem).filter(MenuItem.id==menu_item_id)
    new_desc = urllib.unquote(request.json_body).encode('utf8')
    menuItem.update({"description":new_desc})
    menu = DBSession.query(Menu).filter(Menu.id==menuItem.one().menu_id).one()
    update_gcalendar(menu)
    return 'ok'
예제 #14
0
 def update(self, grid, data):
     session = DBSession()
     session.query(Person).filter(Person.grid == grid).update(data)
     try:
         session.commit()
     except Exception as e:
         log.debug("Ocorreu um erro ao salvar as configurações !\n" + e)
         session.rollback()
예제 #15
0
def stop_unblock(context, request):
    id = request.matchdict.get('id', None)
    session = DBSession()
    session.query(Stop).filter(Stop.id == id).update({
    Stop.is_block: False,
    Stop.user_block_id: None
    })
    return Response()
예제 #16
0
파일: auth.py 프로젝트: DroneOs/SpyCar
    def auth_request(request):

        response = None

        # ignore static routes for authentication
        if 'static' in request.path.split('/'):
            return handler(request)

        logged_in_user = request.session.get('logged_in_user', None)

        protected_routes = []
        routes = DBSession.query(RoutePermission.route_name).distinct().all()

        for R in routes:
            protected_routes.append(R[0])

        #print(protected_routes)
        matched_routename = None

        for r in request.registry.introspector.get_category('routes'):
            R = r['introspectable']

            matcher, generator = _compile_route(R['pattern'])

            if type(matcher(request.path)) == types.DictionaryType:
                #print(R['name'] + ':' + R['pattern'])
                matched_routename = R['name']
                break

        # Check routes from protected routes here.
        if matched_routename and matched_routename in protected_routes:
            # first check if there is any static permission given and if yes then validate routes against that permission
            user_permissions = []
            if request.session.get('auth_static_permission', None):
                user_permissions.append(request.session.get('auth_static_permission', None))
            else:
                if not logged_in_user:
                    return HTTPForbidden()

                # get user permissions
                user_permissions = request.session.get('auth_user_permissions', [])

            # get route permissions for the current route
            # match if there are any common permissions and check for all matching request methods
            has_permission = DBSession.query(func.count(RoutePermission.permission)).filter(
                                            RoutePermission.route_name == matched_routename).filter(
                                            or_(RoutePermission.method == 'ALL',
                                                RoutePermission.method == request.method)).filter(
                                            RoutePermission.permission.in_(user_permissions)).scalar()

            if has_permission > 0:
                return handler(request)
            else:
                return HTTPForbidden()

        else:
            return handler(request)
예제 #17
0
파일: db.py 프로젝트: wayetender/corvorant
def make_session(user, sessionid=None, expires_in=3600):
    if not sessionid:
        sessionid = str(uuid.uuid4())
    DBSession.query(Session).filter(Session.sessionid == sessionid).delete()
    logging.debug("making session for %s with sessionid %s" % (user.username, sessionid))
    s = Session(user_id=user.id, sessionid=sessionid, expires=datetime.datetime.now() + datetime.timedelta(0, expires_in))
    DBSession.add(s)
    DBSession.flush()
    DBSession.expunge(s)
    return s
예제 #18
0
파일: views.py 프로젝트: aarongreenwald/pim
def get_entries(request):		
	#todo this searching is terrible but it's a POC
	if not any(param == 'search' for param in request.params) or request.GET['search'] == '':
		data = DBSession.query(m.Entry).order_by(m.Entry.start_datetime.desc()).slice(0, 10).all()
	else:		
		searchExpression = '%' + request.GET['search'] + '%'
		data = DBSession.query(m.Entry) \
			.filter((m.Entry.content.ilike(searchExpression) | m.Entry.title.ilike(searchExpression))) \
			.all()
	return utilities.serialize(data)
예제 #19
0
파일: views.py 프로젝트: tinawen/menu
def refresh_menu(menu):
    menu_items = []
    allergens = []
    for menu_item_id in menu.menus and menu.menus.split(' '):
        menu_item = DBSession.query(MenuItem).filter(MenuItem.id==menu_item_id).one()
        allergen_array = DBSession.query(Allergen).filter(Allergen.menu_item_id==menu_item.id).all()
        menu_items.append(menu_item)
        allergens.append([a.allergen for a in allergen_array])

    return dict(menu_items=menu_items, allergens=allergens, menu=menu, three_meals=THREE_MEALS)
예제 #20
0
def get_houses(context, request):
    box = leaflet_box_to_WKT_polygon(request.params.getall('box')[0])

    session = DBSession()
    houses_in_box = session.query(House) \
        .filter(House.geo.within(box)) \
        .join(House.policeman) \
        .all()

    houses = []
    policemen = dict()
    for house in houses_in_box:
        geometry = loads(str(house.geo.geom_wkb))
        feature = Feature(
            id=house.osm_id,
            geometry=geometry,
            properties={
                'address': house.address,
                'pm_id': house.policeman_id
            }
        )
        houses.append(feature)

        policeman = house.policeman
        if not policeman.id in policemen:
	    photo_url_parsed = policeman.photo_url.split('/')	    
	    photo_name = photo_url_parsed[-2] + photo_url_parsed[-1].replace('img', '_file')
            policemen[policeman.id] = {
                'id': policeman.id,
                'name': policeman.name,
                'type': policeman.type,
                'rank': policeman.rank,
                'phone': policeman.phone,
                'url': policeman.url,
                'photo_url': request.route_url('home') + 'static/images/' + photo_name,
                'color': policeman.color
            }

    subdivisions_in_box = session.query(Subdivision) \
        .filter(Subdivision.geo.within(box)) \
        .all()

    subdivisions = {}
    for subdivision_in_box in subdivisions_in_box:
        subdivision = row2dict(subdivision_in_box, ['id', 'name', 'phone', 'address', 'hours', 'url'])
        subdivision['geo'] = loads(str(subdivision_in_box.geo.geom_wkb))
        subdivisions[subdivision['id']] = subdivision

    result = {
        'houses': FeatureCollection(houses),
        'policemen': policemen,
        'subdivisions': subdivisions
    }

    return Response(dumps(result))
def changeUserPassword(user,password):
    mySession = DBSession()
    try:
        transaction.begin()
        mySession.query(User).filter_by(user_name = user).update({"user_password": encodeData(password)})
        transaction.commit()
        mySession.close()
        return True
    except:
        transaction.abort()
        mySession.close()
        return False
예제 #22
0
파일: gcalendar.py 프로젝트: tinawen/menu
def get_menu_json(menu):
    json_result = []
    if len(menu.menus) < 1:
        return ''
    for menu_item_id in menu.menus.split(' '):
        menu_item = DBSession.query(MenuItem).filter(MenuItem.id==menu_item_id).one()
        allergens = DBSession.query(Allergen).filter(Allergen.menu_item_id==menu_item.id).all()
        allergen_string = ', '.join([a.allergen for a in allergens])
        menu_item_name = menu_item.name.decode('utf8')
        if len(menu_item.description.decode('utf8')):
            menu_item_desc = menu_item.description.decode('utf8')
        json_result.append((menu_item_name, menu_item_desc))
        return json.dumps(json_result)
예제 #23
0
 def delete(self, grid):
     session = DBSession()
     session.query(Person).filter(Person.grid == grid).update({'flag': 'D'})
     try:
         session.commit()
         log.info("Comando executado com sucesso !")
         log.info(session)
         return session
     except Exception as e:
         log.debug("Ocorreu um erro ao salvar as configurações !\n" +
                   e.__str__())
         session.rollback()
         return None
예제 #24
0
 def put(self, catid):
     session = DBSession()
     category = session.query(models.Category).filter_by(id=catid).first()
     args = parser.parse_args()
     if args['name'] and len(args['name']):
         category.name = args['name']
     if args['order'] and len(args['order']):
         neworder = args['order']
         other = session.query(models.Category).filter_by(order=neworder).first()
         if other:
             other.order = category.order
             category.order = neworder
     session.commit()
예제 #25
0
파일: views.py 프로젝트: tinawen/menu
def delete_picture(request):
    menu_query = DBSession.query(Menu).filter(Menu.id==request.matchdict['menu_id'])
    images_id = menu_query.one().images_id
    images_id = images_id.split(' ') if images_id else []

    if "data" in request.params:
        thumb_url = json.loads(request.params["data"])
        image = DBSession.query(Image).filter(Image.thumb_url==thumb_url).filter(Image.id.in_(images_id)).one()
        images_id.remove(str(image.id))
        images_id = ' '.join([str(i) for i in images_id])
        menu_query.update({"images_id": images_id}, synchronize_session=False)
        DBSession.delete(image)
        return thumb_url
예제 #26
0
def start_shuffle():
    random.seed()
    session = DBSession()
    groups = session.query(Group).filter(
        Group.date_shuffle <= datetime.datetime.now().date(),
        Group.shuffle_done == False, Group.active == True).all()
    for group in groups:
        if len(group.members) == 0:
            group.shuffle_done = True
            session.commit()
            send_message(
                group.owner.telegramid,
                'К сожалению, в вашей группе "{}" нет ни одного участника. Некому высылать подарки'
                .format(group.name))
        elif len(group.members) == 1:
            group.shuffle_done = True
            session.commit()
            send_message(
                group.owner.telegramid,
                'К сожалению в вашей группе "{}" всего один учатник. Некому высылать подарки.'
                .format(group.name))
            send_message(
                group.members[0].user.telegramid,
                'Вы единственный участник группы {}. Подарите себе что-нибудь приятное'
                .format(group.name))
        elif len(group.members) > 1:
            member_list = group.members[:]
            random.shuffle(member_list)
            member_list[-1].send_to = member_list[0].user
            for i in range(len(member_list) - 1):
                member_list[i].send_to = member_list[i + 1].user
            group.shuffle_done = True
            session.commit()
            for member in group.members:
                to_member = session.query(Member).filter(
                    Member.group == group,
                    Member.user == member.send_to).first()
                text = '''Распределение получателей для группу {} завершено!\nВы Санта для {}. Пожелания к подарку: {}
    подарок высылать по следующему адресу: {} {}. На имя {}'''.format(
                    group.name, to_member.user.name, to_member.suggestions,
                    to_member.user.index, to_member.user.address,
                    to_member.user.fio)
                send_message(member.user.telegramid, text)
            send_message(
                group.owner.telegramid,
                'Распределение получателей для группу {} завершено! Участников: {}.\
                              Всем участникам разосланы их получатели.'.format(
                    group.name, len(group.members)))
    session.close()
    save_to_log('system', comment_text="Shuffle done")
예제 #27
0
파일: db.py 프로젝트: wayetender/corvorant
def make_session(user, sessionid=None, expires_in=3600):
    if not sessionid:
        sessionid = str(uuid.uuid4())
    DBSession.query(Session).filter(Session.sessionid == sessionid).delete()
    logging.debug("making session for %s with sessionid %s" %
                  (user.username, sessionid))
    s = Session(user_id=user.id,
                sessionid=sessionid,
                expires=datetime.datetime.now() +
                datetime.timedelta(0, expires_in))
    DBSession.add(s)
    DBSession.flush()
    DBSession.expunge(s)
    return s
예제 #28
0
def populate(comps='comps-f16', do_dependencies=True):
    from yum.comps import Comps

    session = DBSession()

    c = Comps()
    c.add('comps/%s.xml' % comps)

    for group in c.groups:
        g = Group(id=group.groupid,
                  name=group.name,
                  description=group.description)
        session.add(g)

        for package in group.packages:
            p = session.query(Package).filter_by(
                name=to_unicode(package)).first()
            if not p:
                p = Package(name=package)
                session.add(p)
            p.group = g

        session.flush()

    root = Root(name=u'Fedora')
    session.add(root)
    session.flush()

    for category in c.categories:
        c = Category(id=category.categoryid,
                     name=category.name,
                     description=category.description)
        session.add(c)
        root.categories.append(c)
        for group in category.groups:
            g = session.query(Group).filter_by(
                group_id=to_unicode(group)).first()
            if not g:
                print "Cannot find group: %s" % group
            else:
                g.category = c

        session.flush()

    if do_dependencies:
        for package in session.query(Package).all():
            add_dependencies(package, session)

    session.commit()
예제 #29
0
def update_stop(context, request):
    stop = json.loads(request.POST["stop"])
    session = DBSession()
    session.query(Stop).filter(Stop.id == stop["id"]).update(
        {
            Stop.name: stop["name"].encode("UTF-8"),
            Stop.is_bench: None if stop["is_bench"] == "None" else stop["is_bench"],
            Stop.is_shelter: None if stop["is_shelter"] == "None" else stop["is_shelter"],
            Stop.comment: stop["comment"].encode("UTF-8"),
            Stop.panorama_link: stop["panorama_link"],
            Stop.check_status_type_id: stop["is_check"],
            Stop.is_help: str_to_boolean(stop["is_help"]),
        },
        synchronize_session=False,
    )
    # raw sql about https://groups.google.com/forum/?fromgroups=#!topic/geoalchemy/vSAlsuhwWfo
    sql = "UPDATE stops SET geom=GeomFromText(:wkt, 4326) WHERE id = :stop_id"
    session.execute(sql, {"wkt": "POINT(%s %s)" % (stop["lon"], stop["lat"]), "stop_id": stop["id"]})

    sql_routes = sql_generate_for_many_to_many(
        session,
        stop["routes"],
        ["stop_id", "route_id"],
        {"col": "stop_id", "id": stop["id"]},
        "stops_routes",
        ["stop_id", "route_id"],
    )
    if sql_routes:
        session.execute(sql_routes)

    sql_types = sql_generate_for_many_to_many(
        session,
        stop["stop_types"],
        ["stop_id", "stop_type_id"],
        {"col": "stop_id", "id": stop["id"]},
        "stops_stop_types",
        ["stop_id", "stop_type_id"],
    )
    if sql_types:
        session.execute(sql_types)

    log = LogStops()
    log.stop_id = stop["id"]
    log.user_id = request.session["u_id"]
    log.time = datetime.now()
    session.add(log)

    transaction.commit()
    return Response(json.dumps(stop))
예제 #30
0
파일: views.py 프로젝트: tinawen/menu
def update_menu_item_allergen(request):
    menu_item_query = DBSession.query(MenuItem).filter(MenuItem.id==request.matchdict['menu_item_id'])
    allergen_to_add = request.params.get('menu_item_allergen_on', None)
    allergen_to_remove = request.params.get('menu_item_allergen_off', None)
    if allergen_to_add:
        #create a new allergen for the allergen that's turned on
        new_allergen = Allergen(menu_item_id=request.matchdict['menu_item_id'], allergen = allergen_to_add)
        DBSession.add(new_allergen)
    elif allergen_to_remove:
        #delete the allergen that was turned off
        allergen_to_remove = DBSession.query(Allergen).filter(Allergen.menu_item_id==request.matchdict['menu_item_id']).filter(Allergen.allergen==allergen_to_remove).one()
        DBSession.delete(allergen_to_remove)
    menu = DBSession.query(Menu).filter(Menu.id==menu_item_query.one().menu_id).one()
    update_gcalendar(menu)
    return 'ok'
def updateProfile(user,data):
    mySession = DBSession()
    try:
        transaction.begin()
        mySession.query(User).filter_by(user_name = user).update({"user_fullname": data["user_fullname"],"user_organization": data["user_organization"],
                                                                  "user_email": data["user_email"],"user_cnty": data["user_cnty"],"user_sector": data["user_sector"],
                                                                  "user_about": data["user_about"]})
        transaction.commit()
        mySession.close()
        return True
    except Exception, e:
        print str(e)
        transaction.abort()
        mySession.close()
        return False
예제 #32
0
파일: __init__.py 프로젝트: zivsu/alipay
def clear_db():
    """On teardown, remove all the db stuff"""
    db = DBSession()
    db.query(Payment).delete()
    db.query(Trade).delete()
    db.query(Product).delete()
    db.query(LogTrade).delete()
    db.commit()
예제 #33
0
def additional_changes_stats(request):
    db_session = DBSession()
    d = request.GET.get('date')
    if not d:
        return HTTPNotFound()

    try:
        d = d.split('-')
        d = date(year=int(d[0]), month=int(d[1]), day=int(d[2]))
    except Exception:
        return HTTPNotFound()

    spiders = db_session.query(Spider, Account).join(Account).filter(Spider.enabled == True,
                                                                     Account.enabled == True)
    final_stats = []

    for s in spiders.yield_per(50):
        try:
            crawl = db_session.query(Crawl).filter(Crawl.spider_id == s.Spider.id,
                                                   Crawl.status == 'upload_finished',
                                                   Crawl.crawl_date == d).order_by(desc(Crawl.id)).first()

            if crawl:
                stats = get_crawl_stats(crawl.id, '/home/innodev/product-spiders')
                row = {'account': s.Account.name, 'spider': s.Spider.name,
                       'total products': str(crawl.products_count),
                       'changes percentage': get_perc(crawl.products_count, stats['total changes'])}
                for k in stats:
                    row[k] = str(stats[k])

                final_stats.append(row)
        except Exception:
            continue

    final_stats.sort(cmp=lambda x, y: cmp(int(x['total changes']), int(y['total changes'])), reverse=True)
    f = NamedTemporaryFile(suffix='.csv', delete=False)
    header = ['account', 'spider', 'total products',
              'total changes', 'changes percentage', 'name', 'url',
              'image_url', 'category', 'brand', 'sku', 'stock',
              'shipping_cost', 'dealer', 'identifier']
    writer = csv.DictWriter(f, header)
    writer.writeheader()
    for row in final_stats:
        writer.writerow(row)
    f.close()
    r = FileResponse(f.name, request=request, content_type='text/csv')

    return r
예제 #34
0
class LagouPipeline(object):
    def __init__(self):
        self.session = DBSession()
        self.pool = redis.Redis(host='raspberrypi', port=6379, db=2)

    def process_item(self, item, spider):
        if isinstance(item, LagouItem):

            if self.session.query(Jobs).filter(
                    Jobs.positionId == item['positionId'],
                    Jobs.companyId == item['companyId']).first():
                pass
            else:
                obj = Jobs(
                    companyId=item['companyId'],
                    positionId=item['positionId'],
                    jobNature=item['jobNature'],
                    companyName=item['companyName'],
                    financeStage=item['financeStage'],
                    companyFullName=item['companyFullName'],
                    companySize=item['companySize'],
                    industryField=item['industryField'],
                    positionName=item['positionName'],
                    city=item['city'],
                    createTime=item['createTime'],
                    salary_low=item['salary_low'],
                    salary_high=item['salary_high'],
                    workYear=item['workYear'],
                    education=item['education'],
                    positionAdvantage=item['positionAdvantage'],
                    district=item['district'],
                    # uid=item['uid'],
                    companyLabelList=item['companyLabelList'],
                )
                self.session.add(obj)
                try:
                    self.session.commit()
                except Exception, e:
                    print e
                    self.session.rollback()

        # self.session.close()

        elif isinstance(item, CompanyItem):
            # 公司信息存入mysql数据库
            '''
            obj=Company(
                companyId=item['companyId'],
                companyName=item['companyFullName']
            )
            self.session.add(obj)
            try:
                self.session.commit()
            except Exception, e:
                print e
                self.session.rollback()
            '''

            # 公司的数据存入redis
            self.pool.set(item['companyId'], item['companyFullName'])
예제 #35
0
def make_admin(config_path):
    from intranet3.models import User
    user_login = sys.argv[-1]
    if len(sys.argv) < 4:
        print u"Provide user login"
        return

    session = DBSession()

    user = session.query(User).filter(User.email == user_login).first()

    if not user:
        print u"No such user: %s" % user_login
        return

    if 'admin' in user.groups:
        print u'Removing %s from group admin' % user.name
        groups = list(user.groups)
        groups.remove('admin')
        user.groups = groups
    else:
        print u'Adding %s to group admin' % user.name
        groups = list(user.groups)
        groups.append('admin')
        user.groups = groups

    session.add(user)
    transaction.commit()
예제 #36
0
 def get_all_colleague_data_by_id(self, id):
     """
     Get all colleague associated data filter by colleague_id
     """
     colleague = DBSession.query(Colleague).filte(
         Colleague.colleague_id == id).first()
     return colleague
예제 #37
0
파일: views.py 프로젝트: 5aket/cpfthw
def my_view(request):
    try:
        one = DBSession.query(Note).filter(Note.note_id == 1).first()
    except DBAPIError:
        return Response(conn_err_msg, content_type='text/plain',
                        status_int=500)
    return {'one': one, 'project': 'PyramidNotes'}
예제 #38
0
 def get_all_colleague_relation_by_id(self, id):
     """
     Get all colleague_relation data filter by colleague_id
     """
     colleague_relation = DBSession.query(ColleagueRelation).filter(
         ColleagueRelation.colleague_id == id).all()
     return colleague_relation
예제 #39
0
파일: main.py 프로젝트: kalkehcoisa/octopus
    def sentiment_data(self, url, common_list):
        """
        Does the sentiment analysis with wit.ai
        and saves the sentiment data into the database.
        """
        query_str = urllib.parse.quote_plus(' '.join(common_list)[:280])
        resp = yield self.fetch_url(
            'https://api.wit.ai/message?v=20180703&q={}'.format(query_str),
            headers={
                'Authorization':
                'Bearer {WIT_AUTH_KEY}'.format(WIT_AUTH_KEY=WIT_AUTH_KEY)
            })
        ents = json.loads(resp['body'])['entities']
        sentiment = ents and ents.get('sentiment')
        if sentiment:
            sentiment = sentiment[0]['value']
            s_obj = DBSession.query(UrlSentiment).filter(
                UrlSentiment.sentiment == sentiment)
            if s_obj.count() == 0:
                s_obj = UrlSentiment(url=url, sentiment=sentiment)
                DBSession.add(s_obj)
                DBSession.commit()

                raise gen.Return(s_obj)
        raise gen.Return(False)
예제 #40
0
파일: views.py 프로젝트: tinawen/menu
def update_menu_item_name(request):
    menu_item_query = DBSession.query(MenuItem).filter(MenuItem.id==request.matchdict['menu_item_id'])
    menu_item = menu_item_query.one()
    old_name = menu_item.name
    new_name = urllib.unquote(request.json_body)
    menu_item_query.update({"name":new_name.encode('utf8')})
    #update the menu name if the menu item is the first menu item, the menu name is the same as the old menu item name or there's no menu name
    menu_query = DBSession.query(Menu).filter(Menu.id==menu_item.menu_id)
    menu = menu_query.one()

    if int(menu.menus.split(' ')[0]) == menu_item.id:
        if not menu.name or old_name == menu.name:
            menu_query.update({"name":new_name.encode('utf8')})
    update_gcalendar(menu)
    #update the menu title with the new name
    return json.dumps(menu.name.decode('utf8'))
예제 #41
0
def get_spending_item(request):
	id = request.matchdict['id']
	data = DBSession.query(m.Spending).filter(m.Spending.spending_id == id).first()
	if data is None:
		raise 'Not implemented - need a 404 here'
	else:		
		return utilities.serialize(data)	
예제 #42
0
파일: tests.py 프로젝트: bentterp/nordcloud
    def test_create_success(self):
        user_data = {'email': '*****@*****.**', 'password': '******'}
        create_object(User, **user_data)
        self.signin(**user_data)

        self.testapp.post('/pads/create/', {'name': 'pad'}, status=302)
        self.assertEquals(1, DBSession.query(Pad).count())
예제 #43
0
class Controller(object):
    def __init__(self):
        self.session = DBSession()

    def selUser(self):
        get_data = self.session.query(User).all()
        return showAllView(get_data)
예제 #44
0
파일: views.py 프로젝트: tinawen/menu
def update_menu_name(request):
    menu_query = DBSession.query(Menu).filter(Menu.id==request.matchdict['menu_id'])
    new_name = urllib.unquote(request.json_body)
    menu_query.update({"name":new_name.encode('utf8')})
    update_gcalendar(menu_query.one())

    return json.dumps(menu_query.one().name.decode('utf8'))
 def write_jobs_to_database(jobs):
     """
     Writes the retrieved jobs to the database
     :param jobs: list of all jobs
     :return:
     """
     log = logging.getLogger(__name__)
     with transaction.manager:
         for (classname, classmembers) in jobs.items():
             if len(classmembers) == 0:
                 continue
             for element in classmembers:
                 if 'error' in element:
                     continue
                 if 'JobID' not in element:
                     log.debug('Row didn''t match specified criteria {0}'.format(element))
                     continue
                 if not re.search('[0-9]*', element['JobID']):
                     log.debug('Row didn''t match specified criteria {0}'.format(element))
                     continue
                 dbrow = DBSession.query(Job).filter(Job.id == element['JobID']).all()
                 json_str = jsonpickle.encode(element)
                 if len(dbrow) == 0:
                     j = Job(element['JobID'], json_str)
                     DBSession.add(j)
                 elif len(dbrow) == 1:
                     dbrow[0].jobinfo = json_str
                 else:
                     log.error('More than one entry for jobid: {0}'.format(json_str))
         DBSession.commit()
예제 #46
0
파일: views.py 프로젝트: vishakh/metamkt
def event_delete(request):
    dbsession = DBSession()
    id = clean_matchdict_value(request, 'event')
    event = dbsession.query(Event).filter(Event.id == id).one()
    dbsession.delete(event)
    transaction.commit()
    return {'status': 'success'}
예제 #47
0
def get_logs(context, request):
    session = DBSession()
    user_stops_count_sbq = session \
        .query(LogStops.user_id.label('user_id'), func.count(LogStops.stop_id.distinct()).label('count_stops')) \
        .group_by(LogStops.user_id) \
        .subquery()
    user_stops_log = session.query(User, user_stops_count_sbq.c.count_stops) \
        .outerjoin(user_stops_count_sbq, User.id == user_stops_count_sbq.c.user_id) \
        .order_by(asc(User.display_name))
    count_editable_stops = session.query(func.count(LogStops.stop_id.distinct())).scalar()
    count_all_stops = session.query(func.count(Stop.id)).scalar()
    results = {'count': {'all': count_all_stops, 'editable': count_editable_stops},
               'stops_by_users': []}
    for user_stops_log in user_stops_log:
        results['stops_by_users'].append({'user_name': user_stops_log[0].display_name, 'count_stops': user_stops_log[1]})
    return Response(json.dumps(results))
예제 #48
0
 def get_all_collegue_locus_by_id(self, id):
     """
     Get all colleague_locus data filter by colleague_id
     """
     colleague_locus = DBSession.query(ColleagueLocus).filter(
         ColleagueLocus.colleague_id == id).all()
     return colleague_locus
예제 #49
0
파일: views.py 프로젝트: jeid64/Crawdad
def create_message(request):
    data = json.loads(request.body)
    cur_user = data['username']
    user_id = DBSession.query(User).filter_by(uid=cur_user).one().id
    data["owner_id"] = user_id
    target_query = DBSession.query(User).filter(
        User.uid == cur_user)
    if target_query.count() > 0:
        target = target_query.first()
        if target.uid == cur_user or cur_user.admin:
            m = Message.from_dict(data)
            #m = Message()
            DBSession.add(m)
            DBSession.commit()
            return m.to_dict()
    raise HTTPUnauthorized
예제 #50
0
파일: views.py 프로젝트: chrisx8/Ballzzz
def scoreboard():
    board = DBSession.query(Scoreboard).order_by(Scoreboard.score.desc()).all()
    rankings = get_rankings(board)
    return render_template('scoreboard.html',
                           scoreboard=board,
                           count=len(board),
                           rankings=rankings)
예제 #51
0
def crawl_plat_first_letter(shuju_date="2020-01-062020-01-12"):
    """
    平台成交数据 https://shuju.wdzj.com/platdata-1.html
    """
    url = "https://shuju.wdzj.com/plat-data-custom.html"
    form_data = {
        "type": 0,
        "shujuDate": shuju_date
    }
    response = requests.post(url, data=form_data)
    status = response.status_code
    if status != 200:
        print("crawl failed. (status is not 200)")
        raise CrawlFailed('crawl failed')
    plats_data = response.json()
    for plat_data in plats_data:
        plat_id = plat_data.get('platId')
        wdzj_id = plat_data.get('wdzjPlatId')
        first_letter = plat_data.get('firstLetter')
        session = DBSession()
        if wdzj_id != 0:
            product = session.query(Product).filter_by(plat_id=plat_id).first()
            product.first_letter = first_letter

        session.commit()
        session.close()
예제 #52
0
def scoreboard(request):
    
    offset = int(request.matchdict['offset'])
    userLimit = 1000
    users = DBSession.query(User).\
    order_by(User.cur_question.desc()).order_by(User.last_submit_time.asc()).\
    limit(userLimit).offset(offset).\
    all()
    
    rank = offset + 1
    userRanks = []
    for user in users:
        tempUser = {}
        tempUser['id'] = user.id
        tempUser['rank'] = rank
        tempUser['name'] = user.name
        tempUser['nick'] = user.nick
        tempUser['cur_question'] = user.cur_question
        tempUser['score'] = user.score
        tempUser['last_submit_time'] = user.last_submit_time
        if tempUser['nick'] != 'Admin':
            userRanks.append(tempUser)
            rank += 1
        
    return dict(scores = userRanks)
예제 #53
0
def getUserName(request):

    currentUser = int(authenticated_userid(request))
    user = DBSession.query(User).filter(User.id == currentUser).first()
    userName = user.nick

    return {'user' : userName}
예제 #54
0
파일: company.py 프로젝트: blockmov/BMTF
 def on_set_base_info(cls, company_id, company_name=None, country=None, city=None, address=None, timezone=None,
                      currency=None, note=None):
     """ 设置公司基础信息 """
     session = DBSession()
     com = session.query(cls).filter(cls.company_id == company_id).first()
     if com:
         if company_name:
             com.company_name = company_name
         if country:
             com.country = country
         if city:
             com.city = city
         if address:
             com.address = address
         if timezone:
             com.timezone = timezone
         if currency:
             com.currency = currency
         if note:
             com.note = note
         try:
             session.add(com)
             session.commit()
         except Exception as why:
             session.rollback()
             message = "companies.on_set_base_info: {0}".format(why)
             logging.info(message)
             return -1
     return 0
예제 #55
0
파일: Parser.py 프로젝트: P-Laf/ofxtools
    def instantiate(self, **extra_attrs):
        """ 
        Create an instance of a SQLAlchemy model class corresponding to
        my OFX tag, with attributes given by my contained OFX elements.

        If an instance that matches the given primary key signature has
        already been given, return that instead of creating a new one.
        """
        self.extra_attributes = extra_attrs
        # SECID needs to instantiate as SECINFO
        if self.tag == 'SECID':
            SubClass = models.SECINFO
        else:
            SubClass = getattr(models, self.tag)
        self._preflatten()
        self.attributes = self._flatten()
        self._postflatten()
        self.attributes.update(self.extra_attributes)
        self.extra_attributes = {}

        try:
            fingerprint = SubClass._fingerprint(**self.attributes)
            instance = DBSession.query(SubClass).filter_by(**fingerprint).one()
        except NoResultFound:
            instance = SubClass(**self.attributes)
            DBSession.add(instance)

        return instance
예제 #56
0
def view_note(request):
    note_id = request.matchdict['note_id']
    note = DBSession.query(Note).filter(
        Note.id == note_id,
        Note.user_id == get_current_user(request).id
    ).first() or raise_404(text='Note not found')
    return _response_dict(request, note=note)
예제 #57
0
def addLocationDB(locName, roomNum, locOwner):

    exists = DBSession.query(Location).filter_by(owner=locOwner.id,
                                                 name=locName,
                                                 roomNumber=roomNum).all()
    if len(exists) == 0:
        tempLoc = Location(owner.id, name, roomNum)
        DBSession.add(cur)
        DBSession.commit()
        loc = DBSession.query(Location).filter_by(id=tempLoc.id).all()
        print "Made Loc"
    if len(exists) == 1:
        print "Found Loc"
        loc = exists[0]

    return loc
예제 #58
0
    def test_create_success(self):
        user_data = {'email': '*****@*****.**', 'password': '******'}
        create_object(User, **user_data)
        self.signin(**user_data)

        self.testapp.post('/pads/create/', {'name': 'pad'}, status=302)
        self.assertEquals(1, DBSession.query(Pad).count())