示例#1
0
def summary():
    car_name = ''

    car = Car.all().filter('user', users.GetCurrentUser()).filter('active',
                                                                  1).get()
    if (car):
        car_name = car.name + u': '
        fuels = Fuel.all().filter('user', users.GetCurrentUser()).filter(
            'car', car.pid).order('-date').order('-counter')
    else:
        fuels = Fuel.all().filter(
            'user', users.GetCurrentUser()).order('-date').order('-counter')
    counter_max = 0
    counter_min = 0
    total_volume = 0

    for f in fuels:
        counter_min = f.counter

        if (counter_max == 0):
            counter_max = f.counter
        else:
            total_volume += f.volume

    km = counter_max - counter_min

    if (total_volume == 0) or (km == 0):
        return car_name + u'Не удалось вычислить средний расход'

    return car_name + u'<span style="color:yellow">' + str(
        round((total_volume / km) * 100, 2)) + u'</span> л на 100 км'
示例#2
0
    def get(self):
        if not access.can_see_most_pages(users.GetCurrentUser(),
                                         users.IsCurrentUserAdmin()):
            raise Forbidden
        img = images.Image.get_by_key(self.request.get("key"))

        data = {
            "meta":
            img.get_info(),
            "key":
            img.get_key(),
            "versions": [
                ("thumbnail", img.get_url(75, True), img.get_code(75, True)),
                ("small", img.get_url(200, False), img.get_code(200, False)),
                ("medium", img.get_url(500, False), img.get_code(500, False)),
                ("original", img.get_url(), img.get_code()),
            ]
        }

        page_title = "Image:" + img.get_key()
        data["pages"] = model.WikiContent.find_backlinks_for(page_title)

        html = view.view_image(data,
                               user=users.GetCurrentUser(),
                               is_admin=users.IsCurrentUserAdmin())
        self.reply(html, 'text/html')
示例#3
0
def saldo_recount():
    saldos = Saldo.all().filter('user', users.GetCurrentUser())
    if saldos:
        db.delete(saldos)
    trips = Trip.all().filter('user', users.GetCurrentUser())
    for t in trips:
        saldo_update(t.driver, t.passenger, t.oper, t.summa())
示例#4
0
def init():
    apps = Apps.all().filter('user', users.GetCurrentUser())
    if apps:
        db.delete(apps)

    s1 = trips.summary()
    s2 = fuels.summary()
    s3 = communal.summary()
    s4 = garage.summary(1)

    Apps(pid=1,
         user=users.GetCurrentUser(),
         name=u'Проезд',
         page='/trip',
         title='',
         summary=s1).put()
    Apps(pid=2,
         user=users.GetCurrentUser(),
         name=u'Заправка',
         page='/fuel',
         title='',
         summary=s2).put()
    Apps(pid=3,
         user=users.GetCurrentUser(),
         name=u'Квартира',
         page='/communal',
         title='',
         summary=s3).put()
    Apps(pid=4,
         user=users.GetCurrentUser(),
         name=u'Гараж',
         page='/garage',
         title='',
         summary=s4).put()
示例#5
0
def runTest():
    from google.appengine.api import users

    logging.debug("Entering datastore runTest() method")

    currentList = MovieList.getMovieList(users.GetCurrentUser())
    currentList.addMovie(Movie(id="tt0000001", title="Saw 2"))
    currentList.addMovie(Movie(id="tt0000002", title="Patriot"))

    for movie in currentList.getMovies():
        logging.debug("Found a movie: " + movie.title)

    anotherList = MovieList.getMovieList(users.GetCurrentUser())
    anotherList.addMovie(Movie(id="tt0000003", title="Die Hard"))
    anotherList.addMovie(Movie(id="tt0000003", title="Die Hard"))
    anotherList.addMovie(Movie(id="tt0000004", title="Cliffhanger"))

    for movie in anotherList.getMovies():
        logging.debug("Found a movie: " + movie.title)

    thirdList = MovieList.getMovieList(users.GetCurrentUser())

    for movie in thirdList.getMovies():
        logging.debug("Found a movie: " + movie.title)

    logging.debug("Exiting datastore runTest() method")
示例#6
0
def get(i_pid):
    gar = Garage.all().filter('user',
                              users.GetCurrentUser()).filter('pid',
                                                             i_pid).get()
    if gar:
        return gar
    else:
        # Инициализация полей новой записи
        last_course = 0
        last_kontr = ''
        last = Garage.all().filter(
            'user', users.GetCurrentUser()).order('-date').order('-pid').get()
        if last:
            last_course = last.course
            last_kontr = last.kontr

        return Garage(pid    = 0, \
                      user   = users.GetCurrentUser(), \
                      date   = datetime.datetime.now(), \
                      kol    = 1., \
                      price  = 0, \
                      course = last_course, \
                      usd    = 0, \
                      kontr  = last_kontr, \
                      text   = '')
示例#7
0
 def get(self):
     if not access.can_see_most_pages(users.GetCurrentUser(),
                                      users.IsCurrentUserAdmin()):
         raise Forbidden
     lst = images.Image.find_all()
     html = view.view_image_list(lst, users.GetCurrentUser(),
                                 users.IsCurrentUserAdmin())
     self.reply(html, "text/html")
示例#8
0
  def check_param(self, a_pid, a_act, a_name, a_dative, a_me):

    if (a_act != 'insert') and (a_act != 'update') and (a_act != 'delete') and (a_act != 'cancel'):
      persons.status = 'Недопустимое значение параметра action: "' + a_act + '"'
      return False
    
    self.i_act = a_act

    if (self.i_act == 'update') or (self.i_act == 'delete'):
      try:
        self.i_pid = int(a_pid)
      except ValueError:
        persons.status = 'Прикладная ошибка: не определен идентификатор записи'
        self.i_act = 'cancel'
        return False
    
    if (self.i_act == 'update') or (self.i_act == 'insert'):
      if (a_name != ''):
        persons.last_name = a_name

      if (a_dative != ''):
        persons.last_dative = a_dative

      if (a_name != ''):
        self.i_name = a_name
        p = persons.Person.all().filter('user', users.GetCurrentUser()).filter('name', a_name).get()
        if p:
          persons.status = 'Такое имя уже есть'
          self.i_act = 'cancel'
          return False
      else:
        persons.status = 'Не задано имя'
        self.i_act = 'cancel'
        return False
        
      if (a_dative != ''):
        self.i_dative = a_dative
        p = persons.Person.all().filter('user', users.GetCurrentUser()).filter('dative', a_dative).get()
        if p:
          persons.status = 'Такое имя в дательном падеже уже есть'
          self.i_act = 'cancel'
          return False
      else:
        persons.status = 'Не задано имя в дательном падеже'
        self.i_act = 'cancel'
        return False

      self.i_me = 0
      if (a_me == 'true'):
        self.i_me = 1
        me_code = persons.me_code()
        if (me_code != 0):
          persons.status = 'Уже есть персона, помеченная признаком "Я"'
          self.i_act = 'cancel'
          return False

    return True
示例#9
0
def botverse_submit(request):
	form = EntityLinksForm(request.POST)
	if form.is_valid():
		link = create_entity_model(form)
		if users.GetCurrentUser():
			link.fullName = users.GetCurrentUser()
		db.put(link)
	# return home
	return botverse_confirm(request)
示例#10
0
    def get(self):

        user = users.get_current_user()
        
        if user:
            print("encontrado",users.GetCurrentUser())
            self.render_template('index.html', {})
        else:
            print("no encontrado",users.GetCurrentUser())
            self.redirect(users.create_login_url(self.request.uri))
示例#11
0
def sign(request):
    form = GuestbookForm(request.POST)
    if form.is_valid():
        post = Post(message=form.clean_data['message'])
        if users.GetCurrentUser():
            post.author = users.GetCurrentUser()

        post.put()

    return HttpResponseRedirect('/')
示例#12
0
def insert(i_name, i_dative, i_me):
    maxnum = 1
    last = Person.all().filter('user',
                               users.GetCurrentUser()).order('-pid').get()
    if last:
        maxnum = last.pid + 1
    pers = Person(pid    = maxnum, \
                  user   = users.GetCurrentUser(), \
                  name   = i_name, \
                  dative = i_dative, \
                  me     = i_me)
    if pers:
        pers.put()
示例#13
0
def all():
    car = Car.all().filter('user', users.GetCurrentUser()).filter('active',
                                                                  1).get()
    if car:
        # update_old_fuel(car.pid)
        all = Fuel.gql(
            'WHERE user = :1 AND car = :2 ORDER BY date DESC, counter DESC LIMIT 20',
            users.GetCurrentUser(), car.pid)
    else:
        all = Fuel.gql(
            'WHERE user = :1 ORDER BY date DESC, counter DESC LIMIT 20',
            users.GetCurrentUser())
    return all
示例#14
0
    def post(self):
        result = {'result': True, 'error': ''}

        try:
            # input marshalling
            projectId = int(self.request.get('projectId'))
            title = self.request.get('title')
            description = self.request.get('description')
            tagJson = unicode(self.request.get('tags'))

            tags = simplejson.loads(tagJson)  # should be an array!
            user = users.GetCurrentUser()

            # add the new tags in case we don't have them already
            Tags.InsertIfNotHere(user, tags)

            # grab the project and the sortOrder
            project = Project.get_by_id(projectId)
            sortOrder = Task.NextSortOrderForProject(project)

            # create
            t = Task(parent=project,
                     tags=tags,
                     description=description,
                     title=title,
                     sortOrder=sortOrder,
                     user=user)
            t.put()

            result['data'] = t.toDict()

        except Exception, e:
            result['result'] = False
            result['error'] = 'Error: %s' % e
示例#15
0
    def post(self):
        result = {'result': True, 'error': ''}

        try:
            # input marshalling
            taskId = int(self.request.get('taskId'))
            projectId = int(self.request.get('projectId'))
            title = self.request.get('title')
            description = self.request.get('description')
            tagJson = unicode(self.request.get('tags'))

            tags = simplejson.loads(tagJson)  # should be an array!

            # add the new tags in case we don't have them already
            Tags.InsertIfNotHere(users.GetCurrentUser(), tags)

            # grab the task
            task = Task.get_by_id(taskId, Key.from_path('Project', projectId))
            task.title = title
            task.description = description
            task.tags = tags
            task.put()

            result['data'] = task.toDict()

        except Exception, e:
            result['result'] = False
            result['error'] = 'Error: %s' % e
示例#16
0
 def get(self):    
   user = users.GetCurrentUser()
   if (not user):
     self.respondWithTemplate('please-sign-in.html', {'action': 'view your Radars'})
   else:
     radars = db.GqlQuery("select * from Radar where user = :1 order by number_intvalue desc", user).fetch(1000)
     self.respondWithTemplate('radar-list.html', {"radars": radars})
示例#17
0
    def post(self):
        event_status = 'not_created'
        event_link = None

        # Get the current user
        self.current_user = users.GetCurrentUser()

        # Manage our Authentication for the user
        self.ManageAuth()
        self.LookupToken()

        form = cgi.FieldStorage()

        attendee_list = []
        if form.has_key(
                'event_attendees') and form['event_attendees'] is not None:
            if isinstance(form['event_attendees'], list):
                for attendee in form['event_attendees']:
                    attendee_list.append(attendee.value)
            else:
                attendee_list.append(form['event_attendees'].value)

        event = self.InsertEvent(form['event_title'].value,
                                 form['location'].value,
                                 form['event_description'].value,
                                 form['datepicker'].value, attendee_list)
        if event is not None:
            alt_link = event.GetAlternateLink().href
            self_link = event.GetSelfLink().href
            xml = self.FormatXML("%s" % event.ToString())
            event_status = 'created'

        ed = EventDetails()
        if users.get_current_user():
            ed.author = users.get_current_user()
        ed.eventname = form['event_title'].value
        ed.description = form['event_description'].value
        ed.date = form['datepicker'].value
        ed.location = form['location'].value
        ed.location_cord1 = form['lat'].value
        ed.location_cord2 = form['lng'].value
        ed.put()

        template_values = {
            'event_status': event_status,
            'alt_link': alt_link,
            'self_link': self_link,
            'xml': xml,
            'event_title': form['event_title'],
            'event_description': form['event_description'],
            'attendee_list': attendee_list,
            'app_name': APP_NAME,
            'css_link': CSS_LINK,
        }

        self.redirect('/ViewCal')
        template_file = 'process_event.html'
        path = os.path.join(os.path.dirname(__file__), 'main_templates',
                            template_file)
        self.response.out.write(template.render(path, template_values))
    def process_request(self, request):
        # pylint: disable-msg=R0201
        """Method defined by Django to handle processing requests.

    Args:
      request: the http request to process

    Returns:
      None
    """
        user = users.GetCurrentUser()
        request.user = user
        request.profile = None

        if user:
            request.user_is_admin = users.is_current_user_admin()
            profile = models.UserProfile.load(user.email())
            if not profile:
                if request.user_is_admin:
                    profile = models.UserProfile(email=user.email(),
                                                 is_superuser=True)
                    profile.put()
                    logging.info('Created profile for admin %s' %
                                 profile.email)

            request.profile = profile

        return None
示例#19
0
 def generate(self, template_name, template_values={}):
     if users.get_current_user():
         url = util.xhtmlize_url(users.create_logout_url(self.request.uri))
         url_linktext = 'Logout'
     else:
         url = util.xhtmlize_url(users.create_login_url(self.request.uri))
         url_linktext = 'Login'
     ym = datetime.datetime.now().strftime("%Y %m %d").split()
     cal = calendar.HTMLCalendar().formatmonth(int(ym[0]), int(ym[1]))
     pattern = '<td class="\w\w\w">' + ym[2] + '</td>'
     today = '<td id="today">' + ym[2] + '</td>'
     cal = re.sub(pattern, today, cal)
     values = {
         'user': users.GetCurrentUser(),
         'user_is_admin': users.is_current_user_admin(),
         'user_nickname': util.getUserNickname(users.get_current_user()),
         'url': url,
         'url_linktext': url_linktext,
         'categories': util.getCategoryLists(),
         'calendar': cal,
         'tags': util.getTagLists(),
         'archives': util.getArchiveLists(),
         'counter': util.getCounter(),
     }
     values.update(template_values)
     path = os.path.join(os.path.dirname(__file__), template_name)
     self.response.out.write(template.render(path, values))
示例#20
0
文件: web.py 项目: JefferyQ/openradar
 def get(self):
     user = users.GetCurrentUser()
     # we keep request-by-id in case there are problems with the radar number (accidental duplicates, for example)
     id = self.request.get("id")
     if id:
         radar = Radar.get_by_id(int(id))
         if (not radar):
             self.respondWithText('Invalid Radar id')
         else:
             self.respondWithTemplate(
                 'radar-view.html', {
                     "mine": (user == radar.user),
                     "radar": radar,
                     "radars": radar.children(),
                     "comments": radar.comments(),
                     "user": user
                 })
         return
     number = self.request.get("number")
     if number:
         self.redirect("/" + number)
         return
     else:
         self.respondWithText(
             'Please specify a Radar by number or openradar id')
	def post( self ):
		result = {
			'result': True,
			'error': ''
		}
		
		try:
			# input marshalling
			name = self.request.get( 'projectName' )
			user = users.GetCurrentUser()
		
			# first create the Tags object if we dont have one for the user already
			Tags.CreateTagsForUserIfNotCreated( user )
			
			# get our sortOrder
			sortOrder = Project.NextSortOrder()
		
			# put the project then return it as json
			p = Project( user = user, name = name, sortOrder = sortOrder )
			p.put()
			
			# add this to the return package
			result['data'] = p.toDict()
			
		except Exception, e:
			result['result'] = False
			result['error'] = 'Error: %s' % e
	def get( self ):
		result = {
			'projects': None,
			'tags': None,
			'totalTasks': 0,
			'totalImportant': 0
		}
		
		user = users.GetCurrentUser()

		# grab all the projects for the current user
		projects = Project.gql( 'where user = :1 order by sortOrder', user )
		result['projects'] = [p.toDict() for p in projects]

		# grab all the available tags
		tags = Tags.gql( 'where user = :1', user ).get()
		
		if tags == None:
			result['tags'] = []
		else:
			result['tags'] = tags.tags
		
		# count the tasks and important tasks
		result['totalTasks'] = Task.CountAllTasks()
		result['totalImportant'] = Task.CountAllImportantTasks()
		
		#self.response.headers['Content-Type'] = 'application/json'
		self.response.out.write( simplejson.dumps( result ) )
	def post( self ):
		result = {
			'result': True,
			'error': ''
		}

		try:
			# input marshalling
			orderJson = unicode( self.request.get( 'order' ) )
			orderList = simplejson.loads( orderJson ) # should be an array of dicts [{id: 3, sortOrder:3}]!
			
			# we need a list of dictionaries or we are out of here
			if type( orderList ).__name__ != 'list' or type( orderList[0] ).__name__ != 'dict':
				raise Exception( 'order must be a list of dictionaries!' )

			totalProjects = Project.gql( 'where user = :1', users.GetCurrentUser() ).count( 1000 )

			# we need the list to have the same number eles as we have tasks
			if len( orderList ) != totalProjects:
				raise Exception( 'order must have the same number of elements as there are projects!' )

			self.reorder( orderList )
			#db.run_in_transaction( self.reorder, orderList )

		except Exception, e:
			result['result'] = False
			result['error'] = 'Error: %s' % e
示例#24
0
    def _RemoteSend(self, request, response, method):
        """Sends a request remotely to the datstore server. """
        tag = self.__app_id
        user = users.GetCurrentUser()
        if user != None:
            tag += ":" + user.email()
            tag += ":" + user.nickname()
            tag += ":" + user.auth_domain()
        api_request = remote_api_pb.Request()
        api_request.set_method(method)
        api_request.set_service_name("datastore_v3")
        api_request.set_request(request.Encode())

        api_response = remote_api_pb.Response()
        api_response = api_request.sendCommand(self.__datastore_location, tag,
                                               api_response, 1,
                                               self.__is_encrypted,
                                               KEY_LOCATION, CERT_LOCATION)

        if not api_response or not api_response.has_response():
            raise datastore_errors.InternalError(
                'No response from db server on %s requests.' % method)

        if api_response.has_application_error():
            error_pb = api_response.application_error()
            logging.error(error_pb.detail())
            raise apiproxy_errors.ApplicationError(error_pb.code(),
                                                   error_pb.detail())

        if api_response.has_exception():
            raise api_response.exception()

        response.ParseFromString(api_response.response())
示例#25
0
    def decorate(self, *args, **kwargs):
        """Check if user is authorized as admin."""
        current_user = users.GetCurrentUser()
        datastore.CURRENT_DOMAIN = current_user.email().split('@')[1]
        logging.info('set CURRENT_DOMAIN to %s', datastore.CURRENT_DOMAIN)

        try:
            if not datastore.HOSTED and users.is_current_user_admin():
                logging.debug(
                    'User is an App Engine app admin, so allowing access.')
                handler_method(self, *args, **kwargs)
            elif google_directory_service.IsInAdminGroup(current_user):
                logging.debug(
                    'User is in configured admin group, so allowing access.')
                handler_method(self, *args, **kwargs)
            else:
                logging.warning('%s not authorized for access.',
                                current_user.email())
                self.abort(403)
        except google_directory_service.SetupNeeded:
            logging.warning('credentials not set up, so configuring')
            if datastore.HOSTED:
                self.redirect('/setup/')
            else:
                logging.warning(
                    'Only App Engine admins are allowed access. To allow another group '
                    ', configure a service account in config.py')
                self.abort(403)
示例#26
0
    def testGetOutOfBoundsVersionOfConfigurationSettings(self):
        config_data = {
            'steps_for_masters_rules': _MOCK_STEPS_FOR_MASTERS_RULES,
            'builders_to_trybots': _MOCK_BUILDERS_TO_TRYBOTS,
            'try_job_settings': _MOCK_TRY_JOB_SETTINGS,
            'swarming_settings': _MOCK_SWARMING_SETTINGS
        }
        self.mock_current_user(user_email='*****@*****.**', is_admin=True)

        wf_config.FinditConfig.Get().Update(users.GetCurrentUser(), True,
                                            **config_data)

        self.assertRaisesRegexp(
            webtest.app.AppError,
            re.compile('The requested version is invalid or not found.',
                       re.MULTILINE | re.DOTALL),
            self.test_app.get,
            '/config',
            params={
                'version': 0,
                'format': 'json'
            })
        self.assertRaisesRegexp(
            webtest.app.AppError,
            re.compile('The requested version is invalid or not found.',
                       re.MULTILINE | re.DOTALL),
            self.test_app.get,
            '/config',
            params={
                'version': 2,
                'format': 'json'
            })
示例#27
0
文件: web.py 项目: JefferyQ/openradar
 def post(self):
     user = users.GetCurrentUser()
     if (not user):
         self.respondWithTemplate('please-sign-in.html',
                                  {'action': 'edit Radars'})
     else:
         id = self.request.get("id")
         radar = Radar.get_by_id(int(id))
         if not radar:
             self.respondWithText('Invalid Radar id')
         elif radar.user != user:
             self.respondWithText('Only the owner of a Radar can edit it')
         else:
             radar.title = self.request.get("title")
             radar.number = self.request.get("number")
             radar.number_intvalue = int(self.request.get("number"))
             radar.status = self.request.get("status")
             radar.description = self.request.get("description")
             radar.resolved = self.request.get("resolved")
             radar.product = self.request.get("product")
             radar.classification = self.request.get("classification")
             radar.reproducible = self.request.get("reproducible")
             radar.product_version = self.request.get("product_version")
             radar.originated = self.request.get("originated")
             radar.modified = datetime.datetime.now()
             radar.put()
             memcache.flush_all()
             self.redirect("/myradars")
示例#28
0
 def get(self):    
   user = users.GetCurrentUser()
   if not user:
       page = memcache.get(self.request.path)
       if page:
           self.respondWithText(page)
           return
   m = RADAR_PATTERN.match(self.request.path)
   if m:
     bare = self.request.get("bare")
     number = m.group(1) 
     radars = Radar.gql("WHERE number = :1", number).fetch(1)
     if len(radars) != 1:
       self.respondWithTemplate('radar-missing.html', {"number":number})
       return
     radar = radars[0]
     if (not radar):
       self.respondWithTemplate('radar-missing.html', {"number":number})
     else:	
       path = os.path.join(os.path.dirname(__file__), os.path.join('templates', 'radar-view.html'))        
       page = template.render(path, {"mine":(user == radar.user), "radar":radar, "radars":radar.children(), "comments": radar.comments(), "bare":bare})
       if not user:	    
           memcache.add(self.request.path, page, 3600) # one hour, but we also invalidate on edits and adds
       self.respondWithText(page)
     return
示例#29
0
def curcarname():
    p = Car.all().filter('user', users.GetCurrentUser()).filter('active',
                                                                1).get()
    if p:
        return p.name
    else:
        return ''
示例#30
0
文件: web.py 项目: JefferyQ/openradar
    def post(self):
        user = users.GetCurrentUser()
        if (not user):
            self.error(401)
            self.respondWithText("You must login to remove a comment")
            return

        commentKey = self.request.get("key")
        comment = Comment.get(commentKey)
        if (not comment):
            self.error(400)
            self.respondWithText(
                "Tried to remove a post that doesn't exist? Couldn't find post to remove."
            )
            return

        if (not comment.editable_by_current_user()):
            self.error(401)
            self.respondWithText(
                "You must be the comment's owner, or an admin, to remove this comment."
            )
            return

        if (comment.deleteOrBlank() == "blanked"):
            self.respondWithText(comment.html_body())
        else:
            self.respondWithText("REMOVED")