def create(self, request):
        # check if post has secret parameter
        print request.POST
        if not (DataNames.SECRET in request.POST):
            return ApiDataProvider.returnError(FilterCronHandler._TAG + 'no ' +
                                               DataNames.SECRET)

        # check if secret parameter is correct
        the_secret = request.POST[DataNames.SECRET]
        if the_secret != ApiKeys.GAE_PRIVATE_KEY:
            return ApiDataProvider.returnError(FilterCronHandler._TAG +
                                               'incorrect private key')

        # check if mood in post request
        if not (Mood.URL_TAG in request.POST):
            return ApiDataProvider.returnError(FilterCronHandler._TAG + 'no ' +
                                               Mood.URL_TAG)

        # check if parameter is correct
        mood = request.POST[Mood.URL_TAG]
        if not (mood in Mood.MOOD_TYPES):
            return ApiDataProvider.returnError('mood input outofbounds')

        # check if content in post request
        if not (Media.URL_TAG in request.POST):
            return ApiDataProvider.returnError(FilterCronHandler._TAG + 'no ' +
                                               Media.URL_TAG)

        # check if parameter is correct
        content = request.POST[Media.URL_TAG]
        if not (content in Media.CONTENT_TYPES):
            return ApiDataProvider.returnError('content input outofbounds')

        # check if type is defined
        if not (FilterCronHandler.FILTER_TYPE in request.POST):
            return ApiDataProvider.returnError(FilterCronHandler._TAG + 'no ' +
                                               FilterCronHandler.FILTER_TYPE)

        # check if parameter is correect
        type = request.POST[FilterCronHandler.FILTER_TYPE]
        if not (type in FilterCronHandler.ALL_FILTER):
            return ApiDataProvider.returnError('filter type input outofbounds')

        # perform cron job
        if type == FilterCronHandler.CONTENT_FILTER:
            #deprecated
            if ContentDataOrganizer.filterContentCronJob(mood):
                return ApiDataProvider.returnSuccess('success filtered data')
            else:
                return ApiDataProvider.returnError(FilterCronHandler._TAG +
                                                   'error filtering data')

        elif type == FilterCronHandler.SCORE_FILTER:
            res = ContentDataOrganizer.scoreThresholdFilterCronJob(
                mood, content)
            if res > 0:
                print 'filtered ' + str(res)
                return ApiDataProvider.returnSuccess('filtered ' + str(res) +
                                                     ' contents')
            elif res == ScoreFilter.NO_FINAL_SCORE:
                return ApiDataProvider.returnSuccess(
                    'no data need to be filtered')
            elif res == ScoreFilter.EMPTY_DB:
                return ApiDataProvider.returnError('nothing in database')

        elif type == FilterCronHandler.URL_FILTER:
            print 'Broken Filter'
            if ContentDataOrganizer.brokenURLFilterCronJob(mood, content):
                # done
                return ApiDataProvider.returnSuccess('1')
            else:
                # still have more to do
                return ApiDataProvider.returnSuccess('0')
 def create(self, request):
     # check if post has secret parameter
     print request.POST
     if not(DataNames.SECRET in request.POST) :
         return ApiDataProvider.returnError(FilterCronHandler._TAG + 'no ' + DataNames.SECRET)
     
     # check if secret parameter is correct
     the_secret = request.POST[DataNames.SECRET]
     if the_secret != ApiKeys.GAE_PRIVATE_KEY:
         return ApiDataProvider.returnError(FilterCronHandler._TAG + 'incorrect private key')
     
     # check if mood in post request
     if not (Mood.URL_TAG in request.POST):
         return ApiDataProvider.returnError(FilterCronHandler._TAG + 'no ' + Mood.URL_TAG)
     
     # check if parameter is correct
     mood = request.POST[Mood.URL_TAG]
     if not (mood in Mood.MOOD_TYPES) :
         return ApiDataProvider.returnError('mood input outofbounds')
     
     # check if content in post request
     if not (Media.URL_TAG in request.POST) :
         return ApiDataProvider.returnError(FilterCronHandler._TAG + 'no ' + Media.URL_TAG)
     
     # check if parameter is correct
     content = request.POST[Media.URL_TAG]
     if not (content in Media.CONTENT_TYPES) :
         return ApiDataProvider.returnError('content input outofbounds')
     
     # check if type is defined
     if not (FilterCronHandler.FILTER_TYPE in request.POST):
         return ApiDataProvider.returnError(FilterCronHandler._TAG + 'no ' + FilterCronHandler.FILTER_TYPE)
     
     # check if parameter is correect
     type = request.POST[FilterCronHandler.FILTER_TYPE]
     if not (type in FilterCronHandler.ALL_FILTER) :
         return ApiDataProvider.returnError('filter type input outofbounds')
     
     # perform cron job
     if type == FilterCronHandler.CONTENT_FILTER:
         #deprecated
         if ContentDataOrganizer.filterContentCronJob(mood):
             return ApiDataProvider.returnSuccess('success filtered data')
         else:
             return ApiDataProvider.returnError(FilterCronHandler._TAG + 'error filtering data')
         
     elif type == FilterCronHandler.SCORE_FILTER:
         res = ContentDataOrganizer.scoreThresholdFilterCronJob(mood, content)
         if res > 0:
             print 'filtered ' + str(res)
             return ApiDataProvider.returnSuccess('filtered ' + str(res) + ' contents')
         elif res == ScoreFilter.NO_FINAL_SCORE:
             return ApiDataProvider.returnSuccess('no data need to be filtered')
         elif res == ScoreFilter.EMPTY_DB:
             return ApiDataProvider.returnError('nothing in database')
         
     elif type == FilterCronHandler.URL_FILTER:
         print 'Broken Filter'
         if ContentDataOrganizer.brokenURLFilterCronJob(mood, content) :
             # done
             return ApiDataProvider.returnSuccess('1')
         else:
             # still have more to do
             return ApiDataProvider.returnSuccess('0')