示例#1
0
class NewSubscriptionForm(forms.Form):
  email = lkforms.LKEmailField(required=False)
  my_email = lkforms.LKBooleanField(required=False)

  twitter_app_connection_id = lkforms.LKEncryptedIdReferenceField(TwitterAppConnection, required=False)
  app_id = lkforms.LKEncryptedIdReferenceField(AppStoreApp, required=False)

  slack_channel_name = forms.CharField(required=False, max_length=64)

  slack_url = forms.URLField(required=False)

  def clean_slack_url(self):
    slack_url = self.cleaned_data.get('slack_url')
    if slack_url:
      if urlparse.urlparse(slack_url).netloc != 'hooks.slack.com' or '/services/' not in slack_url:
        raise forms.ValidationError('Slack URL should be a hooks.slack.com URL and start with /services/.')
    return slack_url

  def clean(self):
    email = self.cleaned_data.get('email')
    slack_url = self.cleaned_data.get('slack_url')
    my_email = self.cleaned_data.get('my_email', False)
    slack_channel_name = self.cleaned_data.get('slack_channel_name', False)
    twitter_app_connection = self.cleaned_data.get('twitter_app_connection_id')
    app = self.cleaned_data.get('app_id')

    # the form is considered legit if it contains just one of the parameters for creating a review subsciption
    legit = len(filter(lambda x: x, [slack_url, email, my_email, slack_channel_name, twitter_app_connection, app])) == 1

    if not legit:
      raise forms.ValidationError(
          'Please provide `email` or `slack_url` or `my_email` or `slack_channel` or `twitter_app_connection_id` or `app_id`, but just one.')

    return self.cleaned_data
示例#2
0
class NewSubscriptionForm(forms.Form):
    email = lkforms.LKEmailField(required=False)
    my_email = lkforms.LKBooleanField(required=False)

    slack_channel_name = forms.CharField(required=False, max_length=128)
    slack_url = forms.URLField(required=False)

    def clean_slack_url(self):
        slack_url = self.cleaned_data.get('slack_url')
        if slack_url:
            if urlparse.urlparse(
                    slack_url
            ).netloc != 'hooks.slack.com' or '/services/' not in slack_url:
                raise forms.ValidationError(
                    'Slack URL should be a hooks.slack.com URL and start with /services/.'
                )
        return slack_url

    def clean(self):
        email = self.cleaned_data.get('email')
        my_email = self.cleaned_data.get('my_email', False)
        slack_url = self.cleaned_data.get('slack_url')
        slack_channel_name = self.cleaned_data.get('slack_channel_name', False)

        # the form is considered legit if it contains just one of the parameters for creating a sales report subsciption
        legit = len(
            filter(lambda x: x,
                   [email, my_email, slack_channel_name, slack_url])) == 1

        if not legit:
            raise forms.ValidationError(
                'Please provide `email` or `my_email` or `slack_url` or `slack_channel`, but just one.'
            )

        return self.cleaned_data
示例#3
0
class TopUsersForm(forms.Form):
    app_id = lkforms.LKEncryptedIdReferenceField(SDKApp, required=True)
    query = forms.CharField(required=False)
    sort_key = forms.ChoiceField(choices=[
        (k, k) for k in sessions.TOP_USER_SORTABLE_ATTRIBUTES
    ],
                                 required=False)
    start_sdk_user_id = lkforms.LKEncryptedIdReferenceField(SDKUser,
                                                            required=False)
    raw_labels = lkforms.LKBooleanField(required=False)
示例#4
0
class GetConfigForm(forms.Form):
    namespace = forms.CharField(required=False, max_length=16)

    def clean_namespace(self):
        value = self.cleaned_data.get('namespace')
        return value or None

    bundle_id = forms.RegexField(required=True, regex=BUNDLE_RE)
    version = forms.RegexField(required=False, regex=VERSION_RE)
    build = forms.RegexField(required=False, regex=BUILD_RE)
    ios_version = forms.RegexField(required=False, regex=BUILD_RE)
    debug = lkforms.LKBooleanField(required=False)
    sdk_user_labels = forms.RegexField(required=False, regex=USER_LABELS_RE)
示例#5
0
class CreateUpdateShotForm(forms.Form):
  screenshot_image_id = lkforms.LKEncryptedIdReferenceField(Image, required=False)
  def clean_screenshot_image_id(self):
    image = self.cleaned_data.get('screenshot_image_id')
    if image and image.kind != 'screenshot':
      raise forms.ValidationError('Invalid image; not a screenshot.')
    return image

  background_image_id = lkforms.LKEncryptedIdReferenceField(Image, required=False)
  def clean_background_image_id(self):
    image = self.cleaned_data.get('background_image_id')
    if image and image.kind != 'background':
      raise forms.ValidationError('Invalid image; not a background.')
    return image

  label = forms.CharField(min_length=0, max_length=500, required=False)
  label_position = forms.ChoiceField(choices=[
    ('above', 'Cropped Device with Text Above',),
    ('below', 'Cropped Device with Text Below',),
    ('above_full_device', 'Full Device with Text Above',),
    ('below_full_device', 'Full Device with Text Below',),
    ('device', 'Full Device Only',),
    ('above_screenshot', 'Screenshot with Text Above',),
    ('below_screenshot', 'Screenshot with Text Below',),
    ('none', 'Screenshot Only'),
  ], required=False)

  font = forms.CharField(min_length=0, max_length=50, required=False)
  font_size = forms.IntegerField(required=False)
  font_weight = forms.IntegerField(required=False)
  font_color = lkforms.LKColorField(required=False)

  phone_color = forms.ChoiceField(choices=[
    ('white', 'White phone',),
    ('black', 'Black phone',),
    ('gold', 'Gold phone',),
    ('rose', 'Rose Gold phone',),
  ], required=False)
  background_color = lkforms.LKColorField(required=False)

  is_landscape = lkforms.LKBooleanField(required=False)
示例#6
0
class ListAppsForm(forms.Form):
    only_config_parents = lkforms.LKBooleanField(required=False)

    product = forms.ChoiceField(choices=SDKProduct.choices(), required=False)
示例#7
0
from backend.lk.views.base import api_user_view
from backend.lk.views.base import bad_request
from backend.lk.views.base import not_found
from backend.lk.models import SDKApp
from backend.lk.models import SDKProduct
from backend.lk.models import SDKToken
from backend.util import lkforms

#
# PRODUCTS
#

# Creates a form with all products as optional booleans.
SDKProductForm = type(
    'SDKProductForm', (forms.Form, ), {
        product_name: lkforms.LKBooleanField(required=False)
        for product_name in SDKProduct.kinds()
    })

#
# SDK TOKENS
#


@api_user_view('GET')
def tokens_view(request):
    my_tokens = tokens.get_my_tokens(request.user)
    return api_response({
        'tokens': [t.to_dict() for t in my_tokens],
    })