Example #1
0
    def __getstate__(self):
        """
            For pickling the report when passing it to Celery.
        """
        logging = get_task_logger() # logging lis likely to happen within celery.
        # pickle only what the report needs from the request object

        request = dict(
            GET=self.request.GET,
            META=dict(
                QUERY_STRING=self.request.META.get('QUERY_STRING'),
                PATH_INFO=self.request.META.get('PATH_INFO')
            ),
            datespan=self.request.datespan,
            couch_user=None
        )

        try:
            request.update(couch_user=self.request.couch_user.get_id)
        except Exception as e:
            logging.error("Could not pickle the couch_user id from the request object for report %s. Error: %s" %
                          (self.name, e))
        return dict(
            request=request,
            request_params=self.request_params,
            domain=self.domain,
            context={}
        )
Example #2
0
    def __setstate__(self, state):
        """
            For unpickling a pickled report.
        """
        logging = get_task_logger() # logging lis likely to happen within celery.
        self.domain = state.get('domain')
        self.context = state.get('context', {})

        class FakeHttpRequest(object):
            GET = {}
            META = {}
            couch_user = None
            datespan = None

        request_data = state.get('request')
        request = FakeHttpRequest()
        request.GET = request_data.get('GET', {})
        request.META = request_data.get('META', {})
        request.datespan = request_data.get('datespan')

        try:
            couch_user = CouchUser.get(request_data.get('couch_user'))
            request.couch_user = couch_user
        except Exception as e:
            logging.error("Could not unpickle couch_user from request for report %s. Error: %s" %
                            (self.name, e))
        self.request = request
        self._caching = True
        self.request_params = state.get('request_params')
        self._update_initial_context()
Example #3
0
 def __setstate__(self, state):
     """
         For un-pickling the DateSpan object.
     """
     logging = get_task_logger(
         __name__)  # logging is likely to happen within celery
     try:
         self.startdate = dateutil.parser.parse(
             state.get('startdate')) if state.get('startdate') else None
         self.enddate = dateutil.parser.parse(
             state.get('enddate')) if state.get('enddate') else None
     except Exception as e:
         logging.error(
             "Could not unpack start and end dates for DateSpan. Error: %s"
             % e)
     self.format = state.get('format', ISO_DATE_FORMAT)
     self.inclusive = state.get('inclusive', True)
     self.timezone = pytz.utc
     self.is_default = state.get('is_default', False)
     self.max_days = state.get('max_days')
     try:
         self.timezone = pytz.timezone(state.get('timezone'))
     except Exception as e:
         logging.error("Could not unpack timezone for DateSpan. Error: %s" %
                       e)
Example #4
0
 def __setstate__(self, state):
     """
         For un-pickling the DateSpan object.
     """
     logging = get_task_logger(__name__) # logging is likely to happen within celery
     try:
         self.startdate = dateutil.parser.parse(state.get('startdate')) if state.get('startdate') else None
         self.enddate = dateutil.parser.parse(state.get('enddate')) if state.get('enddate') else None
     except Exception as e:
         logging.error("Could not unpack start and end dates for DateSpan. Error: %s" % e)
     self.format = state.get('format', DEFAULT_DATE_FORMAT)
     self.inclusive = state.get('inclusive', True)
     self.timezone = pytz.utc
     self.is_default = state.get('is_default', False)
     try:
         self.timezone = pytz.timezone(state.get('timezone'))
     except Exception as e:
         logging.error("Could not unpack timezone for DateSpan. Error: %s" % e)
Example #5
0
 def get_logger(self, *args, **kwargs):
     return get_task_logger(*args, **dict(kwargs, name=self.uid))
Example #6
0
 def setUp(self):
     logger = get_task_logger()
     logger.handlers = []
     logging.root.manager.loggerDict.pop(logger.name, None)
     self.uid = uuid()
Example #7
0
 def get_logger(self, *args, **kwargs):
     return get_task_logger(*args, **dict(kwargs, name=self.uid))
Example #8
0
 def setUp(self):
     logger = get_task_logger()
     logger.handlers = []
     logging.root.manager.loggerDict.pop(logger.name, None)
     self.uid = uuid()
Example #9
0
from celery.log import get_task_logger
from celery.task import task
from couchdbkit.exceptions import ResourceNotFound
from corehq.apps.migration.post import post_data
from corehq.apps.migration.util.submission_xml import prepare_for_resubmission
from corehq.apps.users.models import CommCareUser
from couchforms.models import XFormInstance

logging = get_task_logger()

def _resubmit_form(url, form, user_id_mapping, owner_id_mapping):
    xml = prepare_for_resubmission(form.get_xml(), user_id_mapping, owner_id_mapping, salt=url)
    if form.get_id in xml:
        return "", ["New form still has old instanceID: %s" % form.get_id]
    results, errors = post_data(xml, url, submit_time=form.received_on)
    return results, errors

def check_form_domain(form, domain):
    if form.domain == domain:
        return True
    else:
        raise Exception("Form %s has mismatch between user's domain (%s) and form's domain (%s)" % (
            form.get_id, domain, form.domain
            ))

def forms_for_users(user_ids, domain):
    """
    The current implementation loads all form objects into memory and sorts them by date

    You could stream instead by going through all submissions sorted by date in couch
    and submitting the ones submitted by a user in user_mapping