Пример #1
0
def common_variables(request):
    from rawdata.utils import rawdata_user_has_valid_subscription
    from django_user_agents.utils import get_and_set_user_agent
    from django_bouncy.models import Bounce

    get_and_set_user_agent(request)

    bounced = False
    if request.user.is_authenticated():
        bounced = Bounce.objects.filter(
            address = request.user.email, bounce_type="Permanent").exists()


    d = {
        'True': True,
        'False': False,

        'LANGUAGE_CODE': request.LANGUAGE_CODE if hasattr(request, "LANGUAGE_CODE") else "en",
        'DEBUG_MODE': settings.DEBUG,
        'REQUEST_COUNTRY': get_client_country_code(request),

        #'random_gear_item': Gear.objects.filter(moderator_fixed = None).order_by('?')[:1].get(),
        'is_producer': request.user.groups.filter(name='Producers'),
        'is_retailer': request.user.groups.filter(name='Retailers'),
        'rawdata_has_subscription': rawdata_user_has_valid_subscription(request.user),
        'IMAGES_URL' : settings.IMAGES_URL,
        'MEDIA_URL' : settings.MEDIA_URL,
        'ADS_ENABLED': settings.ADS_ENABLED,
        'DONATIONS_ENABLED': settings.DONATIONS_ENABLED,
        'PREMIUM_ENABLED': settings.PREMIUM_ENABLED,
        'PREMIUM_MAX_IMAGES_FREE': settings.PREMIUM_MAX_IMAGES_FREE,
        'PREMIUM_MAX_IMAGES_LITE': settings.PREMIUM_MAX_IMAGES_LITE,
        'PAYPAL_TEST': settings.PAYPAL_TEST,
        'IOTD_SHOW_CHOOSING_JUDGE': settings.IOTD_SHOW_CHOOSING_JUDGE,
        'SOLVING_ENABLED': settings.ENABLE_SOLVING,
        'GOOGLE_ANALYTICS_ID': settings.GOOGLE_ANALYTICS_ID,
        'READONLY_MODE': settings.READONLY_MODE,
        'HAS_BOUNCED_EMAILS': bounced,
        'COUNTRIES': COUNTRIES,
        'COOKIELAW_ACCEPTED': request.COOKIES.get('cookielaw_accepted', False),
    }

    if request.user.is_authenticated() and request.user.userprofile.is_image_moderator():
        d['images_pending_moderation_no'] = Image.objects_including_wip.filter(moderator_decision = 0).count()

    return d
Пример #2
0
def common_variables(request):
    from rawdata.utils import user_has_active_subscription
    from django_user_agents.utils import get_and_set_user_agent

    get_and_set_user_agent(request)

    d = {
        #'random_gear_item': Gear.objects.filter(moderator_fixed = None).order_by('?')[:1].get(),
        'is_producer': request.user.groups.filter(name='Producers'),
        'is_retailer': request.user.groups.filter(name='Retailers'),
        'has_rawdata_subscription': user_has_active_subscription(request.user),
        'is_iotd_staff': request.user.groups.filter(name='IOTD_Staff'),
        'IMAGES_URL' : settings.IMAGES_URL,
        'ADS_ENABLED': settings.ADS_ENABLED,
        'DONATIONS_ENABLED': settings.DONATIONS_ENABLED,
    }

    return d
Пример #3
0
def common_variables(request):
    from rawdata.utils import rawdata_user_has_valid_subscription
    from django_user_agents.utils import get_and_set_user_agent
    from django_bouncy.models import Bounce

    get_and_set_user_agent(request)

    bounced = False
    if request.user.is_authenticated():
        bounced = Bounce.objects.filter(
            address = request.user.email, bounce_type="Permanent").exists()

    d = {
        'True': True,
        'False': False,

        'LANGUAGE_CODE': request.LANGUAGE_CODE if 'LANGUAGE_CODE' in request else 'en',

        #'random_gear_item': Gear.objects.filter(moderator_fixed = None).order_by('?')[:1].get(),
        'is_producer': request.user.groups.filter(name='Producers'),
        'is_retailer': request.user.groups.filter(name='Retailers'),
        'rawdata_has_subscription': rawdata_user_has_valid_subscription(request.user),
        'IMAGES_URL' : settings.IMAGES_URL,
        'MEDIA_URL' : settings.MEDIA_URL,
        'ADS_ENABLED': settings.ADS_ENABLED,
        'DONATIONS_ENABLED': settings.DONATIONS_ENABLED,
        'PREMIUM_ENABLED': settings.PREMIUM_ENABLED,
        'PREMIUM_MAX_IMAGES_FREE': settings.PREMIUM_MAX_IMAGES_FREE,
        'PREMIUM_MAX_IMAGES_LITE': settings.PREMIUM_MAX_IMAGES_LITE,
        'PAYPAL_TEST': settings.PAYPAL_TEST,
        'IOTD_SHOW_CHOOSING_JUDGE': settings.IOTD_SHOW_CHOOSING_JUDGE,
        'SOLVING_ENABLED': settings.ENABLE_SOLVING,
        'GOOGLE_ANALYTICS_ID': settings.GOOGLE_ANALYTICS_ID,
        'READONLY_MODE': settings.READONLY_MODE,
        'HAS_BOUNCED_EMAILS': bounced
    }

    if request.user.is_authenticated() and request.user.userprofile.is_image_moderator():
        d['images_pending_moderation_no'] = Image.objects_including_wip.filter(moderator_decision = 0).count()

    return d
Пример #4
0
def common_variables(request):
    from django_user_agents.utils import get_and_set_user_agent
    from django_bouncy.models import Bounce, Complaint

    get_and_set_user_agent(request)

    hard_bounces = None
    soft_bounces = None
    complained = False

    if request.user.is_authenticated:
        cache_key = 'hard_bounces_%d' % request.user.pk
        hard_bounces = cache.get(cache_key)
        if hard_bounces is None:
            hard_bounces = Bounce.objects.filter(hard=True,
                                                 address=request.user.email,
                                                 bounce_type="Permanent")
            cache.set(cache_key, hard_bounces, 3600)

        cache_key = 'soft_bounces_%d' % request.user.pk
        soft_bounces = cache.get(cache_key)
        if soft_bounces is None:
            soft_bounces = Bounce.objects.filter(
                hard=False,
                address=request.user.email,
                bounce_type="Transient",
                created_at__gte=datetime.now() - timedelta(days=7))[:3]
            cache.set(cache_key, soft_bounces, 3600)

        cache_key = 'complained_%d' % request.user.pk
        complained = cache.get(cache_key)
        if complained is None:
            complained = Complaint.objects.filter(
                address=request.user.email).exists()
            cache.set(cache_key, complained, 3600)

    def has_unmigrated_legacy_gear_items(user: User) -> bool:
        if user.groups.filter(name='own_equipment_migrators').exists():
            for klass in ('telescopes', 'cameras', 'mounts', 'filters',
                          'focal_reducers', 'accessories', 'software'):
                if getattr(user.userprofile, klass)\
                        .annotate(count=Count('migration_strategies'))\
                        .filter(count=0)\
                        .exists():
                    return True

        return False

    d = {
        'True': True,
        'False': False,

        'STATIC_URL': settings.STATIC_URL,
        'LANGUAGE_CODE': request.LANGUAGE_CODE if hasattr(request, "LANGUAGE_CODE") else "en",
        'DEBUG_MODE': settings.DEBUG,
        'TESTING': settings.TESTING,
        'REQUEST_COUNTRY': get_client_country_code(request),

        'IMAGES_URL': settings.IMAGES_URL,
        'MEDIA_URL': settings.MEDIA_URL,
        'ADS_ENABLED': settings.ADS_ENABLED,
        'ADMANAGER_PUBLISHER_ID': settings.ADMANAGER_PUBLISHER_ID,
        'NATIVE_RESPONSIVE_WIDE_SLOT': settings.NATIVE_RESPONSIVE_WIDE_SLOT,
        'NATIVE_RESPONSIVE_RECTANGULAR_SLOT': settings.NATIVE_RESPONSIVE_RECTANGULAR_SLOT,
        'NATIVE_RESPONSIVE_RECTANGULAR_SLOT_2': settings.NATIVE_RESPONSIVE_RECTANGULAR_SLOT_2,
        'NATIVE_RESPONSIVE_SKYSCRAPER_SLOT_1': settings.NATIVE_RESPONSIVE_SKYSCRAPER_SLOT_1,
        'NATIVE_RESPONSIVE_SKYSCRAPER_SLOT_2': settings.NATIVE_RESPONSIVE_SKYSCRAPER_SLOT_2,
        'DONATIONS_ENABLED': settings.DONATIONS_ENABLED,

        'PREMIUM_ENABLED': settings.PREMIUM_ENABLED,

        'PREMIUM_MAX_IMAGES_FREE': settings.PREMIUM_MAX_IMAGES_FREE,
        'PREMIUM_MAX_IMAGES_LITE': settings.PREMIUM_MAX_IMAGES_LITE,

        'PREMIUM_MAX_IMAGES_FREE_2020': settings.PREMIUM_MAX_IMAGES_FREE_2020,
        'PREMIUM_MAX_IMAGES_LITE_2020': settings.PREMIUM_MAX_IMAGES_LITE_2020,
        'PREMIUM_MAX_IMAGES_PREMIUM_2020': settings.PREMIUM_MAX_IMAGES_PREMIUM_2020,

        'PREMIUM_MAX_IMAGE_SIZE_FREE_2020': settings.PREMIUM_MAX_IMAGE_SIZE_FREE_2020,
        'PREMIUM_MAX_IMAGE_SIZE_LITE_2020': settings.PREMIUM_MAX_IMAGE_SIZE_LITE_2020,
        'PREMIUM_MAX_IMAGE_SIZE_PREMIUM_2020': settings.PREMIUM_MAX_IMAGE_SIZE_PREMIUM_2020,

        'PREMIUM_MAX_REVISIONS_FREE_2020': settings.PREMIUM_MAX_REVISIONS_FREE_2020,
        'PREMIUM_MAX_REVISIONS_LITE_2020': settings.PREMIUM_MAX_REVISIONS_LITE_2020,
        'PREMIUM_MAX_REVISIONS_PREMIUM_2020': settings.PREMIUM_MAX_REVISIONS_PREMIUM_2020,

        'PREMIUM_PRICE_FREE_2020': settings.PREMIUM_PRICE_FREE_2020,
        'PREMIUM_PRICE_LITE_2020': settings.PREMIUM_PRICE_LITE_2020,
        'PREMIUM_PRICE_PREMIUM_2020': settings.PREMIUM_PRICE_PREMIUM_2020,
        'PREMIUM_PRICE_ULTIMATE_2020': settings.PREMIUM_PRICE_ULTIMATE_2020,

        'PAYPAL_TEST': settings.PAYPAL_TEST,
        'IOTD_SHOW_CHOOSING_JUDGE': settings.IOTD_SHOW_CHOOSING_JUDGE,
        'IOTD_SUBMISSION_WINDOW_DAYS': settings.IOTD_SUBMISSION_WINDOW_DAYS,
        'ENABLE_SOLVING': settings.ENABLE_SOLVING,
        'GOOGLE_ANALYTICS_ID': settings.GOOGLE_ANALYTICS_ID,
        'GOOGLE_ADS_ID': settings.GOOGLE_ADS_ID,
        'READONLY_MODE': settings.READONLY_MODE,
        'HARD_BOUNCES': hard_bounces,
        'SOFT_BOUNCES': soft_bounces,
        'HAS_COMPLAINT': complained,
        'COUNTRIES': COUNTRIES,
        'COOKIELAW_ACCEPTED': request.COOKIES.get('cookielaw_accepted', False),
        'HAS_CAMERA_RENAME_PROPOSALS': CameraRenameProposal.objects.filter(user=request.user, status="PENDING") \
            if request.user.is_authenticated \
            else CameraRenameProposal.objects.none(),
        'HAS_UNMIGRATED_LEGACY_GEAR_ITEMS': has_unmigrated_legacy_gear_items(request.user),
        'enums': {
            'SubjectType': SubjectType,
        },
        'abuse_report_form': AbuseReportForm()
    }

    if request.user.is_authenticated and request.user.userprofile.is_image_moderator(
    ):
        d['images_pending_moderation_no'] = ImageService(
        ).get_images_pending_moderation().count()

    return d
Пример #5
0
def common_variables(request):
    from django_user_agents.utils import get_and_set_user_agent
    from django_bouncy.models import Bounce, Complaint

    get_and_set_user_agent(request)

    hard_bounces = None
    soft_bounces = None
    complained = False

    if request.user.is_authenticated():
        cache_key = 'hard_bounces_%d' % request.user.pk
        hard_bounces = cache.get(cache_key)
        if hard_bounces is None:
            hard_bounces = Bounce.objects.filter(
                hard=True,
                address=request.user.email,
                bounce_type="Permanent")
            cache.set(cache_key, hard_bounces, 3600)

        cache_key = 'soft_bounces_%d' % request.user.pk
        soft_bounces = cache.get(cache_key)
        if soft_bounces is None:
            soft_bounces = Bounce.objects.filter(
                hard=False,
                address=request.user.email,
                bounce_type="Transient",
                created_at__gte=datetime.now() - timedelta(days=7))[:3]
            cache.set(cache_key, soft_bounces, 3600)

        cache_key = 'complained_%d' % request.user.pk
        complained = cache.get(cache_key)
        if complained is None:
            complained = Complaint.objects.filter(address=request.user.email).exists()
            cache.set(cache_key, complained, 3600)

    d = {
        'True': True,
        'False': False,

        'STATIC_URL': settings.STATIC_URL,
        'LANGUAGE_CODE': request.LANGUAGE_CODE if hasattr(request, "LANGUAGE_CODE") else "en",
        'DEBUG_MODE': settings.DEBUG,
        'REQUEST_COUNTRY': get_client_country_code(request),

        'IMAGES_URL': settings.IMAGES_URL,
        'MEDIA_URL': settings.MEDIA_URL,
        'ADS_ENABLED': settings.ADS_ENABLED,
        'ADSENSE_ENABLED': settings.ADSENSE_ENABLED,
        'ADMANAGER_PUBLISHER_ID': settings.ADMANAGER_PUBLISHER_ID,
        'NATIVE_RESPONSIVE_WIDE_SLOT': settings.NATIVE_RESPONSIVE_WIDE_SLOT,
        'NATIVE_RESPONSIVE_RECTANGULAR_SLOT': settings.NATIVE_RESPONSIVE_RECTANGULAR_SLOT,
        'NATIVE_RESPONSIVE_RECTANGULAR_SLOT_2': settings.NATIVE_RESPONSIVE_RECTANGULAR_SLOT_2,
        'DONATIONS_ENABLED': settings.DONATIONS_ENABLED,

        'PREMIUM_ENABLED': settings.PREMIUM_ENABLED,

        'PREMIUM_MAX_IMAGES_FREE': settings.PREMIUM_MAX_IMAGES_FREE,
        'PREMIUM_MAX_IMAGES_LITE': settings.PREMIUM_MAX_IMAGES_LITE,

        'PREMIUM_MAX_IMAGES_FREE_2020': settings.PREMIUM_MAX_IMAGES_FREE_2020,
        'PREMIUM_MAX_IMAGES_LITE_2020': settings.PREMIUM_MAX_IMAGES_LITE_2020,
        'PREMIUM_MAX_IMAGES_PREMIUM_2020': settings.PREMIUM_MAX_IMAGES_PREMIUM_2020,

        'PREMIUM_MAX_IMAGE_SIZE_FREE_2020': settings.PREMIUM_MAX_IMAGE_SIZE_FREE_2020,
        'PREMIUM_MAX_IMAGE_SIZE_LITE_2020': settings.PREMIUM_MAX_IMAGE_SIZE_LITE_2020,
        'PREMIUM_MAX_IMAGE_SIZE_PREMIUM_2020': settings.PREMIUM_MAX_IMAGE_SIZE_PREMIUM_2020,

        'PREMIUM_MAX_REVISIONS_FREE_2020': settings.PREMIUM_MAX_REVISIONS_FREE_2020,
        'PREMIUM_MAX_REVISIONS_LITE_2020': settings.PREMIUM_MAX_REVISIONS_LITE_2020,
        'PREMIUM_MAX_REVISIONS_PREMIUM_2020': settings.PREMIUM_MAX_REVISIONS_PREMIUM_2020,

        'PREMIUM_PRICE_FREE_2020': settings.PREMIUM_PRICE_FREE_2020,
        'PREMIUM_PRICE_LITE_2020': settings.PREMIUM_PRICE_LITE_2020,
        'PREMIUM_PRICE_PREMIUM_2020': settings.PREMIUM_PRICE_PREMIUM_2020,
        'PREMIUM_PRICE_ULTIMATE_2020': settings.PREMIUM_PRICE_ULTIMATE_2020,

        'PAYPAL_TEST': settings.PAYPAL_TEST,
        'IOTD_SHOW_CHOOSING_JUDGE': settings.IOTD_SHOW_CHOOSING_JUDGE,
        'ENABLE_SOLVING': settings.ENABLE_SOLVING,
        'GOOGLE_ANALYTICS_ID': settings.GOOGLE_ANALYTICS_ID,
        'GOOGLE_ADS_ID': settings.GOOGLE_ADS_ID,
        'READONLY_MODE': settings.READONLY_MODE,
        'HARD_BOUNCES': hard_bounces,
        'SOFT_BOUNCES': soft_bounces,
        'HAS_COMPLAINT': complained,
        'COUNTRIES': COUNTRIES,
        'COOKIELAW_ACCEPTED': request.COOKIES.get('cookielaw_accepted', False),
        'AUTOMATIC_RECOVERY_CONFIRMATION_BEGINS': Image.all_objects.filter(
            user=request.user,
            corrupted=True,
            recovered__isnull=False).order_by('recovered').first().recovered + timedelta(days=14) \
            if request.user.is_authenticated() and \
               Image.all_objects.filter(
                   user=request.user,
                   corrupted=True,
                   recovered__isnull=False).exists() \
            else None,

        'min_index_to_like': settings.MIN_INDEX_TO_LIKE,

        'enums': {
            'SubjectType': SubjectType,
        },
    }

    if request.user.is_authenticated() and request.user.userprofile.is_image_moderator():
        d['images_pending_moderation_no'] = ImageService().get_images_pending_moderation().count()

    return d
Пример #6
0
 def test_get_and_set_user_agent(self):
     # Test that get_and_set_user_agent attaches ``user_agent`` to request
     request = RequestFactory().get('')
     get_and_set_user_agent(request)
     self.assertIsInstance(request.user_agent, UserAgent)
Пример #7
0
 def test_get_and_set_user_agent(self):
     # Test that get_and_set_user_agent attaches ``user_agent`` to request
     request = RequestFactory().get('')
     get_and_set_user_agent(request)
     self.assertIsInstance(request.user_agent, UserAgent)
Пример #8
0
def common_variables(request):
    from django_user_agents.utils import get_and_set_user_agent
    from django_bouncy.models import Bounce, Complaint

    get_and_set_user_agent(request)

    bounced = False
    complained = False

    if request.user.is_authenticated():
        bounced = Bounce.objects.filter(address=request.user.email,
                                        bounce_type="Permanent").exists()
        complained = Complaint.objects.filter(
            address=request.user.email).exists()

    d = {
        'True':
        True,
        'False':
        False,
        'LANGUAGE_CODE':
        request.LANGUAGE_CODE if hasattr(request, "LANGUAGE_CODE") else "en",
        'DEBUG_MODE':
        settings.DEBUG,
        'REQUEST_COUNTRY':
        get_client_country_code(request),

        # 'random_gear_item': Gear.objects.filter(moderator_fixed = None).order_by('?')[:1].get(),
        'is_producer':
        request.user.groups.filter(name='Producers'),
        'is_retailer':
        request.user.groups.filter(name='Retailers'),
        'IMAGES_URL':
        settings.IMAGES_URL,
        'MEDIA_URL':
        settings.MEDIA_URL,
        'ADS_ENABLED':
        settings.ADS_ENABLED,
        'DONATIONS_ENABLED':
        settings.DONATIONS_ENABLED,
        'PREMIUM_ENABLED':
        settings.PREMIUM_ENABLED,
        'PREMIUM_MAX_IMAGES_FREE':
        settings.PREMIUM_MAX_IMAGES_FREE,
        'PREMIUM_MAX_IMAGES_LITE':
        settings.PREMIUM_MAX_IMAGES_LITE,
        'PREMIUM_MAX_IMAGES_FREE_2020':
        settings.PREMIUM_MAX_IMAGES_FREE_2020,
        'PREMIUM_MAX_IMAGES_LITE_2020':
        settings.PREMIUM_MAX_IMAGES_LITE_2020,
        'PREMIUM_MAX_IMAGES_PREMIUM_2020':
        settings.PREMIUM_MAX_IMAGES_PREMIUM_2020,
        'PREMIUM_MAX_IMAGE_SIZE_FREE_2020':
        settings.PREMIUM_MAX_IMAGE_SIZE_FREE_2020,
        'PREMIUM_MAX_IMAGE_SIZE_LITE_2020':
        settings.PREMIUM_MAX_IMAGE_SIZE_LITE_2020,
        'PREMIUM_MAX_IMAGE_SIZE_PREMIUM_2020':
        settings.PREMIUM_MAX_IMAGE_SIZE_PREMIUM_2020,
        'PREMIUM_MAX_REVISIONS_FREE_2020':
        settings.PREMIUM_MAX_REVISIONS_FREE_2020,
        'PREMIUM_MAX_REVISIONS_LITE_2020':
        settings.PREMIUM_MAX_REVISIONS_LITE_2020,
        'PREMIUM_MAX_REVISIONS_PREMIUM_2020':
        settings.PREMIUM_MAX_REVISIONS_PREMIUM_2020,
        'PREMIUM_PRICE_FREE_2020':
        settings.PREMIUM_PRICE_FREE_2020,
        'PREMIUM_PRICE_LITE_2020':
        settings.PREMIUM_PRICE_LITE_2020,
        'PREMIUM_PRICE_PREMIUM_2020':
        settings.PREMIUM_PRICE_PREMIUM_2020,
        'PREMIUM_PRICE_ULTIMATE_2020':
        settings.PREMIUM_PRICE_ULTIMATE_2020,
        'PAYPAL_TEST':
        settings.PAYPAL_TEST,
        'IOTD_SHOW_CHOOSING_JUDGE':
        settings.IOTD_SHOW_CHOOSING_JUDGE,
        'ENABLE_SOLVING':
        settings.ENABLE_SOLVING,
        'GOOGLE_ANALYTICS_ID':
        settings.GOOGLE_ANALYTICS_ID,
        'READONLY_MODE':
        settings.READONLY_MODE,
        'HAS_BOUNCED_EMAILS':
        bounced,
        'HAS_COMPLAINT':
        complained,
        'COUNTRIES':
        COUNTRIES,
        'COOKIELAW_ACCEPTED':
        request.COOKIES.get('cookielaw_accepted', False),
        'enums': {
            'SubjectType': SubjectType,
        },
    }

    if request.user.is_authenticated(
    ) and request.user.userprofile.is_image_moderator():
        d['images_pending_moderation_no'] = Image.objects_including_wip.filter(
            moderator_decision=0).count()

    return d
Пример #9
0
def is_touch_capable(request):
    return get_and_set_user_agent(request).is_touch_capable
Пример #10
0
def is_bot(request):
    return get_and_set_user_agent(request).is_bot
Пример #11
0
def is_mobile(request):
    return get_and_set_user_agent(request).is_mobile
Пример #12
0
def is_touch_capable(request):
    return get_and_set_user_agent(request).is_touch_capable
Пример #13
0
def is_bot(request):
    return get_and_set_user_agent(request).is_bot
Пример #14
0
def is_mobile(request):
    return get_and_set_user_agent(request).is_mobile