예제 #1
0
def sms():
    if request.method == 'POST':
        print >> sys.stderr, "Received POST request to /plivo/sms/" # this is how you write messages to yourself in the Apache /var/log/apache2/error.log
        try:
            s = SMS(timeAnswered = datetime.datetime.now(),
                                action = 'super text',
                                direction = 'incoming',
                                smsTo = request.form['To'],
                                smsType = request.form['Type'],
                                smsMessageUUID = request.form['MessageUUID'],
                                smsFrom = request.form['From'],
                                smsText = request.form['Text'],
                                )
            print >> sys.stderr, s.direction
            s.save()
            message = request.form['Text'].lower()
            #response = showtimeandloc(message)
            #Dispatcher for the various commands
            try:
                response = commands[message[0]](message)
            except:
                response = "This was not a valid command.  Try @,!,g, or h.  H for help."

            print >> sys.stderr, response
            caller = request.form['From']
            if User.query.filter(User.number == caller).first():
                if type(response) == type(dict()):
                    regisUser = User.query.filter(User.number == caller).first()
                    location = response['location']
                    print >> sys.stderr, location
                    hours = int(response['hours'])
                    print >> sys.stderr, hours
                    timeExpired = datetime.datetime.now() + datetime.timedelta(hours=hours)
                    print >> sys.stderr, timeExpired
                    condition = 'safe'
                    newStatus = Status(location=location,timeEntered=datetime.datetime.now(),timeExpired=timeExpired,condition=condition)
                    newStatus.save()
                    regisUser.status = newStatus
                    regisUser.save()
                    yourStatus = 'We know you are at ' + location + ' for ' + str(hours) + ' hours. Now we are watching you.'
                    send_txt(caller,yourStatus.upper())
                elif type(response) == type(str()):
                    send_txt(caller,response.upper(), src=MASTER_NUMBER)
                else:
                    oops = 'Sorry. Please make sure you enter your status in this format: @ location 4 numberofhours.'
                    send_txt(caller,oops.upper())
            else:
                response = "Welcome to Panoptincon, where we aren't always watching. Your default location is Speke Apartments."
                timeExpired = datetime.datetime.now() + datetime.timedelta(hours=24)
                newStatus = Status(location='Speke Apartments',timeEntered=datetime.datetime.now(),timeExpired=timeExpired,condition='safe')
                newStatus.save()
                newUser = User(number=caller, status=newStatus, createdAt=datetime.datetime.now(), name=message, isChin=False)
                newUser.save()
                send_txt(caller,response.upper(), src=MASTER_NUMBER)
        except:
            print >> sys.stderr, str(sys.exc_info()[0])
            print >> sys.stderr, str(sys.exc_info()[1])
            #entering the gateway where stuff happens!
    else:
        return "These aren't the droids you're looking for. Move along, move along."
예제 #2
0
파일: views.py 프로젝트: brousch/whoisthere
def index(request):
    all_messages = Status.objects.all()

    if request.method == "POST":
        msg_id = request.POST.get("msg_id", None)
        del_msg = request.POST.get("del_msg", None)
        new_msg = request.POST.get("new_msg", None)
        if (msg_id is not None) and (del_msg is not None):
            try:
                this_status = Status.objects.get(pk=msg_id)
                this_status.delete()
                success_msg = "Deleted message: {}".format(this_status.msg)
                messages.add_message(request, messages.SUCCESS, success_msg)
            except:
                error_msg = "Something went wrong while deleting message {}".format(msg_id)
                messages.add_message(request, messages.ERROR, error_msg)
        if new_msg is not None:
            try:
                new_status = Status()
                new_status.msg = new_msg
                new_status.save()
                success_msg = "Created new message: {}".format(new_msg)
                messages.add_message(request, messages.SUCCESS, success_msg)
            except:
                error_msg = "Something went wrong while creating: {}".format(new_msg)
                messages.add_message(request, messages.ERROR, error_msg)
    all_msgs = Status.objects.all()
    return render_to_response("status_board.html", {"all_msgs": all_msgs}, context_instance=RequestContext(request))
예제 #3
0
def status_add(request):
         data = JSONParser().parse(request)
         status_object=Status(content=data["content"],owner=request.user.profile)
         status_object.save()
         serializer=StatusSerializer(status_object)
         if serializer:
            return JSONResponse(serializer.data, status=201)
         return JSONResponse(serializer.errors, status=400)
예제 #4
0
def get_status(request=None):
    status = Status.objects.all()
    if status:
        return status[0]
    else:
        status = Status(step=1, running_status='normal')
        status.save()
    return status
예제 #5
0
파일: views.py 프로젝트: hfalk/fagkom.no
def home(request):
	# form = StatusForm()
	if request.method == "POST":
		status = Status()
		status.status_text = request.POST['status_text']
		status.save()
		print request
	status = Status.objects.all()
	return render(request, 'statusBox/home.html', {'status': status})
예제 #6
0
	def post(self, request, format=None):

		user_id = request.DATA['user_id']
		date = request.DATA['date']
		temp = request.DATA['temp']

		user = User.objects.get(user_id=user_id)
		user_status = Status(temp = temp, date = date, user = user)
		user_status.save()

		return HttpResponse(content=user_status, status=status.HTTP_201_CREATED)
예제 #7
0
파일: tests.py 프로젝트: McPolemic/BTMS
 def test_status_create(self):
     s = Status(co_num = 14456,
                description = 'Sample Status',
                role = 'Developer')
     s.save()
     t = Task(user = "******",
              date = date.today(),
              status = s,
              total_minutes = 13)
     t.save()
     status = str(s)
     task = str(t)
예제 #8
0
def set_status(request=None, step=0, running_status=''):
    status = Status.objects.all()
    if status:
        status = status[0]
        if step:
            status.step = step
        if running_status:
            status.running_status = running_status
        status.save()
    else:
        status = Status(step=step, running_status=running_status)
        status.save()
    return HttpResponseRedirect('/')
예제 #9
0
파일: tests.py 프로젝트: McPolemic/BTMS
 def setUp(self):
     s = Status(co_num = 14456,
                description = 'Sample Status',
                role = 'Developer')
     s.save()
     t = Task(user = "******",
              date = date(2012, 3, 18),
              status = s,
              total_minutes = 90)
     t.save()
     t2 = Task(user = "******",
               date = date(2012, 3, 19),
               status = s,
               total_minutes = 120)
     t2.save()
예제 #10
0
def store_single_status(status_dict, rewteet):
    """
    json status dict -> database
    returns Status
    """
    try:
        s = Status.objects.get(id = status_dict.id)
    except Status.DoesNotExist:
        s = Status()
        s.id = status_dict.id
        s.set_content(status_dict)
        s.retweet = rewteet
        s.save()
        
    return s
예제 #11
0
def status_check(context):
    logger.info("Checking status of LHC.")

    last_status = Status.select().order_by(Status.date.desc()).first()

    response = requests.get("https://lhc.net.br/spacenet.json")
    spacenet = response.json()
    state = spacenet.get("state", {})

    is_open = state.get("open")
    last_change_timestamp = state.get("lastchange")
    last_change = datetime.fromtimestamp(last_change_timestamp)

    current_status = Status(
        is_open=is_open,
        last_change=last_change,
        date=datetime.now(),
    )

    status = "OPEN" if is_open else "CLOSED"
    logger.info(f"LHC is {status} since {current_status.last_change}.")

    status_changed = (last_status is None
                      or current_status.is_open != last_status.is_open)
    if status_changed:
        response = requests.get("https://lhc.net.br/spacenet.json?whois")
        whois = response.json()

        n_unknown_macs = whois.get("n_unknown_macs", 0)
        current_status.n_unknown_macs = n_unknown_macs

        if is_open:
            who = whois.get("who", [])
            current_status.who = ", ".join(who)

            notify_msg = f"O LHC foi aberto \U0001F513 por {current_status.who} às {current_status.last_change}."
        else:
            notify_msg = (
                f"O LHC está fechado \U0001F512 desde {current_status.last_change}."
            )

        logger.info(
            f"LHC status changed. Sending notification to LHC channel.")
        # context.bot.send_message(chat_id="@lhc_campinas", text=notify_msg)

    current_status.save()
예제 #12
0
def create_statuses():
    if not Status.query.get(Status.PENDING_STATUS_ID):
        status = Status(id=Status.PENDING_STATUS_ID, name="Pending")
        status.save()
    if not Status.query.get(Status.REJECTED_STATUS_ID):
        status = Status(id=Status.REJECTED_STATUS_ID, name="Rejected")
        status.save()
    if not Status.query.get(Status.PROCESSING_STATUS_ID):
        status = Status(id=Status.PROCESSING_STATUS_ID, name="Processing")
        status.save()
    if not Status.query.get(Status.READY_STATUS_ID):
        status = Status(id=Status.READY_STATUS_ID, name="Ready")
        status.save()
    if not Status.query.get(5):
        status = Status(id=5, name="Complete")
        status.save()
    DBManager.commitSession()
    return
예제 #13
0
def save_status(request):
    id = request.POST['id']
    report = Report.objects.get(id=id)
    message = request.POST['message']
    note = request.POST['note']
    user = request.user
    new_status = Status()
    new_status.tech = user
    new_status.report = report
    new_status.message = message
    new_status.note = note
    new_status.save()

    if message == 'p':
        report.completed = True
        report.save()

    return HttpResponseRedirect('/reports/' + id)
예제 #14
0
def save_status(request):
	id = request.POST['id']
	report = Report.objects.get(id=id)
	message = request.POST['message']
	note = request.POST['note']
	user = request.user
	new_status = Status()
	new_status.tech = user
	new_status.report = report
	new_status.message = message
	new_status.note = note
	new_status.save()

	if message == 'p':
		report.completed = True
		report.save()

	return HttpResponseRedirect('/reports/' + id)
예제 #15
0
파일: views.py 프로젝트: hfercc/wboard
	def post(request, status_id):
		form = forms.StatusForm(request.POST)
		if form.is_valid():
			data = form.cleaned_data
			if status_id:
				status = utils.get_object_by_id(Status, status_id)
				status.body_text = data['body_text']
				status.title = data['title']
				status.save()
			else:
				status = Status(author    = request.user,
												title     = data['title'],
												body_text = data['body_text']
										)
				status.save()
				send_notification_to_admin('status', status = status, category = 'POSTED')
		else:
			raise exceptions.DataFieldMissed
				
		return {'object': status}
예제 #16
0
def cpanel_submit(request):
    # The user adding the request
    user = request.user

    name = request.POST['name']
    phone = request.POST['phone']
    email = request.POST['email']
    type = request.POST['device']
    os = request.POST['os']
    problem = request.POST['problem']
    description = request.POST['description']
    deviceObj = Device()
    report = Report()
    usersWithSameEmail = User.objects.filter(email=email)
    reportUser = User()

    userFound = False
    for u in usersWithSameEmail:
        # If user exists, don't create a new one
        if u.email == email:
            reportUser = u
            userFound = True

    if not userFound:
        reportUser.email = email
        reportUser.username = name
        reportUser.password = '******'
        reportUser.save()

    # Get the devices the user has
    usersDevices = Device.objects.filter(owner=reportUser)

    deviceFound = False
    for d in usersDevices:
        # If the device exists recognize it, and use it
        if d.os == os and d.type == type:
            deviceObj = d
            deviceFound = True

    if not deviceFound:
        # Generate device object
        deviceObj.owner = reportUser
        deviceObj.os = os
        deviceObj.type = type
        deviceObj.save()

    # Generate Report
    report.owner = reportUser
    report.device = deviceObj
    report.description = description
    report.problem = problem
    report.completed = False
    report.save()

    # Generate initial status
    status = Status()
    status.report = report
    # Checked in message
    status.message = 'c'
    status.tech = user
    status.save()

    return cpanel(request, True)
예제 #17
0
def cpanel_submit(request):
	# The user adding the request
	user = request.user

	name = request.POST['name']
	phone = request.POST['phone']
	email = request.POST['email']
	type = request.POST['device']
	os = request.POST['os']
	problem = request.POST['problem']
	description = request.POST['description']
	deviceObj = Device()
	report = Report()
	usersWithSameEmail = User.objects.filter(email=email)
	reportUser = User()

	userFound = False
	for u in usersWithSameEmail:
		# If user exists, don't create a new one
		if u.email == email:
			reportUser = u
			userFound = True

	if not userFound:
		reportUser.email = email
		reportUser.username = name
		reportUser.password = '******'
		reportUser.save()

	# Get the devices the user has
	usersDevices = Device.objects.filter(owner=reportUser)

	deviceFound = False
	for d in usersDevices:
		# If the device exists recognize it, and use it
		if d.os == os and d.type == type:
			deviceObj = d
			deviceFound = True

	if not deviceFound:
		# Generate device object
		deviceObj.owner = reportUser
		deviceObj.os = os
		deviceObj.type = type
		deviceObj.save()

	# Generate Report
	report.owner = reportUser
	report.device = deviceObj
	report.description = description
	report.problem = problem
	report.completed = False
	report.save()

	# Generate initial status
	status = Status()
	status.report = report
	# Checked in message
	status.message = 'c'
	status.tech = user
	status.save()

	return cpanel(request, True)
예제 #18
0
class Patero(GObject.GObject):
    __gsignals__ = {
        'finished': (GObject.SIGNAL_RUN_FIRST, None, [GObject.TYPE_PYOBJECT]),
    }

    def __init__(self):
        GObject.GObject.__init__(self)

        queue = self.queue = JobCollection()
        queue.fetch()

        self.tasks = deque()
        self.status = Status()
        self.running = False

        GLib.timeout_add(500, self.transcode)
        GLib.timeout_add(500, self.send_status)

    def send_status(self, status=None):
        self.status.save({'_id': 1, 'running': True})
        return True

    def transcode(self):
        if self.running:
            return True

        job = self.queue.findWhere({'stage': 'queued'})

        if not job:
            return True

        job['stage'] = 'about-to-process'
        job.save()

        def progress_cb(task, progress):
            job = task.job
            ##logging.debug('Progress: %s', progress)
            job['progress'] = progress
            job.save()

        def start_cb(task, src, dst):
            job = task.job
            logging.debug('Start: %s', src)
            job['stage'] = 'processing'
            job['progress'] = 0
            job.save()

        def error_cb(task, msg):
            job = task.job
            # XXX: get rid of all files here?
            logging.error('Error: %s', msg)
            job['stage'] = 'processing-error'
            if job['tasks']:
                job['tasks'][-1]['status'] = 'failed'
                job['tasks'][-1]['message'] = 'Error: ' + msg
            job.save()
            self.tasks.clear()
            self.running = False

        def status_cb(task, msg):
            job = task.job
            logging.debug('Stage: %s', msg)
            if job['tasks']:
                job['tasks'][-1]['status'] = 'done'
            job['tasks'].append({
                'name': msg,
                'status': 'processing',
                'message': ''
            })
            job.save()

        def start(*args):
            self.running = True
            task = self.tasks.popleft()
            job = task.job
            if job['tasks']:
                job['tasks'][-1]['status'] = 'done'
            task.start()

        def success_cb(task, dst):
            job = task.job

            if job['tasks']:
                job['tasks'][-1]['status'] = 'done'
                job.save()

            if not self.tasks:
                logging.debug('Ok: %s', dst)
                job['stage'] = 'processing-done'
                job['progress'] = 0
                job.save()

                self.emit('finished', job)
                self.running = False
                return
            else:
                start()

        def add_task(task):
            self.tasks.append(task)
            task.connect('progress', progress_cb)
            task.connect('success', success_cb)
            task.connect('status', status_cb)
            task.connect('start', start_cb)
            task.connect('error', error_cb)

        filename = job['filename']
        src = os.path.join(common.workspace_dir, filename)
        dst = os.path.splitext(filename)[0] + '.m4v'
        dst = os.path.join(common.workspace_dir, dst)

        def on_transcode_finish(task, src, dst):
            task.job['output']['transcoded'] = os.path.join(
                common.output_dir, os.path.basename(dst))
            task.job['output']['stat'] = {}
            # XXX: this may end up with a different inode number after moving to processed dir.
            try:
                task.job['output']['stat'] = stat_to_dict(os.stat(dst))
            except OSError:
                pass
            task.job.save()

        _type = getFileType(src)
        if _type['type'] == 'video':
            task = Transcode(job, src, dst)
            task.connect('finished', on_transcode_finish)
            add_task(task)

            # yeah, looks weird but we want the md5 of the already transcoded file.
            task = MD5(job, src=dst)
            add_task(task)

            # even worse but we want the filmstrip of the already transcoded file.
            src = dst
            task = Filmstrip(job, src)
            add_task(task)

            task = FFmpegInfo(job, src)
            add_task(task)

            task = Thumbnail(job, src)
            add_task(task)

        else:
            task = MD5(job, src)
            add_task(task)

            task = Filmstrip(job, src)
            add_task(task)

            task = FFmpegInfo(job, src)
            add_task(task)

            task = Thumbnail(job, src)
            add_task(task)

        start()

        return True

    def queue_file(self, filepath, do_copy=True):
        try:
            stat = stat_to_dict(os.stat(filepath))
        except OSError:
            return

        filename = os.path.basename(filepath)
        _type = getFileType(filepath)

        if not _type:
            logging.debug('File not recognized: %s', filepath)
            return

        # not reimplementing as mongo is quite good at this.
        if self.queue._col.find({
                'input.stat.mtime': stat['mtime'],
                'path': filepath
        }).count():
            return

        job = Job({
            'input': {
                'stat': stat,
                'path': filepath,
            },
            'output': {
                'checksum': '',
                'files': [],
                'metadata': {
                    'type': _type['type'],
                },
            },
            'filename': filename,
            'stage': '',
            'progress': '0',
            'tasks': [],  # list of: {name:'', status:'', message:''}
        })

        job.save()

        if do_copy:
            try:
                copy_or_link(filepath,
                             os.path.join(common.workspace_dir, filename))
                job['stage'] = 'queued'
                os.unlink(filepath)
            except:
                e = sys.exc_info()[1]
                job['stage'] = 'processing-error'
                job['tasks'].append({
                    'name': 'Moving files',
                    'status': 'failed',
                    'message': 'Error: ' + unicode(e),
                })
            finally:
                job.save()
        else:
            job['stage'] = 'queued'
            job.save()

        self.queue.add(job)
예제 #19
0
파일: tests.py 프로젝트: McPolemic/BTMS
 def test_status_create(self):
     s = Status(co_num = 14456,
                description = 'Sample Status',
                role = 'Developer')
     s.save()
     status = str(s)