Facebook ads-api: what are the adgroup_status field's values? - facebook

We'd like to get the complete list of values that the adgroup_status field can take. According to the FB docco it cannot assume the value CAMPAIGN_GROUP_PAUSED but we get that via the API.
Can someone supply the actual list of values this field may assume? In our code I see 14 values but it's likely incorrect/outdated:
ACTIVE
DELETED
PENDING_REVIEW
DISAPPROVED
PENDING_BILLING_INFO
CAMPAIGN_PAUSED
ADGROUP_PAUSED
NA
CAMPAIGN_GROUP_PAUSED
PAUSED
CREDIT_CARD_NEEDED
PREAPPROVED
DISABLED
ARCHIVED

these are the adgroup_status which we get we haven't seen any other apart from these. 'ARCHIVED' is to be added in the next migration changes. (refer here)
'ACTIVE'
'PAUSED'
'CAMPAIGN_PAUSED'
'CAMPAIGN_GROUP_PAUSED'
'DELETED'
'PENDING_REVIEW'
'PREAPPROVED'
'DISAPPROVED'
'PENDING_BILLING_INFO'
'ADGROUP_PAUSED'
'CREDIT_CARD_NEEDED'

Related

How can I submit unsubmitted Moodle attempt via SQL

Hello I ma trying to submit unsubmitted quiz attempts so I can grade them. So far I have set the timefinish column in mdl_quiz_attempts which changes the attempt status to "Not yet graded", then setting fraction to 0 from NULL and state to "gradewrong" from "complete" in mdl_question_attempt_steps to simulate submission but this seems to break the site. What am I missing?
You're going to have to trace through the code for the process_finish() function in mod/quiz/attemptlib.php ( https://github.com/moodle/moodle/blob/master/mod/quiz/attemptlib.php#L2171 ) and figure out how that all works.
This is a complex process and will require a lot of DB queries / updates in order to achieve it manually.
I would strongly recommend that you write a PHP script to do this, instead of trying to handle it manually (that way you can create an instance of 'quiz_attempt' for each user's attempt, then call $attempt->process_finish() on each, in order to close the attempt properly).
Thanks. The trick is to set the timefinish column in mdl_quiz_attempts which changes the attempt status to "Not yet graded", then setting the state to "gradewrong" from "complete" in mdl_question_attempt_steps for unsubmitted responses to simulate submission. Then set a fake 0 grade to sumgrades where grades are NULL in mdl_quiz_attempts and then running a regrade in the admin panel.

How can I make this Max MSP/M4L patch update zl.len and zl.mth for an empty list?

Background
I'm trying to build a Max for Live device as a solution to the problem presented in this related question. As part of my solution I need to keep track of a group of notes (i.e. the selected, or in-scale notes).
My patch (see below) works great for any combination of held notes, but fails once the last note is released. When that happens, zl.len stays stuck at 1 and zl.mth continues to output whatever note was released last.
The question
How can I update my patch so that the length is 0 and the selected note is empty when the input list of held notes is empty?
What I have tried
I have tried banging the left inlet of the various zl objects manually and as part of the kslider update but this only produces the same unwanted behavior.
Here is a screen-shot of the patch:
and here is the corresponding code:
----------begin_max5_patcher----------
917.3ocyX0zbaCBD8ryL4+.iN6jAPHaodr8P+AzicxjQePrIUB4AgRcal9eu
7gUrSprJJF5zKlQqA18s6agmzyWe0hnh18ztHvG.eErXwyJKKL1zVVLXXQTS
99x57NyDi38METQzxC+m5QFulJM+I5Dqs8xAy3AypoxZ5az1fKOt4C1Pur9c
4h7FpjJtmxyKpouZE1cV9icTajGEsDDUjy2DAtaXNrJSv1V73MIwQG2VY4VF
ey8BZoztXbRxsvk.BYkdHNV+KFeKDbmYM+55qzipgkNmgJaaZnb4KdUR2abV
zmZ64RfbKErkVWA3sRUxeXV0LNsTOgWkwbI8BGCz3o.8ZnArYFLmhLOPtHLW
zKks7YwJdmE6IJzvovLxVniIolRLY32PTn+nJFM0YcIFnfPzkVOIYSgsXnkD
mYpqnDy.FFFv8EpDv3Uz8f1G.UzNlfVA5Jyqo2ng6kC0zI6WyHmzuhxPAEps
BosMUgXPdWIkWoBGPqnZlGANJPWOMPOzWlY.55rPBzOKZ628lSlTPV1BxA0r
NOveSlj+d3zWHxVTiCM+cn2zTW0OX3uWNJm7pFBw1dptdIwWco+Obta7j20f
WYNvkj5uyc4zuq76eVY+Y8scpN1wyF3+h1jQUULNfwS23FSN4hFBxCJJNGfk
B1lMTAn38Q.lQMFSlDxqSsMtlCoRhCHj2ITGKA5n0JmSqt3NVLxgRYhkBmBC
HtTb2F41fScQYtfW6PPot153F88NWbQDs1AwQGT6tZUXKhSfHeVFW4P6XLzP
XSBeYrlx2bNx6bpiwNHfmfMfy1RFt5nBRguJ5zKrX4swq8.d+VWM6TkqsO7P
G03tUv2EXmmDBlVNlc3X9nosh9JdhPcIj0BdjbV5z5HMoLDz9hsjgaiB.EoH
eyr3GnIyJiSOb.pXqlRblVR4nrC6Va97Bu8K8X1V8e7lDPWaunbH7F9DJ.3w
fT8VeRFOWxTROONK8cK.zT4ZmcnVgkiN7jYYesLcx1CgfVUq6gfGb3aQy3NT
KXwSNzwjL7LIYrGBgD3bBAefYhSI40ADyNl1OWH.+mkEzhLBV6kigP.SBoNw
DHALGfbi8G6uiXVMG1uOb3b3YdplhbgTg7l67FG9vE04618DUzcXOr9VII4w
VyhRWZelwsOakUDInOwFVRh0TtPIYPpzKzKLgbz9UGdGdijKAumMvi0nW6Zi
pGtRPW2tbKNMpit9J0D9MXvABqM
-----------end_max5_patcher-----------
Indeed the only way to know if there is nothing in a zl group object is to somehow keep track of whether something came in.
Here is an example that should do what you are looking for if I understand correctly:
----------begin_max5_patcher----------
1066.3ocwY1rbaaCDG+rzSAFdVQC9fe1iIGxCPO1wiGJQXYlRBpgDLUsYx6d
AVPZoXCICYBxbQ1DBlK9s6+cwB3erdUvtlS7t.zef9KzpU+X8pUvP5AVM77p
f57S6qx6foEH3+SytuErw7UR9IILrDsCUNNZYALlZdehMNlnutTTwkvagbdv
ld43nzgQMCI+2ibyBKXWt3PvFTPoPYrGFl0wb49mKEGdrkuWZlHkw1Ri1fHL
5V7FDMaq5Ap52QOn+a94505O1LMRsQI0JkTqTRtFkuGcDEcJpBYwyGbRD1VP
L5NhhSkOFk.7QG+zm70wqPXDwFigVYjYkQ16oTG+oK.SS.fCCmCfslSxVP4J
MjNmx0R6AShOJ6nI7dp5jk5CR6q2waGW9puprtuFV7j2xYzKQxi4s40bIu8Q
tHeWEf.1C9fWDy2zCDEBdfHLFxfYmUxibTJF4.+AbJ6apq45nwqh+eooWHQx
m4nm4UEHQiTsY1vjpJE785u+R9tz2QuCMB95vaJGGFBPmRFc.enf+tdorQXQ
PGg8TflbyJW2LeFm.fhGRqG+7CA50BneVsJf3oNThTKRK9hvLOE3vCpVSkWR
DHdoXOizexUUoDE7SnlmPE7txVdApaedE+SZHsAXpe.jlwtLsjjQlG.aZklT
OEmn7t8bQgZgfZZKNWH6R7R7EdX.OVHT2kjjMK3801l9iupFiBTYCJGUU1YU
gF4YBoCAP1roPGy4fXn9APgZiMlux9.XhX5cKmZt2Uqaxn+1qaRiSFJyP8Pg
yqzHz+UssSkFZ6nII2Qyd2rM.mZBZHYLjLGMyBGxz5ITng2gpj4x4LcowOro
vCFfMNaNP9XqZUfTGaQYUdgMxIdpVyP.L1bvqT7bPiRlVKe1BEjrEUkFkNip
TSH6fdaCajl32tWXlMEhimo30U4HdYqqX1BLZFiXUbwA6hSOsk23E3XNueb5
LEwTbXCB7hDuHQT8F5CmRfkLIF+6tpxK5gr4om53fchwuEvz6dmd57bc.lcE
LnmFNzjyEGEtofeo7oUsoiY.p+jA6xOXSCrD26yKWGhQfGktMw18g.uB3P5u
55mgWod7ek5tl918iqgg3M5rWUcvJYoHWVpZC77bzsEftl1yUCM9Rtokz2ol
erD0EKQ7gkHumk7.RLG7cDOYGxBXG8Ew79xNenEbww4kHTzBQDYwbcIt3690
Ui4xJzUCmjoScTFN072Hmxqx7fkXNU8KxGBQWpIoa6b5VxEuGyG6cvntFmlr
kHtTQ2G6cvHtvT7hkHmYOQlr.lNwtowSqNYlK0I8wlYiAoaaoDeXIWR3dKRl
lDyOd7671tgYC1P0D72Z.ec5l0l++RlGg1VCZ4eubb9lIj2p5SUpZRsuEVWA
mhMWYDzOdqnubPynnSYRnAag5XDcGyMf.8gu9mq+eNu4kL.
-----------end_max5_patcher-----------
With the help of the Cycling74 forum, I came up with this solution that uses borax to count the held notes, and as a trigger to clear the zl object when the count is 0.
----------begin_max5_patcher----------
866.3ocuX1zaaBCFG+bxmBKzNlEgMP.lTOsO.6vNNMUYHtItCLHioKqU869r
eLrzlBIPBrKfvA3u+87N4kkKbRJNvpbPeA8CzhEurbwBXIyBKZtdgSN8PZFs
BtMmzh7blP4rx9aJ1AEr92j6nB9yLjZOCIJTrJDWnJPTTUgTw1hx3U+6ox3B
VZQs.dTulEE04E0pLlBDxsY0RpJcOWr6dIKUY2nDb7Z2UHOhm4TD1bzObsK5
mMOCeKrkJRd7ydwNGe8bQ6aGaV60kKMGVcij+0LFUBXq29k0JD+AsAnwFPkL
zdV11NI2erj6ERLvRb8MmBgiab6g7vYm7uyxzas24wgKpRoYrNIlLZhcAmre
75fUHbfK3385g3fIiXA62523G.VgdNK03tc5jC7YhYii.O2Ff.KGDxa3v9ZT
+ojYe.mVk5hTRzbSpNF9SbL5t6PtFWp.gGg+b.1AaD7F3BufyYG5z.fcmaCP
Rgjdna2b7YvyEHB6A3gsAum2OyMIVW4oNiM5zx3cMVl57DVOg5jyjxFrA7pg
gsIqmXBzhvyqyAGFtW2tFwDpXWmLF347O8kzblhIumInIYr2VNQieqNtSUzR
RsRUHFc5umIFWaL7gSD+1i8GVzK6djgv9bkV7b1ZS+7QGTfC7so5PCLe7kyK
LA.cGf2ciMxTVlOYzd3F.aJrQHWFvd8vD+4t3VoTW8.UAsuYacF8.X1h39a.
2XzGal8VXvNyeHYtZ+niHagfDdyQj334NhTy3NYQc4Um2YmUN3lnbyjQ4upx
3auhVK3X6j+vzfQ.YAdCr45w1OEaYuMYVpyCsKP9HzQCoXawCOTwT8V9cBiC
Rn6F+nmVyUynmD6EWbjjNi.tX..7TvHhm7Qkv9xr96YtpnVl1JaapD53VaKq
RwETEW2y83MYpoXtoNsqCVoMCQovoPoAHT6t4lDJZHDMQ5fGfN3aTGy6v6RF
tIfGiN9CPmofGxkzw8cNwBooNooxxsor+HhAOUZ7rC8IauoR4AA8rXtCGhxw
SQsE2gjyGMEIIQ+uXx70cCSoaMgzibcLYayQKKehIqZtaPDcS7GKf.nnUKse
Bp8Rn+rij8Du89g+1SGpT2tVo6UWKgMlygM1o+gwTjhZdSdfFOsjv.BB8fHU
kTKIvbDKec4eADs2DjA
-----------end_max5_patcher-----------

How can I get all Actions for a Board using Trello's Rest API?

I want to get all the actions for a board, but Trello limits the results to 1000. I understand the correct way to deal with this is to paginate. I've tried both before and page as keywords:
Basic Call:
https://api.trello.com/1/board/[boardID]/
?key=[key]&token=[token]
&actions=commentCard&actions_limit=1000
Alternatives:
Before:
https://api.trello.com/1/board/[boardID]/
?key=[key]&token=[token]
&actions=commentCard&actions_limit=1000&
before=[oldest_returned_action's_date]
Page:
https://api.trello.com/1/board/[boardID]/
?key=[key]&token=[token]
&actions=commentCard&actions_limit=1000&
page=[page_number]
The result never varies --- I always get back [limit] number of actions, and they're always the same no matter the call. I checked the dates in what was returned and they certainly don't respect the before parameter. I even tried lowering the limit to make sure I wasn't trying to return more than I possessed. The problem persists.
How can I correctly get all actions for a Trello board?
Actions are in reverse chronological order (newest-to-oldest), so to page through the actions on a board, you would use something like:
curl "https://api.trello.com/1/boards/${BOARD_ID}/actions/?key=${TRELLO_API_KEY}&token=${TRELLO_TOKEN}&limit=1000"
then, from the last element of the array returned by the the above, select the date or id and pass that as the before parameter in the next call, e.g.:
curl "https://api.trello.com/1/boards/${BOARD_ID}/actions/?key=${TRELLO_API_KEY}&token=${TRELLO_TOKEN}&limit=1000&before=${DATE_OR_ID_OF_LAST_ACTION}"
and repeat, passing in either the id or date of the last action as the subsequent before parameter.
References:
Paging
Board Actions
Actions Nested Resource

Selenium ide: Verify "Except field X no other field exists"

We have a test requirement to verify that only the expected fields appear on a page. I can verify this case as: True, the expected fields appear. But I cannot verify that "only" these fields appear. So the condition is something like:
Verify: Except field[id/name]="test" NO (input OR select) element exists.
- The above will tell me that except the field I am expecting there is no other dropdown/text/checkbox/etc on the page. This is a simple usecase; in real world ofcourse a page will have multiple fields hence I need to veirfy that except these [5] fields no other field exists.
Any idea how to do this in IDE only? Or is there any hack possible to get this verified using IDE only?
You posted no code, so I cannot reply with any code!
The approach you could take is count the number of all fields on a page, and count number of field you are interested in. The two should match.

How do I create a manual link on a tree in Oracle APEX when Session State Protection is turned on?

Friends,
I'm facing another challenge in APEX and I hope you can help.
I have created a tree using the method described in John & Scott's superb book, "Pro Application Express" whereby the page link is stored in a table. Below is an example:
go to a page passing some parameters
f?p=&APP_ID.:3:&SESSION.::::P3_IDENTIFIER,P3_FAMILY_NAME:&P2_IDENTIFIER.,&P2_FAMILY_NAME.
When the page is run this works as expected. I can expand the tree and navigate to the page passing parameters if required.
However when I turned on session state protection these "hand crafted" links stopped working. Which I expected because the link contains no checksum.
After some investigation I see I have to use APEX_UTIL.PREPARE_URL to generate the URL with a checksum. Unfortunately this is where I run into problems. I can't seem to be able to pass the parameters values to the calling page.
The original tree query was:
select "IDENTIFIER" id,
"PARENT_IDENTIFIER" pid,
"TITLE" name,
"LINK" link,
null a1,
null a2
from <some table>
I then changed this to use APEX_UTIL.PREPARE_URL:
....
APEX_UTIL.PREPARE_URL('f?p='||:APP_ID||':3:'||:APP_SESSION||'::::P3_IDENTIFIER,P3_FAMILY_NAME:&P2_IDENTIFIER.,&P2_FAMILY_NAME.') link,
...
and this works, the page is called and I can see the values of the parameters passed. But I can't use this method as it is restricted to the one page!
Finally I tried storing the page number, parameters and parameter values in different columns of the table that the tree is based on and then bring them together:
...
APEX_UTIL.PREPARE_URL('f?p='||:APP_ID||':'||navigate_to_page||':'||:APP_SESSION||'::::'||parameters||':'||parameter_values) link,
...
Where:
navigate to page has the value of: 3
parameters has the value of: P3_IDENTIFIER,P3_FAMILY_NAME
parameter_values has the values of: &P2_IDENTIFIER.,&P2_FAMILY_NAME.
This now calls the page, but the parameter values have become literals. so where I'm expecting an identifier I see &P2_IDENTIFIER and ditto for family name.
What am I doing wrong? How can I pass values to my called page using apex_util_prepare_url?
In case of need, my environment details are: Apex 3.2.1, Oracle Application Server 10.1.2.3. Oracle Database 10.2.0.3
Thanks in advance for any help you may be able to provide.
I think you'll need to resolve those variables, using the v() function:
APEX_UTIL.PREPARE_URL('f?p='||:APP_ID
||':'||navigate_to_page
||':'||:APP_SESSION
||'::::'||parameters
||':'||v('P2_IDENTIFIER')||','||v('P2_FAMILY_NAME')) link,
On a side note, you might need to be careful about P2_FAMILY_NAME since it's being used in the url; it sounds like a plain text field which contains user-entered data?